From 7059ce7800adb34acf1018913673e939364a5fb8 Mon Sep 17 00:00:00 2001 From: huntj88 Date: Mon, 26 Feb 2024 16:20:11 -0600 Subject: [PATCH 01/40] Beginning migration to Fluid V2 (#765) Co-authored-by: James Hunt --- package-lock.json | 9493 +++++++++-------- packages/live-share-canvas/package.json | 10 +- .../live-share-canvas/src/core/LiveCanvas.ts | 10 +- packages/live-share-media/package.json | 15 +- packages/live-share-react/package.json | 23 +- .../src/live-hooks/useLiveCanvas.ts | 2 +- .../src/live-hooks/useMediaSynchronizer.ts | 2 +- packages/live-share-turbo/package.json | 19 +- .../src/dds-objects/DynamicObjectManager.ts | 2 +- packages/live-share/package.json | 16 +- .../live-share/src/DynamicObjectRegistry.ts | 10 +- packages/live-share/src/LiveDataObject.ts | 2 +- packages/live-share/src/LiveEventScope.ts | 19 +- packages/live-share/src/LiveFollowMode.ts | 12 +- packages/live-share/src/LivePresence.ts | 12 +- packages/live-share/src/LiveShareRuntime.ts | 2 +- packages/live-share/src/LiveState.ts | 14 +- packages/live-share/src/LiveTimer.ts | 12 +- .../src/internals/LiveObjectManager.ts | 2 +- .../javascript/01.dice-roller/package.json | 6 +- .../javascript/02.react-video/package.json | 8 +- .../03.live-canvas-demo/package.json | 8 +- .../04.live-share-react/package.json | 12 +- .../05.dice-roller-turbo/package.json | 8 +- .../21.react-media-template/package.json | 10 +- .../22.react-agile-poker/package.json | 6 +- .../23.react-live-canvas/package.json | 8 +- .../typescript/01.dice-roller/package.json | 6 +- .../03.live-canvas-demo/package.json | 8 +- .../04.live-share-react/package.json | 12 +- .../05.dice-roller-turbo/package.json | 8 +- .../06.presence-avatars/package.json | 12 +- .../07.countdown-timer/package.json | 12 +- samples/typescript/08.3d-model/package.json | 12 +- .../21.react-media-template/package.json | 10 +- .../31.live-canvas-tests/package.json | 9 +- 36 files changed, 5147 insertions(+), 4685 deletions(-) diff --git a/package-lock.json b/package-lock.json index ea4c3a937..158c26f5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,10 +31,19 @@ "typescript": "^5.0.4" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==" + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==" }, "node_modules/@ampproject/remapping": { "version": "2.2.1", @@ -50,11 +59,11 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "engines": { @@ -126,35 +135,35 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.21.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.7.tgz", - "integrity": "sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", - "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-compilation-targets": "^7.21.5", - "@babel/helper-module-transforms": "^7.21.5", - "@babel/helpers": "^7.21.5", - "@babel/parser": "^7.21.8", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -174,12 +183,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -189,22 +198,19 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz", - "integrity": "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.21.5", - "@babel/helper-validator-option": "^7.21.0", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { @@ -251,52 +257,52 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", - "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "dependencies": { - "@babel/types": "^7.21.4" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz", - "integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-simple-access": "^7.21.5", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", - "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", - "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "dependencies": { - "@babel/types": "^7.21.5" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -315,9 +321,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -332,32 +338,32 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz", - "integrity": "sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5" + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -432,9 +438,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -444,12 +450,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", - "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", + "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -459,12 +465,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", - "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", + "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -474,45 +480,45 @@ } }, "node_modules/@babel/runtime": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz", - "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -529,12 +535,12 @@ } }, "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, @@ -543,23 +549,23 @@ } }, "node_modules/@babylonjs/core": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@babylonjs/core/-/core-6.21.0.tgz", - "integrity": "sha512-8g+HPZ1aNKoqad/lq85iYngtGZIJh40Hkk2ybj9ilZOk53VAp6qYdm5TFCFhsYjuQeWzFT5a4QtiwskC8S8DUg==" + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@babylonjs/core/-/core-6.43.0.tgz", + "integrity": "sha512-pLFvvtC26TeICUcF0YjuuQqvCahJwPlATXnJkvBzMWXXxUE0Y5rI8L28iScu2WKy975605KdccJI5VL2NG7sUQ==" }, "node_modules/@babylonjs/gui": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@babylonjs/gui/-/gui-6.21.0.tgz", - "integrity": "sha512-1aDUy5wd9ysI3V8ScLzDkdIUFdqyE5k3kWl3iJ9iPKIJuZXfIWjK2Do0QbxDrd0gsAuRE97ZgZry3gVBcXfkbw==", + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@babylonjs/gui/-/gui-6.43.0.tgz", + "integrity": "sha512-iYsB7uyC40w0QkFGcPw8jAzE26jsgTFvWHTVKPSZxjQ5cG2RQEeK3aD8l+GvWauSc2qPB0wMOsvkAtusdy1g7g==", "peer": true, "peerDependencies": { "@babylonjs/core": "^6.0.0" } }, "node_modules/@babylonjs/loaders": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@babylonjs/loaders/-/loaders-6.21.0.tgz", - "integrity": "sha512-pxliefbWQTu0Etr0YcLkKgxQDVQRPi+KU2yYcTyljlxyQlW0qMIa0+y3Z+N5yV3SSZRVLaXsPiLHq1td5mR7Cg==", + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@babylonjs/loaders/-/loaders-6.43.0.tgz", + "integrity": "sha512-+cgw4NDchjc/5dZYGzOEhJU+9++ygYlA+ChybE5yvF+yUDWZ7fGXnEXMFImXeFELjk5RRK1NS3H3YvPe7A+Rug==", "peerDependencies": { "@babylonjs/core": "^6.0.0", "babylonjs-gltf2interface": "^6.0.0" @@ -571,9 +577,9 @@ "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" }, "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", "cpu": [ "arm" ], @@ -587,9 +593,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", "cpu": [ "arm64" ], @@ -603,9 +609,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", "cpu": [ "x64" ], @@ -619,9 +625,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", "cpu": [ "arm64" ], @@ -635,9 +641,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", "cpu": [ "x64" ], @@ -651,9 +657,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", "cpu": [ "arm64" ], @@ -667,9 +673,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", "cpu": [ "x64" ], @@ -683,9 +689,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", "cpu": [ "arm" ], @@ -699,9 +705,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", "cpu": [ "arm64" ], @@ -715,9 +721,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", "cpu": [ "ia32" ], @@ -731,9 +737,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", "cpu": [ "loong64" ], @@ -747,9 +753,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", "cpu": [ "mips64el" ], @@ -763,9 +769,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", "cpu": [ "ppc64" ], @@ -779,9 +785,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", "cpu": [ "riscv64" ], @@ -795,9 +801,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", "cpu": [ "s390x" ], @@ -811,9 +817,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", "cpu": [ "x64" ], @@ -827,9 +833,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", "cpu": [ "x64" ], @@ -843,9 +849,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", "cpu": [ "x64" ], @@ -859,9 +865,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", "cpu": [ "x64" ], @@ -875,9 +881,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", "cpu": [ "arm64" ], @@ -891,9 +897,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", "cpu": [ "ia32" ], @@ -907,9 +913,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", "cpu": [ "x64" ], @@ -938,23 +944,23 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -970,387 +976,462 @@ } }, "node_modules/@eslint/js": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", - "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@floating-ui/core": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.2.6.tgz", - "integrity": "sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "dependencies": { + "@floating-ui/utils": "^0.2.1" + } + }, + "node_modules/@floating-ui/devtools": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/devtools/-/devtools-0.2.1.tgz", + "integrity": "sha512-8PHJLbD6VhBh+LJ1uty/Bz30qs02NXCE5u8WpOhSewlYXUWl03GNXknr9AS2yaAWJEQaY27x7eByJs44gODBcw==", + "peerDependencies": { + "@floating-ui/dom": ">=1.5.4" + } }, "node_modules/@floating-ui/dom": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.2.8.tgz", - "integrity": "sha512-XLwhYV90MxiHDq6S0rzFZj00fnDM+A1R9jhSioZoMsa7G0Q0i+Q4x40ajR8FHSdYDE1bgjG45mIWe6jtv9UPmg==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", "dependencies": { - "@floating-ui/core": "^1.2.6" + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" } }, + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, "node_modules/@fluentui/keyboard-keys": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-keys/-/keyboard-keys-9.0.3.tgz", - "integrity": "sha512-40KBVJ9HzsvmPL3rwYaAvxCacNS0xnTmOt6TLxxrAVgVrZ1X7DLgd8OGFZcWROs0dhHdCk2D51bl4nK8Q1r3mQ==", + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-keys/-/keyboard-keys-9.0.7.tgz", + "integrity": "sha512-vaQ+lOveQTdoXJYqDQXWb30udSfTVcIuKk1rV0X0eGAgcHeSDeP1HxMy+OgHOQZH3OiBH4ZYeWxb+tmfiDiygQ==", "dependencies": { - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "node_modules/@fluentui/priority-overflow": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@fluentui/priority-overflow/-/priority-overflow-9.0.3.tgz", - "integrity": "sha512-lOUfZX3PMyb+nHWcNGQu+EBz2cvRxHgTObG97UTmGBB0nL0cEJCqVL7PKVWhto7zp3moSgRUWyUN/EQVVpZ/hg==", + "version": "9.1.11", + "resolved": "https://registry.npmjs.org/@fluentui/priority-overflow/-/priority-overflow-9.1.11.tgz", + "integrity": "sha512-sdrpavvKX2kepQ1d6IaI3ObLq5SAQBPRHPGx2+wiMWL7cEx9vGGM0fmeicl3soqqmM5uwCmWnZk9QZv9XOY98w==", "dependencies": { - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "node_modules/@fluentui/react-accordion": { - "version": "9.1.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.1.12.tgz", - "integrity": "sha512-jFQS5xwPYLGpgSNfb1PxhmEzaP4FMxTE7tpOkqWpbpBYZ0Ed95wM1KDejr3twTsanP8Is04y/IfA9w2zGVLPdQ==", - "dependencies": { - "@fluentui/react-aria": "^9.3.20", - "@fluentui/react-context-selector": "^9.1.20", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.3.41", + "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.3.41.tgz", + "integrity": "sha512-0EHoxdVm1HTX1MCk6xrYAfBHVek9PM9aoHsPzblp3CBvrEbFDnsOzTH/9lVKhUD8EZ066aHRCP1LL8WMCVbpsg==", + "dependencies": { + "@fluentui/react-aria": "^9.8.2", + "@fluentui/react-context-selector": "^9.1.51", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0", + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0", "scheduler": "^0.19.0 || ^0.20.0" } }, "node_modules/@fluentui/react-alert": { - "version": "9.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@fluentui/react-alert/-/react-alert-9.0.0-beta.47.tgz", - "integrity": "sha512-zTW1DdaWNF3PkG9P2Hcoe+hTtd+14zifZrKi0hDS/DVG9oSpKyJiQApN3qsvwbsUaEdefY6nwK0JhT1vooERfQ==", - "dependencies": { - "@fluentui/react-avatar": "^9.5.1", - "@fluentui/react-button": "^9.3.12", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.0.0-beta.109", + "resolved": "https://registry.npmjs.org/@fluentui/react-alert/-/react-alert-9.0.0-beta.109.tgz", + "integrity": "sha512-Cy+ZIukM0E/JEjMHGwZJd0t/SnN/o8hvofogedzKkPedFzhT1Enb5gQp9kZZKPHu/aY7CIHdeDN/V4bPvECh/w==", + "dependencies": { + "@fluentui/react-avatar": "^9.6.14", + "@fluentui/react-button": "^9.3.68", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-aria": { - "version": "9.3.20", - "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.3.20.tgz", - "integrity": "sha512-KyYkcQpckarOuTlHZVONiQ2STyBmvizrZyQ2YOcSxt68yDqV1limpKZF58jslM9wlZucch2bJfVdUna/0PL+IA==", + "version": "9.8.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.8.2.tgz", + "integrity": "sha512-5zjbbhAQcAvBBpdZZ+IwKhy9faEbj3bW/29ZRectl1sQ/Xu1MTbkC01uq6jgSEYClsyj23RzZv8QlkAMw+h9DA==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-utilities": "^9.9.0", - "@swc/helpers": "^0.4.14" + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-utilities": "^9.18.0", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-avatar": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.5.1.tgz", - "integrity": "sha512-2YRXy5caXpkvKKLwDIG1qym/GoYXVo2Y+LXIogXC3d8T5cWEj1yH4bLyUYvo8yN3Gm7psCtfZN4dNnTkqrUBNw==", - "dependencies": { - "@fluentui/react-badge": "^9.1.12", - "@fluentui/react-context-selector": "^9.1.20", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-popover": "^9.5.12", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-tooltip": "^9.2.12", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.6.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.6.14.tgz", + "integrity": "sha512-7Dw08ZKsGc/95OnuK4X3UyofE/+PVoQMijv04M2+CE5L7NVpQJ34Au0NUdOp0Hk994iZTMZVjrPHPvofMj4f+w==", + "dependencies": { + "@fluentui/react-badge": "^9.2.24", + "@fluentui/react-context-selector": "^9.1.51", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-popover": "^9.8.38", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-tooltip": "^9.4.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0", + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0", "scheduler": "^0.19.0 || ^0.20.0" } }, "node_modules/@fluentui/react-badge": { - "version": "9.1.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-badge/-/react-badge-9.1.12.tgz", - "integrity": "sha512-jDfx4FJE6NfFubU1Z1NjQlMi/Z/uR3X8QQF09qGZjPRfnItM/mwp6FYik9gRFT7L31sgBRyemaCuirOApx7O/g==", - "dependencies": { - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.2.24", + "resolved": "https://registry.npmjs.org/@fluentui/react-badge/-/react-badge-9.2.24.tgz", + "integrity": "sha512-ThGVHf5wO8xpf/JbYSEMK0tGoRqprMDcx+jD7NK5lxjqv4oOxRGSFYfG5GYf4qJZZKbBc2hTOy/BHpts6WBtzw==", + "dependencies": { + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-breadcrumb": { + "version": "9.0.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-breadcrumb/-/react-breadcrumb-9.0.14.tgz", + "integrity": "sha512-4/+GfSfABwXVHYE8ovQRA9q8llUo0Us2YRKl/xD70oqCVGCMwwXkRX3nEYq54eNcduJ9dn+NrCyp/xc84/F4BA==", + "dependencies": { + "@fluentui/react-aria": "^9.8.2", + "@fluentui/react-button": "^9.3.68", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-link": "^9.2.10", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-button": { - "version": "9.3.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.3.12.tgz", - "integrity": "sha512-0u43L4p64sYL4DhcIyV3xAabk80rFobUxmkrW/NjZ+kjZxyiWZ/6gQqKOWnlaxZCx/sOOJYVRBBwMCEynkFgQQ==", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-aria": "^9.3.20", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.3.68", + "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.3.68.tgz", + "integrity": "sha512-jUY/SGXmaUw6R4lo+QVLly7s5cecc6/oJkRtiujdlB1WIWtI7H90X7Lm0IjnOEfS5TGaQ9wglZeXlsj3SKYL4g==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.8.2", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-card": { - "version": "9.0.10", - "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.0.10.tgz", - "integrity": "sha512-878NKsk2253EDZpEznN5uG+ElZSAkcNTG+kBWCPJUTV8EsY2A/VztDofrdYlvmlhnufS/0jbeh1OJxE7fljpuA==", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.0.67", + "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.0.67.tgz", + "integrity": "sha512-guTFd0BZIot2WufOCjIl0wP1l/tCJAjPHOR0BGqQaONT4NSQYw++a6pyUaq+OccWbFBKOl6hWrZhET+SAGuxJw==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-checkbox": { - "version": "9.1.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.1.13.tgz", - "integrity": "sha512-BkPK1UoLIZqc6nRNOQ6rHNY0caWgGnbcIbPiUC0ucefg+O9vPmlffk/XD8APul/mhmjrOanOR8KZ8SsnhbIneA==", - "dependencies": { - "@fluentui/react-field": "^9.1.3", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-label": "^9.1.12", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.2.12", + "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.2.12.tgz", + "integrity": "sha512-LW+D6tWCWjR2KMLs0Hi2eIEsNzdWIYwG7tc/GVhk2Wux9fFngGPigmpLlmbKtFy4t8IugdTHyujxk7em0oXjBg==", + "dependencies": { + "@fluentui/react-field": "^9.1.53", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-label": "^9.1.61", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-combobox": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.3.1.tgz", - "integrity": "sha512-2PZQkNM0ppdNQs5J33ABk6zTAqNoC9L2i/hVUYPLk5KMaYnlpt5ArZsDXdSvTiCaYgKcAh35EBIZcwCkvt/oug==", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-context-selector": "^9.1.20", - "@fluentui/react-field": "^9.1.3", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-portal": "^9.2.8", - "@fluentui/react-positioning": "^9.5.12", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.7.5", + "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.7.5.tgz", + "integrity": "sha512-lTbBD0bC1MWot2n3HL/HWhxxXGlol/3tmq6OVXkAdh4hPjUeFOhNiDuG2HJ2FiW7IBpwcpDhrH3Rfemu8c8hKg==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-context-selector": "^9.1.51", + "@fluentui/react-field": "^9.1.53", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-portal": "^9.4.13", + "@fluentui/react-positioning": "^9.13.3", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0", + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0", "scheduler": "^0.19.0 || ^0.20.0" } }, "node_modules/@fluentui/react-components": { - "version": "9.20.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.20.1.tgz", - "integrity": "sha512-UmPk6Z756gQqLNi7A/0bV6OC3ybh1i5fe1aDUhR+1JbIlRH+hgbpCWQfL3UACbTjwuw/taOQNRyAeHsxgcBzYQ==", - "dependencies": { - "@fluentui/react-accordion": "^9.1.12", - "@fluentui/react-alert": "9.0.0-beta.47", - "@fluentui/react-avatar": "^9.5.1", - "@fluentui/react-badge": "^9.1.12", - "@fluentui/react-button": "^9.3.12", - "@fluentui/react-card": "^9.0.10", - "@fluentui/react-checkbox": "^9.1.13", - "@fluentui/react-combobox": "^9.3.1", - "@fluentui/react-dialog": "^9.5.5", - "@fluentui/react-divider": "^9.2.12", - "@fluentui/react-field": "^9.1.3", - "@fluentui/react-image": "^9.1.9", - "@fluentui/react-infobutton": "9.0.0-beta.30", - "@fluentui/react-input": "^9.4.13", - "@fluentui/react-label": "^9.1.12", - "@fluentui/react-link": "^9.0.38", - "@fluentui/react-menu": "^9.7.12", - "@fluentui/react-overflow": "^9.0.17", - "@fluentui/react-persona": "^9.2.11", - "@fluentui/react-popover": "^9.5.12", - "@fluentui/react-portal": "^9.2.8", - "@fluentui/react-positioning": "^9.5.12", - "@fluentui/react-progress": "^9.1.13", - "@fluentui/react-provider": "^9.6.1", - "@fluentui/react-radio": "^9.1.13", - "@fluentui/react-select": "^9.1.13", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-skeleton": "^9.0.1", - "@fluentui/react-slider": "^9.1.13", - "@fluentui/react-spinbutton": "^9.2.13", - "@fluentui/react-spinner": "^9.1.12", - "@fluentui/react-switch": "^9.1.13", - "@fluentui/react-table": "^9.2.9", - "@fluentui/react-tabs": "^9.3.13", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-text": "^9.3.9", - "@fluentui/react-textarea": "^9.3.13", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-toolbar": "^9.1.13", - "@fluentui/react-tooltip": "^9.2.12", - "@fluentui/react-tree": "9.0.0-beta.14", - "@fluentui/react-utilities": "^9.9.0", - "@fluentui/react-virtualizer": "9.0.0-alpha.20", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.46.4", + "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.46.4.tgz", + "integrity": "sha512-NSJsPaOKOzcbyn4v+AkSsNMoTvAv+9cmi6UuvTy070Vd2NXQQ3UOHSNHUH1RF0Y0bhPNSXrSqRP1lefyCU05qA==", + "dependencies": { + "@fluentui/react-accordion": "^9.3.41", + "@fluentui/react-alert": "9.0.0-beta.109", + "@fluentui/react-aria": "^9.8.2", + "@fluentui/react-avatar": "^9.6.14", + "@fluentui/react-badge": "^9.2.24", + "@fluentui/react-breadcrumb": "^9.0.14", + "@fluentui/react-button": "^9.3.68", + "@fluentui/react-card": "^9.0.67", + "@fluentui/react-checkbox": "^9.2.12", + "@fluentui/react-combobox": "^9.7.5", + "@fluentui/react-dialog": "^9.9.10", + "@fluentui/react-divider": "^9.2.60", + "@fluentui/react-drawer": "^9.1.4", + "@fluentui/react-field": "^9.1.53", + "@fluentui/react-image": "^9.1.57", + "@fluentui/react-infobutton": "9.0.0-beta.93", + "@fluentui/react-infolabel": "^9.0.21", + "@fluentui/react-input": "^9.4.63", + "@fluentui/react-label": "^9.1.61", + "@fluentui/react-link": "^9.2.10", + "@fluentui/react-menu": "^9.12.50", + "@fluentui/react-message-bar": "^9.0.19", + "@fluentui/react-overflow": "^9.1.10", + "@fluentui/react-persona": "^9.2.73", + "@fluentui/react-popover": "^9.8.38", + "@fluentui/react-portal": "^9.4.13", + "@fluentui/react-positioning": "^9.13.3", + "@fluentui/react-progress": "^9.1.63", + "@fluentui/react-provider": "^9.13.11", + "@fluentui/react-radio": "^9.2.7", + "@fluentui/react-select": "^9.1.63", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-skeleton": "^9.0.51", + "@fluentui/react-slider": "^9.1.69", + "@fluentui/react-spinbutton": "^9.2.63", + "@fluentui/react-spinner": "^9.3.41", + "@fluentui/react-switch": "^9.1.69", + "@fluentui/react-table": "^9.11.10", + "@fluentui/react-tabs": "^9.4.9", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-tags": "^9.0.27", + "@fluentui/react-text": "^9.4.9", + "@fluentui/react-textarea": "^9.3.63", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-toast": "^9.3.30", + "@fluentui/react-toolbar": "^9.1.70", + "@fluentui/react-tooltip": "^9.4.16", + "@fluentui/react-tree": "^9.4.30", + "@fluentui/react-utilities": "^9.18.0", + "@fluentui/react-virtualizer": "9.0.0-alpha.68", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0", + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0", "scheduler": "^0.19.0 || ^0.20.0" } }, "node_modules/@fluentui/react-context-selector": { - "version": "9.1.20", - "resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.1.20.tgz", - "integrity": "sha512-EZ1Zj4C/TVAx715UZzjr4tbj+S4rMKqw8wOeOJXx9ewoRzCmsO705hmxRBbDPGqVtkhi/n4xWPFLmwlYwzDTZg==", + "version": "9.1.51", + "resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.1.51.tgz", + "integrity": "sha512-AzRC2XH7Ra39CQiGzV8xdfeVGIDqz6s7IjcBtL4HpA7G1g4pzfe2W9QbXOOr8iDwryCdMVbO+QP/sak+vMAcFw==", "dependencies": { - "@fluentui/react-utilities": "^9.9.0", - "@swc/helpers": "^0.4.14" + "@fluentui/react-utilities": "^9.18.0", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0", + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0", "scheduler": "^0.19.0 || ^0.20.0" } }, "node_modules/@fluentui/react-dialog": { - "version": "9.5.5", - "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.5.5.tgz", - "integrity": "sha512-9o7zC8t68WU/oAOsROb+63SLn6orPsGDyWH19lgYvBJn/hmAEQXWDL4KO3dbW+6X1okaxLRrZw+oYTqEF+2HmQ==", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-aria": "^9.3.20", - "@fluentui/react-context-selector": "^9.1.20", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-portal": "^9.2.8", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.9.10", + "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.9.10.tgz", + "integrity": "sha512-fauPfcxhnuHPnaCI2mLtkxeyQvxWS8ux2fvr61ODQdqUzEmKZdDEXuBpRyuVxBWs+ZX4IBqSQu6KmDjZdcMZsg==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.8.2", + "@fluentui/react-context-selector": "^9.1.51", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-portal": "^9.4.13", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1", + "react-transition-group": "^4.4.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-divider": { - "version": "9.2.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-divider/-/react-divider-9.2.12.tgz", - "integrity": "sha512-6T/JTDyjotCGp/Dn7AAjZ/dXYg1D0bMIMGHy1B8wCnF2DHJD7un4YvQ19QKloBEmimEHK4UUKRvqvvJO1aeOyg==", + "version": "9.2.60", + "resolved": "https://registry.npmjs.org/@fluentui/react-divider/-/react-divider-9.2.60.tgz", + "integrity": "sha512-TdFxSnSAK2SGzfzKsg/6Yfl+UxtirJpXY6B/ibHogLjLqsKm+RnVB8nyO5wd5RUoAQofWkQAAArTEl6UkJf1Kw==", "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-drawer": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.1.4.tgz", + "integrity": "sha512-yXMPeyqKiLa3A0H1XRS9RtWGRAq4J2mpVdmY495EzezBQuU/G3bJPIMYSBKzHdYvrJQl6DM+k8F4iA0d2ekUAQ==", + "dependencies": { + "@fluentui/react-dialog": "^9.9.10", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-motion-preview": "^0.5.12", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-field": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.1.3.tgz", - "integrity": "sha512-U7+Wt9+ZGMoBRGMo3SkqD7huvzEGgwDXc/+8P7A3YSuy0ycVruDWgLyspcqWJ5ULMOheYt3yiK21JpJVbhl36A==", - "dependencies": { - "@fluentui/react-context-selector": "^9.1.20", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-label": "^9.1.12", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.1.53", + "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.1.53.tgz", + "integrity": "sha512-u3zd2EjYZIMtCwEMAdb9wLODZWpfpWGWwgBKZMcZ3CpLm68TTcpkjqzUjg60l5aiyPvT8wThEUEHaeJBe0EgEg==", + "dependencies": { + "@fluentui/react-context-selector": "^9.1.51", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-label": "^9.1.61", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-icons": { - "version": "2.0.202", - "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.202.tgz", - "integrity": "sha512-QMiFMaDj99T+w3/EAdvEfDCk5hkzn6LBkqSVW2Ov+WY25/WNv54W169qmWW8LuEZLUiEYHZejwcEghaMHmswVA==", + "version": "2.0.227", + "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.227.tgz", + "integrity": "sha512-KcuzBJvf1LL1YW7XBg7Y4RoCpFMUU2br9BPqwN5gZDKALHQF9RdHPtwdGTzxKsHacOTpHnNDQrbDW+NvxiEMVQ==", "dependencies": { "@griffel/react": "^1.0.0", "tslib": "^2.1.0" @@ -1360,38 +1441,60 @@ } }, "node_modules/@fluentui/react-image": { - "version": "9.1.9", - "resolved": "https://registry.npmjs.org/@fluentui/react-image/-/react-image-9.1.9.tgz", - "integrity": "sha512-kcG61Qw8Uvc+Zc0lZpSuVtMllvX83idrApnZTKqMCfHeV34OylBafcFsZLL2ijcMMFuN8yb5r/FdbtAbwXGf+Q==", + "version": "9.1.57", + "resolved": "https://registry.npmjs.org/@fluentui/react-image/-/react-image-9.1.57.tgz", + "integrity": "sha512-dB0/NFvYChztwmEnEK5XjCtC5BjhI5zA/kUsdxXXnXyT5SnRsOz4qLIU3z6RN7E2ZXvmtWEgwtzSy6UsmKuICw==", "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-infobutton": { - "version": "9.0.0-beta.30", - "resolved": "https://registry.npmjs.org/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.30.tgz", - "integrity": "sha512-w2tWBlrsXSXwbMmdPpsKCTtQCIoeShPZspmnBCoKXnHSevdk4BNEjr0q5QzoSvIY2FRdxMrLmcAWJAyv4aA+AA==", - "dependencies": { - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-label": "^9.1.12", - "@fluentui/react-popover": "^9.5.12", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.0.0-beta.93", + "resolved": "https://registry.npmjs.org/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.93.tgz", + "integrity": "sha512-tlE/M5p//lMpHGhXL9LRq5diEuw+rBtmy53QvM3r6NPevRl525MlxVZOMfTBh1Q+GXOS7kdvjCzlLxyXPVcA9w==", + "dependencies": { + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-label": "^9.1.61", + "@fluentui/react-popover": "^9.8.38", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-infolabel": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/@fluentui/react-infolabel/-/react-infolabel-9.0.21.tgz", + "integrity": "sha512-NIQWHFu0/dw5Ow4YTGmoqVmcevcxkbizx+M6ez2m58U0zTP7S+weOgmNcm74eBeP0A9rPnKkqQkSYWzzQcL8iQ==", + "dependencies": { + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-label": "^9.1.61", + "@fluentui/react-popover": "^9.8.38", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { "@types/react": ">=16.8.0 <19.0.0", @@ -1401,704 +1504,746 @@ } }, "node_modules/@fluentui/react-input": { - "version": "9.4.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.4.13.tgz", - "integrity": "sha512-EzhlZE81gcwqxgqsgVkh5aocK4W3WHo0FBZ50ZidQU+02GK07vsYpyABUChJtpoAdxqMMDS+3t6atcqOiFGaTw==", - "dependencies": { - "@fluentui/react-field": "^9.1.3", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.4.63", + "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.4.63.tgz", + "integrity": "sha512-mj54J3w4RUxFEVntU6XKfKM2n5z0A619OplNHBK/C/boWL3vL1llNcWMAbcpB3EqsjeaOR/+MhPVrMwAh4+nPg==", + "dependencies": { + "@fluentui/react-field": "^9.1.53", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-jsx-runtime": { - "version": "9.0.0-alpha.4", - "resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.0.0-alpha.4.tgz", - "integrity": "sha512-FVsNvmExQgoYP1sil/udXLi0H5P/lLw1TXotq+e+Zam4+OdFQeCJ0HD/2jN7uRKCDLnmZILyt4ThMGYGv6z2xw==", + "version": "9.0.29", + "resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.0.29.tgz", + "integrity": "sha512-C+jurF0i0qaioKOFzpbC3DGER+W/QOW1v0qgEJemu2R2ldSbwgCBVagFysfjxAfnONz4zaDPTMRj58PwyEnBIQ==", "dependencies": { - "@fluentui/react-utilities": "^9.9.0", - "@swc/helpers": "^0.4.14" + "@fluentui/react-utilities": "^9.18.0", + "@swc/helpers": "^0.5.1", + "react-is": "^17.0.2" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-label": { - "version": "9.1.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.1.12.tgz", - "integrity": "sha512-us/OUT1/TizC3ouLCyhzDWV4Gzf+BoceqoM9CgZVYUnJbNaKQKLUiVaXmt0FhVsfPaai5mVt/NWUZMTOrxv8lA==", + "version": "9.1.61", + "resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.1.61.tgz", + "integrity": "sha512-VTiZ2Y9Nipmsq4YL3qjhZeyRMkj2nKHMOWrvifkG85ss62+PpWUDC8BBQKqbI0vLiFVYImMezCeQUX3qSYqgoA==", "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-link": { - "version": "9.0.38", - "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.0.38.tgz", - "integrity": "sha512-hDNTFg1ww27PADz7oiJqAL4T6QhZ50cmBpeRTJ0c9uksU6hA0EfEhaBoRLpFe2g/avIcLWg8oyEPhpsB8XaqpA==", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.2.10", + "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.2.10.tgz", + "integrity": "sha512-jOmib6CIv8BUUHn8Y/P+ikR1OoQHrk0IdNat7ygCdCNGtCjc3y+yzuNwsin7uYfftdkXBzBX7ZC9fmY4U9Eq4Q==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-menu": { - "version": "9.7.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.7.12.tgz", - "integrity": "sha512-i+yfMccvrmbLqzNuoY2LuEfsmudB98wtPs/2zwuXz7EaAeae2puEl1/844wBT3bxiX+9SY8ZJqdQejRKWq1IDg==", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-aria": "^9.3.20", - "@fluentui/react-context-selector": "^9.1.20", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-portal": "^9.2.8", - "@fluentui/react-positioning": "^9.5.12", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.12.50", + "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.12.50.tgz", + "integrity": "sha512-sFxygmIi+V6xjrzaMiGuXx0EpvABHjjrLLd9Zi/dDlCCTP3zWRVBdfTlmWXi1QVh96JUBXP7e8qDD7h+ExY9OA==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.8.2", + "@fluentui/react-context-selector": "^9.1.51", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-portal": "^9.4.13", + "@fluentui/react-positioning": "^9.13.3", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0", + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0", "scheduler": "^0.19.0 || ^0.20.0" } }, - "node_modules/@fluentui/react-overflow": { - "version": "9.0.17", - "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.0.17.tgz", - "integrity": "sha512-Z+e7R5Nt2T8myCAo3stSVWkesCAI6AOvfB1xQdS2OnhLaybAKB8bhgeDG3GqTnBFuK89ZWdTtWuNctC2Rcmp/A==", + "node_modules/@fluentui/react-message-bar": { + "version": "9.0.19", + "resolved": "https://registry.npmjs.org/@fluentui/react-message-bar/-/react-message-bar-9.0.19.tgz", + "integrity": "sha512-aqR38fYfNRLUPgU3+6aBwkLVSs6UWRFe9a+wqElyJsmkU+rADXC5tWPdcn3YT0wg3kWzNmATtWlTtIcH+K4RMw==", "dependencies": { - "@fluentui/priority-overflow": "^9.0.3", - "@fluentui/react-context-selector": "^9.1.20", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "@fluentui/react-button": "^9.3.68", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1", + "react-transition-group": "^4.4.1" }, "peerDependencies": { "@types/react": ">=16.8.0 <19.0.0", "@types/react-dom": ">=16.8.0 <19.0.0", "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0", + "react-dom": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-motion-preview": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/@fluentui/react-motion-preview/-/react-motion-preview-0.5.12.tgz", + "integrity": "sha512-mZ5Ys4ASWyrDAD1XKZI4rQtmEPLvnYp8Bv59ebINJcdeNJSETSq1TThwIDyfoimO4Kaw/092ydOJyL98dGXA1w==", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-overflow": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.1.10.tgz", + "integrity": "sha512-llvTkxT63c8vBGo/ihivMMqCth9BYf63VTZgx01Sj+v+ABxnDlZfh8D8vJjijghwL0X3MeG24CYci4FHLdDfjg==", + "dependencies": { + "@fluentui/priority-overflow": "^9.1.11", + "@fluentui/react-context-selector": "^9.1.51", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0", "scheduler": "^0.19.0 || ^0.20.0" } }, "node_modules/@fluentui/react-persona": { - "version": "9.2.11", - "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.2.11.tgz", - "integrity": "sha512-FzmvjO5HCyCnGwE4WLduKJ6Z2PR4km44PkqwLlS9QCJHvnqLL/TX+ZvSz/R6u+2zEof7PHddXV9Cixk7hHh8xQ==", - "dependencies": { - "@fluentui/react-avatar": "^9.5.1", - "@fluentui/react-badge": "^9.1.12", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.2.73", + "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.2.73.tgz", + "integrity": "sha512-XgVQ5t33LvWNh6zaXScouns3dGRq/cm4z9dwt8MaJbjDAixt95uME6DCqeZghwQIrTD3L2+6iHu0NfEr5YGoSg==", + "dependencies": { + "@fluentui/react-avatar": "^9.6.14", + "@fluentui/react-badge": "^9.2.24", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-popover": { - "version": "9.5.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.5.12.tgz", - "integrity": "sha512-oYdtD+w1svU9F3opq+CpTf4ILL08XRNI64bWFiix66P4MIOZ0K3YFnMIeCZijRfQbT+h0n1Qn77XLgJGSacGyw==", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-aria": "^9.3.20", - "@fluentui/react-context-selector": "^9.1.20", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-portal": "^9.2.8", - "@fluentui/react-positioning": "^9.5.12", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.8.38", + "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.8.38.tgz", + "integrity": "sha512-MOEesK3AEVUGRmOuDDHsSvrxe6ksuRWOwjaKkOEiLiQ8uyy26pAHZKREkQXBXFVIB8/f9FC0rbrDeTq7j8mk8A==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.8.2", + "@fluentui/react-context-selector": "^9.1.51", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-portal": "^9.4.13", + "@fluentui/react-positioning": "^9.13.3", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0", + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0", "scheduler": "^0.19.0 || ^0.20.0" } }, "node_modules/@fluentui/react-portal": { - "version": "9.2.8", - "resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.2.8.tgz", - "integrity": "sha512-L5B9A9wbr7+Opcu9ggUF9aebb7TlCxCgLqJ2HSCFlb8hfeyW9+2Af2+7n9YUeYKSKBQ6Xy1T1MnggUktgODzSQ==", - "dependencies": { - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14", + "version": "9.4.13", + "resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.4.13.tgz", + "integrity": "sha512-pAEz2GReuN13XVhsOP9YkbGIYZF6qWcOYpt9emAHBWNclPT5XLTBx+GrmOyInp1KTetLF7sRkIflyHprxwB0hA==", + "dependencies": { + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1", "use-disposable": "^1.0.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-positioning": { - "version": "9.5.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.5.12.tgz", - "integrity": "sha512-NQdwaUa2sZT/Zu+QnNrKr900y8Jmp7vBx4I3fgsITQHIe4QKrffMGLU8FchQiyfrBRJhL+B2+s8s0Nef5R7vWw==", + "version": "9.13.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.13.3.tgz", + "integrity": "sha512-zOzgz190Bpk6d3Xq5Q9mhkhlDe7CVqD0vHpTUm/v4JhGMl94v5YXuUgOYG6QpZQrqnDtIlFJBqfYJGVS5YhaPw==", "dependencies": { + "@floating-ui/devtools": "0.2.1", "@floating-ui/dom": "^1.2.0", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-progress": { - "version": "9.1.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.1.13.tgz", - "integrity": "sha512-QwFkfOS8NtlfIvFXTQirrqdPgC2mEuvFFsQO9Jb/ngIaPzfc5HAQ3wSAq0kph0+GPHb++iwYGOafmBw+iQQk1g==", - "dependencies": { - "@fluentui/react-field": "^9.1.3", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.1.63", + "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.1.63.tgz", + "integrity": "sha512-dsUbahuDIvCYKJPGVZmz5S5aZjEAWcax1cDF/t51YGhfYCaKhqKeaw70z/5dgQpn3+Tvs1aYnlf4WudT7ThAxQ==", + "dependencies": { + "@fluentui/react-field": "^9.1.53", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-provider": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.6.1.tgz", - "integrity": "sha512-Z6FZmSXKPBsHMhPuGjlnx6s1O0T56x63GAo8bHfMwJGBRCs10Z8zBo8yEkrgg+ljXmUy3Pn8fhT6RB8jKU1BRg==", - "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/core": "^1.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.13.11", + "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.13.11.tgz", + "integrity": "sha512-hGlOVquqMhGgseYEIvUliO3rvV6RmZrmHC5XFMvIgTK9WqtA1by1PPWCmgD50YsCFSFT+DNzgvDvJmbQd+j27A==", + "dependencies": { + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/core": "^1.14.1", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-radio": { - "version": "9.1.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.1.13.tgz", - "integrity": "sha512-5QPaI5uug2sXPe1svaAAf5nXqSyAAAIqbJsfvhzlNHMrRsvEoar9qT4HGaePGU12HuzAG7E4LXWsfKeaGZWJkw==", - "dependencies": { - "@fluentui/react-field": "^9.1.3", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-label": "^9.1.12", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.2.7", + "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.2.7.tgz", + "integrity": "sha512-8qS6ZbkoesqnPpCUv4mfTVH7xb+2ab6FUmIf+ck+eKCrdsLkETIbAxiRwOF1cMBIeqU47ji7T7aIbuPLsjmTBQ==", + "dependencies": { + "@fluentui/react-field": "^9.1.53", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-label": "^9.1.61", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0", + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0", "scheduler": "^0.19.0 || ^0.20.0" } }, "node_modules/@fluentui/react-select": { - "version": "9.1.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.1.13.tgz", - "integrity": "sha512-gODqocFLiI8g9uYDZIy+lbH7S93Xgu13d5t9MNvcVxNw7Avob2Aa1/21a6xx95ymS9bRH9XV/ORCB1MNUysljA==", - "dependencies": { - "@fluentui/react-field": "^9.1.3", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.1.63", + "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.1.63.tgz", + "integrity": "sha512-6IEUpitDaPuOpxBidKQsgwFfs0ppluKzC3ONAaCVVr3rV6iMkN47t28GHFjJnEHfeYXn6mzfs9vFJTijyhrc/A==", + "dependencies": { + "@fluentui/react-field": "^9.1.53", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-shared-contexts": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-shared-contexts/-/react-shared-contexts-9.4.0.tgz", - "integrity": "sha512-yjNvDDJAcbVcAZblh6P8xzFuwAqPcXpf9tOlsNxxlEdwlV7Bk7nDrU13wNaI+Jpks5ASNJo8zWbzUwDI1gFsdA==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-shared-contexts/-/react-shared-contexts-9.14.0.tgz", + "integrity": "sha512-P9yhg31WYfB1W66/gD3+qVCLBsyIEcOzQvKVaIQvd9UhF67lNW4kMXUB6YVOk5PV0Og4hXnkH/vuHl7YMD9RHw==", "dependencies": { - "@fluentui/react-theme": "^9.1.8", - "@swc/helpers": "^0.4.14" + "@fluentui/react-theme": "^9.1.16", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-skeleton": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.0.1.tgz", - "integrity": "sha512-1VtD8q9mnNXTAbd8873N7ISf6mrQb0QRKloGZgsoAaxnvlH6QXSR9zsigsl7utLOCQaxrns643Hmw4J10Qa06g==", - "dependencies": { - "@fluentui/react-field": "^9.1.3", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.0.51", + "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.0.51.tgz", + "integrity": "sha512-2HBRXEjAMjiEhT+cotqxuCeRh67ZgXTPgIXvZpzgk2hEsxTcWKBfpVv2dSQpnE4boxmpt8Jg4KlzqtMYV0+T+Q==", + "dependencies": { + "@fluentui/react-field": "^9.1.53", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-slider": { - "version": "9.1.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.1.13.tgz", - "integrity": "sha512-M9dBMo7hRVa/4k8N13IbICraNaZ0qEt4flduSX4PAlNesz6HxLD8y4vGMjQeYcufykg/BwJ93x6xr7eawOlIHQ==", - "dependencies": { - "@fluentui/react-field": "^9.1.3", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.1.69", + "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.1.69.tgz", + "integrity": "sha512-vPDbvATWxtdsWB6nEyZ3WoZV9C0VDeUVlq582HlnomMcTPgCUxKFCpeE3lemR4LwY51WDbouOUFQFG0vJ9c/ow==", + "dependencies": { + "@fluentui/react-field": "^9.1.53", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-spinbutton": { - "version": "9.2.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.2.13.tgz", - "integrity": "sha512-kre/cEw6ErBawJxHopD6OVap0cE4FXCq4WInSMp4PK1R7eu2T8N35nvGk7sVR7rNIAfzhx/q7PS4JlEoZTSnwA==", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-field": "^9.1.3", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.2.63", + "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.2.63.tgz", + "integrity": "sha512-/7LnVtaYAz7rDtyqEMgMRftWg7IOEw/9rLFldzBCbUpn1A4/VuzQD2W8QAdpTutpEoIw5ripA3GEAsLYkJBEDA==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-field": "^9.1.53", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-spinner": { - "version": "9.1.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-spinner/-/react-spinner-9.1.12.tgz", - "integrity": "sha512-hm2DvMJrcbhQWRUdB0Ov/eA/q8FBBs8XWR9P4APQPOftpo3Htjmx45byRJuLuu2ktosWq5JfhfXXoGi5kh5xEA==", - "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-label": "^9.1.12", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.3.41", + "resolved": "https://registry.npmjs.org/@fluentui/react-spinner/-/react-spinner-9.3.41.tgz", + "integrity": "sha512-8ojZ+S34p+eLBMsy22zYcZIWibQ1xz44bFaqziV79kuThHe0960W18lOj2PXmGsAhiFVSAEZYwx5Hm+h027qEg==", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-label": "^9.1.61", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-switch": { - "version": "9.1.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.1.13.tgz", - "integrity": "sha512-MfvyyQOI4gLsT8+ktCF1qJwLGl/kD3V0CoPZMdQoEybqkW6jh8JAbX+dXzJ2JgvU0rNN4ZH+Bd+XlEb+4pEimw==", - "dependencies": { - "@fluentui/react-field": "^9.1.3", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-label": "^9.1.12", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.1.69", + "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.1.69.tgz", + "integrity": "sha512-N7ZHTjcyHYHO7qd2lqd3tW5uCurN5VbKuvq+IUvzOW5VjDHyNWxNfTmg6kRigL39wTrP0ymiiYWn4bl3kOFY2g==", + "dependencies": { + "@fluentui/react-field": "^9.1.53", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-label": "^9.1.61", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-table": { - "version": "9.2.9", - "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.2.9.tgz", - "integrity": "sha512-thxVhW4jlfgaqPTjb6Ipn1wMQ0dDd9Bluo+tDOAf1aMBp9n3ckchpQ4qR2xwTAQ01Q771+FrrJ2nobzvNeezEg==", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-aria": "^9.3.20", - "@fluentui/react-avatar": "^9.5.1", - "@fluentui/react-checkbox": "^9.1.13", - "@fluentui/react-context-selector": "^9.1.20", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-radio": "^9.1.13", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.11.10", + "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.11.10.tgz", + "integrity": "sha512-wWTQV9wqm3diGSpwIIsS4DddjBMf/MTXo5V39WU+NpcpNy2kyAJzcaXBWY5xv6eYbfEuTM1/n0xYp9RIWo7AsA==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.8.2", + "@fluentui/react-avatar": "^9.6.14", + "@fluentui/react-checkbox": "^9.2.12", + "@fluentui/react-context-selector": "^9.1.51", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-radio": "^9.2.7", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-tabs": { - "version": "9.3.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.3.13.tgz", - "integrity": "sha512-m0lkRT5fEUeRDxfJElnYr7L+eQBxMMnFZXpolSV1lv9Bw2CgRamnxozhaVIoBz0RL6MebhLb6RRKgMZztVjXFQ==", - "dependencies": { - "@fluentui/react-context-selector": "^9.1.20", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.4.9", + "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.4.9.tgz", + "integrity": "sha512-ZBHwHnuhU6C8r497Z820A3l/bZyj18yy6I4FRCjBD4yxJle+/b2ut9jLyXBhP1PKazZo6/qyDW74R8t7gYnpvQ==", + "dependencies": { + "@fluentui/react-context-selector": "^9.1.51", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0", + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0", "scheduler": "^0.19.0 || ^0.20.0" } }, "node_modules/@fluentui/react-tabster": { - "version": "9.7.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.7.1.tgz", - "integrity": "sha512-eaB4O1fBavpL6KlYlne+J47P1Epa9kdabA5pA3iqa4dKqCrWOMAqY2rZVb7hR6zr0o7n2MCEaHCQFOJymsyafQ==", - "dependencies": { - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14", - "keyborg": "^2.0.0", - "tabster": "^4.1.1" + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.19.0.tgz", + "integrity": "sha512-gHbOHHRLgZ65hW0317ksgM8tDGEy9oahA9iVDnwCv6dKIjR120PzTMHio0XgezRwD2HjHE4/2MLZvNTKLVhXzA==", + "dependencies": { + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1", + "keyborg": "^2.5.0", + "tabster": "^6.0.0" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-tags": { + "version": "9.0.27", + "resolved": "https://registry.npmjs.org/@fluentui/react-tags/-/react-tags-9.0.27.tgz", + "integrity": "sha512-WfPZz21D7fGpl2x4akzOfJsgDQFn1Byyx46u8nFWZLovX1j2OA3yJXMTOgqFp+/NAMw1t+2lZvcNxZHbtjC/SA==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.8.2", + "@fluentui/react-avatar": "^9.6.14", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-text": { - "version": "9.3.9", - "resolved": "https://registry.npmjs.org/@fluentui/react-text/-/react-text-9.3.9.tgz", - "integrity": "sha512-IPrxF2YmS6Nf7aa3ochgki+m7CBkwT6NcmJtZpg0oPz2k24V3g6d8VqXIIQkU0HmR/fNU5YJnmRj+ewy3d2t8A==", + "version": "9.4.9", + "resolved": "https://registry.npmjs.org/@fluentui/react-text/-/react-text-9.4.9.tgz", + "integrity": "sha512-vEUnZf4Yj4JJpmMmObXJ7SWVsX10dcEMEola9+UuuNyi7jV6hODdeU6gzAbuOli0lqBTfUcyPlCKOxRyGURMAw==", "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-textarea": { - "version": "9.3.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.3.13.tgz", - "integrity": "sha512-+y2XsB9cTy07GSeVp418PvC9KgOQadbsoKACy4hCQNuyYG22rG9JfjOngvhFLGyfty8az1XUtDFoOBN0KFrdZQ==", - "dependencies": { - "@fluentui/react-field": "^9.1.3", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.3.63", + "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.3.63.tgz", + "integrity": "sha512-MZBhuQzLh9S2gLitM+Szjd8zdb0uUfIxxjqdHrDgJ49xLhYlo3I/4vX4LM4UQmuESVJn5gnK2I+BXX7LXwOjZw==", + "dependencies": { + "@fluentui/react-field": "^9.1.53", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-theme": { - "version": "9.1.8", - "resolved": "https://registry.npmjs.org/@fluentui/react-theme/-/react-theme-9.1.8.tgz", - "integrity": "sha512-KXSPSfg29sHEHw9rFpZjKTU4KwY4F4kxZIcqA83Kz8Khnfw17NiWmz8XcmxXaMUlqfwVRxBIM9um2uFE5gjcpw==", - "dependencies": { - "@fluentui/tokens": "1.0.0-alpha.5", - "@swc/helpers": "^0.4.14" + "version": "9.1.16", + "resolved": "https://registry.npmjs.org/@fluentui/react-theme/-/react-theme-9.1.16.tgz", + "integrity": "sha512-QK2dGE5aQXN1UGdiEmGKpYGP3tHXIchLvFf8DEEOWnF4XBc9SiEPNFYkvLMJjHxZmDz4D670rsOPe0r5jFDEKQ==", + "dependencies": { + "@fluentui/tokens": "1.0.0-alpha.13", + "@swc/helpers": "^0.5.1" + } + }, + "node_modules/@fluentui/react-toast": { + "version": "9.3.30", + "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.3.30.tgz", + "integrity": "sha512-TW5UAWgJuUwkcFM5hYDU8qE42A69BmSJP8WeOckEYGrrnEoPQ2HLObf9ReLHtGBE6NOP55na9rBJAk/FLglK/Q==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.8.2", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-portal": "^9.4.13", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1", + "react-transition-group": "^4.4.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-toolbar": { - "version": "9.1.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.1.13.tgz", - "integrity": "sha512-TEwnFGbrfJqg554AHTfcUCfufEuBWMvRWzUYoBSva/dGVanqRYolht3Dq+JmE+6EmmWKCfVh29excMoCUHWh3A==", - "dependencies": { - "@fluentui/react-button": "^9.3.12", - "@fluentui/react-context-selector": "^9.1.20", - "@fluentui/react-divider": "^9.2.12", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-radio": "^9.1.13", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.1.70", + "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.1.70.tgz", + "integrity": "sha512-P1sa7EiedS1AK1PFpo9dLoeuO3XIbmx+UHaOiWZNmWzt88exRHqEGpiSjklFhrYnEKRa8eouerNmKoOOTPaWfA==", + "dependencies": { + "@fluentui/react-button": "^9.3.68", + "@fluentui/react-context-selector": "^9.1.51", + "@fluentui/react-divider": "^9.2.60", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-radio": "^9.2.7", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-tooltip": { - "version": "9.2.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.2.12.tgz", - "integrity": "sha512-hl+e3yb6q1Rb53+bCFbZvaNxPFOKBE/aoZpRORwtk+62XvYEdLpP8gE1d+djdIyYufN/jMCoQehsNmOCv00+kg==", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-portal": "^9.2.8", - "@fluentui/react-positioning": "^9.5.12", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.4.16", + "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.4.16.tgz", + "integrity": "sha512-eGc2SjbnrN/PVuB1cxPMNytRJxHwdBBvdN9mHB8z4SDrf+EPDGue2oq8EnwNLaIXaww9RFRD0RzrusAkEnk/ow==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-portal": "^9.4.13", + "@fluentui/react-positioning": "^9.13.3", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-tree": { - "version": "9.0.0-beta.14", - "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.0.0-beta.14.tgz", - "integrity": "sha512-2WMJmsyHKaXY7fePPGy479Y8k/fCf1tdC8KO680XqtFPNb78xSvHkfLI0T2wngMNcF6d7qyDQqtbIlv5lQQESQ==", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-aria": "^9.3.20", - "@fluentui/react-avatar": "^9.5.1", - "@fluentui/react-button": "^9.3.12", - "@fluentui/react-context-selector": "^9.1.20", - "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-portal": "^9.2.8", - "@fluentui/react-shared-contexts": "^9.4.0", - "@fluentui/react-tabster": "^9.7.1", - "@fluentui/react-theme": "^9.1.8", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "version": "9.4.30", + "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.4.30.tgz", + "integrity": "sha512-KR35Nge0gfHOZIgkA6KFiGkj2fi+QZoq1rHHbXtCWNQvJEJ0iQd8/GiEawMxO/VEP+MAXNdUE5QdMnjRdJOQWA==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.8.2", + "@fluentui/react-avatar": "^9.6.14", + "@fluentui/react-button": "^9.3.68", + "@fluentui/react-checkbox": "^9.2.12", + "@fluentui/react-context-selector": "^9.1.51", + "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-radio": "^9.2.7", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-tabster": "^9.19.0", + "@fluentui/react-theme": "^9.1.16", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-utilities": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.9.0.tgz", - "integrity": "sha512-PJRISHpB/cZLWl1Ii+e0G6FJ/qqO71hjC7wO+t/QbL8o4rB/8yL9BwMM62mx5hWrnQygcEf2NeZWMAoZxnhIGQ==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.18.0.tgz", + "integrity": "sha512-PuuTKm/HReDdLwhpMiEC9SxaCe2NtIL8Ed+kVGBDzqEeVjJylCJWHy4tyOJCJ/+yz1Xyj6thiXr2k8Q5X+m7eg==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.3", - "@swc/helpers": "^0.4.14" + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-shared-contexts": "^9.14.0", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/react-virtualizer": { - "version": "9.0.0-alpha.20", - "resolved": "https://registry.npmjs.org/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.20.tgz", - "integrity": "sha512-tJblL2ccU2FJLZzp641ZiW1CUZH880hZFkij/Pxz34sKXpEskpgoJF4Z93V2STpP+9128DIkrp106mn6fVxbMA==", + "version": "9.0.0-alpha.68", + "resolved": "https://registry.npmjs.org/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.68.tgz", + "integrity": "sha512-01sTPBW1W1FyaJwb1JlV7wyCBBLo+y9NQzPET3LQDJSQ7py1XEd7RL6XPMa/IJ+XbeR8hEPhHEHdtehylliMVw==", "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.4", - "@fluentui/react-utilities": "^9.9.0", - "@griffel/react": "^1.5.2", - "@swc/helpers": "^0.4.14" + "@fluentui/react-jsx-runtime": "^9.0.29", + "@fluentui/react-shared-contexts": "^9.14.0", + "@fluentui/react-utilities": "^9.18.0", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" }, "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" } }, "node_modules/@fluentui/tokens": { - "version": "1.0.0-alpha.5", - "resolved": "https://registry.npmjs.org/@fluentui/tokens/-/tokens-1.0.0-alpha.5.tgz", - "integrity": "sha512-4xCNP/tmeDywmo+PoFqDaUADSvNNzoZHVknC4D77S1RWxVuYmcM15eumKcVRrDuW3wS8eEX4/ZsIlDfqAhnU8g==", + "version": "1.0.0-alpha.13", + "resolved": "https://registry.npmjs.org/@fluentui/tokens/-/tokens-1.0.0-alpha.13.tgz", + "integrity": "sha512-IzYysTTBkAH7tQZxYKpzhxYnTJkvwXhjhTOpmERgnqTFifHTP8/vaQjJAAm7dI/9zlDx1oN+y/I+KzL9bDLHZQ==", "dependencies": { - "@swc/helpers": "^0.4.14" - } - }, - "node_modules/@fluidframework/aqueduct": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/aqueduct/-/aqueduct-1.3.6.tgz", - "integrity": "sha512-33vWqX1UEwYYTHb3Iv6+1B4ZFFcPNdD3cqfAmYbR7nOwxPYq1uKflUzafUOKW6SMpRyomeebCy/f5/PIoG+yJA==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/container-loader": "^1.3.6", - "@fluidframework/container-runtime": "^1.3.6", - "@fluidframework/container-runtime-definitions": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/map": "^1.3.6", - "@fluidframework/request-handler": "^1.3.6", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/runtime-utils": "^1.3.6", - "@fluidframework/synthesize": "^1.3.6", - "@fluidframework/view-interfaces": "^1.3.6", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/aqueduct/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@fluidframework/azure-client": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@fluidframework/azure-client/-/azure-client-1.1.1.tgz", - "integrity": "sha512-2raaGv2nWxdMbcrw9kuDhHd8coqqVloIoM7X19NmcCVP7FLkT7n8Fj2O/7gg8ccqsaMSXNWCRhbtMpca/lcD8g==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^1.0.0", - "@fluidframework/container-definitions": "^1.3.3", - "@fluidframework/container-loader": "^1.3.3", - "@fluidframework/core-interfaces": "^1.3.3", - "@fluidframework/driver-definitions": "^1.3.3", - "@fluidframework/driver-utils": "^1.3.3", - "@fluidframework/fluid-static": "^1.3.3", - "@fluidframework/map": "^1.3.3", - "@fluidframework/protocol-definitions": "^1.0.0", - "@fluidframework/routerlicious-driver": "^1.3.3", - "@fluidframework/runtime-utils": "^1.3.3", - "@fluidframework/server-services-client": "^0.1036.5001", - "axios": "^0.21.2", - "uuid": "^8.3.1" - }, - "peerDependencies": { - "fluid-framework": "^1.3.3" + "@swc/helpers": "^0.5.1" } }, - "node_modules/@fluidframework/azure-client/node_modules/@fluidframework/common-utils": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@fluidframework/common-utils/-/common-utils-1.1.1.tgz", - "integrity": "sha512-XCPEFE1JAg+juQZYQQVZjHZJlM5+Wm9NxRbsnsix05M1tSq0p3SLqwgfaSGssXhLLX5QtG+aF1QD5a3LA1qtNQ==", + "node_modules/@fluid-internal/client-utils": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluid-internal/client-utils/-/client-utils-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-udcDKSKpJ/t0wuialWYCwdHzBFHPd6nwQsgYuakNHSAdzmIQprlmIn/jrbZwAWGQummkNK2k/yXytyyOxe3s2A==", "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", "@types/events": "^3.0.0", "base64-js": "^1.5.1", "buffer": "^6.0.3", @@ -2107,56 +2252,60 @@ "sha.js": "^2.4.11" } }, - "node_modules/@fluidframework/azure-client/node_modules/@fluidframework/protocol-definitions": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@fluidframework/protocol-definitions/-/protocol-definitions-1.2.0.tgz", - "integrity": "sha512-2/GoupA8mjHD8gcjyn4SedqJStKlQAZxga5PtDBoh+xHsuugQRhsAHJCX+8tdqbSK4ZOo9z8iq/vWKVLUi5Dzw==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1" - } - }, - "node_modules/@fluidframework/azure-client/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/@fluidframework/azure-client/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@fluidframework/aqueduct": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/aqueduct/-/aqueduct-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-7+56xyrngJrnPrUsn2qBI5RZDuq3CHJvykR4Sq+21F7posEgBbigIeJqCBNMPtHqpxQK1TH+795huH/7qzfF6Q==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/map": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/request-handler": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/synthesize": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/view-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/cell": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/cell/-/cell-1.3.6.tgz", - "integrity": "sha512-H2SClm04fokJcfLVPtqNKnhEb986gKEPyHA/K2I4IRxRk3kcF327vV/0hpD/A22DDsrAMghTcYDTSXzd/ZUaag==", - "dev": true, - "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/shared-object-base": "^1.3.6" + "node_modules/@fluidframework/azure-client": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/azure-client/-/azure-client-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-TfKS7xh/FVLmM4NaNEI32cESr1b87UGo6HBODaTS6Q9Gkkd/VI0Iav8+H0L+jqx2D2fKAt2rPVfmJ+oQC9IXKQ==", + "dependencies": { + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/fluid-static": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/map": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/server-services-client": "^3.0.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "axios": "^1.6.2" } }, "node_modules/@fluidframework/common-definitions": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@fluidframework/common-definitions/-/common-definitions-0.20.1.tgz", - "integrity": "sha512-KaoQ7w2MDH5OeRKVatL5yVOCFg+9wD6bLSLFh1/TV1EZM46l49iBqO7UVjUtPE6BIm0jvvOzJXULGVSpzokX3g==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@fluidframework/common-definitions/-/common-definitions-1.1.0.tgz", + "integrity": "sha512-WQYtG9tkx2j7i1JSXPvwLnQsqCOZAghMj0aGciqjZVNppUly/XBpAjb4V6FEUCEjxCScPKhyE+1rhV1ep52NgA==" }, "node_modules/@fluidframework/common-utils": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@fluidframework/common-utils/-/common-utils-0.32.2.tgz", - "integrity": "sha512-PoGX7/l0vWKt5JaAxcgFOdGje30Q6qSE06YzFIKh9Ba3oq7B60+TFqu7c2ErQt6sNddmvcAcAiLVNaTGAip3vw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@fluidframework/common-utils/-/common-utils-3.1.0.tgz", + "integrity": "sha512-KpBQqpZKAHCKFMoxtAdrgqL1nIJhT7r2IRGmS3Rm5CMTLsegQ8ifX5lFvd6IbjeWmvLz1qLsY3eS5HBYqy9CVQ==", "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-definitions": "^1.1.0", "@types/events": "^3.0.0", "base64-js": "^1.5.1", "buffer": "^6.0.3", @@ -2166,1188 +2315,746 @@ } }, "node_modules/@fluidframework/container-definitions": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-1.3.6.tgz", - "integrity": "sha512-+5fuIUG7jGjKrRHtrH2VgrRI0YUXcP9jSLrHdI4Ks+4kNSDiOlu+UT7j9T9KoBAfHOpnihS3PVeDBJtIeqgDZw==", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-H73Z7jlnUIEys5J8ItmCn1Y+rtNHh9StouohR9J97QS0vHFTdPi0l9jOkxI+UkmKe4bFT7aUePuiRMZfEfDKCw==", "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", "events": "^3.1.0" } }, "node_modules/@fluidframework/container-loader": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/container-loader/-/container-loader-1.3.6.tgz", - "integrity": "sha512-J7nF7XTHCtL24gGnUhg155kolokX8HRWJqj2XEjaPrBsRmkyiySP+qCnrKY0bgLqaFLHW4WYfmC80lFE3oaELg==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/container-utils": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/telemetry-utils": "^1.3.6", - "abort-controller": "^3.0.0", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/container-loader/-/container-loader-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-RAU+QtBKAeLtNztM/ubpT6a2Pk8lmHoI5oXcjcN1iP4Uw9tipZN31c/40SyO8Kh7Ln2IT5kqVKes/jZuMMdjuQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-base": "^3.0.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "debug": "^4.3.4", "double-ended-queue": "^2.1.0-0", "events": "^3.1.0", - "lodash": "^4.17.21", "url": "^0.11.0", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/container-loader/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/container-runtime": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-1.3.6.tgz", - "integrity": "sha512-YC1Bvd8UiO3YID/sU9yxMMibW0FPqpf+sS47Czg1ILf2twK48U2BopDDKNeIHJFDl3yNOqxJniUkJJLNoYWwqg==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/container-runtime-definitions": "^1.3.6", - "@fluidframework/container-utils": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/garbage-collector": "^1.3.6", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/runtime-utils": "^1.3.6", - "@fluidframework/telemetry-utils": "^1.3.6", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-1U7Mb+LkaAsjk9reDAGGViTwn+utCQGsLWhKE3lRQ1JpxK40WsVnQYknPdd1tw+6/iZT9X7cMYGLnJ2lF5MHsQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@tylerbu/sorted-btree-es6": "^1.8.0", "double-ended-queue": "^2.1.0-0", "events": "^3.1.0", - "uuid": "^8.3.1" + "lz4js": "^0.2.0", + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/container-runtime-definitions": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-1.3.6.tgz", - "integrity": "sha512-cQP/F2F9BjeXKyUNmwQCRRb5qJPoufZ/iIyBSdj8qEYwhTyv3Ogbk+LyHz5cG8wPYlM2ff8IirxwEdgq7VTL/w==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6" - } - }, - "node_modules/@fluidframework/container-runtime/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@fluidframework/container-utils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/container-utils/-/container-utils-1.3.6.tgz", - "integrity": "sha512-Hf3kxHuRzQv3a7J+I/3q5OH3WW5lajy3ENucc1HLCuOKYi39MM5AfAMBEfaTl1aI5iMxhHEyDAZJhaGJvvgOew==", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-EafHKu/foXzo11XiLJU6q32o8B7hB8Y6CkSzZ+4HSO0rZhViauuXzWB9s/i4JylO30fBRhW1a4BHBCC3sfa21w==", "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/telemetry-utils": "^1.3.6" + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" } }, "node_modules/@fluidframework/core-interfaces": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-1.3.6.tgz", - "integrity": "sha512-6ccflpLJvlPhZ58MiMUUC5XvWF1s5yTmP3dXHsJf514IzuAvS5PCGLdZWUjWCgxA2fPvZKzA4VfWpwyFt1H0LA==" + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-Qw1jr5yhkJpFh/uMiU04PM4FoQoFSnNnUoaSdclMsUk0I8CZMQThmMOBkiwlpYsWeHcWZq9FEONWLaujiU6e9w==" }, - "node_modules/@fluidframework/counter": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/counter/-/counter-1.3.6.tgz", - "integrity": "sha512-nKruUnkmrHxlwOINXQPxFrjjjCTE1BkLRGQLQY1v46IkACvl9zbj+mYJzF4BSfjzkBpR4KBS0Delc7jR0AcT+A==", - "dev": true, - "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/shared-object-base": "^1.3.6" - } + "node_modules/@fluidframework/core-utils": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/core-utils/-/core-utils-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-7ifcm/hDORnmN8t+gwHXey6ipWlEKaD6Z4d9LonzH2Nj0K9KCY5oPoBsgO3kJ4PC86VpJtk4JY0eC7fHvcyX9Q==" }, "node_modules/@fluidframework/datastore": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-1.3.6.tgz", - "integrity": "sha512-eQTkB/Z0Sn5JwZ66EvY3r4RflSoZth0Zi7ezD4kbx75c4wmixRSs+qGSMM0xbllFXjyA24ucbL21zduVLxZGcg==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/container-utils": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/garbage-collector": "^1.3.6", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/runtime-utils": "^1.3.6", - "@fluidframework/telemetry-utils": "^1.3.6", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-UJy71kM1iXro6P9psYxKUd+pO6aAqRA+Q3+ozuYKr9CrcgZtk7Kpp9Xng2xwkILrPDYHaaCSKWOuWZUBul9WpA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", "lodash": "^4.17.21", - "uuid": "^8.3.1" + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/datastore-definitions": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-1.3.6.tgz", - "integrity": "sha512-9kgqa5FsIHHuxQPL50cm/FX6FOukBDDHG45ByGEChISbnfkS13xncLrY6mE4FgTC1jW0d7y3CgGT3pn4n9Hc+g==", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-8sUKttyvHtLqoGTQlUKq9AxNGf60MJmUA5gTucxcdfiA44/AySwmGTlIZqaY4i3xzf1p9MWUsIz8VOaZfAT+7A==", "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6" - } - }, - "node_modules/@fluidframework/datastore/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" } }, "node_modules/@fluidframework/driver-base": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-1.3.6.tgz", - "integrity": "sha512-Ini7PyyIP+out9+5eAqq+QYWfxSGprVtxTrtipmoKCjI6XTmgfmSwrs9VPrgdIl6lI52RjEFWQtC/J3vmjAesg==", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-4jI6AjeXX14dH6+cri8mRGxFUeaATtGxom3d5R3iVDjguzjPmMxKlSbul43/zutUHmRbrbp3GaaWRwqYsbHUAA==", "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/telemetry-utils": "^1.3.6" + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" } }, "node_modules/@fluidframework/driver-definitions": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-1.3.6.tgz", - "integrity": "sha512-5Rvk2NhXxh2bhk8WWnBtcJq/9TgVYhAj4z7DDuqXqJyRUF/XYhyxqOfMuo7IAhTa2oTpp8o7QDwZqsfWKfC9tA==", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-MzyWQ/6/O78fL5FK6ZvQRFMmN0RRwc+g3EzMgRKacnoL4p/x1cZ/qI02/xR20zw7k/AuWAXY3bzZWDdWb+jK9g==", "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000" + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0" } }, "node_modules/@fluidframework/driver-utils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-1.3.6.tgz", - "integrity": "sha512-yDbuR4eMj0Y+kbIwV0XaXd3kh+U1YxmU1Qgcxa2RgD3MEMsDiCBaQrUCPjjxmBT9diUfBijVxjjOc5vUfm/eBA==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/gitresources": "^0.1036.5001", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/telemetry-utils": "^1.3.6", - "axios": "^0.26.0", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/driver-utils/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-OwRx65WLr8TOyDPXiMIKF5Bw/t+WdpeOzBmBjw7BnHTTcexYk+pY/FKQdFEEVffc4PhA7y/LLIVZz3ZWwTR62w==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/gitresources": "^3.0.0", + "@fluidframework/protocol-base": "^3.0.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "axios": "^1.6.2", + "lz4js": "^0.2.0", + "url": "^0.11.0", + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/fluid-static": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/fluid-static/-/fluid-static-1.3.6.tgz", - "integrity": "sha512-ncGgaDmewFQJou9roh+8K94hhpIlNEGvLaxNnofgFHAq1R2vLlx+zb5VGMMywnof+gvjgrsk4JOP2C9XpMs9Tw==", - "dependencies": { - "@fluidframework/aqueduct": "^1.3.6", - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/container-loader": "^1.3.6", - "@fluidframework/container-runtime-definitions": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/request-handler": "^1.3.6", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/runtime-utils": "^1.3.6" - } - }, - "node_modules/@fluidframework/garbage-collector": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/garbage-collector/-/garbage-collector-1.3.6.tgz", - "integrity": "sha512-uJpvkWNzTsLJAmGwu6LUjR8cVoAzlfmhxoudaGrA3DeWhGheDcGVP/hiKht+pMw3u1CCA4AKOfE+0bIOQXyFBA==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/runtime-definitions": "^1.3.6" + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/fluid-static/-/fluid-static-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-bxFPpdV3NI7vSSax1qhnyBbKN3nIYhpPaH/7JtMONixrqwiv6Eb3wgQnrJE7ttwlxyBgsytAzLvbaLYR1ErOjw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/aqueduct": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/request-handler": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" } }, "node_modules/@fluidframework/gitresources": { - "version": "0.1036.5001", - "resolved": "https://registry.npmjs.org/@fluidframework/gitresources/-/gitresources-0.1036.5001.tgz", - "integrity": "sha512-Beg1A/eR7wCPYYb5u5iqqc092NkWnSvl4XCn2ImA4FDKtnYggD2/KYd9Hp0feM6Z99aU4FYSBidL2NewWlvF7A==" - }, - "node_modules/@fluidframework/ink": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/ink/-/ink-1.3.6.tgz", - "integrity": "sha512-iXXq0vXYAb4sXvdTrd7/s1v+/VzWkFYvd9H39zzyPgK3IOAcp8IBOcu0WK0tQDbTRr4SK4Kg3Zb4593IxFMFhQ==", - "dev": true, - "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/shared-object-base": "^1.3.6", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/ink/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/gitresources/-/gitresources-3.0.0.tgz", + "integrity": "sha512-kpbONpwCIE7q2G+Q+KTfBHUz+VneL/7tPWlYFZ96uP0dpeBVdSJdf9dgd0ILIzs6rpO6XRpceI2D503LRU6j9g==" + }, + "node_modules/@fluidframework/id-compressor": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/id-compressor/-/id-compressor-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-OInGvGWqN83XBd15KPs+FY2c8sLpwOF8c2JL+GXnxuKz31RYQOf1ukijNwcOmZFOP/xGhpssFy+MRv+RtC2J7g==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@tylerbu/sorted-btree-es6": "^1.8.0", + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/local-driver": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/local-driver/-/local-driver-1.3.6.tgz", - "integrity": "sha512-R8KO3gqtWmLYwGrPwWXtWKlTMg2I5MehuGBe7L05U9k1yi/P9CNowrdcYLXCNi5IuQ0dxwxR5wmnahns4gFSHA==", - "dev": true, - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/driver-base": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/routerlicious-driver": "^1.3.6", - "@fluidframework/server-local-server": "^0.1036.5001", - "@fluidframework/server-services-client": "^0.1036.5001", - "@fluidframework/server-services-core": "^0.1036.5001", - "@fluidframework/server-test-utils": "^0.1036.5001", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/local-driver/-/local-driver-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-tsMnI98fSHNqIshDGvFWlYv597xXy7i9jJmktShxReP61BgyCLenNHEAiLFFnFY+YhWJb/EimZPkj+jdntn+Mg==", + "dev": true, + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-base": "^3.0.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/server-local-server": "^3.0.0", + "@fluidframework/server-services-client": "^3.0.0", + "@fluidframework/server-services-core": "^3.0.0", + "@fluidframework/server-test-utils": "^3.0.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", "events": "^3.1.0", "jsrsasign": "^10.5.25", "url": "^0.11.0", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/local-driver/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/map": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-1.3.6.tgz", - "integrity": "sha512-CEuDHKLbJGt8SwwyUKoY1ZBkeFcn7Y+XPbm6lqsctYM08Fz2n1IsI6cl7KqppR3xJ2SpGyzDnVzNXeiPyOapfQ==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-utils": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/runtime-utils": "^1.3.6", - "@fluidframework/shared-object-base": "^1.3.6", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-lxVB6Bb3H7Icj9xjNfqY5Bo/lMFAKizDTuFxh9OeVliuDy4OW7ytwZmh2Ee7oYHMtVtBeDr8BimUMvFh8RSRMQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", "path-browserify": "^1.0.1" } }, - "node_modules/@fluidframework/matrix": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/matrix/-/matrix-1.3.6.tgz", - "integrity": "sha512-hy6Kp7MmoYRWgNI+hDuQNy3mZoQUczWIg1ykxogUvgn7ZJEjRgMs1Rz6K5FJA1eDWPTeJbsx22F1xWLRAJ256g==", - "dev": true, - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/merge-tree": "^1.3.6", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/runtime-utils": "^1.3.6", - "@fluidframework/shared-object-base": "^1.3.6", - "@fluidframework/telemetry-utils": "^1.3.6", - "@tiny-calc/nano": "0.0.0-alpha.5", - "events": "^3.1.0", - "tslib": "^1.10.0" + "node_modules/@fluidframework/merge-tree": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-xHBH69U7hEWS2xwa2gOARp6umoywgn9EHO0swlybO/irgRVqG5TwfhyDAoUoIFkIcSZICjxSxZhsWayQiiywWw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" } }, - "node_modules/@fluidframework/matrix/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@fluidframework/merge-tree": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-1.3.6.tgz", - "integrity": "sha512-a7ZYHpbKO5as+SxKbiqAlxYXK/vmaWY0A8n1O5dTjgElHaJkuxaKKczczr9tBrAxQ7JYNZ0Sq3e6n5hm2gfU4g==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/container-utils": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/runtime-utils": "^1.3.6", - "@fluidframework/shared-object-base": "^1.3.6", - "@fluidframework/telemetry-utils": "^1.3.6" - } - }, - "node_modules/@fluidframework/mocha-test-setup": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/mocha-test-setup/-/mocha-test-setup-1.3.6.tgz", - "integrity": "sha512-MfIU2oCCw53nP7ey8rftrvvcoP13IY2Yh23J7RuutU/POTgZ956292vnHgvQgHgmJjWJJBf7iDqVAb6Q8EakUQ==", - "dev": true, + "node_modules/@fluidframework/protocol-base": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/protocol-base/-/protocol-base-3.0.0.tgz", + "integrity": "sha512-csvei49LHDZhD+gQ3brUZEeekQmvk/ndsBNhYnqxJeoAOlBi5MtIqyb5vA96pKd0o23cwGE5PWEfrxJcsqEmTQ==", "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/test-driver-definitions": "^1.3.6", - "mocha": "^10.0.0" + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/gitresources": "~3.0.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "events": "^3.1.0" } }, - "node_modules/@fluidframework/odsp-doclib-utils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/odsp-doclib-utils/-/odsp-doclib-utils-1.3.6.tgz", - "integrity": "sha512-Wp5/7KZOPaiDVT5gdorW3fk8M8ZKXX4wYCZO+EU+rnoh6t9k+cXtWGNmAE68/vPOjDH+8UPz2P/yPereZja2mg==", - "dev": true, + "node_modules/@fluidframework/protocol-definitions": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@fluidframework/protocol-definitions/-/protocol-definitions-3.1.0.tgz", + "integrity": "sha512-BgGF82z4sk5M4torMR38NGjHjFG9t6Y653UcGOlXiIaGQMDZpRfrxiIuq53Gb12OTfUgbNtvBJL1W46JfLvzQw==" + }, + "node_modules/@fluidframework/register-collection": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/register-collection/-/register-collection-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-Wy/LjrLgsLTr0j/Ll6b5Ba4USrDFCCTLGtWmt0fmAUaOv5s7t7EK82mp4epJ3vB/xiAO2R/pD2va4cmKoHVD8A==", "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/odsp-driver-definitions": "^1.3.6", - "@fluidframework/telemetry-utils": "^1.3.6", - "node-fetch": "^2.6.1" + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" } }, - "node_modules/@fluidframework/odsp-driver": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/odsp-driver/-/odsp-driver-1.3.6.tgz", - "integrity": "sha512-4t/XcvGcFL0ElPuQrA3Aq3iB7ZZ50soCgdKoH+mKtkUgoB0DqAYKgQDB61tLQpYFr07gfpeBUHv+6hMZ1v7q5A==", - "dev": true, - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/driver-base": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/gitresources": "^0.1036.5001", - "@fluidframework/odsp-doclib-utils": "^1.3.6", - "@fluidframework/odsp-driver-definitions": "^1.3.6", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/telemetry-utils": "^1.3.6", - "abort-controller": "^3.0.0", - "node-fetch": "^2.6.1", - "socket.io-client": "^4.4.1", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/odsp-driver-definitions": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/odsp-driver-definitions/-/odsp-driver-definitions-1.3.6.tgz", - "integrity": "sha512-iTolXZ12yrB/05ZNHRYy+AKxX3vMmV1YDzeTOzhS1L7nn6SyDAlPx4BZMeLwEPwqA0OzQjYAAWgyW3FV28jmNw==", - "dev": true, + "node_modules/@fluidframework/request-handler": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/request-handler/-/request-handler-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-8Za0aFTmPx3Gn3YFe0nolWz1bezMMHWUa8u2Rmkte3nADYLNBE97q/RYnTwM5VtdWfmOcgcgBrzuuaik7AeZHw==", "dependencies": { - "@fluidframework/driver-definitions": "^1.3.6" - } - }, - "node_modules/@fluidframework/odsp-driver/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@fluidframework/odsp-urlresolver": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/odsp-urlresolver/-/odsp-urlresolver-1.3.6.tgz", - "integrity": "sha512-IvS6BQQyVBfZmV1EMqrzF9p32DZIosXIHbZjdECW5MGn1V8Dqv6zaMx5tS0hqSxGauAKLPoZ37kwzyX8wEQxaA==", - "dev": true, - "dependencies": { - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/odsp-driver": "^1.3.6", - "@fluidframework/odsp-driver-definitions": "^1.3.6" - } - }, - "node_modules/@fluidframework/ordered-collection": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/ordered-collection/-/ordered-collection-1.3.6.tgz", - "integrity": "sha512-OCcQ86lb+LbZXyGN4XxsbfwoAcVyCj0S4zG82oI7IRl8jgQtRkXc0nmvIyufQidLMmMzTwTB/LppYu1MJWMqGg==", - "dev": true, - "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/runtime-utils": "^1.3.6", - "@fluidframework/shared-object-base": "^1.3.6", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/ordered-collection/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@fluidframework/protocol-base": { - "version": "0.1036.5001", - "resolved": "https://registry.npmjs.org/@fluidframework/protocol-base/-/protocol-base-0.1036.5001.tgz", - "integrity": "sha512-Btjy2bWVbVsmzNTBxTQZ9l/WXljsjDpGbBgJsn9GLacrTG9aDDtIVMXuwLAcEV1IVkxGcIipXryvfhbPHDYcMg==", - "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/gitresources": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "lodash": "^4.17.21" - } - }, - "node_modules/@fluidframework/protocol-definitions": { - "version": "0.1028.2000", - "resolved": "https://registry.npmjs.org/@fluidframework/protocol-definitions/-/protocol-definitions-0.1028.2000.tgz", - "integrity": "sha512-ZUPCmPFcK7UAK4RkfVWfzQPAWFvYNm6ywP51V42YC38gCGye+Epvyr3beA+FSaHPIZGxm5+Uw52+ykTvmDb2UA==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1" - } - }, - "node_modules/@fluidframework/register-collection": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/register-collection/-/register-collection-1.3.6.tgz", - "integrity": "sha512-CFj3l5rZZh7Imxaf7LvhMsACPTd3cdyNw6exBuVI5xOfsOuazSfuShIwCijF94QRujufmAtnvupDGv8CYlfZXg==", - "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/shared-object-base": "^1.3.6" - } - }, - "node_modules/@fluidframework/request-handler": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/request-handler/-/request-handler-1.3.6.tgz", - "integrity": "sha512-4z0XRVuj3mu6ZYceUbTf/DZfRt1u0cClnpVZPthEs26QSk6LJvEpt5UBE3oIGkESoxZ3LHtAnkS2zCEl8jcrFw==", - "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-runtime-definitions": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/runtime-utils": "^1.3.6" + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" } }, "node_modules/@fluidframework/routerlicious-driver": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/routerlicious-driver/-/routerlicious-driver-1.3.6.tgz", - "integrity": "sha512-b9NXLWI7YH4l2dEkgjDuIF9BNb1ggxkzS8ZtZpr+eBtegRN+E+WSbkR7JCPwrDmA+vPa9z0mXNS88ZeCwnQp3A==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/driver-base": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/gitresources": "^0.1036.5001", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/server-services-client": "^0.1036.5001", - "@fluidframework/telemetry-utils": "^1.3.6", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/routerlicious-driver/-/routerlicious-driver-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-Myy1zt8z3tTjnb8mk7+y4tSwSCdBnAS2cyHLyorjt5TtUoROSR8DofOS2qN1b9qgb3CpE1SfVX02QkhjitGekA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/gitresources": "^3.0.0", + "@fluidframework/protocol-base": "^3.0.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/server-services-client": "^3.0.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", "cross-fetch": "^3.1.5", "json-stringify-safe": "5.0.1", - "querystring": "^0.2.0", - "socket.io-client": "^4.4.1", + "socket.io-client": "^4.6.1", "url-parse": "^1.5.8", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/routerlicious-driver/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/runtime-definitions": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-1.3.6.tgz", - "integrity": "sha512-sFCUkN4sCz1ww7XKhIFiiXuaUtrps8Dd4h0VaYLsvzkH9bD/lcbbcvgmaMmqPa3tOy0ROsLAM5QSr5jBYipidw==", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-VUP4IIS53XOA4pTmCLXn6xMFDdbfc9C0kDBWhU9AfpO92G5tz06VEgV/Xhu5HxuhTdG8DYbqyr7u41MPTIRjDg==", "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000" + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0" } }, "node_modules/@fluidframework/runtime-utils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-1.3.6.tgz", - "integrity": "sha512-Yl0oWTcUwgDBWIaW6UsyfHE9D5yhmY11lx5ij3RcEn2Up07mD7+DzFXvxXTjdCioc4B0ssad70vvGJKJOwk6Nw==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/container-runtime-definitions": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/garbage-collector": "^1.3.6", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/telemetry-utils": "^1.3.6" + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-HD/sC8C/NcwhUW3zR44erNaTF9JFlw3dbSxqNPhUmibiBZ9siFVN1lDz3vg2787ezQgLsykGFGNfnS6mC2eS8w==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" } }, "node_modules/@fluidframework/sequence": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-1.3.6.tgz", - "integrity": "sha512-XGtwifGkakcUxAnaEyM23CaG/avK1a87odb2uhbiwP2k3g55aSe2PsOhmtJVVrs1Yv775Xc1jGUotRKiNzLY7w==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-utils": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/merge-tree": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/runtime-utils": "^1.3.6", - "@fluidframework/shared-object-base": "^1.3.6", - "@fluidframework/telemetry-utils": "^1.3.6", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/sequence/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-wKIcbLcBasxCTxEJym39KwWN0P41RH7yep2ti/3EW2O1PkZnPJCPBdb3xBjsvY2zSJRQX8PJHINSfbmrpH99tQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/server-lambdas": { - "version": "0.1036.5001", - "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas/-/server-lambdas-0.1036.5001.tgz", - "integrity": "sha512-0Wc1k7WqLZatUdoV09flzMgmumBWR+8AOKJNqZSDr4XcEOfdyLIpEjDgIelkJm9JFC1RLpcNcVR5k14RuWq2CQ==", - "dev": true, - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/gitresources": "^0.1036.5001", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/server-lambdas-driver": "^0.1036.5001", - "@fluidframework/server-services-client": "^0.1036.5001", - "@fluidframework/server-services-core": "^0.1036.5001", - "@fluidframework/server-services-telemetry": "^0.1036.5001", - "@types/semver": "^6.0.1", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas/-/server-lambdas-3.0.0.tgz", + "integrity": "sha512-vx6vlFJ1uW/hxam14NumitMeCw4vpmu863CR8MtNlzWem1YtHkYCjBYl/8tz8ziBUZTCaFeHg2xPyl3U8s2Tjw==", + "dev": true, + "dependencies": { + "@fluidframework/common-definitions": "^1.1.0", + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/gitresources": "~3.0.0", + "@fluidframework/protocol-base": "~3.0.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/server-lambdas-driver": "~3.0.0", + "@fluidframework/server-services-client": "~3.0.0", + "@fluidframework/server-services-core": "~3.0.0", + "@fluidframework/server-services-telemetry": "~3.0.0", + "@types/semver": "^7.5.0", + "assert": "^2.0.0", "async": "^3.2.2", - "axios": "^0.26.0", + "axios": "^1.6.2", + "buffer": "^6.0.3", "double-ended-queue": "^2.1.0-0", + "events": "^3.1.0", "json-stringify-safe": "^5.0.1", "lodash": "^4.17.21", "nconf": "^0.12.0", - "semver": "^6.3.0", + "semver": "^7.5.3", "sha.js": "^2.4.11", - "uuid": "^8.3.1" + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/server-lambdas-driver": { - "version": "0.1036.5001", - "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas-driver/-/server-lambdas-driver-0.1036.5001.tgz", - "integrity": "sha512-YD4dDev+2niL7EUtroa6wA6BlkaTpI7TGbBjD/xQcKclGfk52TjwbSJ30caccQNafgHsKXAWNZmFHHMUgmQa9A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas-driver/-/server-lambdas-driver-3.0.0.tgz", + "integrity": "sha512-3DqlnteWnb5GOEL0yp6aYZ7m9+xvbjDGtBJEE9gq3kA2bpnYB9Z51g08DsFQonzfEdllSO8iVt5/GAsBNkluXQ==", "dev": true, "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/server-services-client": "^0.1036.5001", - "@fluidframework/server-services-core": "^0.1036.5001", - "@fluidframework/server-services-telemetry": "^0.1036.5001", + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/server-services-client": "~3.0.0", + "@fluidframework/server-services-core": "~3.0.0", + "@fluidframework/server-services-telemetry": "~3.0.0", + "assert": "^2.0.0", "async": "^3.2.2", - "lodash": "^4.17.21" - } - }, - "node_modules/@fluidframework/server-lambdas/node_modules/@types/semver": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.2.3.tgz", - "integrity": "sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==", - "dev": true - }, - "node_modules/@fluidframework/server-lambdas/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@fluidframework/server-lambdas/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "events": "^3.1.0", + "lodash": "^4.17.21", + "nconf": "^0.12.0", + "serialize-error": "^8.1.0" } }, "node_modules/@fluidframework/server-local-server": { - "version": "0.1036.5001", - "resolved": "https://registry.npmjs.org/@fluidframework/server-local-server/-/server-local-server-0.1036.5001.tgz", - "integrity": "sha512-uAhILyeAoLOO6RQHz7hpznSFPpOM0uAfGqg+DxwcGhf4EYoC2LNpnhytptKiZQj7p//Ln5sv0asVYnRgRRaj1w==", - "dev": true, - "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/server-lambdas": "^0.1036.5001", - "@fluidframework/server-memory-orderer": "^0.1036.5001", - "@fluidframework/server-services-client": "^0.1036.5001", - "@fluidframework/server-services-core": "^0.1036.5001", - "@fluidframework/server-services-telemetry": "^0.1036.5001", - "@fluidframework/server-test-utils": "^0.1036.5001", - "debug": "^4.1.1", - "jsrsasign": "^10.2.0", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/server-local-server/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-local-server/-/server-local-server-3.0.0.tgz", + "integrity": "sha512-7ZlJ0wlS5384WO7NAaiGX0JuhT0UNeJDDBJIylMn5ZB7f0Aj/CGrC5B+wLhFTnhA0QYIjZ+MtwV91yyLFQG5hg==", + "dev": true, + "dependencies": { + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/server-lambdas": "~3.0.0", + "@fluidframework/server-memory-orderer": "~3.0.0", + "@fluidframework/server-services-client": "~3.0.0", + "@fluidframework/server-services-core": "~3.0.0", + "@fluidframework/server-services-telemetry": "~3.0.0", + "@fluidframework/server-test-utils": "~3.0.0", + "debug": "^4.3.4", + "events": "^3.1.0", + "jsrsasign": "^10.5.25", + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/server-memory-orderer": { - "version": "0.1036.5001", - "resolved": "https://registry.npmjs.org/@fluidframework/server-memory-orderer/-/server-memory-orderer-0.1036.5001.tgz", - "integrity": "sha512-sE7+OT8MdriTswZq8BEKzGWqTWpYPKcWaUaxJjFiH3zOZjHrAn39KzFBib7R49aqK3VddvWzDb6w7Vp1B+LTNw==", - "dev": true, - "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/server-lambdas": "^0.1036.5001", - "@fluidframework/server-services-client": "^0.1036.5001", - "@fluidframework/server-services-core": "^0.1036.5001", - "@fluidframework/server-services-telemetry": "^0.1036.5001", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-memory-orderer/-/server-memory-orderer-3.0.0.tgz", + "integrity": "sha512-zT+/rmEVFc07TAdy0KZ8zq9Fmz5SWm6K8HeAKfbWLduUioVKR+2LjYoxg6sKQTOVXLlS9auhgMUSln9WHu++Sw==", + "dev": true, + "dependencies": { + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/protocol-base": "~3.0.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/server-lambdas": "~3.0.0", + "@fluidframework/server-services-client": "~3.0.0", + "@fluidframework/server-services-core": "~3.0.0", + "@fluidframework/server-services-telemetry": "~3.0.0", "@types/debug": "^4.1.5", "@types/double-ended-queue": "^2.1.0", "@types/lodash": "^4.14.118", - "@types/node": "^14.18.0", + "@types/node": "^18.17.1", "@types/ws": "^6.0.1", - "debug": "^4.1.1", + "assert": "^2.0.0", + "debug": "^4.3.4", "double-ended-queue": "^2.1.0-0", + "events": "^3.1.0", "lodash": "^4.17.21", "sillyname": "^0.1.0", - "uuid": "^8.3.1", + "uuid": "^9.0.0", "ws": "^7.4.6" } }, "node_modules/@fluidframework/server-memory-orderer/node_modules/@types/node": { - "version": "14.18.47", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.47.tgz", - "integrity": "sha512-OuJi8bIng4wYHHA3YpKauL58dZrPxro3d0tabPHyiNF8rKfGKuVfr83oFlPLmKri1cX+Z3cJP39GXmnqkP11Gw==", - "dev": true + "version": "18.19.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.17.tgz", + "integrity": "sha512-SzyGKgwPzuWp2SHhlpXKzCX0pIOfcI4V2eF37nNBJOhwlegQ83omtVQ1XxZpDE06V/d6AQvfQdPfnw0tRC//Ng==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, - "node_modules/@fluidframework/server-memory-orderer/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "node_modules/@fluidframework/server-memory-orderer/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/@fluidframework/server-services-client": { - "version": "0.1036.5001", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-client/-/server-services-client-0.1036.5001.tgz", - "integrity": "sha512-e+Zk2uPcds9yqlalAZ0PpfEAKPPUIpIoQb3YSm42ZVpAgQmLYIRqTpXrmTC7qdeQnSGFJUAliW4DfHBEwpSXlQ==", - "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/gitresources": "^0.1036.5001", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "axios": "^0.26.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-client/-/server-services-client-3.0.0.tgz", + "integrity": "sha512-obsH2oYOkmvQoOSuluwEwiViOuZe3wNBNBWxuUHkGKmfeg1xU5Ko2Sj5/0Ku45f5EY8puRenlApCTS/2mKhSaw==", + "dependencies": { + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/gitresources": "~3.0.0", + "@fluidframework/protocol-base": "~3.0.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "axios": "^1.6.2", "crc-32": "1.2.0", - "debug": "^4.1.1", + "debug": "^4.3.4", "json-stringify-safe": "^5.0.1", - "jsrsasign": "^10.2.0", - "jwt-decode": "^3.0.0", + "jsrsasign": "^10.5.25", + "jwt-decode": "^4.0.0", "querystring": "^0.2.0", "sillyname": "^0.1.0", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/server-services-client/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/server-services-core": { - "version": "0.1036.5001", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-core/-/server-services-core-0.1036.5001.tgz", - "integrity": "sha512-wQ0lt+iZavtR0klU9JFguMok/TqjFQYoCKosxRXdek756TglSIhzQhupKs0YFrYec1Ln2r0mhkTJLfDxkQO4Rg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-core/-/server-services-core-3.0.0.tgz", + "integrity": "sha512-MyZnArgoNWHldCONx0oEhC7kzNY9hfemHdKH07ESFjpj9d2AqzDNfM/lZfb6uK5oiTs7G2sbR8VTdWWJZdzz8g==", "dev": true, "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/gitresources": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/server-services-client": "^0.1036.5001", - "@fluidframework/server-services-telemetry": "^0.1036.5001", + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/gitresources": "~3.0.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/server-services-client": "~3.0.0", + "@fluidframework/server-services-telemetry": "~3.0.0", "@types/nconf": "^0.10.2", - "@types/node": "^14.18.0", - "debug": "^4.1.1", + "@types/node": "^18.17.1", + "debug": "^4.3.4", + "events": "^3.1.0", "nconf": "^0.12.0" } }, "node_modules/@fluidframework/server-services-core/node_modules/@types/node": { - "version": "14.18.47", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.47.tgz", - "integrity": "sha512-OuJi8bIng4wYHHA3YpKauL58dZrPxro3d0tabPHyiNF8rKfGKuVfr83oFlPLmKri1cX+Z3cJP39GXmnqkP11Gw==", - "dev": true + "version": "18.19.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.17.tgz", + "integrity": "sha512-SzyGKgwPzuWp2SHhlpXKzCX0pIOfcI4V2eF37nNBJOhwlegQ83omtVQ1XxZpDE06V/d6AQvfQdPfnw0tRC//Ng==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@fluidframework/server-services-telemetry": { - "version": "0.1036.5001", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-telemetry/-/server-services-telemetry-0.1036.5001.tgz", - "integrity": "sha512-uV3KZVij7AIqw4AvPqqdgq73dgACIN6MFxKwQgXQL7zZO4zBd/M/vCujOxPwS6NvHgfBZnn5yAWvLX3MldywYg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-telemetry/-/server-services-telemetry-3.0.0.tgz", + "integrity": "sha512-6t8aapyGgoCefgkHhU6CAdZEqPf43nHOulht5ghEBuyhrxqY+BEJYtNq9/5O4E7kpph1d1M/tYPIZD1adjgCIQ==", "dev": true, "dependencies": { - "@fluidframework/common-utils": "^0.32.2", + "@fluidframework/common-utils": "^3.1.0", "json-stringify-safe": "^5.0.1", "path-browserify": "^1.0.1", "serialize-error": "^8.1.0", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/server-services-telemetry/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/server-test-utils": { - "version": "0.1036.5001", - "resolved": "https://registry.npmjs.org/@fluidframework/server-test-utils/-/server-test-utils-0.1036.5001.tgz", - "integrity": "sha512-kks83OhWF8xRyoQXz7PHBPvXiCEuylCR9J/YKkQ/u0Xo2nvckEDSwWcpED08JIo7b3NXtkvd8H1BfG3UWoof+w==", - "dev": true, - "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/gitresources": "^0.1036.5001", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/server-services-client": "^0.1036.5001", - "@fluidframework/server-services-core": "^0.1036.5001", - "@fluidframework/server-services-telemetry": "^0.1036.5001", - "debug": "^4.1.1", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-test-utils/-/server-test-utils-3.0.0.tgz", + "integrity": "sha512-XX2Tdfga0nL/KBtND6QngRQ/rk5p1Pd8knOp0b6Cz3T5kf2UrRnkft11e0QPe3xtVs2JCB8tvpptsF3Uj7qxSw==", + "dev": true, + "dependencies": { + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/gitresources": "~3.0.0", + "@fluidframework/protocol-base": "~3.0.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/server-services-client": "~3.0.0", + "@fluidframework/server-services-core": "~3.0.0", + "@fluidframework/server-services-telemetry": "~3.0.0", + "assert": "^2.0.0", + "debug": "^4.3.4", + "events": "^3.1.0", "lodash": "^4.17.21", "string-hash": "^1.1.3", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/server-test-utils/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/shared-object-base": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-1.3.6.tgz", - "integrity": "sha512-eUMtIosNBwDJXpw69BJuOLGJw4Lf53f6sU6ZgNKU1l2C5/Ht7gG2iDEBxYnNUvVAMQprTHYt5T1qTwn8uaT+Lw==", - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/container-runtime": "^1.3.6", - "@fluidframework/container-utils": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/runtime-utils": "^1.3.6", - "@fluidframework/telemetry-utils": "^1.3.6", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/shared-object-base/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-VDSphSUc6RJ7ATtPnss+oiaiorEWGQ+tABmUl5OPPVi31mHuvQtnNRdoITlyqM8M4DF2eqoVcXHeH3mIDrKlfA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/synthesize": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/synthesize/-/synthesize-1.3.6.tgz", - "integrity": "sha512-avt0K5uxvOjs1Y6XpisonkMmG3RaI901h5XfIWFlxOhkHSgeN7T3ZmTdAinlpyRv+XKHzVzN1SqaccpGeC0+lw==" - }, - "node_modules/@fluidframework/telemetry-utils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-1.3.6.tgz", - "integrity": "sha512-9DoLzKwnELWBN2NiCJPgfj2lCER4IiHSgiBMwbLoEZ0qTqGKhWJ1+7m1PupuwGuKX1zbb9HjUNxv2ommokZcqw==", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/synthesize/-/synthesize-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-Oo9geoOgS05LmkEMfUdcHC0hyJF/mYIaD2jhWohg8+rJ0lbNHa865L5GONEPXvOZGXkk6n/q6YvsVnmZ0x0qyg==", "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "debug": "^4.1.1", - "events": "^3.1.0", - "uuid": "^8.3.1" + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" } }, - "node_modules/@fluidframework/telemetry-utils/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@fluidframework/telemetry-utils": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-5+4xRh1D8tuoO5Ayomr6onaGmpHXr5pJ0PT5nueUnlP6wOgfk569Ot2KOq+Ag0FjQQDtnSRM/mXKxqNmhhpYlg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "debug": "^4.3.4", + "events": "^3.1.0", + "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/test-client-utils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/test-client-utils/-/test-client-utils-1.3.6.tgz", - "integrity": "sha512-bwF/R/dDhpjwTQPlZvy/nqYApzLaBV7abolBhB3dKDdMPEDDqhTQP3pLreY3c43c+TLvInwYZCXeruAQlItocQ==", + "node_modules/@fluidframework/test-driver-definitions": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-9ESfhpj7SxRuXOBMEcokWZy7xDcXFJCj2QOQPTqgp2QmnMNy93s/LYySRau3Fxn99qnaHfHKvtLDTx+5TsVmsw==", "dev": true, "dependencies": { - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/test-runtime-utils": "^1.3.6", - "sillyname": "^0.1.0" + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/test-driver-definitions": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-1.3.6.tgz", - "integrity": "sha512-GLg2bcNcAFDa2LFJ1P5SqKqfzsYKTP567ZYguhI7OOgEpzL4pVpaWVdDw/nYlBqhOOooXBLt0cR1U3rNaRn36A==", - "dev": true, - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "uuid": "^8.3.1" + "node_modules/@fluidframework/test-runtime-utils": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/test-runtime-utils/-/test-runtime-utils-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-1VPJarGDsv+LpE3tr6DDPgLIW+x4ojWcH9dGgT2gR100GLnBW1MJvaLmJfetw8eG+XbUxqXMYi58M/V674mhAQ==", + "dev": true, + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "events": "^3.1.0", + "jsrsasign": "^10.5.25", + "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/test-driver-definitions/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@fluidframework/test-utils": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/test-utils/-/test-utils-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-1NqniWGIBiuEgCHx9bfqnLnVl9A3DESqM8CJizauBStSbzHGV8rN0xDtXmRBYtKK1W10H36W3M1+/ZTOHg1zqw==", + "dev": true, + "dependencies": { + "@fluidframework/aqueduct": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/local-driver": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/map": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/request-handler": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/test-driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/test-runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "best-random": "^1.0.0", + "debug": "^4.3.4", + "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/test-drivers": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/test-drivers/-/test-drivers-1.3.6.tgz", - "integrity": "sha512-MtrbiZ6bpIY7XrNzJLp1J4OEc/tvWUsK5KsXU5Rz10udLWq6k7cQGnDbJmWm9GLEpwLqSx0Uet3bA7vDX9/Aew==", - "dev": true, - "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/local-driver": "^1.3.6", - "@fluidframework/odsp-doclib-utils": "^1.3.6", - "@fluidframework/odsp-driver": "^1.3.6", - "@fluidframework/odsp-driver-definitions": "^1.3.6", - "@fluidframework/odsp-urlresolver": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/routerlicious-driver": "^1.3.6", - "@fluidframework/server-local-server": "^0.1036.5001", - "@fluidframework/test-driver-definitions": "^1.3.6", - "@fluidframework/test-pairwise-generator": "^1.3.6", - "@fluidframework/test-runtime-utils": "^1.3.6", - "@fluidframework/tinylicious-driver": "^1.3.6", - "@fluidframework/tool-utils": "^1.3.6", - "axios": "^0.26.0", - "semver": "^7.3.4", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/test-drivers/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@fluidframework/tree": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/tree/-/tree-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-2/clJZo9eWZFQ02EfXdjX7IdN7y1bqNL8x1yCv7dTMh3rf4KB4ZqULiZxU4Zk2Gw/l29eSihm77uERoIFqUSzQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@sinclair/typebox": "^0.29.4", + "@tylerbu/sorted-btree-es6": "^1.8.0", + "@ungap/structured-clone": "^1.2.0", + "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/test-pairwise-generator": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/test-pairwise-generator/-/test-pairwise-generator-1.3.6.tgz", - "integrity": "sha512-nb+o0h275URMAaVp98ozVjAWKwdf2fZcWtRN2rslrtHtaI7mFFA6uwl3qEeGWWEQLZ+kGs9LYhmZjl3vl7aBHw==", - "dev": true, + "node_modules/@fluidframework/view-interfaces": { + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/view-interfaces/-/view-interfaces-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-YW1anify9PNOC9bwzMMbOrmpxwPskAjtHlEpyrXueDgYUw2xZZFE/hNBfE8m4qfONbbqvzkZlRndsYjOeh8Caw==", "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "random-js": "^1.0.8" + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" } }, - "node_modules/@fluidframework/test-runtime-utils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/test-runtime-utils/-/test-runtime-utils-1.3.6.tgz", - "integrity": "sha512-OoYH8Ht2nIqEwcnbz4Cg4sGk0HTkKg0+dNmZ7aP4qzctibKdNwObmypdia3MMmx16hpQRExhzO1d0ut/fRzLkA==", - "dev": true, - "dependencies": { - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/routerlicious-driver": "^1.3.6", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/runtime-utils": "^1.3.6", - "@fluidframework/telemetry-utils": "^1.3.6", - "axios": "^0.26.0", - "events": "^3.1.0", - "jsrsasign": "^10.5.25", - "uuid": "^8.3.1" + "node_modules/@griffel/core": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.15.2.tgz", + "integrity": "sha512-RlsIXoSS3gaYykUgxFpwKAs/DV9cRUKp3CW1kt3iPAtsDTWn/o+8bT1jvBws/tMM2GBu/Uc0EkaIzUPqD7uA+Q==", + "dependencies": { + "@emotion/hash": "^0.9.0", + "@griffel/style-types": "^1.0.3", + "csstype": "^3.1.3", + "rtl-css-js": "^1.16.1", + "stylis": "^4.2.0", + "tslib": "^2.1.0" } }, - "node_modules/@fluidframework/test-runtime-utils/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@griffel/react": { + "version": "1.5.20", + "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.20.tgz", + "integrity": "sha512-1P2yaPctENFSCwyPIYXBmgpNH68c0lc/jwSzPij1QATHDK1AASKuSeq6hW108I67RKjhRyHCcALshdZ3GcQXSg==", + "dependencies": { + "@griffel/core": "^1.15.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "react": ">=16.8.0 <19.0.0" } }, - "node_modules/@fluidframework/test-utils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/test-utils/-/test-utils-1.3.6.tgz", - "integrity": "sha512-lvnFjHqXpBJ+cCWo5Q1yQjeMN/dkFl2vsPT8+95uwuUDtz+p7com7XlMXfhbR+4jrSEvZWXh55J4jRTNGsYZvQ==", - "dev": true, - "dependencies": { - "@fluidframework/aqueduct": "^1.3.6", - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/container-loader": "^1.3.6", - "@fluidframework/container-runtime": "^1.3.6", - "@fluidframework/container-runtime-definitions": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/datastore": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/local-driver": "^1.3.6", - "@fluidframework/map": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/request-handler": "^1.3.6", - "@fluidframework/routerlicious-driver": "^1.3.6", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/runtime-utils": "^1.3.6", - "@fluidframework/telemetry-utils": "^1.3.6", - "@fluidframework/test-driver-definitions": "^1.3.6", - "@fluidframework/test-runtime-utils": "^1.3.6", - "debug": "^4.1.1", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/test-utils/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@fluidframework/test-version-utils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.3.6.tgz", - "integrity": "sha512-/E2HsApwu/AOnQXePOQUiLZIE/N97q6mtta/1ThYPk7NqINFKTEzhVefPXh1m+5dnMCFfjhKz+BC2gpMws+cmQ==", - "dev": true, - "dependencies": { - "@fluidframework/aqueduct": "^1.3.6", - "@fluidframework/cell": "^1.3.6", - "@fluidframework/common-definitions": "^0.20.1", - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/container-loader": "^1.3.6", - "@fluidframework/container-runtime": "^1.3.6", - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/counter": "^1.3.6", - "@fluidframework/datastore-definitions": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/ink": "^1.3.6", - "@fluidframework/map": "^1.3.6", - "@fluidframework/matrix": "^1.3.6", - "@fluidframework/mocha-test-setup": "^1.3.6", - "@fluidframework/ordered-collection": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/register-collection": "^1.3.6", - "@fluidframework/runtime-definitions": "^1.3.6", - "@fluidframework/sequence": "^1.3.6", - "@fluidframework/test-driver-definitions": "^1.3.6", - "@fluidframework/test-drivers": "^1.3.6", - "@fluidframework/test-utils": "^1.3.6", - "nconf": "^0.11.4", - "proper-lockfile": "^4.1.2", - "semver": "^7.3.4" - } - }, - "node_modules/@fluidframework/test-version-utils/node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", - "dev": true - }, - "node_modules/@fluidframework/test-version-utils/node_modules/nconf": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.11.4.tgz", - "integrity": "sha512-YaDR846q11JnG1vTrhJ0QIlhiGY6+W1bgWtReG9SS3vkTl3AoNwFvUItdhG6/ZjGCfWpUVuRTNEBTDAQ3nWhGw==", - "dev": true, - "dependencies": { - "async": "^1.4.0", - "ini": "^2.0.0", - "secure-keys": "^1.0.0", - "yargs": "^16.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/@fluidframework/tinylicious-driver": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/tinylicious-driver/-/tinylicious-driver-1.3.6.tgz", - "integrity": "sha512-ZV6HZ1Lxnl0WFX6ajg0vpG5bCpMK21cUSI7QHteyXR76APqodu3HnMksEIuA1IgxCAW/o5n/eN02hY36yz8ANg==", - "dev": true, - "dependencies": { - "@fluidframework/core-interfaces": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/driver-utils": "^1.3.6", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "@fluidframework/routerlicious-driver": "^1.3.6", - "@fluidframework/server-services-client": "^0.1036.5001", - "jsrsasign": "^10.5.25", - "uuid": "^8.3.1" - } - }, - "node_modules/@fluidframework/tinylicious-driver/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@fluidframework/tool-utils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/tool-utils/-/tool-utils-1.3.6.tgz", - "integrity": "sha512-IRrUPE4gadtCLUCCoUmQNVoObdBdb6/myfiaRmTDZnLguO20OUrPvYrJSF0d2pYYy5jQgJy/mN+nDrWtFhno7Q==", - "dev": true, - "dependencies": { - "@fluidframework/common-utils": "^0.32.2", - "@fluidframework/odsp-doclib-utils": "^1.3.6", - "@fluidframework/protocol-base": "^0.1036.5001", - "@fluidframework/protocol-definitions": "^0.1028.2000", - "async-mutex": "^0.3.1", - "debug": "^4.1.1", - "jwt-decode": "^2.2.0", - "proper-lockfile": "^4.1.2" - } - }, - "node_modules/@fluidframework/tool-utils/node_modules/jwt-decode": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz", - "integrity": "sha512-86GgN2vzfUu7m9Wcj63iUkuDzFNYFVmjeDm2GzWpUk+opB0pEpMsw6ePCMrhYkumz2C1ihqtZzOMAg7FiXcNoQ==", - "dev": true - }, - "node_modules/@fluidframework/view-interfaces": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@fluidframework/view-interfaces/-/view-interfaces-1.3.6.tgz", - "integrity": "sha512-QEBEPmJdNCO7BdCjUaFxA32fjH91LePRs2xMV5iK8KRQwkyYnp4kRa3nKD3Iv2ezYKG+MvtAIDmUvfzICwWxUA==", - "dependencies": { - "@fluidframework/core-interfaces": "^1.3.6" - } - }, - "node_modules/@griffel/core": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.11.0.tgz", - "integrity": "sha512-3jlrsJVbNC0avRMfNGWmbklptmtH5s63Gt/xa0zY6+Oa3kU/StNAu+d0LqLChb5egwXrisQIeC+tzzJ+YozGjg==", - "dependencies": { - "@emotion/hash": "^0.9.0", - "csstype": "^3.1.2", - "rtl-css-js": "^1.16.1", - "stylis": "^4.0.13", - "tslib": "^2.1.0" - } - }, - "node_modules/@griffel/react": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.7.tgz", - "integrity": "sha512-b9/LkkuO512O268jqRpJPso9ROng/kqh81YSTJUL13tT4qPZQnvrdiwoP7ZeqXbG0zzZHLZ3tWUZrCDOl549OQ==", + "node_modules/@griffel/style-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@griffel/style-types/-/style-types-1.0.3.tgz", + "integrity": "sha512-AzbbYV/EobNIBtfMtyu2edFin895gjVxtu1nsRhTETUAIb0/LCZoue3Jd/kFLuPwe95rv5WRUBiQpVwJsrrFcw==", "dependencies": { - "@griffel/core": "^1.11.0", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "react": ">=16.8.0 <19.0.0" + "csstype": "^3.1.3" } }, "node_modules/@hapi/hoek": { @@ -3366,13 +3073,13 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -3393,9 +3100,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { @@ -3497,6 +3204,12 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -3538,20 +3251,20 @@ } }, "node_modules/@jest/environment/node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@jest/expect-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", - "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dependencies": { - "jest-get-type": "^29.4.3" + "jest-get-type": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3591,9 +3304,9 @@ } }, "node_modules/@jest/fake-timers/node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -3637,22 +3350,27 @@ } }, "node_modules/@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dependencies": { - "@sinclair/typebox": "^0.25.16" + "@sinclair/typebox": "^0.27.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/schemas/node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, "node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -3678,9 +3396,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" @@ -3696,9 +3414,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "peer": true, "dependencies": { @@ -3713,21 +3431,15 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, "node_modules/@juggle/resize-observer": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", @@ -3810,9 +3522,9 @@ "link": true }, "node_modules/@microsoft/teams-js": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@microsoft/teams-js/-/teams-js-2.16.0.tgz", - "integrity": "sha512-3X9y6iG9P2K/lmrdGaGH41O5cnEHJ6mU4Yl+B0ljwwzW4SBHpjyr66YS1WvC+WCvpaj3ghQfPgFRIE2qXFgWeA==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/@microsoft/teams-js/-/teams-js-2.20.0.tgz", + "integrity": "sha512-bvVNYJIuD+G0rWVXWXDpdPZoEXZ79lOloJx0LKAMNtVKxR0EY6p9wP+GJhkIFaptuTPm4V4uwzqpWIiMHAU0UQ==", "dependencies": { "debug": "^4.3.3" } @@ -3853,18 +3565,16 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.3.0.tgz", - "integrity": "sha512-an3QdbNPkuU6qpxpbssxAbjRLJcF+eP4L8UqIY3+6n0sbaVxw5pz7PiCLy9g32XEZuoamUlV5ZQPnA6FxvkIHA==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz", + "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==", "dev": true, "dependencies": { "debug": "4.3.4", "extract-zip": "2.0.1", - "http-proxy-agent": "5.0.0", - "https-proxy-agent": "5.0.1", "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "tar-fs": "2.1.1", + "proxy-agent": "6.3.0", + "tar-fs": "3.0.4", "unbzip2-stream": "1.4.3", "yargs": "17.7.1" }, @@ -3872,7 +3582,7 @@ "browsers": "lib/cjs/main-cli.js" }, "engines": { - "node": ">=16.0.0" + "node": ">=16.3.0" }, "peerDependencies": { "typescript": ">= 4.7.4" @@ -3897,6 +3607,61 @@ "node": ">=12" } }, + "node_modules/@puppeteer/browsers/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/@puppeteer/browsers/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@puppeteer/browsers/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@puppeteer/browsers/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@puppeteer/browsers/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/@puppeteer/browsers/node_modules/yargs": { "version": "17.7.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", @@ -3925,17 +3690,17 @@ } }, "node_modules/@remix-run/router": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.6.2.tgz", - "integrity": "sha512-LzqpSrMK/3JBAVBI9u3NWtOhWNw5AMQfrUFYB0+bDHTSw17z++WJLsPsxAuK+oSddsxk4d7F/JcdDPM1M5YAhA==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.0.tgz", + "integrity": "sha512-HOil5aFtme37dVQTB6M34G95kPM3MMuqSmIRVCC52eKV+Y/tGSqw9P3rWhlAx6A+mz+MoX+XxsGsNJbaI5qCgQ==", "engines": { - "node": ">=14" + "node": ">=14.0.0" } }, "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0" @@ -3954,9 +3719,9 @@ "dev": true }, "node_modules/@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==" + "version": "0.29.6", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.29.6.tgz", + "integrity": "sha512-aX5IFYWlMa7tQ8xZr3b2gtVReCvg7f3LEhjir/JAjX2bJCMVJA5tIPv30wTD4KDfcwMd7DDYY3hFDeGmOgtrZQ==" }, "node_modules/@sinonjs/commons": { "version": "1.8.6", @@ -3982,23 +3747,23 @@ "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, "node_modules/@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", + "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@testing-library/dom": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.0.tgz", - "integrity": "sha512-Dffe68pGwI6WlLRYR2I0piIkyole9cSBH5jGQKCGMRpHW5RHCqAUaqc2Kv0tUyd4dU4DLPKhJIjyKOnjv4tuUw==", + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", + "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "^5.0.0", + "aria-query": "5.1.3", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", @@ -4009,9 +3774,9 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "5.16.5", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz", - "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", + "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", "dependencies": { "@adobe/css-tools": "^4.0.1", "@babel/runtime": "^7.9.2", @@ -4059,17 +3824,17 @@ } }, "node_modules/@testing-library/react/node_modules/@testing-library/dom": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.0.tgz", - "integrity": "sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==", + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "^5.0.0", + "aria-query": "5.1.3", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.4.4", + "lz-string": "^1.5.0", "pretty-format": "^27.0.2" }, "engines": { @@ -4077,9 +3842,9 @@ } }, "node_modules/@testing-library/user-event": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.4.3.tgz", - "integrity": "sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==", + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", "engines": { "node": ">=12", "npm": ">=6" @@ -4088,12 +3853,6 @@ "@testing-library/dom": ">=7.21.4" } }, - "node_modules/@tiny-calc/nano": { - "version": "0.0.0-alpha.5", - "resolved": "https://registry.npmjs.org/@tiny-calc/nano/-/nano-0.0.0-alpha.5.tgz", - "integrity": "sha512-Hs37tz9ZtvK21/5s4tjt5RBa/PFHKYS0AzvdxiXuSd3+AKQN2ygxw7uwD9j0DIG9qONddg1vIASO77JIGyZzyw==", - "dev": true - }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -4103,15 +3862,26 @@ "node": ">= 10" } }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, + "node_modules/@tylerbu/sorted-btree-es6": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@tylerbu/sorted-btree-es6/-/sorted-btree-es6-1.8.0.tgz", + "integrity": "sha512-qkwgE0G5OGn7F+1fMkFZLwyjc99xCy4kmQ8p7N0Jj540HD6xU0jTPjcqELogH4f5YGMPXLqd8sQ7uOYC0QRBeg==" + }, "node_modules/@types/aria-query": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", - "integrity": "sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==" + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" }, "node_modules/@types/assert": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@types/assert/-/assert-1.5.6.tgz", - "integrity": "sha512-Y7gDJiIqb9qKUHfBQYOWGngUpLORtirAVPuj/CWJrU2C6ZM4/y3XLwuwfGMF8s7QzW746LQZx23m0+1FSgjfug==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/@types/assert/-/assert-1.5.10.tgz", + "integrity": "sha512-qEO+AUgYab7GVbeDDgUNCU3o0aZUoIMpNAe+w5LDbRxfxQX7vQAdDgwj1AroX+i8KaV56FWg0srXlSZROnsrIQ==", "dev": true }, "node_modules/@types/babylonjs": { @@ -4125,24 +3895,24 @@ } }, "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, "dependencies": { "@types/ms": "*" } }, "node_modules/@types/double-ended-queue": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/double-ended-queue/-/double-ended-queue-2.1.2.tgz", - "integrity": "sha512-iAjbBa3X4UQtYxcCsAr0YaZMRwyC79q4KHui0XtEN7GGLJA4fzD116KUYXXZKskaOYSchnaOFT/a8zSlEx3P9Q==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@types/double-ended-queue/-/double-ended-queue-2.1.7.tgz", + "integrity": "sha512-OVbdb2iOJakEg/Ou6dVZsH0LLxlO+GFjc1FB2W8/jT7bnhoFVJwnZOqi/H26ospeMBaEbGiX3Qy2a7r6pfZKXQ==", "dev": true }, "node_modules/@types/eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz", - "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==", + "version": "8.56.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.2.tgz", + "integrity": "sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==", "dev": true, "peer": true, "dependencies": { @@ -4151,9 +3921,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, "peer": true, "dependencies": { @@ -4162,42 +3932,42 @@ } }, "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true, "peer": true }, "node_modules/@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz", + "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==" }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { - "version": "29.5.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz", - "integrity": "sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -4215,11 +3985,11 @@ } }, "node_modules/@types/jest/node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -4233,9 +4003,9 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "node_modules/@types/json5": { @@ -4246,43 +4016,46 @@ "optional": true }, "node_modules/@types/lodash": { - "version": "4.14.194", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.194.tgz", - "integrity": "sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==", + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", "dev": true }, "node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", "dev": true }, "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", "dev": true }, "node_modules/@types/nconf": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@types/nconf/-/nconf-0.10.3.tgz", - "integrity": "sha512-leyIuBk/rMIp9114FlPRkc/cQG+/JzCz1Afx3BD+CwK2ep3ZRxoC843V1rqnE2pC/jRRjANWhuVBEn4clCwlug==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@types/nconf/-/nconf-0.10.6.tgz", + "integrity": "sha512-nzmiF6CdR2MNa73WRSerRsJ0KLUWonZD0Iti0Tq3CIn09HLAVnSXqwoITLw8TsLQ3JvmRJ/T0t/HDlYiM4pFjA==", "dev": true }, "node_modules/@types/node": { - "version": "20.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.3.tgz", - "integrity": "sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw==" + "version": "20.11.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", + "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/react": { - "version": "18.2.6", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.6.tgz", - "integrity": "sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==", + "version": "18.2.55", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.55.tgz", + "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -4290,33 +4063,33 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.4", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz", - "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==", + "version": "18.2.19", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", + "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", "dependencies": { "@types/react": "*" } }, "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz", + "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==", "dev": true }, "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" }, "node_modules/@types/testing-library__jest-dom": { - "version": "5.14.5", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz", - "integrity": "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==", + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", "dependencies": { "@types/jest": "*" } @@ -4337,22 +4110,22 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "optional": true, "dependencies": { @@ -4360,17 +4133,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.6.tgz", - "integrity": "sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.6", - "@typescript-eslint/type-utils": "5.59.6", - "@typescript-eslint/utils": "5.59.6", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", "semver": "^7.3.7", @@ -4394,14 +4167,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.7.tgz", - "integrity": "sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.7", - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/typescript-estree": "5.59.7", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "debug": "^4.3.4" }, "engines": { @@ -4420,88 +4193,14 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz", - "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/visitor-keys": "5.59.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz", - "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz", - "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/visitor-keys": "5.59.7", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz", - "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.7", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz", - "integrity": "sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.6", - "@typescript-eslint/visitor-keys": "5.59.6" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4512,13 +4211,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.6.tgz", - "integrity": "sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.6", - "@typescript-eslint/utils": "5.59.6", + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -4539,9 +4238,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.6.tgz", - "integrity": "sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4552,13 +4251,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz", - "integrity": "sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.6", - "@typescript-eslint/visitor-keys": "5.59.6", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4579,17 +4278,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.6.tgz", - "integrity": "sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.6", - "@typescript-eslint/types": "5.59.6", - "@typescript-eslint/typescript-estree": "5.59.6", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -4605,12 +4304,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz", - "integrity": "sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4621,6 +4320,11 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, "node_modules/@vitejs/plugin-react": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz", @@ -4819,23 +4523,13 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", "dev": true }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -4874,24 +4568,24 @@ } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true, "engines": { "node": ">=0.4.0" } }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/aggregate-error": { @@ -4990,9 +4684,9 @@ } }, "node_modules/ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", "dev": true }, "node_modules/ansi-styles": { @@ -5070,27 +4764,30 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" }, "engines": { @@ -5109,15 +4806,15 @@ "node": ">=8" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -5127,19 +4824,59 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" - } - }, + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -5149,31 +4886,55 @@ "node": ">=0.10.0" } }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, - "node_modules/async-mutex": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.3.2.tgz", - "integrity": "sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA==", + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", "dev": true, "dependencies": { - "tslib": "^2.3.1" + "has-symbols": "^1.0.3" } }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", + "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", "engines": { "node": ">= 0.4" }, @@ -5182,20 +4943,28 @@ } }, "node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "dependencies": { - "follow-redirects": "^1.14.8" + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "dev": true + }, "node_modules/babel-loader": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.2.tgz", - "integrity": "sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, "dependencies": { - "find-cache-dir": "^3.3.2", + "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" }, "engines": { @@ -5207,16 +4976,16 @@ } }, "node_modules/babylonjs": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/babylonjs/-/babylonjs-6.21.0.tgz", - "integrity": "sha512-WU+s8i9PjV6j77iI/VLn1Vakkl0y0gBIwJE6Ks+iq36yuo9NJAvrYDnC0OqeQWs9gnsSJ26xgKpftrpJ01t1Sg==", + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/babylonjs/-/babylonjs-6.43.0.tgz", + "integrity": "sha512-dcT6GE4cHq0xXrDYeQKQLXOPvqZ0lSmS/QROQkEjf/vLKwNJTgdpLl7BQyDyjxdqe7cBeiBlfKBwYPM+PT50gQ==", "dev": true, "hasInstallScript": true }, "node_modules/babylonjs-gltf2interface": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/babylonjs-gltf2interface/-/babylonjs-gltf2interface-6.21.0.tgz", - "integrity": "sha512-KSQ5WrtSV3GUB8KkBTEe5xVxgY2JmvUH+J58OyK+iLnzeExleaCWlRNw2ZNxxozYc4sA+dZ8TBnPhPdfyvRS2Q==", + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/babylonjs-gltf2interface/-/babylonjs-gltf2interface-6.43.0.tgz", + "integrity": "sha512-+orCb4giE41Ysl8d2ZOeYCRBsT6FnmDwkW9+sHcEACUEpdtFeTShZ+ckucDAB/Ia2e3ah9F2hADbGA/8TfFngg==", "peer": true }, "node_modules/balanced-match": { @@ -5225,6 +4994,13 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/bare-events": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.0.tgz", + "integrity": "sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==", + "dev": true, + "optional": true + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -5244,6 +5020,21 @@ } ] }, + "node_modules/basic-ftp": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.4.tgz", + "integrity": "sha512-8PzkB0arJFV4jJWSGOYR+OEic6aeKMu/osRhBULN6RY0ykby6LKhbmuQ5ublvaas5BOwboah5D87nrHyuh8PPA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/best-random": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/best-random/-/best-random-1.0.3.tgz", + "integrity": "sha512-zrncs76CBFyhE7KVsq85lsc/TT5PUfGTS8arh2aJZcIzQU+WdGNwWYwFsn+w/nuedk04efQdqMy8g5C5pw4shQ==", + "dev": true + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -5253,41 +5044,6 @@ "node": ">=8" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -5322,9 +5078,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -5334,13 +5090,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -5403,12 +5163,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5433,9 +5199,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001488", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001488.tgz", - "integrity": "sha512-NORIQuuL4xGpIy6iCCQGN4iFjlBXtfKWIenlUuyZJumLRIindLb7wXM+GO8erEhb7vXfcnf4BAg2PrSDN5TNLQ==", + "version": "1.0.30001587", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz", + "integrity": "sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==", "dev": true, "funding": [ { @@ -5515,12 +5281,6 @@ "node": ">= 6" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -5532,9 +5292,9 @@ } }, "node_modules/chromium-bidi": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.9.tgz", - "integrity": "sha512-u3DC6XwgLCA9QJ5ak1voPslCmacQdulZNCPsI3qNXxSnEcZS7DFIbww+5RM2bznMEje7cc0oydavRLRvOIZtHw==", + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", + "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", "dev": true, "dependencies": { "mitt": "3.0.0" @@ -5544,9 +5304,9 @@ } }, "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "funding": [ { "type": "github", @@ -5567,14 +5327,35 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/clone-deep": { @@ -5613,7 +5394,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -5630,6 +5410,12 @@ "node": ">= 6" } }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -5665,15 +5451,6 @@ "node": ">=6.0.0" } }, - "node_modules/concurrently/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/concurrently/node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -5712,17 +5489,6 @@ "node": ">=4" } }, - "node_modules/concurrently/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, "node_modules/concurrently/node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -5738,12 +5504,6 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/concurrently/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, "node_modules/concurrently/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -5753,18 +5513,6 @@ "node": ">=0.8.0" } }, - "node_modules/concurrently/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/concurrently/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -5774,300 +5522,166 @@ "node": ">=4" } }, - "node_modules/concurrently/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/concurrently/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/concurrently/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "has-flag": "^3.0.0" }, "engines": { "node": ">=6" } }, - "node_modules/concurrently/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/d-fischer" } }, - "node_modules/concurrently/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, + "node_modules/crc-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", "dependencies": { - "p-limit": "^2.0.0" + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + }, + "bin": { + "crc32": "bin/crc32.njs" }, "engines": { - "node": ">=6" + "node": ">=0.8" } }, - "node_modules/concurrently/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/concurrently/node_modules/path-exists": { + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" + }, + "node_modules/cssstyle": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/concurrently/node_modules/read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==", - "dev": true, - "dependencies": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/concurrently/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/concurrently/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", + "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", "dev": true, "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "rrweb-cssom": "^0.6.0" }, "engines": { - "node": ">=6" + "node": ">=14" } }, - "node_modules/concurrently/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "node_modules/cwd": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", + "integrity": "sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "find-pkg": "^0.1.2", + "fs-exists-sync": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=0.8" } }, - "node_modules/concurrently/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/concurrently/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, "engines": { - "node": ">=6" - } - }, - "node_modules/concurrently/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/concurrently/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/concurrently/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "node": ">= 14" } }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", - "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", + "node_modules/data-urls": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", + "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", "dev": true, "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.0" }, "engines": { "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "dependencies": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - }, - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/cross-fetch": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz", - "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==", - "dependencies": { - "node-fetch": "^2.6.11" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" - }, - "node_modules/cssstyle": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", - "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", + "node_modules/data-urls/node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", "dev": true, "dependencies": { - "rrweb-cssom": "^0.6.0" + "punycode": "^2.3.0" }, "engines": { "node": ">=14" } }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "node_modules/cwd": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", - "integrity": "sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==", + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, - "dependencies": { - "find-pkg": "^0.1.2", - "fs-exists-sync": "^0.1.0" - }, "engines": { - "node": ">=0.8" + "node": ">=12" } }, - "node_modules/data-urls": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", - "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", "dev": true, "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.0" + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" }, "engines": { "node": ">=14" @@ -6121,14 +5735,14 @@ "dev": true }, "node_modules/deep-equal": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", - "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", "dependencies": { "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.2", "is-arguments": "^1.1.1", "is-array-buffer": "^3.0.2", "is-date-object": "^1.0.5", @@ -6138,11 +5752,14 @@ "object-is": "^1.1.5", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", + "regexp.prototype.flags": "^1.5.1", "side-channel": "^1.0.4", "which-boxed-primitive": "^1.0.2", "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6169,11 +5786,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -6184,19 +5818,32 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, "engines": { "node": ">=0.4.0" } }, "node_modules/devtools-protocol": { - "version": "0.0.1120988", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1120988.tgz", - "integrity": "sha512-39fCpE3Z78IaIPChJsP6Lhmkbf4dWXOmzLk/KFTdRkNk/0JymRIfUynDVRndV9HoDz8PyalK1UH21ST/ivwW5Q==", + "version": "0.0.1147663", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz", + "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==", "dev": true }, "node_modules/diff": { @@ -6209,9 +5856,9 @@ } }, "node_modules/diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -6245,10 +5892,20 @@ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/domexception": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", "dev": true, "dependencies": { "webidl-conversions": "^7.0.0" @@ -6257,23 +5914,35 @@ "node": ">=12" } }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "version": "16.4.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.4.tgz", + "integrity": "sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg==", "dev": true, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, "node_modules/dotenv-cli": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/dotenv-cli/-/dotenv-cli-7.2.1.tgz", - "integrity": "sha512-ODHbGTskqRtXAzZapDPvgNuDVQApu4oKX8lZW7Y0+9hKA6le1ZJlyRS687oU9FXjOVEDU/VFV6zI125HzhM1UQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/dotenv-cli/-/dotenv-cli-7.3.0.tgz", + "integrity": "sha512-314CA4TyK34YEJ6ntBf80eUY+t1XaFLyem1k9P0sX1gn30qThZ5qZr/ZwE318gEnzyYP9yj9HJk6SqwE0upkfw==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", - "dotenv": "^16.0.0", + "dotenv": "^16.3.0", "dotenv-expand": "^10.0.0", "minimist": "^1.2.6" }, @@ -6302,15 +5971,15 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.399", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.399.tgz", - "integrity": "sha512-+V1aNvVgoWNWYIbMOiQ1n5fRIaY4SlQ/uRlrsCjLrUwr/3OvQgiX2f5vdav4oArVT9TnttJKcPCqjwPNyZqw/A==", + "version": "1.4.673", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz", + "integrity": "sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw==", "dev": true }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, "node_modules/end-of-stream": { @@ -6323,13 +5992,13 @@ } }, "node_modules/engine.io-client": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz", - "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", + "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", + "engine.io-parser": "~5.2.1", "ws": "~8.11.0", "xmlhttprequest-ssl": "~2.0.0" } @@ -6355,17 +6024,17 @@ } }, "node_modules/engine.io-parser": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", - "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", "engines": { "node": ">=10.0.0" } }, "node_modules/enhanced-resolve": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.0.tgz", - "integrity": "sha512-+DCows0XNwLDcUhbFJPdlQEVnT2zXlCv7hPxemTz86/O+B/hCQ+mb7ydkPKiflpVraqLPCAfu7lDy+hBXueojw==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "peer": true, "dependencies": { @@ -6398,45 +6067,52 @@ } }, "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", + "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.2", "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", + "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.1", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -6445,6 +6121,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", @@ -6464,34 +6159,60 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-iterator-helpers": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz", + "integrity": "sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.4", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.2", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", - "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", "dev": true, "peer": true }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -6518,9 +6239,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, "hasInstallScript": true, "bin": { @@ -6530,34 +6251,34 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -6576,15 +6297,14 @@ } }, "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "esutils": "^2.0.2" }, "bin": { "escodegen": "bin/escodegen.js", @@ -6597,79 +6317,29 @@ "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", - "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.41.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -6679,7 +6349,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -6689,9 +6358,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -6705,9 +6373,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -6738,15 +6406,16 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, "dependencies": { "array-includes": "^3.1.6", "array.prototype.flatmap": "^1.3.1", "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", @@ -6756,7 +6425,7 @@ "object.values": "^1.1.6", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", + "semver": "^6.3.1", "string.prototype.matchall": "^4.0.8" }, "engines": { @@ -6822,9 +6491,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -6834,9 +6503,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -6850,12 +6519,12 @@ } }, "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, @@ -6936,14 +6605,6 @@ "through": "~2.3.1" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "engines": { - "node": ">=6" - } - }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -7017,15 +6678,15 @@ } }, "node_modules/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dependencies": { - "@jest/expect-utils": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -7064,15 +6725,21 @@ "dev": true }, "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -7110,9 +6777,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -7151,20 +6818,19 @@ } }, "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/find-file-up": { @@ -7232,12 +6898,13 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { @@ -7260,28 +6927,29 @@ } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "node_modules/fluid-framework": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/fluid-framework/-/fluid-framework-1.3.6.tgz", - "integrity": "sha512-RW+yqWitqAQgX1GsY9pynUEHtQm7Yw5em9BDj29LAzBtLonS4dmqW146qLLD9IJAbF31EfSyBlvLyWHqdqhI6w==", + "version": "2.0.0-rc.1.0.3", + "resolved": "https://registry.npmjs.org/fluid-framework/-/fluid-framework-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-NPWZ9/smwjpKWkMSJ6Xj1befBikc2K5NTeAUrNDLRNtMc2acPx6NfCfVcHSOwpqXR3s9eDDFZLykuvS5uKlzsw==", "dependencies": { - "@fluidframework/container-definitions": "^1.3.6", - "@fluidframework/container-loader": "^1.3.6", - "@fluidframework/driver-definitions": "^1.3.6", - "@fluidframework/fluid-static": "^1.3.6", - "@fluidframework/map": "^1.3.6", - "@fluidframework/sequence": "^1.3.6" + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/fluid-static": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/map": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/sequence": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/tree": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "funding": [ { "type": "individual", @@ -7343,7 +7011,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -7379,12 +7046,6 @@ } ] }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, "node_modules/fs-exists-sync": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", @@ -7394,6 +7055,20 @@ "node": ">=0.10.0" } }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -7401,9 +7076,9 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -7415,20 +7090,23 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -7464,14 +7142,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7502,13 +7184,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -7517,16 +7200,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dev": true, + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -7584,12 +7282,6 @@ "node": ">=0.10.0" } }, - "node_modules/global-prefix/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -7603,9 +7295,9 @@ } }, "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -7668,29 +7360,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -7708,11 +7383,11 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7741,11 +7416,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -7779,6 +7454,17 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -7825,30 +7511,29 @@ "dev": true }, "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -7892,9 +7577,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -7949,33 +7634,43 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "engines": { - "node": ">=10" - } + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { "node": ">= 0.4" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" }, "engines": { @@ -7986,13 +7681,15 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8004,6 +7701,21 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -8060,12 +7772,12 @@ } }, "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8103,13 +7815,40 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-glob": { @@ -8132,6 +7871,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -8277,15 +8032,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -8374,9 +8126,9 @@ } }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" @@ -8460,17 +8212,32 @@ } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/istanbul-lib-source-maps": { @@ -8488,9 +8255,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -8500,6 +8267,19 @@ "node": ">=8" } }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "node_modules/jest-dev-server": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-6.2.0.tgz", @@ -8516,14 +8296,14 @@ } }, "node_modules/jest-diff": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", - "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -8541,11 +8321,11 @@ } }, "node_modules/jest-diff/node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -8592,9 +8372,9 @@ } }, "node_modules/jest-environment-node/node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -8631,22 +8411,22 @@ } }, "node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", - "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -8664,11 +8444,11 @@ } }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -8682,17 +8462,17 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/jest-message-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", - "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -8712,11 +8492,11 @@ } }, "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -8759,9 +8539,9 @@ } }, "node_modules/jest-mock/node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -8781,11 +8561,11 @@ } }, "node_modules/jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dependencies": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -8828,14 +8608,14 @@ } }, "node_modules/joi": { - "version": "17.9.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz", - "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==", + "version": "17.12.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.1.tgz", + "integrity": "sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==", "dev": true, "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" } @@ -8857,6 +8637,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "node_modules/jsdom": { "version": "21.1.2", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-21.1.2.tgz", @@ -8911,25 +8697,77 @@ "jsdom": ">=10.0.0" } }, - "node_modules/jsdom/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "node_modules/jsdom/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "dependencies": { + "debug": "4" + }, "engines": { - "node": ">=10.0.0" + "node": ">= 6.0.0" + } + }, + "node_modules/jsdom/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=14" } }, "node_modules/jsesc": { @@ -8944,6 +8782,12 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -8986,41 +8830,67 @@ } }, "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", "dev": true }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/jsrsasign": { - "version": "10.8.6", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.8.6.tgz", - "integrity": "sha512-bQmbVtsfbgaKBTWCKiDCPlUPbdlRIK/FzSwT3BzIgZl/cU6TqXu6pZJsCI/dJVrZ9Gir5GC4woqw9shH/v7MBw==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", + "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==", "funding": { "url": "https://github.com/kjur/jsrsasign#donations" } }, "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { "node": ">=4.0" } }, "node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "engines": { + "node": ">=18" + } }, "node_modules/keyborg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/keyborg/-/keyborg-2.0.0.tgz", - "integrity": "sha512-RWY8nWrzRkwTQLaKyDtbTu5SOb5L4B20UzAsBHlQDFZqVY/+Mid0bQ7MVTC8vbOTrWY2xkkzj8gZF9Ua7re4xA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/keyborg/-/keyborg-2.5.0.tgz", + "integrity": "sha512-nb4Ji1suqWqj6VXb61Jrs4ab/UWgtGph4wDch2NIZDfLBUObmLcZE0aiDjZY49ghtu03fvwxDNvS9ZB0XMz6/g==" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } }, "node_modules/kind-of": { "version": "3.2.2", @@ -9176,6 +9046,11 @@ "lz-string": "bin/bin.js" } }, + "node_modules/lz4js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/lz4js/-/lz4js-0.2.0.tgz", + "integrity": "sha512-gY2Ia9Lm7Ep8qMiuGRhvUq0Q7qUereeldZPP1PMEJxPtEWHJLqw9pgX68oHajBH0nzJK4MaZEA/YNV3jT8u8Bg==" + }, "node_modules/magic-string": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", @@ -9281,7 +9156,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -9290,7 +9164,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -9383,9 +9256,9 @@ "dev": true }, "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", + "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", "dev": true, "dependencies": { "ansi-colors": "4.1.1", @@ -9395,13 +9268,12 @@ "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.2.0", + "glob": "8.1.0", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", @@ -9416,10 +9288,6 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" } }, "node_modules/mocha/node_modules/brace-expansion": { @@ -9431,6 +9299,51 @@ "balanced-match": "^1.0.0" } }, + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/mocha/node_modules/minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -9449,10 +9362,24 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/mocha/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { "has-flag": "^4.0.0" @@ -9464,16 +9391,75 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/mocha/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/mocha/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -9494,9 +9480,9 @@ "dev": true }, "node_modules/nconf": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.0.tgz", - "integrity": "sha512-T3fZPw3c7Dfrz8JBQEbEcZJ2s8f7cUMpKuyBtsGQe0b71pcXx6gNh4oti2xh5dxB+gO9ufNfISBlGvvWtfyMcA==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.1.tgz", + "integrity": "sha512-p2cfF+B3XXacQdswUYWZ0w6Vld0832A/tuqjLBu3H1sfUcby4N2oVbGhyuCkZv+t3iY3aiFEj7gZGqax9Q2c1w==", "dev": true, "dependencies": { "async": "^3.0.0", @@ -9508,6 +9494,108 @@ "node": ">= 0.4.0" } }, + "node_modules/nconf/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/nconf/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/nconf/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/nconf/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nconf/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nconf/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/nconf/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/nconf/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nconf/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -9515,10 +9603,19 @@ "dev": true, "peer": true }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -9534,25 +9631,6 @@ } } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/node-preload": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", @@ -9566,9 +9644,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/normalize-package-data": { @@ -9584,12 +9662,12 @@ } }, "node_modules/normalize-package-data/node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -9631,9 +9709,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz", - "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", "dev": true }, "node_modules/nyc": { @@ -9688,6 +9766,35 @@ "wrap-ansi": "^6.2.0" } }, + "node_modules/nyc/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/nyc/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/nyc/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, "node_modules/nyc/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -9701,6 +9808,15 @@ "node": ">=8" } }, + "node_modules/nyc/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/nyc/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -9740,6 +9856,18 @@ "node": ">=8" } }, + "node_modules/nyc/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/nyc/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -9764,6 +9892,20 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/nyc/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/nyc/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -9778,12 +9920,6 @@ "node": ">=8" } }, - "node_modules/nyc/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, "node_modules/nyc/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -9828,9 +9964,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9859,12 +9995,12 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -9876,28 +10012,28 @@ } }, "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -9907,27 +10043,27 @@ } }, "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -9961,17 +10097,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -10037,7 +10173,39 @@ "node": ">=6" } }, - "node_modules/package-hash": { + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dev": true, + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/package-hash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", @@ -10192,73 +10360,106 @@ } }, "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "find-up": "^6.3.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^1.0.0" }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/pkg-dir/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "dev": true, "funding": [ { @@ -10275,7 +10476,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -10283,24 +10484,6 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -10421,22 +10604,38 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, - "node_modules/proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "node_modules/proxy-agent": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", + "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" } }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/ps-tree": { "version": "1.2.0", @@ -10470,41 +10669,45 @@ } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/puppeteer": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.3.0.tgz", - "integrity": "sha512-OJIsxC3PcU6fAWfp1BX0oKj62FFxhxwpakGAcGVbyfqfDrNmkFjpzb0XrMsgnQxCJmoLpTZKHRXDFxEDnLqkow==", + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.9.0.tgz", + "integrity": "sha512-kAglT4VZ9fWEGg3oLc4/de+JcONuEJhlh3J6f5R1TLkrY/EHHIHxWXDOzXvaxQCtedmyVXBwg8M+P8YCO/wZjw==", + "deprecated": "< 21.5.0 is no longer supported", "dev": true, "hasInstallScript": true, "dependencies": { - "@puppeteer/browsers": "1.3.0", - "cosmiconfig": "8.1.3", - "puppeteer-core": "20.3.0" + "@puppeteer/browsers": "1.4.6", + "cosmiconfig": "8.2.0", + "puppeteer-core": "20.9.0" + }, + "engines": { + "node": ">=16.3.0" } }, "node_modules/puppeteer-core": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.3.0.tgz", - "integrity": "sha512-264pBrIui5bO6NJeOcbJrLa0OCwmA4+WK00JMrLIKTfRiqe2gx8KWTzLsjyw/bizErp3TKS7vt/I0i5fTC+mAw==", + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz", + "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==", "dev": true, "dependencies": { - "@puppeteer/browsers": "1.3.0", - "chromium-bidi": "0.4.9", - "cross-fetch": "3.1.6", + "@puppeteer/browsers": "1.4.6", + "chromium-bidi": "0.4.16", + "cross-fetch": "4.0.0", "debug": "4.3.4", - "devtools-protocol": "0.0.1120988", + "devtools-protocol": "0.0.1147663", "ws": "8.13.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=16.3.0" }, "peerDependencies": { "typescript": ">= 4.7.4" @@ -10515,25 +10718,27 @@ } } }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "node_modules/puppeteer-core/node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", "dev": true, - "engines": { - "node": ">=10.0.0" + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "engines": { + "node": ">=0.6" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/querystring": { @@ -10570,10 +10775,10 @@ } ] }, - "node_modules/random-js": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/random-js/-/random-js-1.0.8.tgz", - "integrity": "sha512-LznfUohEMi6jfwZXa0C5uY1p1tciZozzMiwf9LGlwj52tfvpHozYklHHkrvh2Ya/mdiJ9qPGXR6byVN7+hCMTw==", + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", "dev": true }, "node_modules/randombytes": { @@ -10597,9 +10802,9 @@ } }, "node_modules/react-babylonjs": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/react-babylonjs/-/react-babylonjs-3.1.20.tgz", - "integrity": "sha512-+5xZxcVJtKd7mHZqDb0njzmGR8IXuAl2pAtWqOfFkmSYA4Hn+nWC1qrGw3xpZMqFYkw+uu0coFZL431zNlyoNQ==", + "version": "3.1.27", + "resolved": "https://registry.npmjs.org/react-babylonjs/-/react-babylonjs-3.1.27.tgz", + "integrity": "sha512-eh5nOKoiwINUpS0vBRKYs+fGcK9ckBgB5VVml7mFvUv+nAu5znwpFE8knx0AiihA4UyoZnldYOjlOsgaHZwitw==", "dependencies": { "react-reconciler": "^0.27.0" }, @@ -10689,51 +10894,79 @@ } }, "node_modules/react-router": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.11.2.tgz", - "integrity": "sha512-74z9xUSaSX07t3LM+pS6Un0T55ibUE/79CzfZpy5wsPDZaea1F8QkrsiyRnA2YQ7LwE/umaydzXZV80iDCPkMg==", + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.0.tgz", + "integrity": "sha512-q2yemJeg6gw/YixRlRnVx6IRJWZD6fonnfZhN1JIOhV2iJCPeRNSH3V1ISwHf+JWcESzLC3BOLD1T07tmO5dmg==", "dependencies": { - "@remix-run/router": "1.6.2" + "@remix-run/router": "1.15.0" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { "react": ">=16.8" } }, "node_modules/react-router-dom": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.11.2.tgz", - "integrity": "sha512-JNbKtAeh1VSJQnH6RvBDNhxNwemRj7KxCzc5jb7zvDSKRnPWIFj9pO+eXqjM69gQJ0r46hSz1x4l9y0651DKWw==", + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.0.tgz", + "integrity": "sha512-z2w+M4tH5wlcLmH3BMMOMdrtrJ9T3oJJNsAlBJbwk+8Syxd5WFJ7J5dxMEW0/GEXD1BBis4uXRrNIz3mORr0ag==", "dependencies": { - "@remix-run/router": "1.6.2", - "react-router": "6.11.2" + "@remix-run/router": "1.15.0", + "react-router": "6.22.0" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { "react": ">=16.8", "react-dom": ">=16.8" } }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/react-video": { "resolved": "samples/javascript/02.react-video", "link": true }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": ">=6" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, "node_modules/readdirp": { @@ -10760,19 +10993,41 @@ "node": ">=8" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", + "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0", + "get-intrinsic": "^1.2.3", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -10823,12 +11078,12 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -10861,15 +11116,6 @@ "node": ">=4" } }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -10893,9 +11139,9 @@ } }, "node_modules/rollup": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.0.tgz", - "integrity": "sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw==", + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -10946,12 +11192,39 @@ } }, "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "dependencies": { - "tslib": "^2.1.0" + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/safe-array-concat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", + "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/safe-buffer": { @@ -10974,15 +11247,18 @@ ] }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11016,9 +11292,9 @@ } }, "node_modules/schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", @@ -11075,9 +11351,9 @@ "dev": true }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -11137,6 +11413,35 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -11207,9 +11512,9 @@ } }, "node_modules/shiki": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", - "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", + "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", "dev": true, "dependencies": { "ansi-sequence-parser": "^1.1.0", @@ -11219,13 +11524,17 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", + "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11256,24 +11565,34 @@ "node": ">=8" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/socket.io-client": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.1.tgz", - "integrity": "sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ==", + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.4.tgz", + "integrity": "sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.4.0", - "socket.io-parser": "~4.2.1" + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" }, "engines": { "node": ">=10.0.0" } }, "node_modules/socket.io-parser": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.3.tgz", - "integrity": "sha512-JMafRntWVO2DCJimKsRTh/wnqVvO4hrfwOqtO7f+uzwsQMuxO6VwImtYxaQ+ieoyshWOTJyV0fA21lccEXRPpQ==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -11282,13 +11601,41 @@ "node": ">=10.0.0" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/socks": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.3.tgz", + "integrity": "sha512-vfuYK48HXCTFD03G/1/zkIls3Ebr2YNa4qU9gHDZdblHLiqhJrJGkY3+0Nx0JpN9qBhJbVObc1CNciT1bIZJxw==", "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/source-map-js": { @@ -11379,9 +11726,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true }, "node_modules/spdx-expression-parse": { @@ -11395,9 +11742,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", "dev": true }, "node_modules/split": { @@ -11413,9 +11760,9 @@ } }, "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true }, "node_modules/stack-utils": { @@ -11438,9 +11785,9 @@ } }, "node_modules/start-server-and-test": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-2.0.0.tgz", - "integrity": "sha512-UqKLw0mJbfrsG1jcRLTUlvuRi9sjNuUiDOLI42r7R5fA9dsFoywAy9DoLXNYys9B886E4RCKb+qM1Gzu96h7DQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-2.0.3.tgz", + "integrity": "sha512-QsVObjfjFZKJE6CS6bSKNwWZCKBG6975/jKRPPGFfFh+yOQglSeGXiNWjzgQNXdphcBI9nXbyso9tPfX4YAUhg==", "dev": true, "dependencies": { "arg": "^5.0.2", @@ -11450,7 +11797,7 @@ "execa": "5.1.1", "lazy-ass": "1.6.0", "ps-tree": "1.2.0", - "wait-on": "7.0.1" + "wait-on": "7.2.0" }, "bin": { "server-test": "src/bin/start.js", @@ -11458,30 +11805,29 @@ "start-test": "src/bin/start.js" }, "engines": { - "node": ">=6" + "node": ">=16" } }, - "node_modules/start-server-and-test/node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "node_modules/start-server-and-test/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "tslib": "^2.1.0" } }, "node_modules/start-server-and-test/node_modules/wait-on": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.0.1.tgz", - "integrity": "sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", + "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", "dev": true, "dependencies": { - "axios": "^0.27.2", - "joi": "^17.7.0", + "axios": "^1.6.1", + "joi": "^17.11.0", "lodash": "^4.17.21", - "minimist": "^1.2.7", - "rxjs": "^7.8.0" + "minimist": "^1.2.8", + "rxjs": "^7.8.1" }, "bin": { "wait-on": "bin/wait-on" @@ -11510,13 +11856,17 @@ "duplexer": "~0.1.1" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/streamx": { + "version": "2.15.8", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.8.tgz", + "integrity": "sha512-6pwMeMY/SuISiRsuS8TeIrAzyFbG5gGPHFQsYjUr/pbBadaL1PCWmzKw+CHZSwainfvcF6Si6cVLq4XTEwswFQ==", "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" } }, "node_modules/string-hash": { @@ -11526,32 +11876,54 @@ "dev": true }, "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" }, "engines": { - "node": ">=8" + "node": ">=6" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", "side-channel": "^1.0.4" }, "funding": { @@ -11559,14 +11931,14 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -11576,28 +11948,28 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11657,9 +12029,9 @@ } }, "node_modules/stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", + "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==" }, "node_modules/supports-color": { "version": "7.2.0", @@ -11697,11 +12069,11 @@ "dev": true }, "node_modules/tabster": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/tabster/-/tabster-4.4.1.tgz", - "integrity": "sha512-Am5XszZz/5PnWVWveQubi4jfE6aJzTAEJ+c9Bc6R0tTEl1XYaPZpFrJUFb/SCq0BPE6ncFxLyPPpy6CwrIhnVg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tabster/-/tabster-6.0.1.tgz", + "integrity": "sha512-cNVYkJmQZ76IvdW7laCuUns9XcAGzscmDkZ0T4JY3huCRsacidBNOa7MJu2+ocW7UKR8xOxeER6OdBsmX1l5XQ==", "dependencies": { - "keyborg": "^2.0.0", + "keyborg": "2.5.0", "tslib": "^2.3.1" } }, @@ -11716,42 +12088,36 @@ } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dev": true, "dependencies": { - "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "tar-stream": "^3.1.5" } }, "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/terser": { - "version": "5.17.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.4.tgz", - "integrity": "sha512-jcEKZw6UPrgugz/0Tuk/PVyLAPfMBJf5clnGueo45wTweoV8yh7Q7PEkhkJ5uuUbC7zAxEcG3tqNr1bstkQ8nw==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.1.tgz", + "integrity": "sha512-29wAr6UU/oQpnTw5HoadwjUZnFQXGdOfj0LjZ4sVxzqwHh/QVkvr7m8y9WoR4iN3FRitVduTc6KdjcW38Npsug==", "dev": true, "peer": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -11763,17 +12129,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "peer": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -11798,9 +12164,9 @@ } }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "peer": true, "dependencies": { @@ -11817,9 +12183,9 @@ } }, "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "peer": true, "dependencies": { @@ -11894,18 +12260,20 @@ "node": ">=6" } }, - "node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, - "dependencies": { - "punycode": "^2.3.0" - }, "engines": { - "node": ">=14" + "node": ">= 4.0.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -11968,9 +12336,9 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "optional": true, "dependencies": { @@ -12004,9 +12372,9 @@ } }, "node_modules/tslib": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.1.tgz", - "integrity": "sha512-KaI6gPil5m9vF7DKaoXxx1ia9fxS4qG5YveErRRVknPDXXriu5M8h48YRjB6h5ZUOKuAKlSJYb0GaDe8I39fRw==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -12062,6 +12430,57 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", + "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typed-array-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", @@ -12086,9 +12505,9 @@ } }, "node_modules/typedoc": { - "version": "0.24.7", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.7.tgz", - "integrity": "sha512-zzfKDFIZADA+XRIp2rMzLe9xZ6pt12yQOhCr7cD7/PBTjhPmMyMvGrkZ2lPNJitg3Hj1SeiYFNzCsSDrlpxpKw==", + "version": "0.24.8", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.8.tgz", + "integrity": "sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==", "dev": true, "dependencies": { "lunr": "^2.3.9", @@ -12103,7 +12522,7 @@ "node": ">= 14.14" }, "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x" + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x" } }, "node_modules/typedoc/node_modules/brace-expansion": { @@ -12116,9 +12535,9 @@ } }, "node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -12131,16 +12550,16 @@ } }, "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, "node_modules/unbox-primitive": { @@ -12192,19 +12611,24 @@ "ieee754": "^1.1.13" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { - "node": ">= 4.0.0" + "node": ">= 10.0.0" } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -12241,12 +12665,12 @@ } }, "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" + "punycode": "^1.4.1", + "qs": "^6.11.2" } }, "node_modules/url-parse": { @@ -12259,23 +12683,14 @@ } }, "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - }, - "node_modules/url/node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" }, "node_modules/use-disposable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/use-disposable/-/use-disposable-1.0.1.tgz", - "integrity": "sha512-5Sle1XEmK3lw3xyGqeIY7UKkiUgF+TxwUty7fTsqM5D5AxfQfo2ft+LY9xKCA+W5YbaBFbOkWfQsZY/y5JhInA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/use-disposable/-/use-disposable-1.0.2.tgz", + "integrity": "sha512-UMaXVlV77dWOu4GqAFNjRzHzowYKUKbJBQfCexvahrYeIz4OkUYUjna4Tjjdf92NH8Nm8J7wEfFRgTIwYjO5jg==", "peerDependencies": { "@types/react": ">=16.8.0 <19.0.0", "@types/react-dom": ">=16.8.0 <19.0.0", @@ -12295,16 +12710,27 @@ "react-dom": "16.8.0 - 18" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } }, "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -12320,9 +12746,9 @@ } }, "node_modules/vite": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", - "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", "dev": true, "dependencies": { "esbuild": "^0.18.10", @@ -12374,828 +12800,560 @@ } } }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "xml-name-validator": "^4.0.0" + }, "engines": { - "node": ">=12" + "node": ">=14" } }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], + "node_modules/wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + }, + "bin": { + "wait-on": "bin/wait-on" + }, "engines": { - "node": ">=12" + "node": ">=10.0.0" } }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "cpu": [ - "arm64" - ], + "node_modules/wait-on/node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" + "dependencies": { + "follow-redirects": "^1.14.7" } }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], + "node_modules/wait-on/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" + "dependencies": { + "tslib": "^2.1.0" } }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, "engines": { - "node": ">=12" + "node": ">=10.13.0" } }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], + "node_modules/web-vitals": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.2.tgz", + "integrity": "sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack": { + "version": "5.90.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.2.tgz", + "integrity": "sha512-ziXu8ABGr0InCMEYFnHrYweinHK2PWrMqnwdHk2oK3rRhv/1B+2FnfwYv5oD+RrknK/Pp/Hmyvu+eAsaMYhzCw==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, "engines": { - "node": ">=12" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "peer": true, "engines": { - "node": ">=12" + "node": ">=10.13.0" } }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, "engines": { - "node": ">=12" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "iconv-lite": "0.6.3" + }, "engines": { "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], + "node_modules/which-typed-array": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "dependencies": { + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], + "node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "dependencies": { - "xml-name-validator": "^4.0.0" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=14" + "node": ">=6" } }, - "node_modules/wait-on": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", - "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", - "dev": true, - "dependencies": { - "axios": "^0.25.0", - "joi": "^17.6.0", - "lodash": "^4.17.21", - "minimist": "^1.2.5", - "rxjs": "^7.5.4" - }, - "bin": { - "wait-on": "bin/wait-on" - }, - "engines": { - "node": ">=10.0.0" - } + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, - "node_modules/wait-on/node_modules/axios": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.7" + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, - "peer": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, "engines": { - "node": ">=10.13.0" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/web-vitals": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.3.1.tgz", - "integrity": "sha512-LTfY5GjcY3ngFzNsYFSYL+AmVmlWrzPTUxSMDis2rZbf+SzT7HH3NH4Y/l45XOlrAIunOBeURN9qtBHkRskAiA==" - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "dev": true, "engines": { "node": ">=12" } }, - "node_modules/webpack": { - "version": "5.83.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.83.1.tgz", - "integrity": "sha512-TNsG9jDScbNuB+Lb/3+vYolPplCS3bbEaJf+Bj0Gw4DhP3ioAflBb1flcRt9zsWITyvOhM96wMQNRWlSX52DgA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "node": ">=0.4.0" } }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, - "peer": true, - "engines": { - "node": ">=10.13.0" + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, - "peer": true, "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } }, - "node_modules/whatwg-encoding": { + "node_modules/yargs-unparser": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "dependencies": { - "iconv-lite": "0.6.3" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/whatwg-url": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, - "dependencies": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - }, "engines": { - "node": ">=14" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/yargs/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "locate-path": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "node_modules/yargs/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6" } }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "node_modules/yargs/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "p-limit": "^2.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "node_modules/yargs/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/yauzl": { @@ -13231,128 +13389,116 @@ }, "packages/live-share": { "name": "@microsoft/live-share", - "version": "1.4.0", + "version": "2.0.0-internal.1", "license": "SEE LICENSE IN LICENSE", "dependencies": { "uuid": "^9.0.0" }, "devDependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@fluidframework/test-client-utils": "^1.3.6", - "@fluidframework/test-runtime-utils": "^1.3.6", - "@fluidframework/test-utils": "^1.3.6", - "@fluidframework/test-version-utils": "^1.3.6", + "@fluid-internal/client-utils": "^2.0.0-rc.1", + "@fluidframework/azure-client": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-utils": "^2.0.0-rc.1", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", "typescript": "^5.0.4" }, "peerDependencies": { - "@fluidframework/azure-client": "^1.0.0", - "fluid-framework": "^1.2.3" + "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, "packages/live-share-canvas": { "name": "@microsoft/live-share-canvas", - "version": "1.4.0", + "version": "2.0.0-internal.1", "license": "SEE LICENSE IN LICENSE", "devDependencies": { - "@microsoft/live-share": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "1.4.0", - "fluid-framework": "^1.2.3" + "@microsoft/live-share": "2.0.0-internal.1", + "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, "packages/live-share-media": { "name": "@microsoft/live-share-media", - "version": "1.4.0", + "version": "2.0.0-internal.1", "license": "SEE LICENSE IN LICENSE", "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", - "@fluidframework/test-runtime-utils": "^1.3.6", - "@fluidframework/test-utils": "^1.3.6", - "@fluidframework/test-version-utils": "^1.3.6", - "@microsoft/live-share": "1.4.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@microsoft/live-share": "2.0.0-internal.1", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "1.4.0", - "fluid-framework": "^1.2.3" + "@microsoft/live-share": "2.0.0-internal.1", + "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, "packages/live-share-react": { "name": "@microsoft/live-share-react", - "version": "1.4.0-preview.0", + "version": "2.0.0-internal.1-preview.0", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share-turbo": "1.4.0-preview.0", + "@microsoft/live-share-turbo": "2.0.0-internal.1-preview.0", "url": "^0.11.0", "uuid": "^9.0.0" }, "devDependencies": { "@babel/core": "^7.21.8", - "@fluidframework/azure-client": "^1.1.1", - "@fluidframework/test-client-utils": "^1.3.6", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", "babel-loader": "^9.1.2", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "typescript": "^5.0.4" }, "peerDependencies": { - "@fluidframework/azure-client": "^1.0.0", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", - "fluid-framework": "^1.2.3", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", + "fluid-framework": "^2.0.0-rc || ^2.0.0-internal", "react": "^16.8.0 || ^17 || ^18", "react-dom": "^16.8.0 || ^17 || ^18" } }, "packages/live-share-turbo": { "name": "@microsoft/live-share-turbo", - "version": "1.4.0-preview.0", + "version": "2.0.0-internal.1-preview.0", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@fluidframework/register-collection": "^1.3.6" + "@fluidframework/register-collection": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@fluidframework/test-client-utils": "^1.3.6", - "@fluidframework/test-runtime-utils": "^1.3.6", - "@fluidframework/test-utils": "^1.3.6", - "@fluidframework/test-version-utils": "^1.3.6", - "@microsoft/live-share": "1.4.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@microsoft/live-share": "2.0.0-internal.1", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "jsdom": "^21.1.0", "jsdom-global": "^3.0.2", "mocha": "^10.2.0", @@ -13362,9 +13508,8 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@fluidframework/azure-client": "^1.0.0", - "@microsoft/live-share": "1.4.0", - "fluid-framework": "^1.2.3" + "@microsoft/live-share": "2.0.0-internal.1", + "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, "samples/javascript/01.dice-roller": { @@ -13373,13 +13518,11 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6" + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -13396,14 +13539,13 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-media": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -13414,7 +13556,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", @@ -13432,9 +13573,9 @@ } }, "samples/javascript/02.react-video/node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -13449,14 +13590,12 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6" + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -13473,13 +13612,12 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", - "@microsoft/live-share-react": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share-react": "2.0.0-internal.1-preview.0", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -13491,7 +13629,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13513,14 +13650,12 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-turbo": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-turbo": "2.0.0-internal.1-preview.0", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6" + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -13537,12 +13672,11 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -13554,7 +13688,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13579,10 +13712,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -13592,7 +13724,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13613,11 +13744,10 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router": "^6.4.2", @@ -13626,7 +13756,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13647,13 +13776,11 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6" + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -13667,14 +13794,12 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6" + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -13691,13 +13816,12 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", - "@microsoft/live-share-react": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share-react": "2.0.0-internal.1-preview.0", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -13709,7 +13833,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13731,14 +13854,12 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-turbo": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-turbo": "2.0.0-internal.1-preview.0", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6" + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -13755,13 +13876,12 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", - "@microsoft/live-share-react": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share-react": "2.0.0-internal.1-preview.0", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -13773,7 +13893,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13798,13 +13917,12 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", - "@microsoft/live-share-react": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share-react": "2.0.0-internal.1-preview.0", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -13816,7 +13934,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13843,13 +13960,12 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", - "@microsoft/live-share-react": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share-react": "2.0.0-internal.1-preview.0", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -13863,7 +13979,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13889,12 +14004,11 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -13906,7 +14020,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13927,19 +14040,407 @@ "vite": "^4.0.4" } }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "samples/typescript/21.react-media-template/node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, "samples/typescript/31.live-canvas-tests": { "name": "live-canvas-tests", "version": "1.0.0", "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "fluid-framework": "^1.3.6" + "@fluidframework/azure-client": "^2.0.0-rc.1", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "buffer": "^6.0.3", "concurrently": "^5.3.0", "start-server-and-test": "^2.0.0", diff --git a/packages/live-share-canvas/package.json b/packages/live-share-canvas/package.json index 514dba7ea..8ea6e6278 100644 --- a/packages/live-share-canvas/package.json +++ b/packages/live-share-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-canvas", - "version": "1.4.0", + "version": "2.0.0-internal.1", "description": "Live Share extension library for collaborative inking.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -14,19 +14,19 @@ "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test" }, "devDependencies": { - "@microsoft/live-share": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "1.4.0", - "fluid-framework": "^1.2.3" + "@microsoft/live-share": "2.0.0-internal.1", + "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { "directory": "packages/live-share-canvas", diff --git a/packages/live-share-canvas/src/core/LiveCanvas.ts b/packages/live-share-canvas/src/core/LiveCanvas.ts index 7bc66ac7f..d4a63ad85 100644 --- a/packages/live-share-canvas/src/core/LiveCanvas.ts +++ b/packages/live-share-canvas/src/core/LiveCanvas.ts @@ -721,7 +721,7 @@ export class LiveCanvas extends LiveDataObject { try { if (!local) { - if (op.contents.type === "clear") { + if (isClearEvent(op.contents)) { inkingManager.clear(); } } @@ -1018,6 +1018,14 @@ class LivePointerInputProvider extends InputProvider { } } +function isClearEvent(value: any): boolean { + return ( + typeof value === "object" && + typeof value.type === "string" && + value.type === ClearEvent + ); +} + /** * Register `LiveCanvas` as an available `LoadableObjectClass` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. */ diff --git a/packages/live-share-media/package.json b/packages/live-share-media/package.json index 8de5a6a43..1979dfdd0 100644 --- a/packages/live-share-media/package.json +++ b/packages/live-share-media/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-media", - "version": "1.4.0", + "version": "2.0.0-internal.1", "description": "Live Share classes that synchronize media playback across clients.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -15,23 +15,20 @@ "test:race": "node ./../live-share/test-for-race-conditions.js" }, "devDependencies": { - "@microsoft/live-share": "1.4.0", - "@fluidframework/test-client-utils": "^1.3.6", - "@fluidframework/test-runtime-utils": "^1.3.6", - "@fluidframework/test-utils": "^1.3.6", - "@fluidframework/test-version-utils": "^1.3.6", + "@microsoft/live-share": "2.0.0-internal.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "1.4.0", - "fluid-framework": "^1.2.3" + "@microsoft/live-share": "2.0.0-internal.1", + "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { "directory": "packages/live-share-media", diff --git a/packages/live-share-react/package.json b/packages/live-share-react/package.json index 83ad2942b..08f475ecc 100644 --- a/packages/live-share-react/package.json +++ b/packages/live-share-react/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-react", - "version": "1.4.0-preview.0", + "version": "2.0.0-internal.1", "description": "Build collaborative React apps using Microsoft's Fluid & Live Share frameworks with ease.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -12,30 +12,27 @@ "typecheck": "tsc" }, "dependencies": { - "@microsoft/live-share-turbo": "1.4.0-preview.0", + "@microsoft/live-share-turbo": "2.0.0-internal.1", "url": "^0.11.0", "uuid": "^9.0.0" }, "devDependencies": { "@babel/core": "^7.21.8", - "@fluidframework/azure-client": "^1.1.1", - "@fluidframework/test-client-utils": "^1.3.6", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", "babel-loader": "^9.1.2", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "typescript": "^5.0.4" }, "peerDependencies": { - "@fluidframework/azure-client": "^1.0.0", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", - "fluid-framework": "^1.2.3", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", + "fluid-framework": "^2.0.0-rc || ^2.0.0-internal", "react": "^16.8.0 || ^17 || ^18", "react-dom": "^16.8.0 || ^17 || ^18" }, diff --git a/packages/live-share-react/src/live-hooks/useLiveCanvas.ts b/packages/live-share-react/src/live-hooks/useLiveCanvas.ts index 8096c944b..fc6631143 100644 --- a/packages/live-share-react/src/live-hooks/useLiveCanvas.ts +++ b/packages/live-share-react/src/live-hooks/useLiveCanvas.ts @@ -82,7 +82,7 @@ export function useLiveCanvas( // cleanup function to be called when the component is unmount return () => { - liveCanvas.dispose(); + // liveCanvas.dispose(); inkingManager.removeAllListeners(); }; }, [liveCanvas]); diff --git a/packages/live-share-react/src/live-hooks/useMediaSynchronizer.ts b/packages/live-share-react/src/live-hooks/useMediaSynchronizer.ts index 263f723dc..ddeac7b6b 100644 --- a/packages/live-share-react/src/live-hooks/useMediaSynchronizer.ts +++ b/packages/live-share-react/src/live-hooks/useMediaSynchronizer.ts @@ -250,7 +250,7 @@ export function useMediaSynchronizer( synchronizer.removeAllListeners(); mediaSession.removeAllListeners(); synchronizer?.end(); - mediaSession?.dispose(); + // mediaSession?.dispose(); }; }, [mediaSession, mediaPlayerElement]); diff --git a/packages/live-share-turbo/package.json b/packages/live-share-turbo/package.json index b3d666c91..37859f9af 100644 --- a/packages/live-share-turbo/package.json +++ b/packages/live-share-turbo/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-turbo", - "version": "1.4.0-preview.0", + "version": "2.0.0-internal.1", "description": "Alternative & lightweight way to build collaborative apps using Microsoft's Fluid Framework & Live Share.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -17,20 +17,16 @@ "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test" }, "dependencies": { - "@fluidframework/register-collection": "^1.3.6" + "@fluidframework/register-collection": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@fluidframework/test-client-utils": "^1.3.6", - "@fluidframework/test-runtime-utils": "^1.3.6", - "@fluidframework/test-utils": "^1.3.6", - "@fluidframework/test-version-utils": "^1.3.6", - "@microsoft/live-share": "1.4.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@microsoft/live-share": "2.0.0-internal.1", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "jsdom-global": "^3.0.2", "jsdom": "^21.1.0", "mocha": "^10.2.0", @@ -40,9 +36,8 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@fluidframework/azure-client": "^1.0.0", - "@microsoft/live-share": "1.4.0", - "fluid-framework": "^1.2.3" + "@microsoft/live-share": "2.0.0-internal.1", + "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { "directory": "packages/live-share-turbo", diff --git a/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts b/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts index ed3cd66da..ecdfcb750 100644 --- a/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts +++ b/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts @@ -10,7 +10,7 @@ import { FluidObject, IFluidLoadable, } from "@fluidframework/core-interfaces"; -import { assert } from "@fluidframework/common-utils"; +import { assert } from "@fluidframework/core-utils"; import { ConsensusRegisterCollection } from "@fluidframework/register-collection"; import { DynamicObjectRegistry, LiveDataObject } from "@microsoft/live-share"; diff --git a/packages/live-share/package.json b/packages/live-share/package.json index 33df6d7ec..d2dff22ec 100644 --- a/packages/live-share/package.json +++ b/packages/live-share/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share", - "version": "1.4.0", + "version": "2.0.0-internal.1", "description": "Building collaborative experiences for Microsoft Teams and M365 using Fluid.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -18,24 +18,22 @@ "uuid": "^9.0.0" }, "devDependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@fluidframework/test-client-utils": "^1.3.6", - "@fluidframework/test-runtime-utils": "^1.3.6", - "@fluidframework/test-utils": "^1.3.6", - "@fluidframework/test-version-utils": "^1.3.6", + "@fluidframework/test-utils": "^2.0.0-rc.1", + "@fluidframework/azure-client": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluid-internal/client-utils": "^2.0.0-rc.1", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", "typescript": "^5.0.4" }, "peerDependencies": { - "@fluidframework/azure-client": "^1.0.0", - "fluid-framework": "^1.2.3" + "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { "directory": "packages/live-share", diff --git a/packages/live-share/src/DynamicObjectRegistry.ts b/packages/live-share/src/DynamicObjectRegistry.ts index fabc5e355..07da8c9f3 100644 --- a/packages/live-share/src/DynamicObjectRegistry.ts +++ b/packages/live-share/src/DynamicObjectRegistry.ts @@ -3,12 +3,10 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { - LoadableObjectClass, - SharedMap, - SharedString, - SharedDirectory, -} from "fluid-framework"; +import { LoadableObjectClass, SharedMap } from "fluid-framework"; + +import { SharedDirectory } from "@fluidframework/map"; +import { SharedString } from "@fluidframework/sequence"; /** * Key for window global reference to loadable objects. diff --git a/packages/live-share/src/LiveDataObject.ts b/packages/live-share/src/LiveDataObject.ts index efdaa5b5e..7837392f4 100644 --- a/packages/live-share/src/LiveDataObject.ts +++ b/packages/live-share/src/LiveDataObject.ts @@ -4,7 +4,7 @@ import { IDataObjectProps, } from "@fluidframework/aqueduct"; import { LiveShareRuntime } from "./LiveShareRuntime"; -import { assert } from "@fluidframework/common-utils"; +import { assert } from "@fluidframework/core-utils"; import { IClientInfo, LiveDataObjectInitializeState, diff --git a/packages/live-share/src/LiveEventScope.ts b/packages/live-share/src/LiveEventScope.ts index cb4a4c241..b2285c462 100644 --- a/packages/live-share/src/LiveEventScope.ts +++ b/packages/live-share/src/LiveEventScope.ts @@ -4,15 +4,13 @@ */ import EventEmitter from "events"; -import { - IErrorEvent, - ITelemetryLogger, -} from "@fluidframework/common-definitions"; -import { TypedEventEmitter } from "@fluidframework/common-utils"; +import { IErrorEvent } from "@fluidframework/core-interfaces"; +import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils"; +import { TypedEventEmitter } from "@fluid-internal/client-utils"; import { IInboundSignalMessage } from "@fluidframework/runtime-definitions"; import { ILiveEvent, UserMeetingRole } from "./interfaces"; import { LiveShareRuntime } from "./LiveShareRuntime"; -import { waitUntilConnected } from "./internals"; +import { isILiveEvent, waitUntilConnected } from "./internals"; /** * Live event callback. @@ -32,7 +30,7 @@ export type LiveEventListener = ( export interface IRuntimeSignaler { readonly clientId: string | undefined; readonly connected: boolean; - readonly logger: ITelemetryLogger; + readonly logger: ITelemetryLoggerExt; on(event: "connected", listener: (clientId: string) => void): this; off(event: "connected", listener: (clientId: string) => void): this; on( @@ -91,9 +89,12 @@ export class LiveEventScope extends TypedEventEmitter { // We'll overwrite the contents clientId with the messages clientId which can't be // spoofed. const clientId = message.clientId; - message.content.clientId = clientId; - this.emitToListeners(clientId, message.content, local); + if (isILiveEvent(message.content)) { + const content = message.content; + content.clientId = clientId; + this.emitToListeners(clientId, content, local); + } }); } diff --git a/packages/live-share/src/LiveFollowMode.ts b/packages/live-share/src/LiveFollowMode.ts index 6b1480e4f..f3e7c19a2 100644 --- a/packages/live-share/src/LiveFollowMode.ts +++ b/packages/live-share/src/LiveFollowMode.ts @@ -3,7 +3,7 @@ import { LiveState } from "./LiveState"; import { ILivePresenceEvents, LivePresence } from "./LivePresence"; import { DataObjectFactory } from "@fluidframework/aqueduct"; import { IFluidHandle } from "@fluidframework/core-interfaces"; -import { assert } from "@fluidframework/common-utils"; +import { assert } from "@fluidframework/core-utils"; import { LiveDataObjectInitializeState, UserMeetingRole } from "./interfaces"; import { LiveTelemetryLogger } from "./LiveTelemetryLogger"; import { LivePresenceUser, PresenceState } from "./LivePresenceUser"; @@ -674,11 +674,11 @@ export class LiveFollowMode extends LiveDataObject<{ /** * Disposes of the object when its container is disposed of. */ - public dispose(): void { - super.dispose(); - this.presence.dispose(); - this.presentingUserIdState.dispose(); - } + // public dispose(): void { + // super.dispose(); + // this.presence.dispose(); + // this.presentingUserIdState.dispose(); + // } /** * initializingFirstTime is run only once by the first client to create the DataObject. Here we use it to diff --git a/packages/live-share/src/LivePresence.ts b/packages/live-share/src/LivePresence.ts index 7dc05ccf8..dfcb6db38 100644 --- a/packages/live-share/src/LivePresence.ts +++ b/packages/live-share/src/LivePresence.ts @@ -212,12 +212,12 @@ export class LivePresence< /** * Disposes of the object when its container is disposed of. */ - public dispose(): void { - super.dispose(); - if (this._synchronizer) { - this._synchronizer.dispose(); - } - } + // public dispose(): void { + // super.dispose(); + // if (this._synchronizer) { + // this._synchronizer.dispose(); + // } + // } /** * Returns a snapshot of the current list of presence objects being tracked. diff --git a/packages/live-share/src/LiveShareRuntime.ts b/packages/live-share/src/LiveShareRuntime.ts index a6d622fba..44740f13b 100644 --- a/packages/live-share/src/LiveShareRuntime.ts +++ b/packages/live-share/src/LiveShareRuntime.ts @@ -1,4 +1,4 @@ -import { assert } from "@fluidframework/common-utils"; +import { assert } from "@fluidframework/core-utils"; import { HostTimestampProvider } from "./HostTimestampProvider"; import { IClientInfo, diff --git a/packages/live-share/src/LiveState.ts b/packages/live-share/src/LiveState.ts index af38d76f2..9649fd203 100644 --- a/packages/live-share/src/LiveState.ts +++ b/packages/live-share/src/LiveState.ts @@ -4,7 +4,7 @@ */ import { DataObjectFactory } from "@fluidframework/aqueduct"; -import { assert } from "@fluidframework/common-utils"; +import { assert } from "@fluidframework/core-utils"; import { IEvent } from "@fluidframework/common-definitions"; import { ILiveEvent, @@ -175,12 +175,12 @@ export class LiveState extends LiveDataObject<{ /** * Disposes of the object when its container is disposed of. */ - public dispose(): void { - super.dispose(); - if (this._synchronizer) { - this._synchronizer.dispose(); - } - } + // public dispose(): void { + // super.dispose(); + // if (this._synchronizer) { + // this._synchronizer.dispose(); + // } + // } /** * Set a new state value diff --git a/packages/live-share/src/LiveTimer.ts b/packages/live-share/src/LiveTimer.ts index bfef199cd..c5866aa64 100644 --- a/packages/live-share/src/LiveTimer.ts +++ b/packages/live-share/src/LiveTimer.ts @@ -215,12 +215,12 @@ export class LiveTimer extends LiveDataObject<{ /** * Disposes of the object when its container is disposed of. */ - public dispose(): void { - super.dispose(); - if (this._synchronizer) { - this._synchronizer.dispose(); - } - } + // public dispose(): void { + // super.dispose(); + // if (this._synchronizer) { + // this._synchronizer.dispose(); + // } + // } /** * Starts the timer with a specified duration. diff --git a/packages/live-share/src/internals/LiveObjectManager.ts b/packages/live-share/src/internals/LiveObjectManager.ts index b42e75e82..b8e3a4d61 100644 --- a/packages/live-share/src/internals/LiveObjectManager.ts +++ b/packages/live-share/src/internals/LiveObjectManager.ts @@ -4,7 +4,7 @@ */ import { IInboundSignalMessage } from "@fluidframework/runtime-definitions"; -import { TypedEventEmitter } from "@fluidframework/common-utils"; +import { TypedEventEmitter } from "@fluid-internal/client-utils"; import { IRuntimeSignaler } from "../LiveEventScope"; import { LiveShareRuntime } from "../LiveShareRuntime"; import { IContainerRuntimeSignaler, ILiveEvent } from "../interfaces"; diff --git a/samples/javascript/01.dice-roller/package.json b/samples/javascript/01.dice-roller/package.json index 0e441a748..c1e8845d4 100644 --- a/samples/javascript/01.dice-roller/package.json +++ b/samples/javascript/01.dice-roller/package.json @@ -18,13 +18,11 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6" + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/02.react-video/package.json b/samples/javascript/02.react-video/package.json index 77a856c7e..3d99e7a3b 100644 --- a/samples/javascript/02.react-video/package.json +++ b/samples/javascript/02.react-video/package.json @@ -10,14 +10,13 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-media": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -28,7 +27,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", diff --git a/samples/javascript/03.live-canvas-demo/package.json b/samples/javascript/03.live-canvas-demo/package.json index 33a66bca8..99c8ea6d0 100644 --- a/samples/javascript/03.live-canvas-demo/package.json +++ b/samples/javascript/03.live-canvas-demo/package.json @@ -17,14 +17,12 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6" + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/04.live-share-react/package.json b/samples/javascript/04.live-share-react/package.json index e83be3349..733ebd711 100644 --- a/samples/javascript/04.live-share-react/package.json +++ b/samples/javascript/04.live-share-react/package.json @@ -8,13 +8,12 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-media": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-react": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-react": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -26,7 +25,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/javascript/05.dice-roller-turbo/package.json b/samples/javascript/05.dice-roller-turbo/package.json index 0b526405e..b2eaf44ec 100644 --- a/samples/javascript/05.dice-roller-turbo/package.json +++ b/samples/javascript/05.dice-roller-turbo/package.json @@ -17,14 +17,12 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-turbo": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-turbo": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6" + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/21.react-media-template/package.json b/samples/javascript/21.react-media-template/package.json index e05bc5f73..27d330482 100644 --- a/samples/javascript/21.react-media-template/package.json +++ b/samples/javascript/21.react-media-template/package.json @@ -8,12 +8,11 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +24,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", diff --git a/samples/javascript/22.react-agile-poker/package.json b/samples/javascript/22.react-agile-poker/package.json index deca0c003..aebce1cea 100644 --- a/samples/javascript/22.react-agile-poker/package.json +++ b/samples/javascript/22.react-agile-poker/package.json @@ -8,10 +8,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -21,7 +20,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/javascript/23.react-live-canvas/package.json b/samples/javascript/23.react-live-canvas/package.json index ee25c59b2..34aae1d26 100644 --- a/samples/javascript/23.react-live-canvas/package.json +++ b/samples/javascript/23.react-live-canvas/package.json @@ -5,11 +5,10 @@ "author": "Microsoft", "license": "MIT", "dependencies": { - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "@fluidframework/azure-client": "^1.1.1", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router": "^6.4.2", @@ -18,7 +17,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/01.dice-roller/package.json b/samples/typescript/01.dice-roller/package.json index a916340bb..9acf140b3 100644 --- a/samples/typescript/01.dice-roller/package.json +++ b/samples/typescript/01.dice-roller/package.json @@ -18,13 +18,11 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6" + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/03.live-canvas-demo/package.json b/samples/typescript/03.live-canvas-demo/package.json index 3042f3172..be08a754f 100644 --- a/samples/typescript/03.live-canvas-demo/package.json +++ b/samples/typescript/03.live-canvas-demo/package.json @@ -17,14 +17,12 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6" + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/04.live-share-react/package.json b/samples/typescript/04.live-share-react/package.json index da00c7fb3..49b7ef9c9 100644 --- a/samples/typescript/04.live-share-react/package.json +++ b/samples/typescript/04.live-share-react/package.json @@ -8,13 +8,12 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-media": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-react": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-react": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -26,7 +25,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/05.dice-roller-turbo/package.json b/samples/typescript/05.dice-roller-turbo/package.json index a9e996913..f1347b359 100644 --- a/samples/typescript/05.dice-roller-turbo/package.json +++ b/samples/typescript/05.dice-roller-turbo/package.json @@ -17,14 +17,12 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-turbo": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-turbo": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6" + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/06.presence-avatars/package.json b/samples/typescript/06.presence-avatars/package.json index 4d2a39c8d..8141d74e2 100644 --- a/samples/typescript/06.presence-avatars/package.json +++ b/samples/typescript/06.presence-avatars/package.json @@ -8,13 +8,12 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-media": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-react": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-react": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -26,7 +25,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/07.countdown-timer/package.json b/samples/typescript/07.countdown-timer/package.json index 6d118a000..72f25beb0 100644 --- a/samples/typescript/07.countdown-timer/package.json +++ b/samples/typescript/07.countdown-timer/package.json @@ -8,13 +8,12 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-media": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-react": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-react": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -26,7 +25,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/08.3d-model/package.json b/samples/typescript/08.3d-model/package.json index b1c6e85cf..32e3ac230 100644 --- a/samples/typescript/08.3d-model/package.json +++ b/samples/typescript/08.3d-model/package.json @@ -10,13 +10,12 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", - "@microsoft/live-share-react": "1.4.0-preview.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share-react": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -30,7 +29,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/21.react-media-template/package.json b/samples/typescript/21.react-media-template/package.json index 1e85bb5b8..98922180d 100644 --- a/samples/typescript/21.react-media-template/package.json +++ b/samples/typescript/21.react-media-template/package.json @@ -8,12 +8,11 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "@microsoft/live-share-media": "1.4.0", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share-media": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^1.3.6", + "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +24,6 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "@types/lodash": "^4.14.191", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", diff --git a/samples/typescript/31.live-canvas-tests/package.json b/samples/typescript/31.live-canvas-tests/package.json index 0e241f368..0f274cb73 100644 --- a/samples/typescript/31.live-canvas-tests/package.json +++ b/samples/typescript/31.live-canvas-tests/package.json @@ -16,13 +16,12 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@fluidframework/azure-client": "^1.1.1", - "@microsoft/live-share": "1.4.0", - "@microsoft/live-share-canvas": "1.4.0", - "fluid-framework": "^1.3.6" + "@fluidframework/azure-client": "^2.0.0-rc.1", + "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share-canvas": "2.0.0-internal.1", + "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { - "@fluidframework/test-client-utils": "^1.3.6", "buffer": "^6.0.3", "concurrently": "^5.3.0", "start-server-and-test": "^2.0.0", From a663f321463ffbabcbd9533f9a51d946078f7d6a Mon Sep 17 00:00:00 2001 From: Ryan Bliss Date: Mon, 26 Feb 2024 14:27:07 -0800 Subject: [PATCH 02/40] Update package-lock.json --- package-lock.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 158c26f5d..69be7c423 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13456,10 +13456,10 @@ }, "packages/live-share-react": { "name": "@microsoft/live-share-react", - "version": "2.0.0-internal.1-preview.0", + "version": "2.0.0-internal.1", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share-turbo": "2.0.0-internal.1-preview.0", + "@microsoft/live-share-turbo": "2.0.0-internal.1", "url": "^0.11.0", "uuid": "^9.0.0" }, @@ -13486,7 +13486,7 @@ }, "packages/live-share-turbo": { "name": "@microsoft/live-share-turbo", - "version": "2.0.0-internal.1-preview.0", + "version": "2.0.0-internal.1", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@fluidframework/register-collection": "^2.0.0-rc.1" @@ -13615,7 +13615,7 @@ "@microsoft/live-share": "2.0.0-internal.1", "@microsoft/live-share-canvas": "2.0.0-internal.1", "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1-preview.0", + "@microsoft/live-share-react": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -13651,7 +13651,7 @@ "license": "Microsoft", "dependencies": { "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-turbo": "2.0.0-internal.1-preview.0", + "@microsoft/live-share-turbo": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -13819,7 +13819,7 @@ "@microsoft/live-share": "2.0.0-internal.1", "@microsoft/live-share-canvas": "2.0.0-internal.1", "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1-preview.0", + "@microsoft/live-share-react": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -13855,7 +13855,7 @@ "license": "Microsoft", "dependencies": { "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-turbo": "2.0.0-internal.1-preview.0", + "@microsoft/live-share-turbo": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -13879,7 +13879,7 @@ "@microsoft/live-share": "2.0.0-internal.1", "@microsoft/live-share-canvas": "2.0.0-internal.1", "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1-preview.0", + "@microsoft/live-share-react": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -13920,7 +13920,7 @@ "@microsoft/live-share": "2.0.0-internal.1", "@microsoft/live-share-canvas": "2.0.0-internal.1", "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1-preview.0", + "@microsoft/live-share-react": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -13963,7 +13963,7 @@ "@microsoft/live-share": "2.0.0-internal.1", "@microsoft/live-share-canvas": "2.0.0-internal.1", "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1-preview.0", + "@microsoft/live-share-react": "2.0.0-internal.1", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", From 5879aa6dd7f3a5fc247d1b05bf63f0a7be31fe8f Mon Sep 17 00:00:00 2001 From: James Hunt Date: Mon, 26 Feb 2024 16:54:23 -0600 Subject: [PATCH 03/40] fixed test-runtime-utils usage --- package-lock.json | 17 +++++++++++++++++ packages/live-share/src/internals/utils.ts | 6 +++--- samples/javascript/01.dice-roller/package.json | 1 + samples/javascript/02.react-video/package.json | 1 + .../javascript/03.live-canvas-demo/package.json | 1 + .../javascript/04.live-share-react/package.json | 1 + .../src/pages/AzureAutoJoin.jsx | 2 +- .../05.dice-roller-turbo/package.json | 1 + .../21.react-media-template/package.json | 1 + .../src/live-share-hooks/useSharedObjects.js | 1 - .../22.react-agile-poker/package.json | 1 + .../23.react-live-canvas/package.json | 1 + .../src/Pages/LiveCanvasPage.jsx | 1 - samples/typescript/01.dice-roller/package.json | 1 + .../typescript/03.live-canvas-demo/package.json | 1 + .../typescript/04.live-share-react/package.json | 1 + .../src/pages/AzureAutoJoin.tsx | 3 ++- .../05.dice-roller-turbo/package.json | 1 + .../typescript/06.presence-avatars/package.json | 1 + .../typescript/07.countdown-timer/package.json | 1 + samples/typescript/08.3d-model/package.json | 1 + .../21.react-media-template/package.json | 1 + .../31.live-canvas-tests/package.json | 1 + .../31.live-canvas-tests/src/inking-surface.ts | 7 +------ 24 files changed, 41 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 69be7c423..b0cb6f4f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13523,6 +13523,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -13556,6 +13557,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", @@ -13596,6 +13598,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -13629,6 +13632,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13656,6 +13660,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -13688,6 +13693,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13724,6 +13730,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13756,6 +13763,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13781,6 +13789,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -13800,6 +13809,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -13833,6 +13843,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13860,6 +13871,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -13893,6 +13905,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13934,6 +13947,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -13979,6 +13993,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -14020,6 +14035,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -14441,6 +14457,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "buffer": "^6.0.3", "concurrently": "^5.3.0", "start-server-and-test": "^2.0.0", diff --git a/packages/live-share/src/internals/utils.ts b/packages/live-share/src/internals/utils.ts index 92b97afcb..71c1ce182 100644 --- a/packages/live-share/src/internals/utils.ts +++ b/packages/live-share/src/internals/utils.ts @@ -139,14 +139,14 @@ export function timeoutRequest( } /** - * Dynamically import InsecureTokenProvider class, in case developer does not yet have "@fluidframework/test-client-utils", + * Dynamically import InsecureTokenProvider class, in case developer does not yet have "@fluidframework/test-runtime-utils", * since don't want to require that they include it in package.json. * @hidden */ export async function getInsecureTokenProvider(): Promise { try { const { InsecureTokenProvider } = - await require("@fluidframework/test-client-utils"); + await require("@fluidframework/test-runtime-utils"); const userIdParam = new URL(window.location.href)?.searchParams?.get( "userId" ); @@ -157,7 +157,7 @@ export async function getInsecureTokenProvider(): Promise { return tokenProvider as ITokenProvider; } catch { throw new Error( - "@microsoft/live-share: when using 'local' connection type, you must have @fluidframework/test-client-utils installed" + "@microsoft/live-share: when using 'local' connection type, you must have @fluidframework/test-runtime-utils installed" ); } } diff --git a/samples/javascript/01.dice-roller/package.json b/samples/javascript/01.dice-roller/package.json index c1e8845d4..83fabbef0 100644 --- a/samples/javascript/01.dice-roller/package.json +++ b/samples/javascript/01.dice-roller/package.json @@ -23,6 +23,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/02.react-video/package.json b/samples/javascript/02.react-video/package.json index 3d99e7a3b..2dd03762c 100644 --- a/samples/javascript/02.react-video/package.json +++ b/samples/javascript/02.react-video/package.json @@ -27,6 +27,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", diff --git a/samples/javascript/03.live-canvas-demo/package.json b/samples/javascript/03.live-canvas-demo/package.json index 99c8ea6d0..cce18911b 100644 --- a/samples/javascript/03.live-canvas-demo/package.json +++ b/samples/javascript/03.live-canvas-demo/package.json @@ -23,6 +23,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/04.live-share-react/package.json b/samples/javascript/04.live-share-react/package.json index 733ebd711..bd7393662 100644 --- a/samples/javascript/04.live-share-react/package.json +++ b/samples/javascript/04.live-share-react/package.json @@ -25,6 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/javascript/04.live-share-react/src/pages/AzureAutoJoin.jsx b/samples/javascript/04.live-share-react/src/pages/AzureAutoJoin.jsx index 6313a93a2..e2a3be9a8 100644 --- a/samples/javascript/04.live-share-react/src/pages/AzureAutoJoin.jsx +++ b/samples/javascript/04.live-share-react/src/pages/AzureAutoJoin.jsx @@ -1,4 +1,4 @@ -import { InsecureTokenProvider } from "@fluidframework/test-client-utils"; +import { InsecureTokenProvider } from "@fluidframework/test-runtime-utils"; import { AzureProvider } from "@microsoft/live-share-react"; import { SharedMap } from "fluid-framework"; import { diff --git a/samples/javascript/05.dice-roller-turbo/package.json b/samples/javascript/05.dice-roller-turbo/package.json index b2eaf44ec..e73012708 100644 --- a/samples/javascript/05.dice-roller-turbo/package.json +++ b/samples/javascript/05.dice-roller-turbo/package.json @@ -23,6 +23,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/21.react-media-template/package.json b/samples/javascript/21.react-media-template/package.json index 27d330482..2c93cbfb3 100644 --- a/samples/javascript/21.react-media-template/package.json +++ b/samples/javascript/21.react-media-template/package.json @@ -24,6 +24,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", diff --git a/samples/javascript/21.react-media-template/src/live-share-hooks/useSharedObjects.js b/samples/javascript/21.react-media-template/src/live-share-hooks/useSharedObjects.js index 5e18f2e7d..fa29210e6 100644 --- a/samples/javascript/21.react-media-template/src/live-share-hooks/useSharedObjects.js +++ b/samples/javascript/21.react-media-template/src/live-share-hooks/useSharedObjects.js @@ -4,7 +4,6 @@ */ import { LiveShareClient, TestLiveShareHost } from "@microsoft/live-share"; -import { InsecureTokenProvider } from "@fluidframework/test-client-utils"; import { LiveCanvas } from "@microsoft/live-share-canvas"; import { LiveMediaSession } from "@microsoft/live-share-media"; import { SharedMap } from "fluid-framework"; diff --git a/samples/javascript/22.react-agile-poker/package.json b/samples/javascript/22.react-agile-poker/package.json index aebce1cea..79d5342d8 100644 --- a/samples/javascript/22.react-agile-poker/package.json +++ b/samples/javascript/22.react-agile-poker/package.json @@ -20,6 +20,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/javascript/23.react-live-canvas/package.json b/samples/javascript/23.react-live-canvas/package.json index 34aae1d26..1efbefeec 100644 --- a/samples/javascript/23.react-live-canvas/package.json +++ b/samples/javascript/23.react-live-canvas/package.json @@ -17,6 +17,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/javascript/23.react-live-canvas/src/Pages/LiveCanvasPage.jsx b/samples/javascript/23.react-live-canvas/src/Pages/LiveCanvasPage.jsx index 2f1699987..ff581472e 100644 --- a/samples/javascript/23.react-live-canvas/src/Pages/LiveCanvasPage.jsx +++ b/samples/javascript/23.react-live-canvas/src/Pages/LiveCanvasPage.jsx @@ -1,6 +1,5 @@ import { LiveShareClient, TestLiveShareHost } from "@microsoft/live-share"; import { LiveCanvas, InkingTool } from "@microsoft/live-share-canvas"; -import { InsecureTokenProvider } from "@fluidframework/test-client-utils"; import { useEffect, useState, useRef, useCallback } from "react"; import { useLiveCanvas } from "../utils/useLiveCanvas"; diff --git a/samples/typescript/01.dice-roller/package.json b/samples/typescript/01.dice-roller/package.json index 9acf140b3..95c640ee8 100644 --- a/samples/typescript/01.dice-roller/package.json +++ b/samples/typescript/01.dice-roller/package.json @@ -23,6 +23,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/03.live-canvas-demo/package.json b/samples/typescript/03.live-canvas-demo/package.json index be08a754f..ad26962e2 100644 --- a/samples/typescript/03.live-canvas-demo/package.json +++ b/samples/typescript/03.live-canvas-demo/package.json @@ -23,6 +23,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/04.live-share-react/package.json b/samples/typescript/04.live-share-react/package.json index 49b7ef9c9..cab61bbda 100644 --- a/samples/typescript/04.live-share-react/package.json +++ b/samples/typescript/04.live-share-react/package.json @@ -25,6 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/04.live-share-react/src/pages/AzureAutoJoin.tsx b/samples/typescript/04.live-share-react/src/pages/AzureAutoJoin.tsx index 9681e559b..7ae1ebe72 100644 --- a/samples/typescript/04.live-share-react/src/pages/AzureAutoJoin.tsx +++ b/samples/typescript/04.live-share-react/src/pages/AzureAutoJoin.tsx @@ -1,4 +1,4 @@ -import { InsecureTokenProvider } from "@fluidframework/test-client-utils"; +import { InsecureTokenProvider } from "@fluidframework/test-runtime-utils"; import { AzureProvider } from "@microsoft/live-share-react"; import { SharedMap } from "fluid-framework"; import { @@ -14,6 +14,7 @@ const azureClientOptions: AzureClientProps = { type: "local", tokenProvider: new InsecureTokenProvider("", { id: "123", + name: "123", }), endpoint: "http://localhost:7070", }, diff --git a/samples/typescript/05.dice-roller-turbo/package.json b/samples/typescript/05.dice-roller-turbo/package.json index f1347b359..a1de4f271 100644 --- a/samples/typescript/05.dice-roller-turbo/package.json +++ b/samples/typescript/05.dice-roller-turbo/package.json @@ -23,6 +23,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/06.presence-avatars/package.json b/samples/typescript/06.presence-avatars/package.json index 8141d74e2..37f314847 100644 --- a/samples/typescript/06.presence-avatars/package.json +++ b/samples/typescript/06.presence-avatars/package.json @@ -25,6 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/07.countdown-timer/package.json b/samples/typescript/07.countdown-timer/package.json index 72f25beb0..1d4f15ed9 100644 --- a/samples/typescript/07.countdown-timer/package.json +++ b/samples/typescript/07.countdown-timer/package.json @@ -25,6 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/08.3d-model/package.json b/samples/typescript/08.3d-model/package.json index 32e3ac230..1d0aaf7ff 100644 --- a/samples/typescript/08.3d-model/package.json +++ b/samples/typescript/08.3d-model/package.json @@ -29,6 +29,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/21.react-media-template/package.json b/samples/typescript/21.react-media-template/package.json index 98922180d..7a84e3403 100644 --- a/samples/typescript/21.react-media-template/package.json +++ b/samples/typescript/21.react-media-template/package.json @@ -24,6 +24,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@types/lodash": "^4.14.191", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", diff --git a/samples/typescript/31.live-canvas-tests/package.json b/samples/typescript/31.live-canvas-tests/package.json index 0f274cb73..8876f9350 100644 --- a/samples/typescript/31.live-canvas-tests/package.json +++ b/samples/typescript/31.live-canvas-tests/package.json @@ -22,6 +22,7 @@ "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "buffer": "^6.0.3", "concurrently": "^5.3.0", "start-server-and-test": "^2.0.0", diff --git a/samples/typescript/31.live-canvas-tests/src/inking-surface.ts b/samples/typescript/31.live-canvas-tests/src/inking-surface.ts index cbfa6df6f..8294c8770 100644 --- a/samples/typescript/31.live-canvas-tests/src/inking-surface.ts +++ b/samples/typescript/31.live-canvas-tests/src/inking-surface.ts @@ -3,17 +3,12 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { - ILiveShareClientOptions, - LiveShareClient, - TestLiveShareHost, -} from "@microsoft/live-share"; +import { LiveShareClient, TestLiveShareHost } from "@microsoft/live-share"; import { InkingManager, InputFilter, LiveCanvas, } from "@microsoft/live-share-canvas"; -import { InsecureTokenProvider } from "@fluidframework/test-client-utils"; import { IFluidContainer } from "fluid-framework"; const containerSchema = { From ecbeaf87b603028510daa83f2b898f9f609314cf Mon Sep 17 00:00:00 2001 From: Ryan Bliss Date: Mon, 26 Feb 2024 14:58:57 -0800 Subject: [PATCH 04/40] updated version to 2.0.0-internal.2 --- package-lock.json | 122 +++++++++--------- packages/live-share-canvas/package.json | 6 +- packages/live-share-media/package.json | 6 +- packages/live-share-react/package.json | 16 +-- packages/live-share-turbo/package.json | 6 +- packages/live-share/package.json | 2 +- .../javascript/01.dice-roller/package.json | 2 +- .../javascript/02.react-video/package.json | 4 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 8 +- .../05.dice-roller-turbo/package.json | 4 +- .../21.react-media-template/package.json | 6 +- .../22.react-agile-poker/package.json | 2 +- .../23.react-live-canvas/package.json | 4 +- .../typescript/01.dice-roller/package.json | 2 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 8 +- .../05.dice-roller-turbo/package.json | 4 +- .../06.presence-avatars/package.json | 8 +- .../07.countdown-timer/package.json | 8 +- samples/typescript/08.3d-model/package.json | 8 +- .../21.react-media-template/package.json | 6 +- .../31.live-canvas-tests/package.json | 4 +- 23 files changed, 122 insertions(+), 122 deletions(-) diff --git a/package-lock.json b/package-lock.json index b0cb6f4f1..0dbc899c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13389,7 +13389,7 @@ }, "packages/live-share": { "name": "@microsoft/live-share", - "version": "2.0.0-internal.1", + "version": "2.0.0-internal.2", "license": "SEE LICENSE IN LICENSE", "dependencies": { "uuid": "^9.0.0" @@ -13415,10 +13415,10 @@ }, "packages/live-share-canvas": { "name": "@microsoft/live-share-canvas", - "version": "2.0.0-internal.1", + "version": "2.0.0-internal.2", "license": "SEE LICENSE IN LICENSE", "devDependencies": { - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -13429,17 +13429,17 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, "packages/live-share-media": { "name": "@microsoft/live-share-media", - "version": "2.0.0-internal.1", + "version": "2.0.0-internal.2", "license": "SEE LICENSE IN LICENSE", "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -13450,24 +13450,24 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, "packages/live-share-react": { "name": "@microsoft/live-share-react", - "version": "2.0.0-internal.1", + "version": "2.0.0-internal.2", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share-turbo": "2.0.0-internal.1", + "@microsoft/live-share-turbo": "2.0.0-internal.2", "url": "^0.11.0", "uuid": "^9.0.0" }, "devDependencies": { "@babel/core": "^7.21.8", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", @@ -13476,9 +13476,9 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal", "react": "^16.8.0 || ^17 || ^18", "react-dom": "^16.8.0 || ^17 || ^18" @@ -13486,14 +13486,14 @@ }, "packages/live-share-turbo": { "name": "@microsoft/live-share-turbo", - "version": "2.0.0-internal.1", + "version": "2.0.0-internal.2", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@fluidframework/register-collection": "^2.0.0-rc.1" }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -13508,7 +13508,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, @@ -13518,7 +13518,7 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -13540,8 +13540,8 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", @@ -13592,8 +13592,8 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -13615,10 +13615,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share-react": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -13654,8 +13654,8 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-turbo": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-turbo": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -13677,9 +13677,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -13718,7 +13718,7 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "prop-types": "^15.8.1", @@ -13751,8 +13751,8 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "react": "^18.2.0", @@ -13784,7 +13784,7 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -13803,8 +13803,8 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -13826,10 +13826,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share-react": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -13865,8 +13865,8 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-turbo": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-turbo": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -13888,10 +13888,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share-react": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -13930,10 +13930,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share-react": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -13974,10 +13974,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share-react": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -14019,9 +14019,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -14452,8 +14452,8 @@ "license": "SEE LICENSE IN LICENSE", "dependencies": { "@fluidframework/azure-client": "^2.0.0-rc.1", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { diff --git a/packages/live-share-canvas/package.json b/packages/live-share-canvas/package.json index 8ea6e6278..610756149 100644 --- a/packages/live-share-canvas/package.json +++ b/packages/live-share-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-canvas", - "version": "2.0.0-internal.1", + "version": "2.0.0-internal.2", "description": "Live Share extension library for collaborative inking.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -14,7 +14,7 @@ "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test" }, "devDependencies": { - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -25,7 +25,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { diff --git a/packages/live-share-media/package.json b/packages/live-share-media/package.json index 1979dfdd0..6d1cb4b42 100644 --- a/packages/live-share-media/package.json +++ b/packages/live-share-media/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-media", - "version": "2.0.0-internal.1", + "version": "2.0.0-internal.2", "description": "Live Share classes that synchronize media playback across clients.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -15,7 +15,7 @@ "test:race": "node ./../live-share/test-for-race-conditions.js" }, "devDependencies": { - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", @@ -27,7 +27,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { diff --git a/packages/live-share-react/package.json b/packages/live-share-react/package.json index 08f475ecc..403a3bc67 100644 --- a/packages/live-share-react/package.json +++ b/packages/live-share-react/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-react", - "version": "2.0.0-internal.1", + "version": "2.0.0-internal.2", "description": "Build collaborative React apps using Microsoft's Fluid & Live Share frameworks with ease.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -12,15 +12,15 @@ "typecheck": "tsc" }, "dependencies": { - "@microsoft/live-share-turbo": "2.0.0-internal.1", + "@microsoft/live-share-turbo": "2.0.0-internal.2", "url": "^0.11.0", "uuid": "^9.0.0" }, "devDependencies": { "@babel/core": "^7.21.8", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", @@ -29,9 +29,9 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal", "react": "^16.8.0 || ^17 || ^18", "react-dom": "^16.8.0 || ^17 || ^18" diff --git a/packages/live-share-turbo/package.json b/packages/live-share-turbo/package.json index 37859f9af..9b24f358a 100644 --- a/packages/live-share-turbo/package.json +++ b/packages/live-share-turbo/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-turbo", - "version": "2.0.0-internal.1", + "version": "2.0.0-internal.2", "description": "Alternative & lightweight way to build collaborative apps using Microsoft's Fluid Framework & Live Share.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -21,7 +21,7 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -36,7 +36,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { diff --git a/packages/live-share/package.json b/packages/live-share/package.json index d2dff22ec..8d62842c8 100644 --- a/packages/live-share/package.json +++ b/packages/live-share/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share", - "version": "2.0.0-internal.1", + "version": "2.0.0-internal.2", "description": "Building collaborative experiences for Microsoft Teams and M365 using Fluid.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", diff --git a/samples/javascript/01.dice-roller/package.json b/samples/javascript/01.dice-roller/package.json index 83fabbef0..e72a36825 100644 --- a/samples/javascript/01.dice-roller/package.json +++ b/samples/javascript/01.dice-roller/package.json @@ -18,7 +18,7 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/javascript/02.react-video/package.json b/samples/javascript/02.react-video/package.json index 2dd03762c..ad81fea72 100644 --- a/samples/javascript/02.react-video/package.json +++ b/samples/javascript/02.react-video/package.json @@ -10,8 +10,8 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", diff --git a/samples/javascript/03.live-canvas-demo/package.json b/samples/javascript/03.live-canvas-demo/package.json index cce18911b..5748c1f33 100644 --- a/samples/javascript/03.live-canvas-demo/package.json +++ b/samples/javascript/03.live-canvas-demo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/javascript/04.live-share-react/package.json b/samples/javascript/04.live-share-react/package.json index bd7393662..3941362b3 100644 --- a/samples/javascript/04.live-share-react/package.json +++ b/samples/javascript/04.live-share-react/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-react": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/javascript/05.dice-roller-turbo/package.json b/samples/javascript/05.dice-roller-turbo/package.json index e73012708..f1ab9136d 100644 --- a/samples/javascript/05.dice-roller-turbo/package.json +++ b/samples/javascript/05.dice-roller-turbo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-turbo": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-turbo": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/javascript/21.react-media-template/package.json b/samples/javascript/21.react-media-template/package.json index 2c93cbfb3..b25b95b50 100644 --- a/samples/javascript/21.react-media-template/package.json +++ b/samples/javascript/21.react-media-template/package.json @@ -8,9 +8,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/javascript/22.react-agile-poker/package.json b/samples/javascript/22.react-agile-poker/package.json index 79d5342d8..40cf1943e 100644 --- a/samples/javascript/22.react-agile-poker/package.json +++ b/samples/javascript/22.react-agile-poker/package.json @@ -8,7 +8,7 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "prop-types": "^15.8.1", diff --git a/samples/javascript/23.react-live-canvas/package.json b/samples/javascript/23.react-live-canvas/package.json index 1efbefeec..c57e1a549 100644 --- a/samples/javascript/23.react-live-canvas/package.json +++ b/samples/javascript/23.react-live-canvas/package.json @@ -5,8 +5,8 @@ "author": "Microsoft", "license": "MIT", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "react": "^18.2.0", diff --git a/samples/typescript/01.dice-roller/package.json b/samples/typescript/01.dice-roller/package.json index 95c640ee8..9aa39bae4 100644 --- a/samples/typescript/01.dice-roller/package.json +++ b/samples/typescript/01.dice-roller/package.json @@ -18,7 +18,7 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/typescript/03.live-canvas-demo/package.json b/samples/typescript/03.live-canvas-demo/package.json index ad26962e2..8d8ef0c67 100644 --- a/samples/typescript/03.live-canvas-demo/package.json +++ b/samples/typescript/03.live-canvas-demo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/typescript/04.live-share-react/package.json b/samples/typescript/04.live-share-react/package.json index cab61bbda..2728b1f6f 100644 --- a/samples/typescript/04.live-share-react/package.json +++ b/samples/typescript/04.live-share-react/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-react": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/05.dice-roller-turbo/package.json b/samples/typescript/05.dice-roller-turbo/package.json index a1de4f271..808f7edda 100644 --- a/samples/typescript/05.dice-roller-turbo/package.json +++ b/samples/typescript/05.dice-roller-turbo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-turbo": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-turbo": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/typescript/06.presence-avatars/package.json b/samples/typescript/06.presence-avatars/package.json index 37f314847..605fa3400 100644 --- a/samples/typescript/06.presence-avatars/package.json +++ b/samples/typescript/06.presence-avatars/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-react": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/07.countdown-timer/package.json b/samples/typescript/07.countdown-timer/package.json index 1d4f15ed9..860bb2763 100644 --- a/samples/typescript/07.countdown-timer/package.json +++ b/samples/typescript/07.countdown-timer/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-react": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/08.3d-model/package.json b/samples/typescript/08.3d-model/package.json index 1d0aaf7ff..627d2fdd0 100644 --- a/samples/typescript/08.3d-model/package.json +++ b/samples/typescript/08.3d-model/package.json @@ -10,10 +10,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", - "@microsoft/live-share-react": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share-react": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/21.react-media-template/package.json b/samples/typescript/21.react-media-template/package.json index 7a84e3403..92d2d8302 100644 --- a/samples/typescript/21.react-media-template/package.json +++ b/samples/typescript/21.react-media-template/package.json @@ -8,9 +8,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", - "@microsoft/live-share-media": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share-media": "2.0.0-internal.2", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/31.live-canvas-tests/package.json b/samples/typescript/31.live-canvas-tests/package.json index 8876f9350..27f834f47 100644 --- a/samples/typescript/31.live-canvas-tests/package.json +++ b/samples/typescript/31.live-canvas-tests/package.json @@ -17,8 +17,8 @@ }, "dependencies": { "@fluidframework/azure-client": "^2.0.0-rc.1", - "@microsoft/live-share": "2.0.0-internal.1", - "@microsoft/live-share-canvas": "2.0.0-internal.1", + "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share-canvas": "2.0.0-internal.2", "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { From 0611b488d7dab25a31d6bdde687c543a3a964de3 Mon Sep 17 00:00:00 2001 From: huntj88 Date: Wed, 6 Mar 2024 11:59:55 -0600 Subject: [PATCH 05/40] Live Share unit tests now use Fluid v2 (#771) Co-authored-by: James Hunt --- .github/workflows/codeql.yaml | 2 +- .../workflows/live-share-build-samples.yaml | 4 +- .../workflows/live-share-test-packages.yaml | 4 +- .gitignore | 1 + internal/test-utils/.gitignore | 52 + internal/test-utils/.npmignore | 6 + internal/test-utils/LICENSE | 21 + internal/test-utils/README.md | 3 + internal/test-utils/package.json | 62 + internal/test-utils/src/compatUtils.ts | 148 + internal/test-utils/src/describeCompat.ts | 181 ++ internal/test-utils/src/index.ts | 6 + internal/test-utils/src/localDriverApi.ts | 26 + .../test-utils/src/localServerTestDriver.ts | 47 + internal/test-utils/src/testApi.ts | 95 + internal/test-utils/tsconfig.json | 75 + internal/test-utils/tsconfig.tsbuildinfo | 1 + package-lock.json | 2391 +++++++++++++++-- package.json | 6 +- packages/live-share-media/package.json | 3 + ...veMediaSession_ManualActionHandler.spec.ts | 30 +- .../LiveMediaSession_Synchronizer.spec.ts | 30 +- .../src/live-hooks/useLiveCanvas.ts | 2 +- .../src/live-hooks/useMediaSynchronizer.ts | 2 +- .../src/dds-objects/DynamicObjectManager.ts | 2 +- .../live-share-turbo/src/internals/schema.ts | 7 +- .../src/test/AzureTurboClient.spec.ts | 16 +- .../src/test/getContainerSchema.spec.ts | 7 +- packages/live-share/package.json | 6 +- packages/live-share/src/LiveDataObject.ts | 8 + packages/live-share/src/LiveFollowMode.ts | 10 +- packages/live-share/src/LivePresence.ts | 12 +- packages/live-share/src/LiveState.ts | 12 +- packages/live-share/src/LiveTimer.ts | 12 +- .../live-share/src/test/LiveEvent.spec.ts | 20 +- .../src/test/LiveFollowMode.spec.ts | 30 +- .../live-share/src/test/LivePresence.spec.ts | 31 +- .../live-share/src/test/LiveState.spec.ts | 43 +- .../live-share/src/test/LiveTimer.spec.ts | 23 +- 39 files changed, 3021 insertions(+), 416 deletions(-) create mode 100644 internal/test-utils/.gitignore create mode 100644 internal/test-utils/.npmignore create mode 100644 internal/test-utils/LICENSE create mode 100644 internal/test-utils/README.md create mode 100644 internal/test-utils/package.json create mode 100644 internal/test-utils/src/compatUtils.ts create mode 100644 internal/test-utils/src/describeCompat.ts create mode 100644 internal/test-utils/src/index.ts create mode 100644 internal/test-utils/src/localDriverApi.ts create mode 100644 internal/test-utils/src/localServerTestDriver.ts create mode 100644 internal/test-utils/src/testApi.ts create mode 100644 internal/test-utils/tsconfig.json create mode 100644 internal/test-utils/tsconfig.tsbuildinfo diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml index fdaf3c869..ebfafbdee 100644 --- a/.github/workflows/codeql.yaml +++ b/.github/workflows/codeql.yaml @@ -16,7 +16,7 @@ on: branches: ['main', main*] pull_request: # The branches below must be a subset of the branches above - branches: ['main'] + branches: ['main', 'main*'] schedule: - cron: '0 2 * * 6' diff --git a/.github/workflows/live-share-build-samples.yaml b/.github/workflows/live-share-build-samples.yaml index ea137d529..a4773851e 100644 --- a/.github/workflows/live-share-build-samples.yaml +++ b/.github/workflows/live-share-build-samples.yaml @@ -2,9 +2,9 @@ name: Build Live Share SDK samples on: push: - branches: [ main ] + branches: [ main, mainv2 ] pull_request: - branches: [ main ] + branches: [ main, mainv2 ] jobs: build: diff --git a/.github/workflows/live-share-test-packages.yaml b/.github/workflows/live-share-test-packages.yaml index a95b7a569..26016d173 100644 --- a/.github/workflows/live-share-test-packages.yaml +++ b/.github/workflows/live-share-test-packages.yaml @@ -2,9 +2,9 @@ name: Test Live Share SDK packages on: push: - branches: [ main ] + branches: [ main, mainv2 ] pull_request: - branches: [ main ] + branches: [ main, mainv2 ] jobs: build: diff --git a/.gitignore b/.gitignore index 505b7ac60..2dd3a6fde 100644 --- a/.gitignore +++ b/.gitignore @@ -365,5 +365,6 @@ docs/assets/main.js # Testing files coverage/ +nyc/ .nyc_output/ build-data.json \ No newline at end of file diff --git a/internal/test-utils/.gitignore b/internal/test-utils/.gitignore new file mode 100644 index 000000000..ee26a5e7b --- /dev/null +++ b/internal/test-utils/.gitignore @@ -0,0 +1,52 @@ +# Compiled TypeScript and CSS +dist +lib + +# Babel +public/scripts/es5 + +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt +.cache-loader + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- +node_modules + +# Typings +typings + +# Debug log from npm +npm-debug.log + +# Code coverage +nyc +.nyc_output/ + +# Chart dependencies +**/charts/*.tgz + +# Generated modules +intel_modules/ +temp_modules/ diff --git a/internal/test-utils/.npmignore b/internal/test-utils/.npmignore new file mode 100644 index 000000000..a40f882cf --- /dev/null +++ b/internal/test-utils/.npmignore @@ -0,0 +1,6 @@ +nyc +*.log +**/*.tsbuildinfo +src/test +dist/test +**/_api-extractor-temp/** diff --git a/internal/test-utils/LICENSE b/internal/test-utils/LICENSE new file mode 100644 index 000000000..60af0a6a4 --- /dev/null +++ b/internal/test-utils/LICENSE @@ -0,0 +1,21 @@ +Copyright (c) Microsoft Corporation and contributors. All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/internal/test-utils/README.md b/internal/test-utils/README.md new file mode 100644 index 000000000..68cfea66a --- /dev/null +++ b/internal/test-utils/README.md @@ -0,0 +1,3 @@ +This package contains code to setup tests for live share data objects using a local fluid server. + +Code is duplicated and simplified from "@fluid-private/test-version-utils" and "@fluid-private/test-drivers", which are no longer available over npm in fluid v2. diff --git a/internal/test-utils/package.json b/internal/test-utils/package.json new file mode 100644 index 000000000..c4b4de4b5 --- /dev/null +++ b/internal/test-utils/package.json @@ -0,0 +1,62 @@ +{ + "name": "@live-share-private/test-utils", + "version": "2.0.0-internal.2", + "description": "testing utils for live share", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/live-share-sdk", + "directory": "internal/test-utils" + }, + "license": "MIT", + "author": "Microsoft and contributors", + "sideEffects": false, + "main": "./bin/index.js", + "types": "./bin/index.d.ts", + "scripts": { + "build": "tsc -p tsconfig.json", + "eslint": "eslint --format stylish src", + "eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout", + "format": "npm run prettier:fix", + "lint": "npm run prettier && npm run check:release-tags && npm run eslint", + "lint:fix": "npm run prettier:fix && npm run eslint:fix", + "prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore", + "prettier:fix": "prettier --write . --cache --ignore-path ../../../.prettierignore", + "tsc": "tsc" + }, + "dependencies": { + "@fluid-experimental/attributor": "^2.0.0-rc.1", + "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.1", + "@fluidframework/agent-scheduler": "^2.0.0-rc.1", + "@fluidframework/aqueduct": "^2.0.0-rc.1.0.3", + "@fluidframework/cell": "^2.0.0-rc.1", + "@fluidframework/container-loader": "^2.0.0-rc.1.0.3", + "@fluidframework/container-runtime": "^2.0.0-rc.1.0.4", + "@fluidframework/core-interfaces": "^2.0.0-rc.1", + "@fluidframework/core-utils": "^2.0.0-rc.1", + "@fluidframework/counter": "^2.0.0-rc.1", + "@fluidframework/datastore-definitions": "^2.0.0-rc.1.0.4", + "@fluidframework/driver-definitions": "^2.0.0-rc.1", + "@fluidframework/local-driver": "^2.0.0-rc.1", + "@fluidframework/map": "^2.0.0-rc.1.0.4", + "@fluidframework/matrix": "^2.0.0-rc.1", + "@fluidframework/ordered-collection": "^2.0.0-rc.1", + "@fluidframework/register-collection": "^2.0.0-rc.1.0.4", + "@fluidframework/runtime-definitions": "^2.0.0-rc.1.0.4", + "@fluidframework/sequence": "^2.0.0-rc.1.0.4", + "@fluidframework/server-local-server": "^3.1.0-237980", + "@fluidframework/telemetry-utils": "^2.0.0-rc.1.0.4", + "@fluidframework/test-driver-definitions": "^2.0.0-rc.1", + "@fluidframework/test-utils": "^2.0.0-rc.1.0.3" + }, + "devDependencies": { + "@fluidframework/eslint-config-fluid": "^3.5.0", + "@typescript-eslint/eslint-plugin": "^7.1.1", + "eslint": "~8.56.0", + "eslint-plugin-unused-imports": "^3.1.0", + "mocha-json-output-reporter": "^2.0.1", + "mocha-multi-reporters": "^1.5.1", + "prettier": "~3.0.3", + "rimraf": "^4.4.0", + "typescript": "~5.1.6" + } +} diff --git a/internal/test-utils/src/compatUtils.ts b/internal/test-utils/src/compatUtils.ts new file mode 100644 index 000000000..149a93861 --- /dev/null +++ b/internal/test-utils/src/compatUtils.ts @@ -0,0 +1,148 @@ +/*! + * Copyright (c) Microsoft Corporation and contributors. All rights reserved. + * Licensed under the MIT License. + */ + +import { IFluidLoadable } from "@fluidframework/core-interfaces"; +import { + IFluidDataStoreContext, + IFluidDataStoreFactory, +} from "@fluidframework/runtime-definitions"; +import { + IFluidDataStoreRuntime, + IChannelFactory, +} from "@fluidframework/datastore-definitions"; +import { ISharedDirectory } from "@fluidframework/map"; +import { unreachableCase } from "@fluidframework/core-utils"; +import { + ITestContainerConfig, + DataObjectFactoryType, + ChannelFactoryRegistry, + createTestContainerRuntimeFactory, + TestObjectProvider, +} from "@fluidframework/test-utils"; +import { mixinAttributor } from "@fluid-experimental/attributor"; +import { ContainerRuntimeApi, DataRuntimeApi, LoaderApi } from "./testApi"; +import { LocalServerTestDriver } from "./localServerTestDriver"; +import { LocalDriverApi } from "./localDriverApi"; + +/** + * @internal + */ +export const TestDataObjectType = "@fluid-example/test-dataStore"; + +/** + * @internal + */ +export interface ITestDataObject extends IFluidLoadable { + _context: IFluidDataStoreContext; + _runtime: IFluidDataStoreRuntime; + _root: ISharedDirectory; +} + +function createGetDataStoreFactoryFunction(api: typeof DataRuntimeApi) { + class TestDataObject extends api.DataObject implements ITestDataObject { + public get _context() { + return this.context; + } + public get _runtime() { + return this.runtime; + } + public get _root() { + return this.root; + } + } + + const registryMapping: { [index: string]: any } = {}; + for (const value of Object.values(api.dds)) { + registryMapping[value.getFactory().type] = value.getFactory(); + } + + function convertRegistry( + registry: ChannelFactoryRegistry = [] + ): ChannelFactoryRegistry { + const oldRegistry: [string | undefined, IChannelFactory][] = []; + for (const [key, factory] of registry) { + const oldFactory = registryMapping[factory.type]; + if (oldFactory === undefined) { + throw Error( + `Invalid or unimplemented channel factory: ${factory.type}` + ); + } + oldRegistry.push([key, oldFactory]); + } + + return oldRegistry; + } + + return function ( + containerOptions?: ITestContainerConfig + ): IFluidDataStoreFactory { + const registry = convertRegistry(containerOptions?.registry); + const fluidDataObjectType = containerOptions?.fluidDataObjectType; + switch (fluidDataObjectType) { + case undefined: + case DataObjectFactoryType.Primed: + return new api.DataObjectFactory( + TestDataObjectType, + TestDataObject, + [...registry].map((r) => r[1]), + {} + ); + case DataObjectFactoryType.Test: + return new api.TestFluidObjectFactory(registry); + default: + unreachableCase( + fluidDataObjectType, + `Unknown data store factory type ${fluidDataObjectType}` + ); + } + }; +} + +// Only support current version, not baseVersion support +/** + * @internal + */ +export const getDataStoreFactory = + createGetDataStoreFactoryFunction(DataRuntimeApi); + +/** + * @internal + */ +export async function getVersionedTestObjectProviderFromApis( + apis: Omit +) { + const driver = new LocalServerTestDriver(LocalDriverApi); + + const getDataStoreFactoryFn = createGetDataStoreFactoryFunction( + apis.dataRuntime + ); + const containerFactoryFn = (containerOptions?: ITestContainerConfig) => { + const dataStoreFactory = getDataStoreFactoryFn(containerOptions); + const runtimeCtor = + containerOptions?.enableAttribution === true + ? mixinAttributor(apis.containerRuntime.ContainerRuntime) + : apis.containerRuntime.ContainerRuntime; + const factoryCtor = createTestContainerRuntimeFactory(runtimeCtor); + return new factoryCtor( + TestDataObjectType, + dataStoreFactory, + containerOptions?.runtimeOptions + ); + }; + + return new TestObjectProvider( + apis.loader.Loader, + driver, + containerFactoryFn + ); +} + +export interface CompatApis { + containerRuntime: typeof ContainerRuntimeApi; + dataRuntime: typeof DataRuntimeApi; + dds: (typeof DataRuntimeApi)["dds"]; + driver: typeof LocalDriverApi; + loader: typeof LoaderApi; +} diff --git a/internal/test-utils/src/describeCompat.ts b/internal/test-utils/src/describeCompat.ts new file mode 100644 index 000000000..55270552c --- /dev/null +++ b/internal/test-utils/src/describeCompat.ts @@ -0,0 +1,181 @@ +/*! + * Copyright (c) Microsoft Corporation and contributors. All rights reserved. + * Licensed under the MIT License. + */ + +import { createChildLogger } from "@fluidframework/telemetry-utils"; +import { + getUnexpectedLogErrorException, + ITestObjectProvider, +} from "@fluidframework/test-utils"; +import { + CompatApis, + getVersionedTestObjectProviderFromApis, +} from "./compatUtils"; +import { ContainerRuntimeApi, DataRuntimeApi, LoaderApi } from "./testApi"; +import { LocalDriverApi } from "./localDriverApi"; + +/* + * Mocha Utils for test to generate the compat variants. + */ +function createCompatSuite( + tests: ( + this: Mocha.Suite, + provider: (options?: ITestObjectProviderOptions) => ITestObjectProvider, + apis: CompatApis + ) => void +): (this: Mocha.Suite) => void { + return function (this: Mocha.Suite) { + describe(`Fluid Test: ${this.title}`, () => { + let provider: ITestObjectProvider; + let resetAfterEach: boolean; + const apis: CompatApis = getVersionedApis(); + + before(async function () { + try { + provider = + await getVersionedTestObjectProviderFromApis(apis); + } catch (error) { + const logger = createChildLogger({ + logger: getTestLogger?.(), + namespace: "DescribeCompatSetup", + }); + logger.sendErrorEvent( + { + eventName: "TestObjectProviderLoadFailed", + driverType: "local", + }, + error + ); + throw error; + } + + Object.defineProperty(this, "__fluidTestProvider", { + get: () => provider, + }); + }); + + tests.bind(this)((options?: ITestObjectProviderOptions) => { + resetAfterEach = options?.resetAfterEach ?? true; + if (options?.syncSummarizer === true) { + provider.resetLoaderContainerTracker( + true /* syncSummarizerClients */ + ); + } + return provider; + }, apis); + + afterEach(function (this: Mocha.Context, done: Mocha.Done) { + const logErrors = getUnexpectedLogErrorException( + provider.logger + ); + // if the test failed for another reason + // then we don't need to check errors + // and fail the after each as well + if (this.currentTest?.state === "passed") { + done(logErrors); + } else { + done(); + } + if (resetAfterEach) { + provider.reset(); + } + }); + }); + }; +} + +/** + * Get versioned APIs for the given config. + */ +function getVersionedApis(): CompatApis { + return { + containerRuntime: ContainerRuntimeApi, + dataRuntime: DataRuntimeApi, + dds: DataRuntimeApi.dds, + driver: LocalDriverApi, + loader: LoaderApi, + }; +} + +/** + * @internal + */ +export interface ITestObjectProviderOptions { + /** If true, resets all state after each test completes. */ + resetAfterEach?: boolean; + /** If true, synchronizes summarizer client as well when ensureSynchronized() is called. */ + syncSummarizer?: boolean; +} + +/** + * @internal + */ +export type DescribeCompatSuite = ( + name: string, + tests: ( + this: Mocha.Suite, + provider: (options?: ITestObjectProviderOptions) => ITestObjectProvider, + apis: CompatApis + ) => void +) => Mocha.Suite | void; + +/** + * @internal + */ +export type DescribeCompat = DescribeCompatSuite & { + /** + * Like Mocha's `describe.skip`, but for compat tests. + */ + skip: DescribeCompatSuite; + + /** + * Like Mocha's `describe.only`, but for compat tests. + */ + only: DescribeCompatSuite; + + /** + * Run the test suite ignoring the compatibility matrix. In other words, all Fluid layers will + * reference the current code version. + * + * This is meant as a debug utility for e2e tests: do not check in tests that use it as they won't have any + * compat coverage (attempting to do so will fail the PR gate anyway). + */ + noCompat: DescribeCompatSuite; +}; + +function createCompatDescribe(): DescribeCompat { + const createCompatSuiteWithDefault = ( + tests: ( + this: Mocha.Suite, + provider: () => ITestObjectProvider, + apis: CompatApis + ) => void + ) => { + return createCompatSuite(tests); + }; + const d: DescribeCompat = (name: string, tests) => + describe(name, createCompatSuiteWithDefault(tests)); + d.skip = (name, tests) => + describe.skip(name, createCompatSuiteWithDefault(tests)); + + d.only = (name, tests) => + describe.only(name, createCompatSuiteWithDefault(tests)); + + d.noCompat = (name, tests) => + describe(name, createCompatSuiteWithDefault(tests)); + + return d; +} + +/** + * `describeCompat` expects 3 arguments (name: string, compatVersion: string, tests). + * There are three compatVersion options to generate different combinations, depending of the need of the tests: + * `FullCompat`: generate test variants with compat combinations that varies the version for all layers. + * `LoaderCompat`: generate test variants with compat combinations that only varies the loader version. + * Specific version (String) : specify a minimum compat version (e.g. "2.0.0-rc.1.0.0") which will be the minimum version a + * test suite will test against. This should be equal to the value of pkgVersion at the time you're writing the new test suite. + * + * @internal + */ +export const describeCompat: DescribeCompat = createCompatDescribe(); diff --git a/internal/test-utils/src/index.ts b/internal/test-utils/src/index.ts new file mode 100644 index 000000000..b9bec5840 --- /dev/null +++ b/internal/test-utils/src/index.ts @@ -0,0 +1,6 @@ +/*! + * Copyright (c) Microsoft Corporation and contributors. All rights reserved. + * Licensed under the MIT License. + */ + +export { describeCompat } from "./describeCompat"; diff --git a/internal/test-utils/src/localDriverApi.ts b/internal/test-utils/src/localDriverApi.ts new file mode 100644 index 000000000..85b82793d --- /dev/null +++ b/internal/test-utils/src/localDriverApi.ts @@ -0,0 +1,26 @@ +/*! + * Copyright (c) Microsoft Corporation and contributors. All rights reserved. + * Licensed under the MIT License. + */ + +import { + LocalDocumentServiceFactory, + LocalResolver, + createLocalResolverCreateNewRequest, +} from "@fluidframework/local-driver"; +import { LocalDeltaConnectionServer } from "@fluidframework/server-local-server"; + +/** + * @internal + */ +export const LocalDriverApi = { + LocalDocumentServiceFactory, + LocalDeltaConnectionServer, + LocalResolver, + createLocalResolverCreateNewRequest, +}; + +/** + * @internal + */ +export type LocalDriverApiType = typeof LocalDriverApi; diff --git a/internal/test-utils/src/localServerTestDriver.ts b/internal/test-utils/src/localServerTestDriver.ts new file mode 100644 index 000000000..7b4829ef2 --- /dev/null +++ b/internal/test-utils/src/localServerTestDriver.ts @@ -0,0 +1,47 @@ +/*! + * Copyright (c) Microsoft Corporation and contributors. All rights reserved. + * Licensed under the MIT License. + */ +import { IRequest } from "@fluidframework/core-interfaces"; +import { + IDocumentServiceFactory, + IUrlResolver, +} from "@fluidframework/driver-definitions"; +import { + ILocalDeltaConnectionServer, + LocalDeltaConnectionServer, +} from "@fluidframework/server-local-server"; +import { ITestDriver } from "@fluidframework/test-driver-definitions"; +import { LocalDriverApiType, LocalDriverApi } from "./localDriverApi.js"; + +/** + * @internal + */ +export class LocalServerTestDriver implements ITestDriver { + private readonly _server = LocalDeltaConnectionServer.create(); + public readonly endpointName = "local"; + public readonly type = "local"; + public readonly version = ""; + + public get server(): ILocalDeltaConnectionServer { + return this._server; + } + + constructor(private readonly api: LocalDriverApiType = LocalDriverApi) { + this._server = api.LocalDeltaConnectionServer.create(); + } + + createDocumentServiceFactory(): IDocumentServiceFactory { + return new this.api.LocalDocumentServiceFactory(this._server); + } + createUrlResolver(): IUrlResolver { + return new this.api.LocalResolver(); + } + createCreateNewRequest(testId: string): IRequest { + return this.api.createLocalResolverCreateNewRequest(testId); + } + + async createContainerUrl(testId: string): Promise { + return `http://localhost/${testId}`; + } +} diff --git a/internal/test-utils/src/testApi.ts b/internal/test-utils/src/testApi.ts new file mode 100644 index 000000000..1a32d7cf1 --- /dev/null +++ b/internal/test-utils/src/testApi.ts @@ -0,0 +1,95 @@ +/*! + * Copyright (c) Microsoft Corporation and contributors. All rights reserved. + * Licensed under the MIT License. + */ + +// Loader API +import { Loader } from "@fluidframework/container-loader"; + +// ContainerRuntime API +import { ContainerRuntime } from "@fluidframework/container-runtime"; + +// Data Runtime API +import * as agentScheduler from "@fluidframework/agent-scheduler"; +import * as cell from "@fluidframework/cell"; +import { SharedCell } from "@fluidframework/cell"; +import * as counter from "@fluidframework/counter"; +import { SharedCounter } from "@fluidframework/counter"; +import * as map from "@fluidframework/map"; +import { SharedDirectory, SharedMap } from "@fluidframework/map"; +import * as matrix from "@fluidframework/matrix"; +import { SharedMatrix } from "@fluidframework/matrix"; +import * as orderedCollection from "@fluidframework/ordered-collection"; +import { ConsensusQueue } from "@fluidframework/ordered-collection"; +import * as registerCollection from "@fluidframework/register-collection"; +import { ConsensusRegisterCollection } from "@fluidframework/register-collection"; +import * as sequence from "@fluidframework/sequence"; +import { SharedString } from "@fluidframework/sequence"; +import { TestFluidObjectFactory } from "@fluidframework/test-utils"; + +// ContainerRuntime and Data Runtime API +import { + ContainerRuntimeFactoryWithDefaultDataStore, + DataObject, + DataObjectFactory, +} from "@fluidframework/aqueduct"; +import * as sequenceDeprecated from "@fluid-experimental/sequence-deprecated"; + +// #region Current versions of the APIs. + +/** + * @internal + */ +export const LoaderApi = { + version: "", + Loader, +}; + +/** + * @internal + */ +export const ContainerRuntimeApi = { + version: "", + ContainerRuntime, + ContainerRuntimeFactoryWithDefaultDataStore, +}; + +/** + * @internal + */ +export const DataRuntimeApi = { + version: "", + DataObject, + DataObjectFactory, + TestFluidObjectFactory, + dds: { + SharedCell, + SharedCounter, + SharedDirectory, + SharedMap, + SharedMatrix, + ConsensusQueue, + ConsensusRegisterCollection, + SharedString, + }, + /** + * Contains all APIs from imported DDS packages. + * Keep in mind that regardless of the DataRuntime version, + * the APIs will be typechecked as if they were from the latest version. + * + * @remarks - Using these APIs in an e2e test puts additional burden on the test author and anyone making + * changes to those APIs in the future, since this will necessitate back-compat logic in the tests. + * Using non-stable APIs in e2e tests for that reason is discouraged. + */ + packages: { + cell, + counter, + map, + matrix, + orderedCollection, + registerCollection, + sequence, + sequenceDeprecated, + agentScheduler, + }, +}; diff --git a/internal/test-utils/tsconfig.json b/internal/test-utils/tsconfig.json new file mode 100644 index 000000000..dac5d720a --- /dev/null +++ b/internal/test-utils/tsconfig.json @@ -0,0 +1,75 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "lib": [ + "es2020", + "DOM" + ] /* Specify library files to be included in the compilation. */, + "allowJs": false /* Allow javascript files to be compiled. */, + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./bin" /* Redirect output structure to the directory. */, + // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "exclude": ["build", "dist", "node_modules"], + "include": ["test/**/*.ts"], + "files": ["src/index.ts"] +} diff --git a/internal/test-utils/tsconfig.tsbuildinfo b/internal/test-utils/tsconfig.tsbuildinfo new file mode 100644 index 000000000..172956bba --- /dev/null +++ b/internal/test-utils/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"program":{"fileNames":["../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es5.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2015.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2016.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2017.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2018.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2019.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2020.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.dom.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.decorators.d.ts","../../../../.nvm/versions/node/v18.18.1/lib/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/agentkeepalive/index.d.ts","../../node_modules/@fluidframework/core-interfaces/dist/disposable.d.ts","../../node_modules/@fluidframework/core-interfaces/dist/error.d.ts","../../node_modules/@fluidframework/core-interfaces/dist/events.d.ts","../../node_modules/@fluidframework/core-interfaces/dist/fluidrouter.d.ts","../../node_modules/@fluidframework/core-interfaces/dist/provider.d.ts","../../node_modules/@fluidframework/core-interfaces/dist/handles.d.ts","../../node_modules/@fluidframework/core-interfaces/dist/fluidloadable.d.ts","../../node_modules/@fluidframework/core-interfaces/dist/fluidpackage.d.ts","../../node_modules/@fluidframework/core-interfaces/dist/logger.d.ts","../../node_modules/@fluidframework/core-interfaces/dist/config.d.ts","../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts","../../node_modules/@fluidframework/driver-definitions/dist/urlresolver.d.ts","../../node_modules/@fluidframework/driver-definitions/dist/drivererror.d.ts","../../node_modules/@fluidframework/protocol-definitions/dist/users.d.ts","../../node_modules/@fluidframework/protocol-definitions/dist/clients.d.ts","../../node_modules/@fluidframework/protocol-definitions/dist/config.d.ts","../../node_modules/@fluidframework/protocol-definitions/dist/consensus.d.ts","../../node_modules/@fluidframework/protocol-definitions/dist/date.d.ts","../../node_modules/@fluidframework/protocol-definitions/dist/protocol.d.ts","../../node_modules/@fluidframework/protocol-definitions/dist/scopes.d.ts","../../node_modules/@fluidframework/protocol-definitions/dist/tokens.d.ts","../../node_modules/@fluidframework/protocol-definitions/dist/sockets.d.ts","../../node_modules/@fluidframework/protocol-definitions/dist/storage.d.ts","../../node_modules/@fluidframework/protocol-definitions/dist/summary.d.ts","../../node_modules/@fluidframework/protocol-definitions/dist/index.d.ts","../../node_modules/@fluidframework/driver-definitions/dist/storage.d.ts","../../node_modules/@fluidframework/driver-definitions/dist/index.d.ts","../../node_modules/@fluidframework/test-driver-definitions/dist/interfaces.d.ts","../../node_modules/@fluidframework/test-driver-definitions/dist/index.d.ts","../../node_modules/@fluidframework/core-utils/dist/assert.d.ts","../../node_modules/@fluidframework/core-utils/dist/compare.d.ts","../../node_modules/@fluidframework/core-utils/dist/delay.d.ts","../../node_modules/@fluidframework/core-utils/dist/heap.d.ts","../../node_modules/@fluidframework/core-utils/dist/lazy.d.ts","../../node_modules/@fluidframework/core-utils/dist/promisecache.d.ts","../../node_modules/@fluidframework/core-utils/dist/promises.d.ts","../../node_modules/@fluidframework/core-utils/dist/timer.d.ts","../../node_modules/@fluidframework/core-utils/dist/unreachable.d.ts","../../node_modules/@fluidframework/core-utils/dist/index.d.ts","./node_modules/@fluidframework/protocol-definitions/dist/users.d.ts","./node_modules/@fluidframework/protocol-definitions/dist/clients.d.ts","./node_modules/@fluidframework/protocol-definitions/dist/config.d.ts","./node_modules/@fluidframework/protocol-definitions/dist/consensus.d.ts","./node_modules/@fluidframework/protocol-definitions/dist/date.d.ts","./node_modules/@fluidframework/protocol-definitions/dist/protocol.d.ts","./node_modules/@fluidframework/protocol-definitions/dist/scopes.d.ts","./node_modules/@fluidframework/protocol-definitions/dist/tokens.d.ts","./node_modules/@fluidframework/protocol-definitions/dist/sockets.d.ts","./node_modules/@fluidframework/protocol-definitions/dist/storage.d.ts","./node_modules/@fluidframework/protocol-definitions/dist/summary.d.ts","./node_modules/@fluidframework/protocol-definitions/dist/index.d.ts","./node_modules/@fluidframework/server-services-core/dist/cache.d.ts","./node_modules/@fluidframework/server-services-core/dist/celanames.d.ts","./node_modules/@fluidframework/server-services-core/dist/clientmanager.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/events/index.d.ts","../../node_modules/buffer/index.d.ts","../../node_modules/undici-types/header.d.ts","../../node_modules/undici-types/readable.d.ts","../../node_modules/undici-types/file.d.ts","../../node_modules/undici-types/fetch.d.ts","../../node_modules/undici-types/formdata.d.ts","../../node_modules/undici-types/connector.d.ts","../../node_modules/undici-types/client.d.ts","../../node_modules/undici-types/errors.d.ts","../../node_modules/undici-types/dispatcher.d.ts","../../node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/undici-types/global-origin.d.ts","../../node_modules/undici-types/pool-stats.d.ts","../../node_modules/undici-types/pool.d.ts","../../node_modules/undici-types/handlers.d.ts","../../node_modules/undici-types/balanced-pool.d.ts","../../node_modules/undici-types/agent.d.ts","../../node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/undici-types/mock-agent.d.ts","../../node_modules/undici-types/mock-client.d.ts","../../node_modules/undici-types/mock-pool.d.ts","../../node_modules/undici-types/mock-errors.d.ts","../../node_modules/undici-types/proxy-agent.d.ts","../../node_modules/undici-types/api.d.ts","../../node_modules/undici-types/cookies.d.ts","../../node_modules/undici-types/patch.d.ts","../../node_modules/undici-types/filereader.d.ts","../../node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/undici-types/websocket.d.ts","../../node_modules/undici-types/content-type.d.ts","../../node_modules/undici-types/cache.d.ts","../../node_modules/undici-types/interceptors.d.ts","../../node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","../../node_modules/@types/nconf/index.d.ts","./node_modules/@fluidframework/server-services-core/dist/messages.d.ts","../../node_modules/@fluidframework/common-utils/dist/assert.d.ts","../../node_modules/@fluidframework/common-utils/dist/base64encoding.d.ts","../../node_modules/@fluidframework/common-utils/dist/buffershared.d.ts","../../node_modules/@fluidframework/common-utils/dist/delay.d.ts","../../node_modules/@fluidframework/common-definitions/dist/disposable.d.ts","../../node_modules/@fluidframework/common-definitions/dist/events.d.ts","../../node_modules/@fluidframework/common-definitions/dist/logger.d.ts","../../node_modules/@fluidframework/common-definitions/dist/index.d.ts","../../node_modules/@fluidframework/common-utils/dist/disposal.d.ts","../../node_modules/@fluidframework/common-utils/dist/typedeventemitter.d.ts","../../node_modules/@fluidframework/common-utils/dist/eventforwarder.d.ts","../../node_modules/@fluidframework/common-utils/dist/heap.d.ts","../../node_modules/@fluidframework/common-utils/dist/buffernode.d.ts","../../node_modules/@fluidframework/common-utils/dist/hashfilenode.d.ts","../../node_modules/@fluidframework/common-utils/dist/performanceisomorphic.d.ts","../../node_modules/@fluidframework/common-utils/dist/indexnode.d.ts","../../node_modules/@fluidframework/common-utils/dist/lazy.d.ts","../../node_modules/@fluidframework/common-utils/dist/logger.d.ts","../../node_modules/@fluidframework/common-utils/dist/promisecache.d.ts","../../node_modules/@fluidframework/common-utils/dist/promises.d.ts","../../node_modules/@fluidframework/common-utils/dist/rangetracker.d.ts","../../node_modules/@fluidframework/common-utils/dist/ratelimiter.d.ts","../../node_modules/@fluidframework/common-utils/dist/safeparser.d.ts","../../node_modules/@fluidframework/common-utils/dist/timer.d.ts","../../node_modules/@fluidframework/common-utils/dist/trace.d.ts","../../node_modules/@fluidframework/common-utils/dist/unreachable.d.ts","../../node_modules/@fluidframework/common-utils/dist/index.d.ts","./node_modules/@fluidframework/server-services-core/dist/queue.d.ts","./node_modules/@fluidframework/server-services-core/dist/lambdas.d.ts","./node_modules/@fluidframework/server-services-core/dist/combinedcontext.d.ts","./node_modules/@fluidframework/server-services-core/dist/combinedlambda.d.ts","./node_modules/@fluidframework/server-services-core/dist/combinedproducer.d.ts","./node_modules/@fluidframework/server-services-core/dist/configuration.d.ts","./node_modules/@fluidframework/gitresources/dist/resources.d.ts","./node_modules/@fluidframework/gitresources/dist/services.d.ts","./node_modules/@fluidframework/gitresources/dist/index.d.ts","./node_modules/@fluidframework/server-services-client/dist/auth.d.ts","./node_modules/@fluidframework/server-services-client/dist/array.d.ts","./node_modules/@fluidframework/server-services-client/dist/constants.d.ts","./node_modules/@fluidframework/server-services-client/dist/error.d.ts","./node_modules/@fluidframework/server-services-client/dist/generatenames.d.ts","./node_modules/@fluidframework/server-services-client/dist/storagecontracts.d.ts","./node_modules/@fluidframework/server-services-client/dist/storage.d.ts","./node_modules/@fluidframework/server-services-client/dist/gitmanager.d.ts","./node_modules/@fluidframework/server-services-client/dist/heap.d.ts","../../node_modules/axios/index.d.ts","./node_modules/@fluidframework/server-services-client/dist/restwrapper.d.ts","./node_modules/@fluidframework/server-services-client/dist/historian.d.ts","./node_modules/@fluidframework/server-services-client/dist/interfaces.d.ts","./node_modules/@fluidframework/server-services-client/dist/promisetimeout.d.ts","./node_modules/@fluidframework/server-services-client/dist/restlessclient.d.ts","./node_modules/@fluidframework/server-services-client/dist/rollinghash.d.ts","./node_modules/@fluidframework/server-services-client/dist/scopes.d.ts","./node_modules/@fluidframework/protocol-base/dist/githelper.d.ts","./node_modules/@fluidframework/protocol-base/dist/quorum.d.ts","./node_modules/@fluidframework/protocol-base/dist/protocol.d.ts","./node_modules/@fluidframework/protocol-base/dist/index.d.ts","./node_modules/@fluidframework/server-services-client/dist/scribehelper.d.ts","./node_modules/@fluidframework/server-services-client/dist/storageutils.d.ts","./node_modules/@fluidframework/server-services-client/dist/summarytreeuploadmanager.d.ts","./node_modules/@fluidframework/server-services-client/dist/timeoutcontext.d.ts","./node_modules/@fluidframework/server-services-client/dist/utils.d.ts","./node_modules/@fluidframework/server-services-client/dist/wholesummaryuploadmanager.d.ts","./node_modules/@fluidframework/server-services-client/dist/index.d.ts","./node_modules/@fluidframework/server-services-core/dist/document.d.ts","./node_modules/@fluidframework/server-services-core/dist/http.d.ts","./node_modules/@fluidframework/server-services-core/dist/orderer.d.ts","./node_modules/@fluidframework/server-services-core/dist/database.d.ts","./node_modules/@fluidframework/server-services-core/dist/delta.d.ts","./node_modules/@fluidframework/server-services-core/dist/documentmanager.d.ts","./node_modules/@fluidframework/server-services-core/dist/taskmessages.d.ts","./node_modules/@fluidframework/server-services-core/dist/emptytaskmessagesender.d.ts","./node_modules/@fluidframework/server-services-core/dist/metricclient.d.ts","./node_modules/@fluidframework/server-services-core/dist/mongo.d.ts","./node_modules/@fluidframework/server-services-core/dist/mongodatabasemanager.d.ts","./node_modules/@fluidframework/server-services-core/dist/mongodocumentrepository.d.ts","./node_modules/@fluidframework/server-services-core/dist/mongocheckpointrepository.d.ts","./node_modules/@fluidframework/server-services-core/dist/checkpointservice.d.ts","./node_modules/@fluidframework/server-services-core/dist/pendingboxcar.d.ts","./node_modules/@fluidframework/server-services-core/dist/publisher.d.ts","./node_modules/@fluidframework/server-services-core/dist/runner.d.ts","./node_modules/@fluidframework/server-services-core/dist/runwithretry.d.ts","./node_modules/@fluidframework/server-services-core/dist/tenant.d.ts","./node_modules/@fluidframework/server-services-core/dist/secretmanager.d.ts","./node_modules/@fluidframework/server-services-core/dist/storagenameallocator.d.ts","./node_modules/@fluidframework/server-services-core/dist/storagenameretriever.d.ts","./node_modules/@fluidframework/server-services-core/dist/throttler.d.ts","./node_modules/@fluidframework/server-services-core/dist/token.d.ts","./node_modules/@fluidframework/server-services-core/dist/usagedata.d.ts","./node_modules/@fluidframework/server-services-core/dist/zookeeper.d.ts","./node_modules/@fluidframework/server-services-core/dist/tokenrevocationmanager.d.ts","./node_modules/@fluidframework/server-services-core/dist/servicemessage.d.ts","./node_modules/@fluidframework/server-services-core/dist/clusterdraining.d.ts","./node_modules/@fluidframework/server-services-core/dist/websockettracker.d.ts","./node_modules/@fluidframework/server-services-core/dist/index.d.ts","../../node_modules/@types/ms/index.d.ts","../../node_modules/@types/debug/index.d.ts","./node_modules/@fluidframework/server-test-utils/dist/logger.d.ts","./node_modules/@fluidframework/server-test-utils/dist/messagefactory.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testcache.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testdeltamanager.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testnotimplementeddocumentrepository.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testnotimplementedcheckpointrepository.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testnotimplementedcheckpointservice.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testclientmanager.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testcollection.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testcontext.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testdocumentstorage.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testhistorian.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testkafka.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testpublisher.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testtenantmanager.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testthrottleandusagestoragemanager.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testthrottler.d.ts","./node_modules/@fluidframework/server-test-utils/dist/testthrottlerhelper.d.ts","./node_modules/@fluidframework/server-test-utils/dist/index.d.ts","./node_modules/@fluidframework/server-memory-orderer/dist/interfaces.d.ts","./node_modules/@fluidframework/server-memory-orderer/dist/localcontext.d.ts","./node_modules/@fluidframework/server-memory-orderer/dist/localkafka.d.ts","./node_modules/@fluidframework/server-memory-orderer/dist/locallambdacontroller.d.ts","./node_modules/@fluidframework/server-memory-orderer/dist/localnode.d.ts","./node_modules/@fluidframework/server-memory-orderer/dist/localnodefactory.d.ts","./node_modules/@fluidframework/server-memory-orderer/dist/pubsub.d.ts","./node_modules/@fluidframework/server-memory-orderer/dist/localorderer.d.ts","./node_modules/@fluidframework/server-memory-orderer/dist/localordermanager.d.ts","./node_modules/@fluidframework/server-memory-orderer/dist/nodemanager.d.ts","./node_modules/@fluidframework/server-memory-orderer/dist/reservationmanager.d.ts","./node_modules/@fluidframework/server-memory-orderer/dist/index.d.ts","./node_modules/@fluidframework/server-local-server/dist/localwebsocketserver.d.ts","./node_modules/@fluidframework/server-local-server/dist/localdeltaconnectionserver.d.ts","./node_modules/@fluidframework/server-local-server/dist/localorderermanager.d.ts","./node_modules/@fluidframework/server-local-server/dist/index.d.ts","../../node_modules/@fluidframework/server-services-core/dist/cache.d.ts","../../node_modules/@fluidframework/server-services-core/dist/celanames.d.ts","../../node_modules/@fluidframework/server-services-core/dist/clientmanager.d.ts","../../node_modules/@fluidframework/server-services-core/dist/messages.d.ts","../../node_modules/@fluidframework/server-services-core/dist/queue.d.ts","../../node_modules/@fluidframework/server-services-core/dist/lambdas.d.ts","../../node_modules/@fluidframework/server-services-core/dist/combinedcontext.d.ts","../../node_modules/@fluidframework/server-services-core/dist/combinedlambda.d.ts","../../node_modules/@fluidframework/server-services-core/dist/combinedproducer.d.ts","../../node_modules/@fluidframework/server-services-core/dist/configuration.d.ts","../../node_modules/@fluidframework/gitresources/dist/resources.d.ts","../../node_modules/@fluidframework/gitresources/dist/services.d.ts","../../node_modules/@fluidframework/gitresources/dist/index.d.ts","../../node_modules/@fluidframework/server-services-client/dist/auth.d.ts","../../node_modules/@fluidframework/server-services-client/dist/array.d.ts","../../node_modules/@fluidframework/server-services-client/dist/constants.d.ts","../../node_modules/@fluidframework/server-services-client/dist/error.d.ts","../../node_modules/@fluidframework/server-services-client/dist/generatenames.d.ts","../../node_modules/@fluidframework/server-services-client/dist/storagecontracts.d.ts","../../node_modules/@fluidframework/server-services-client/dist/storage.d.ts","../../node_modules/@fluidframework/server-services-client/dist/gitmanager.d.ts","../../node_modules/@fluidframework/server-services-client/dist/restwrapper.d.ts","../../node_modules/@fluidframework/server-services-client/dist/historian.d.ts","../../node_modules/@fluidframework/server-services-client/dist/interfaces.d.ts","../../node_modules/@fluidframework/server-services-client/dist/promisetimeout.d.ts","../../node_modules/@fluidframework/server-services-client/dist/restlessclient.d.ts","../../node_modules/@fluidframework/server-services-client/dist/rollinghash.d.ts","../../node_modules/@fluidframework/server-services-client/dist/scopes.d.ts","../../node_modules/@fluidframework/protocol-base/dist/githelper.d.ts","../../node_modules/@fluidframework/protocol-base/dist/quorum.d.ts","../../node_modules/@fluidframework/protocol-base/dist/protocol.d.ts","../../node_modules/@fluidframework/protocol-base/dist/index.d.ts","../../node_modules/@fluidframework/server-services-client/dist/scribehelper.d.ts","../../node_modules/@fluidframework/server-services-client/dist/storageutils.d.ts","../../node_modules/@fluidframework/server-services-client/dist/summarytreeuploadmanager.d.ts","../../node_modules/@fluidframework/server-services-client/dist/timeoutcontext.d.ts","../../node_modules/@fluidframework/server-services-client/dist/utils.d.ts","../../node_modules/@fluidframework/server-services-client/dist/wholesummaryuploadmanager.d.ts","../../node_modules/@fluidframework/server-services-client/dist/index.d.ts","../../node_modules/@fluidframework/server-services-core/dist/document.d.ts","../../node_modules/@fluidframework/server-services-core/dist/http.d.ts","../../node_modules/@fluidframework/server-services-core/dist/orderer.d.ts","../../node_modules/@fluidframework/server-services-core/dist/database.d.ts","../../node_modules/@fluidframework/server-services-core/dist/delta.d.ts","../../node_modules/@fluidframework/server-services-core/dist/documentmanager.d.ts","../../node_modules/@fluidframework/server-services-core/dist/taskmessages.d.ts","../../node_modules/@fluidframework/server-services-core/dist/emptytaskmessagesender.d.ts","../../node_modules/@fluidframework/server-services-core/dist/metricclient.d.ts","../../node_modules/@fluidframework/server-services-core/dist/mongo.d.ts","../../node_modules/@fluidframework/server-services-core/dist/mongodatabasemanager.d.ts","../../node_modules/@fluidframework/server-services-core/dist/mongodocumentrepository.d.ts","../../node_modules/@fluidframework/server-services-core/dist/mongocheckpointrepository.d.ts","../../node_modules/@fluidframework/server-services-core/dist/checkpointservice.d.ts","../../node_modules/@fluidframework/server-services-core/dist/pendingboxcar.d.ts","../../node_modules/@fluidframework/server-services-core/dist/publisher.d.ts","../../node_modules/@fluidframework/server-services-core/dist/runner.d.ts","../../node_modules/@fluidframework/server-services-core/dist/runwithretry.d.ts","../../node_modules/@fluidframework/server-services-core/dist/tenant.d.ts","../../node_modules/@fluidframework/server-services-core/dist/secretmanager.d.ts","../../node_modules/@fluidframework/server-services-core/dist/storagenameallocator.d.ts","../../node_modules/@fluidframework/server-services-core/dist/storagenameretriever.d.ts","../../node_modules/@fluidframework/server-services-core/dist/throttler.d.ts","../../node_modules/@fluidframework/server-services-core/dist/token.d.ts","../../node_modules/@fluidframework/server-services-core/dist/usagedata.d.ts","../../node_modules/@fluidframework/server-services-core/dist/zookeeper.d.ts","../../node_modules/@fluidframework/server-services-core/dist/tokenrevocationmanager.d.ts","../../node_modules/@fluidframework/server-services-core/dist/servicemessage.d.ts","../../node_modules/@fluidframework/server-services-core/dist/websockettracker.d.ts","../../node_modules/@fluidframework/server-services-core/dist/index.d.ts","../../node_modules/@fluidframework/local-driver/dist/localdeltastorageservice.d.ts","../../node_modules/@fluid-internal/client-utils/dist/buffernode.d.ts","../../node_modules/@fluid-internal/client-utils/dist/hashfilenode.d.ts","../../node_modules/@fluid-internal/client-utils/dist/performanceisomorphic.d.ts","../../node_modules/@fluid-internal/client-utils/dist/base64encoding.d.ts","../../node_modules/@fluid-internal/client-utils/dist/buffershared.d.ts","../../node_modules/@fluid-internal/client-utils/dist/typedeventemitter.d.ts","../../node_modules/@fluid-internal/client-utils/dist/eventforwarder.d.ts","../../node_modules/@fluid-internal/client-utils/dist/trace.d.ts","../../node_modules/@fluid-internal/client-utils/dist/indexnode.d.ts","../../node_modules/@fluidframework/telemetry-utils/dist/telemetrytypes.d.ts","../../node_modules/@fluidframework/telemetry-utils/dist/logger.d.ts","../../node_modules/@fluidframework/telemetry-utils/dist/config.d.ts","../../node_modules/@fluidframework/telemetry-utils/dist/fluiderrorbase.d.ts","../../node_modules/@fluidframework/telemetry-utils/dist/errorlogging.d.ts","../../node_modules/@fluidframework/telemetry-utils/dist/error.d.ts","../../node_modules/@fluidframework/telemetry-utils/dist/eventemitterwitherrorhandling.d.ts","../../node_modules/@fluidframework/telemetry-utils/dist/events.d.ts","../../node_modules/@fluidframework/telemetry-utils/dist/mocklogger.d.ts","../../node_modules/@fluidframework/telemetry-utils/dist/thresholdcounter.d.ts","../../node_modules/@fluidframework/telemetry-utils/dist/sampledtelemetryhelper.d.ts","../../node_modules/@fluidframework/telemetry-utils/dist/utils.d.ts","../../node_modules/@fluidframework/telemetry-utils/dist/index.d.ts","../../node_modules/@socket.io/component-emitter/index.d.ts","../../node_modules/engine.io-parser/build/esm/commons.d.ts","../../node_modules/engine.io-parser/build/esm/encodepacket.d.ts","../../node_modules/engine.io-parser/build/esm/decodepacket.d.ts","../../node_modules/engine.io-parser/build/esm/index.d.ts","../../node_modules/engine.io-client/build/esm/transport.d.ts","../../node_modules/engine.io-client/build/esm/socket.d.ts","../../node_modules/engine.io-client/build/esm/transports/polling.d.ts","../../node_modules/engine.io-client/build/esm/transports/websocket.d.ts","../../node_modules/engine.io-client/build/esm/transports/webtransport.d.ts","../../node_modules/engine.io-client/build/esm/transports/index.d.ts","../../node_modules/engine.io-client/build/esm/util.d.ts","../../node_modules/engine.io-client/build/esm/contrib/parseuri.d.ts","../../node_modules/engine.io-client/build/esm/transports/websocket-constructor.d.ts","../../node_modules/engine.io-client/build/esm/index.d.ts","../../node_modules/socket.io-parser/build/esm/index.d.ts","../../node_modules/socket.io-client/build/esm/socket.d.ts","../../node_modules/socket.io-client/build/esm/manager.d.ts","../../node_modules/socket.io-client/build/esm/index.d.ts","../../node_modules/@fluidframework/driver-base/dist/documentdeltaconnection.d.ts","../../node_modules/@fluidframework/driver-base/dist/driverutils.d.ts","../../node_modules/@fluidframework/driver-base/dist/index.d.ts","../../node_modules/@fluidframework/local-driver/dist/localdocumentdeltaconnection.d.ts","../../node_modules/@fluidframework/routerlicious-driver/dist/tokens.d.ts","../../node_modules/@fluidframework/routerlicious-driver/dist/defaulttokenprovider.d.ts","../../node_modules/@fluidframework/routerlicious-driver/dist/errorutils.d.ts","../../node_modules/@fluidframework/routerlicious-driver/dist/policies.d.ts","../../node_modules/@fluidframework/routerlicious-driver/dist/documentservicefactory.d.ts","../../node_modules/@fluidframework/routerlicious-driver/dist/index.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/logger.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/messagefactory.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testcache.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testdeltamanager.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testnotimplementeddocumentrepository.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testnotimplementedcheckpointrepository.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testnotimplementedcheckpointservice.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testclientmanager.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testcollection.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testcontext.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testdocumentstorage.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testhistorian.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testkafka.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testpublisher.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testtenantmanager.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testthrottleandusagestoragemanager.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testthrottler.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/testthrottlerhelper.d.ts","../../node_modules/@fluidframework/server-test-utils/dist/index.d.ts","../../node_modules/@fluidframework/server-memory-orderer/dist/interfaces.d.ts","../../node_modules/@fluidframework/server-memory-orderer/dist/localcontext.d.ts","../../node_modules/@fluidframework/server-memory-orderer/dist/localkafka.d.ts","../../node_modules/@fluidframework/server-memory-orderer/dist/locallambdacontroller.d.ts","../../node_modules/@fluidframework/server-memory-orderer/dist/localnode.d.ts","../../node_modules/@fluidframework/server-memory-orderer/dist/localnodefactory.d.ts","../../node_modules/@fluidframework/server-memory-orderer/dist/pubsub.d.ts","../../node_modules/@fluidframework/server-memory-orderer/dist/localorderer.d.ts","../../node_modules/@fluidframework/server-memory-orderer/dist/localordermanager.d.ts","../../node_modules/@fluidframework/server-memory-orderer/dist/nodemanager.d.ts","../../node_modules/@fluidframework/server-memory-orderer/dist/reservationmanager.d.ts","../../node_modules/@fluidframework/server-memory-orderer/dist/index.d.ts","../../node_modules/@fluidframework/server-local-server/dist/localwebsocketserver.d.ts","../../node_modules/@fluidframework/server-local-server/dist/localdeltaconnectionserver.d.ts","../../node_modules/@fluidframework/server-local-server/dist/localorderermanager.d.ts","../../node_modules/@fluidframework/server-local-server/dist/index.d.ts","../../node_modules/@fluidframework/local-driver/dist/localdocumentservice.d.ts","../../node_modules/@fluidframework/local-driver/dist/localdocumentservicefactory.d.ts","../../node_modules/@fluidframework/local-driver/dist/localdocumentstorageservice.d.ts","../../node_modules/@fluidframework/local-driver/dist/localresolver.d.ts","../../node_modules/@fluidframework/local-driver/dist/localsessionstoragedb.d.ts","../../node_modules/@fluidframework/local-driver/dist/index.d.ts","./src/packageversion.ts","./src/localdriverapi.ts","./src/localservertestdriver.ts","../../node_modules/@fluidframework/tinylicious-driver/dist/insecuretinylicioustokenprovider.d.ts","../../node_modules/@fluidframework/tinylicious-driver/dist/insecuretinyliciousurlresolver.d.ts","../../node_modules/@fluidframework/tinylicious-driver/dist/index.d.ts","./src/routerliciousdriverapi.ts","./src/tinylicioustestdriver.ts","../../node_modules/@fluidframework/test-runtime-utils/dist/insecureusers.d.ts","../../node_modules/@fluidframework/test-runtime-utils/dist/insecuretokenprovider.d.ts","../../node_modules/@fluidframework/container-definitions/dist/audience.d.ts","../../node_modules/@fluidframework/container-definitions/dist/fluidpackage.d.ts","../../node_modules/@fluidframework/container-definitions/dist/browserpackage.d.ts","../../node_modules/@fluidframework/container-definitions/dist/deltas.d.ts","../../node_modules/@fluidframework/container-definitions/dist/error.d.ts","../../node_modules/@fluidframework/container-definitions/dist/runtime.d.ts","../../node_modules/@fluidframework/container-definitions/dist/fluidmodule.d.ts","../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts","../../node_modules/@fluidframework/container-definitions/dist/index.d.ts","../../node_modules/@fluidframework/runtime-definitions/dist/attribution.d.ts","../../node_modules/@fluidframework/id-compressor/dist/types/identifiers.d.ts","../../node_modules/@fluidframework/id-compressor/dist/types/persisted-types/0.0.1.d.ts","../../node_modules/@fluidframework/id-compressor/dist/types/persisted-types/index.d.ts","../../node_modules/@fluidframework/id-compressor/dist/types/idcompressor.d.ts","../../node_modules/@fluidframework/id-compressor/dist/types/index.d.ts","../../node_modules/@fluidframework/id-compressor/dist/idcompressor.d.ts","../../node_modules/@fluidframework/id-compressor/dist/identifiers.d.ts","../../node_modules/@fluidframework/id-compressor/dist/utilities.d.ts","../../node_modules/@fluidframework/id-compressor/dist/index.d.ts","../../node_modules/@fluidframework/runtime-definitions/dist/datastorefactory.d.ts","../../node_modules/@fluidframework/runtime-definitions/dist/datastoreregistry.d.ts","../../node_modules/@fluidframework/runtime-definitions/dist/garbagecollection.d.ts","../../node_modules/@fluidframework/runtime-definitions/dist/protocol.d.ts","../../node_modules/@fluidframework/runtime-definitions/dist/summary.d.ts","../../node_modules/@fluidframework/runtime-definitions/dist/datastorecontext.d.ts","../../node_modules/@fluidframework/runtime-definitions/dist/index.d.ts","../../node_modules/@fluidframework/test-runtime-utils/dist/mocksdatastorecontext.d.ts","../../node_modules/@fluidframework/test-runtime-utils/dist/mockdeltas.d.ts","../../node_modules/@fluidframework/test-runtime-utils/dist/mockhandle.d.ts","../../node_modules/@fluidframework/datastore-definitions/dist/storage.d.ts","../../node_modules/@fluidframework/datastore-definitions/dist/datastoreruntime.d.ts","../../node_modules/@fluidframework/datastore-definitions/dist/channel.d.ts","../../node_modules/@fluidframework/datastore-definitions/dist/jsonable.d.ts","../../node_modules/@fluidframework/datastore-definitions/dist/serializable.d.ts","../../node_modules/@fluidframework/datastore-definitions/dist/index.d.ts","../../node_modules/@fluidframework/test-runtime-utils/dist/mocks.d.ts","../../node_modules/@fluidframework/test-runtime-utils/dist/mocksforreconnection.d.ts","../../node_modules/@fluidframework/test-runtime-utils/dist/mockstorage.d.ts","../../node_modules/@fluidframework/test-runtime-utils/dist/validateassertionerror.d.ts","../../node_modules/@fluidframework/test-runtime-utils/dist/index.d.ts","../../node_modules/@fluidframework/driver-utils/dist/buildsnapshottree.d.ts","../../node_modules/@fluidframework/driver-utils/dist/blob.d.ts","../../node_modules/@fluidframework/driver-utils/dist/documentstorageserviceproxy.d.ts","../../node_modules/@fluidframework/driver-utils/dist/error.d.ts","../../node_modules/@fluidframework/driver-utils/dist/insecureurlresolver.d.ts","../../node_modules/@fluidframework/driver-utils/dist/messagerecognition.d.ts","../../node_modules/@fluidframework/driver-utils/dist/network.d.ts","../../node_modules/@fluidframework/driver-utils/dist/networkutils.d.ts","../../node_modules/@fluidframework/driver-utils/dist/parallelrequests.d.ts","../../node_modules/@fluidframework/driver-utils/dist/prefetchdocumentstorageservice.d.ts","../../node_modules/@fluidframework/driver-utils/dist/ratelimiter.d.ts","../../node_modules/@fluidframework/driver-utils/dist/readandparse.d.ts","../../node_modules/@fluidframework/driver-utils/dist/runwithretry.d.ts","../../node_modules/@fluidframework/driver-utils/dist/summaryforcreatenew.d.ts","../../node_modules/@fluidframework/driver-utils/dist/treeconversions.d.ts","../../node_modules/@fluidframework/driver-utils/dist/adapters/compression/compressiontypes.d.ts","../../node_modules/@fluidframework/driver-utils/dist/documentservicefactoryproxy.d.ts","../../node_modules/@fluidframework/driver-utils/dist/adapters/compression/documentservicefactorycompressionadapter.d.ts","../../node_modules/@fluidframework/driver-utils/dist/adapters/compression/summaryblob/documentstorageservicesummaryblobcompressionadapter.d.ts","../../node_modules/@fluidframework/driver-utils/dist/adapters/compression/summaryblob/index.d.ts","../../node_modules/@fluidframework/driver-utils/dist/adapters/compression/index.d.ts","../../node_modules/@fluidframework/driver-utils/dist/adapters/predefinedadapters.d.ts","../../node_modules/@fluidframework/driver-utils/dist/adapters/index.d.ts","../../node_modules/@fluidframework/driver-utils/dist/index.d.ts","./node_modules/@types/uuid/index.d.ts","./src/routerlicioustestdriver.ts","./src/factory.ts","./src/index.ts","../../node_modules/axios/index.d.cts","../../node_modules/@fluidframework/local-driver/lib/index.d.mts","../../node_modules/@fluidframework/core-interfaces/lib/index.d.mts","../../node_modules/@fluidframework/driver-definitions/lib/urlresolver.d.mts","../../node_modules/@fluidframework/driver-definitions/lib/index.d.mts","../../node_modules/@fluidframework/routerlicious-driver/lib/index.d.mts","../../node_modules/@fluidframework/tinylicious-driver/lib/index.d.mts","../../node_modules/socket.io-parser/build/esm-debug/index.d.ts"],"fileInfos":[{"version":"e216bfbf08a9f4836a0e695a19f55ebdd8310e4be1d1238c4cac27abf5e98404","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"1f0539108fad59d8e9d282900dc9bd4c99cb49eccfbe11df3edb2f53854068a0","2ea167b8505527403109dcdf0ce258986ddd684961f7eb5cd36e25f7ba339730","323e38eb371a86821896fb50ed926b0d59761d5a2e407a1b9ed62bba11a9872d","252ca73a7c260e4abb14585480df2308df333f0774c7203b364af4e10a4876f8","d1d878a1661002034e2dc6a7d40baa2e3d1aec74643c341f7469d604cc245192","a64edb16eacf69e9473e5b829d850ac4b526daf673e92a84628c8c492fe06d68","3c7959a597ebc1d6aecceae9f9625715fd1cb3eff0032cae7b49d6625c7dde1b","b83ea41a48ae78ade8ced9fa3fcbd5ffccf10ec7d417f3de1c73904403c43ade","c8c5ba100c8578755579f8fd6bc9c8f7753376a43d23f656a77d3c34cb6af92a","3c87e4cf3612aa6e87dc0b3dc7603827c216a212a7af332813dc6eee19024bff","06c8622d8f31b530058177e1ba6e97e3896c369be4b5f0d19e870512787e9e78","b68100223bfef208123ea4569c6c20eb6e11c07e3f88799f03f559fa5f4f4922","dbe4bad5c55676931c808dcbbfafcf614a89e55d7d5068aebc928e7ed17eafeb","cfd5b795605ba420d60d09cedbe5d233b9bb50901759ea843e73acbf0014b666","f338a331fc98b7a1f203f27b72934b22157bab6e23102f005b09786dcf383668","7336bc25cc72933b720c3bef0cb3087991aa27844c83376fc3fe36a824d7a8ed","5e661c9454b04066cceed04d87fbde484332b44405ad5d3d5e631e1bcb283b1a","1070df8aa24c5dd2823080a2882e5d09fb86fcbfc0104ccba13326121233de3f","2f1b2648a9ddeb7af4f497573aa751c99adf6ab11f40b554527f0f65fa5e39a8","20c4a80fbb0a5663564211f2148b3d8505fbb8ac0528dc7dd03c0357e6e18e48","5aa6397b22f8a04f8e5d97b2c08bb7038ca611363da1fe8e1174aa7114022248","c12cfe54ae9534e67fcef5c56efa1af3433b3dab19277866219e150a53db7aa6","63c4a0b4eb97c1f17198ffac8e868c2ade94bed702a93f364fb0de5459244a37","287492771a2f5f70e0618f932efa9895d5040901134d072c88fe79a3b46f1ca1","7f447c501d8bb805692f04ca839bd1cc4ba42589f28f6909db24490ecea872b8","e197b79669e5e7a62be85bb55a2c4b0a3935c9c21031f16b4801f9c1424fc7de","0f1e952e252c91440b1eb38287822d622dffd586addf0854becca9edef03ae73","a74b8f008dee8c60869db2a25bde16e8e75d38778eaa5edd5a879b88f1b0b2e2","451a375e557f2b1560aed82bc2882168b0af69e4b7fcad87025584e51c993564",{"version":"dcda3b134a932a5ecfbdac17a3cec3fe652ebcb719b0fedcc618916c4b081701","affectsGlobalScope":true},"3738606f7a546c0fdd74cfe1280a1efc502c80d5778a5527bcb8918fbc465ee5","df504094b5f46b960d326e01cdc2683b83cde9b1f3af52c22196360fd8191aef","7a2e7c19fbfd3ca11cd3fb90edf4fc3adf379bd31da785bef41f34a5c97d18c0","f4f9db86be98abda0930205133aa386c24ca11f277cfc0d0f1b0fa2de23c6bae","c718be4288049148aff73acb33942759a6a7b194c0fbf8c023c0186f403e64da","48e716f42a6444b2023acaaad75c390d6143dea43d52b37bfc5420fdfaa4f888","779978910a7760c3b0797084f6f7e6d9bceb5c2e30d63e9cb161716db1e32ed3","d3cf09decd9187dcbb925f0a0a7f4b2c3da80c3c1a9b636d2332a3aecd2b5992","568ea0e68446d5ba3c9f511a3a89d2c2c3eb2ec9d71f9c38a692fbb3915339ee","b3e9a7d4905609e07b8ae61b9f7d262240ef28797185b073d218f04486067e6b","f338a331fc98b7a1f203f27b72934b22157bab6e23102f005b09786dcf383668","7336bc25cc72933b720c3bef0cb3087991aa27844c83376fc3fe36a824d7a8ed","cb45b2d61ca2a978551d75614ffb129a4386b4b3b59dc7d05d5c721f6da97684","1070df8aa24c5dd2823080a2882e5d09fb86fcbfc0104ccba13326121233de3f","2f1b2648a9ddeb7af4f497573aa751c99adf6ab11f40b554527f0f65fa5e39a8","8bb104774ea2cd12848b1ecae4c2933f76b876ec4dc21160235f47a25ce9701e","5aa6397b22f8a04f8e5d97b2c08bb7038ca611363da1fe8e1174aa7114022248","c12cfe54ae9534e67fcef5c56efa1af3433b3dab19277866219e150a53db7aa6","63c4a0b4eb97c1f17198ffac8e868c2ade94bed702a93f364fb0de5459244a37","17797f8fd9ef3af7442b58158ce901230538678ff4f776d1bec3396ea9a7db61","b223ca15aac3a161f9f7eb5f7df3c98da26c84ce16866374d7919d196728f054","e197b79669e5e7a62be85bb55a2c4b0a3935c9c21031f16b4801f9c1424fc7de","da90818098a14385cbad7c1968aaf83e4910e808611c3da575b49219ed7fccd4","563e8705f59a2226ccfcb4a6a9ee82fed8600193b66463da98b2121fe70cb637","c173099d7fcca768782f4959243f92a721a577cb45c87a473e6d3fa6639584cd","3846d0dcf468a1d1a07e6d00eaa37ec542956fb5fe0357590a6407af20d2ff90","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","93d28b4eb12c68fccc1f2fc04a4ef83ea3b2a03b18055d3bf29cab267aa7042e","4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"49026435d21e3d7559d723af3ae48f73ec28f9cba651b41bd2ac991012836122","affectsGlobalScope":true},"39b1a50d543770780b0409a4caacb87f3ff1d510aedfeb7dc06ed44188256f89",{"version":"dafc58ee47fa25dbc68b27c638bd6153dd7659021c164f64b7760757e9f5a6ab","affectsGlobalScope":true},"16b872cf5432818bdbf405428b4a1d77bb2a7ab908e8bd6609f9a541cea92f81","fe39ceafa361b6d339b518936275eff89a77e7dfe92f2efa5fb97abf9a95ca49",{"version":"4009dd21843fe4a62d1d97b584a2937ca9f045df6fbd65c8b264d8dd04b656fd","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","5f74757c479da70bc82930f50c6a5cfea4ff9f2979fd965d4ff91de0f6291a22","278fe296432b9840660d6e0d1778b4b4897a591d4b910a5f7ac8db0b476a8af7","1c611ff373ce1958aafc40b328048ac2540ba5c7f373cf2897e0d9aeaabe90a0","bea5c9fc0843a6961411ab4a04df856a8372448bc0d180da0c3a054ff31044b8","715873cecbfcebb49f293f0521bd0955d6298486e2eeb9c7bbf5e9f20a6ed152","c6cf9428f45f3d78b07df7d7aab1569994c177d36549e3a962f952d89f026bc4",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"6c7b9d2139abd8f2e83ed8fa018c3799ab3187755a6665621feb6e93d3429ac3","affectsGlobalScope":true},"5a2f6de23113659e83dc8c5edb9f3c5bcd6136f74dcc1785b3df4eef1271e1f3","021ca24be8eb8c46f99b4e03ebf872931f590c9b07b88d715c68bd30495b6c44","5899ab1898582115c432cccef063298f75477bf2cebe5473360043fddd67bcc6","6b97f4106d72ae6b4ebf4e46d2fe90f4d04dd04b3dbff6e294572440a428209d","e3baa0c5780c2c805ec33a999722a2f740b572eb3746fd0a5f93a0a5c3dbf7f6","48fedd2f8549a2ae7e62f30fdb015779c2a7b536760730c5269406cd3d17cab2",{"version":"089867511b37a534ae71f3d9bc97acc0b925b7f5dbec113f98c4b49224c694eb","affectsGlobalScope":true},"e0cc19f50900706e7aae038565e825f2014ac5325b99b3daabf8ecd5d3d09f1a","f5ce35485541e817c2d4105d3eb78e3e538bbb009515ed014694363fa3e94ceb","323506ce173f7f865f42f493885ee3dacd18db6359ea1141d57676d3781ce10c",{"version":"bd88055918cf8bf30ad7c9269177f7ebeafd4c5f0d28919edccd1c1d24f7e73c","affectsGlobalScope":true},{"version":"645baafeaed6855c8796fcbae4e813021c65f36eaa3f6178535457a2366f6849","affectsGlobalScope":true},"ea3ab3727cd6c222d94003ecafa30e8550c61eadcdabbf59514aee76e86211a5","d3cdd41693c5ed6bec4f1a1c399d9501372b14bd341bc46eedacf2854c5df5a7","2de7a21c92226fb8abbeed7a0a9bd8aa6d37e4c68a8c7ff7938c644267e9fcc1","6d6070c5c81ba0bfe58988c69e3ba3149fc86421fd383f253aeb071cbf29cd41","48dab0d6e633b8052e7eaa0efb0bb3d58a733777b248765eafcb0b0349439834","d3e22aaa84d935196f465fff6645f88bb41352736c3130285eea0f2489c5f183","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","5195aeb0de306d1c5ca8033457fbcab5987657112fa6d4971cfeb7644493a369","c5dbf0003bc9f0f643e54cd00a3868d1afe85497fecb56be6f2373dc85102924",{"version":"6fa61015444e843013443f2e5ca6bee5f033cbf361f953fd932abb0c029b73b2","affectsGlobalScope":true},{"version":"300f8e9de0b0c3482be3e749462b6ebc3dab8a316801f1da0def94aed0cd2018","affectsGlobalScope":true},"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","3df5b34f3449733bc4831b8d670f958a045e7a3f5d7b0e21991ef95408dbec13","76a89af04f2ba1807309320dab5169c0d1243b80738b4a2005989e40a136733e","c045b664abf3fc2a4750fa96117ab2735e4ed45ddd571b2a6a91b9917e231a02",{"version":"068b8ee5c2cd90d7a50f2efadbbe353cb10196a41189a48bf4b2a867363012b4","affectsGlobalScope":true},{"version":"0c312a7c5dec6c616f754d3a4b16318ce8d1cb912dfb3dfa0e808f45e66cbb21","affectsGlobalScope":true},"6f44a190351ab5e1811abebe007cf60518044772ccc08244f9f241706afa767f","fecdf44bec4ee9c5188e5f2f58c292c9689c02520900dceaaa6e76594de6da90","2641e5e19268b6f5038ad48a6e2598965301df8a77c48c99d8df760a6a154204",{"version":"6a4a80787c57c10b3ea8314c80d9cc6e1deb99d20adca16106a337825f582420","affectsGlobalScope":true},"f2b9440f98d6f94c8105883a2b65aee2fce0248f71f41beafd0a80636f3a565d",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","c401bdd358473f97d31db4116a72b4ee68be364afbfb877d71f8748a679497e9","ace68684ddea258bbb08d07a5a16247f61bdc9d53fb502b15c9b39615f612c92","461f9060dd1fe58a9b79f5fa482fcf82580c47f58418fa3147ae2dd71dede99a","feb85f66b299d0c7379909f145010da50f187b4a87c9d3959d04fbdba4efe2a5","6b0004f4263d883c0428f6bcb6c777a50ea1b898ecb0ad624bf4f2a459d8cf80","32548c99315cdcd18f2d35d4874e86d3a65ab2b5106a6f01282a36a458c90b0e","58ca0005765de377f6af7e4f16e8f6e57a058ea2b7a732f7912807e0ea382ebb","2a6bd474eb954e8c55f890054787bbddd9b2798d298e743ed21758df69b5a303","abf6816f679f726d08e6732d433c94482efcd2a047bfbd7269d4ee8e56bbea13","3db678f64a08de6ed4971ae67dc59f70cbd810c67e15bc907f71ce71e5f61646","95578005d28f8532878f92217ac977b95dd3f61f45a4db882969e90dca98c28f","d8f1ffaf53542b1c5889927060616a3b36495881ece29b8e38b0b17a5bba1e63","d40f28fbc898cd4a152834c3838d26acb6447387958413a3e1a1bacc98e9b03b","3cf26bbbaa0f35f79bc74cc80347663689014af5637e09c07f88ceca8f50a4fc","c846f48f4361e54596493f0e00e6061aa7deeec84fbdcf74c302e1e83035ce6a","c603d9797601ceef13a55f78658c8fa2c4713bc9b7fdee6849115b9c414972ab","c09cc09af6c63564aaf8882cd1ad4522400930bbb3fcb2bdcc99d23c5f8d247b","3946f68bd37bad2765ea915e4aa750d30909a7bdc3012c030e1dafacced4b0a1","29b688cdaf703dfe8727069bcc384c5dbe6658e975152d42a873c8f40d324088","f973eeeb6c6f24a698824ea8b3a104632c82ef985143753d8ed4041ba948fdaa","94cc2d7bc4e0bb60472a4d1339d06072cd06965a58c335b609336c01795a2de9","001050d2385c4dd19b7043ef1b410dc22e1ac015e3e8dc2f312e16d1ad47a13c","c43867a3c095c21039c931980683d74c112f383b45b6a5b8a162564adb10643c","d380a790875c51668a846e69ef594be09715731f18b8e24bf6191ccc5dc96db4","68c6bfbcc44ace7fe4bbcc55810460b7356235624dc15ce7116e312eb8266c1f","0fd5c7cbde56982de70a99695bc4bfd7c6b30d9f3eab4bbd7770cc6442517914","43d3a46ed3aafbce9d061a5bd9acc5bea3b492b9a198092d7c52df51eb4a0865","259aa02b58eebacdc00fb938f402c7228b2f540809a3e4b6cd302defcee4b92a","29accd4fc02fc3278fe31791bb6d42612ca54b1f1541116f78a404941e79cf7b","c3ecdd7ddf8b68236165d28c2ed233f3fadee20bb59aad7ba038ae6c16d85a4c","f5f44f4d7d9be0736cd33cabb3e6148da1422f40305b82cd29a43ef36d6376cd","fcc20c59dab713ebd2d77bb0f44238636a92cf936f97b3aa01d38f66250e1f50","a3c63a703635875d1efea296ccd5ee84130acaeb6c8d4210451a45d0e2745c41","480d6b12495d954a5c59a93183f0f1887495ff0b68a28087aa9058ec8f782cbd","0d9049f3b835eb6be2ad399a11f20e7753f7c5ee3b4fe6e1c561bb3b4ba443ef","7b029c55b78626c3d13bccb4b77dd75047b73d84a7272405a770c3bab61bff15","c7c0b008caa3b7840ac9c52ee5ece3a36b65047ee12210dd2ea5276147a3a2ec","8d69c50f39132a4e9290f41cec755fa8bfa559362fb126f599409bdb6d8a3c7f","5c359ff6b9f27ed265bb87736679ba5eb9ef83d356e72f57f207b7b1faaa2be1","244159bc6d99d3f66d2e4233c45fb688f4eb5d753183df4f539bf8f32c8f1330","964cf42a495adc2cc2037613f43522be40fc82012446fbfa4a0c4e3cef2bb97e","0f1e425551df9aa6b11615a21f9d10903b47595cd31ac94cf4668a8dd0c05493","df5ad3e5f00364b3f1beb243a4ce7538b0cead886bfc7c9ef7a6b4084d120bff","63ea694c3e35f63c6c4261977c8a0c6c8a8c1d39989d5f7cddbe7e31a90680e3","a6af53ae0a4603cf6255dbd8bb4209edfad8e952bfa762684033782a28f68272","cbaac46ec418641fcb50afd7d0c8bf9462b6f7ca83af24d1317659a721175e2a","467c234ece0262e142939e2740ce970a71e7dca4adeeed872f0797fd4c3b34ac","f64487e06875cfbe0cc854328920403df337dc6c1925070995653ac71c266c0e","508d1d9d7b04b090a99cd0ccf53b7e1e45ec2f96577b34e60fb9847c3d612efb","c6991234729127037d9d3653d89f1c8097caf2e22bf07bd603df5bc324b1c2ee","e1c249a691a5debf16ec5d8127c4b34f2bc12621d626a332cfec3d2592a317f7","6dba67434473193e6248d4db56aa0a23eed8791e861c863b36a4c347c5c9a307","6dcb16b880a06d2dd2912d2ce33c6f5bb09f4e7fa0f94090595caabeeb5454c6","a146e3f554d4f4eeb8fadf905892103cec35a60690c5d0437f65d1a5c85ecac7","65415fad6e906843d03b4f9ffecc427c7264a7b99824d95600f3ba24b0e8c511","ad12999de217ddbea616ff753af3f34217e717ffa9c67b62ca777e35ab3c5874","f6f348594ff4e973a6f4eb9362471771a16d153104dd54414467769f01af4432","966d70d89d30e36a2e59e4accce507aa318c714c62dd41871e24c348455aa5c2","539c78bde44b8b6a595df8e4ddd3a9c5a4952a66aeaaca822515b312ac7ae3d5","1fe8f0c13354c3939901e103ab22444de77b9e4aa6337e6fdaf2e4c3276fff45","2b86ecc37fe743c9cdd7b0f602dde4e82df61e65f8b967ed6d76d4eea337d81d","4030b77e9ae60454573a3719eb115cbf2011e77f3ce3cfb6e3fc5472d760cdf8","d54de56aae4ea724dd68867575ec03773571d1da9021d2a3faf1230ea7f5a833","144e4a91dc7f7037ed34641eadb23bd804d97e2003f6127d396cadd6fe036dd9","0eaa5c5acab4c493c1b6205679fd55a3040f1e64d3104f658c1e34f3de0d9c02","e2cc6b18283a190ecbc8d2672d0972a9dd13eb974800952978ca6a858a7762cd","55827029b21b504bb993c4db18c782b3210e4326791d876e1c5b0ada996efd8d","1ef9d602026166f18df649f140027aaffe8a6bc6c4fd3255e2526f6f4a298ec1","1fed74dba3d945050f578010f36b01f87c81c85e70737b267bf79220e18e4380","700f36126f73ca804f813ce2548fed7265601b97445477c00992a65c519b9c64","865ad0975ae1da3d138922ee6f8361736ae84f3f458a3100984694060dd3d1c2","e2f6c974f55db571bbbc394d721016b49c907de932636c1f7a3c61f6449faf99","826998b9f2e477c5fb5dbcbf168f5d51f72196918e95b51e7c805e2b3a21302b","ad026571287c9f31c732fa858baec2de491730bff7ba17247edfe1edb2ceed94","13e463d59ee7be9e0d5f47db8aba3d498463e5f7ab499130a295a1e73297ab04","12ae74b5e66f0196fbeffcc1210f3a0e6855b4bfd8647c168fc0567882e608be","17e45f875f2552ef03b308f6242364d89d951a5490cc4abca7fc71caa500075e","cebd90ae1f1adfb07838c6f6d712975ca8433084ebb3ff6fc41a39c4ba4392a5","11ac7b421b95660cded5b955e43bbd496506e99d2a20ebb28e4893e4b62e22bd","e24f8a1db683f107c5ae493a6679744ccf2a3ee988c77f0b51ff90352778f2f0","a3d5cab76c67bc71f1e47fcc5d597d0753f3950347e050d2f3f0c128e7430ca6","9b6f7d1161bdc0422c102c61fb5b8438bb660b63466f6225d024b7c32ffc2fd0","7b243f178e0eddca23bac2e3c39781470c4f4280f72bf53860994bc3cd5ae0c3","57dd51ded61d067162e67bb136d6269df67299f17f5a1fd0ec32a68480c07cb8","964fbd88f705cd0e00c21b775b52e294192d749d182932348dfda323e49ddc74","e82f515f241eb9184cfaf9c303dc91de3529828be9c3c602ae97bb0bac418222","680df5a3635017efcbc272ee6bf3b419e7a575b646df72938a09b8d8399315ba","ad9d6e569ebf745a6517baee7f72d9030275510c87efe63d190ce1ab2ca7578c","ced78442f2a8a65a8ab008a4892ad4eb22953e6697b89764b25ad4f0c4825068","1a9f546b43ccffed20bde218d717ffcbcca5dbc6b7ef796f768dfe85d96e9e02","78ea139925ff0b981392b6e4da9e774330d1dba0adcc1a397810cdd45097a117","42bb09a0ee838e5c0c4709d397283a035939ae99679cb4301a35fa21512da31a","b6d69c8f8f0a5500c248191142d0b8931c792bbfa1e04fb20fc09ac4fa6a032f","70c090654200b566593653b0b5491124f2a1f4cec372e8e1647ed4080e1a2757","c810c40efe9c73aea40a5b112ae6a52e10d0ec3c8720b533a7ad51f303da9070","53d0d58da4962f18e328dbacb7cd0eb7067ce0385138e90187a8007701d7dafd","de4922e19f27b6605c31567b6d9bca9dc137b223b2d8a329c8c27941c516c24c","68cc8d6fcc2f270d7108f02f3ebc59480a54615be3e09a47e14527f349e9d53e","3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","aa4b05181ea7df35382d12fdb06ff0dd8b6e5183f572483e8ef8473ca5f209bb","65834bde83f0841502806c9c32e72e30b618a87abf8e634cebe13427bfe342aa","650e33bbefe6511a04bf7ceb2585ac959992753acdc9ebff3c9a14ec35f58218","9553ca48840172371ecc4d8fb9256d65d87b212e7f5f9729505667e50c55819b","e57d22ad77cfade24633fa913c058a4808b8deb05a7d1a117a005c31a7ac0070","75bd9c38752d263279213294a5cd5d299ac942b17015636cc072604ec6f36d66","1a1e506008918880f6287dfb132a971e6365685f6ad389fe83a9f667d812bfbc","a833732440deaa9f5d1a83e11586fbaa014a38d21e51dff0668fa2cd88411c42","49779cf9f366644d54a627f33aa2d4b10c406ca583f7c776f0ba91c89c4eef24","6b9c37249aee3d8cfb736fdc33367a660aa988e265571dc96bb19f6d39b3b697","127d46ca2b06c299acb4c611974bb2a514c6c8dba3e1fff785f6d3b91094f113","3262e34e0eea982fffd22ca370e5635ad067cfda3a972623b6281341ca2b6531","47c2a8c06b90e091e43e4634dd696c24922237f4eadad16c606083ce3dba1b0c","80215616fe17781ab5837ca991a1436db1bb56078e6a5cdf884902cb7747b068","aa0202c1c61ec4fd5aef58f697e40966d9d689cf0e4d8fa01baba8ebe5f713b2","92b32a29fe763ddf8fa4c9c0ca9625b2e8ddc9bd08bc79fadbc9addf6c542c55","72e1b346af8458ef00eeef693433ac9886cfe80fec95f4b3bb8ca289678193d8","94e14855249a3b55dd3ec614770ceddb1ea073c2507fc3a618d876e1dfa03b36","13dfbe74283a413686ba822474ed67b34063bdf34b0d848d3184e20b49d00e85","ff09548f022deb10e9dbfc58934fb79e93eefe133d42129e20b8e25b5ccbf3e1","dc99c3ca26ac64205794519982d57edcd20fa034df76a9b17bdbf45f778886e6","b687b72c9056a174005bb25dfd6b2022d9bd0f27e25b8d0cca6bc201c8ab37df","af762f7b10f26f3cdffaa5b0e5480b0e2f1ad7a9a42ab0c47db9d20b8c4220df","8cbbc61e47b2b7dc3ab5d04e6344d8299e23d43244792593122dfed58f50c3c2","65d74041d453ea6a86ded3c1c1e0d9b915a93db98882f7c667eb94454b4bbe18","cd32a10a63d80e05777ff980e86c754a0cb54b4867515f6cd536f749f1f8ee1c","5463dbd064e1a0e773d38092e6e18a92b7867fefd0e2ac668c4636e8a111af93","ddd54674ee93bdee9b190170af8d699716c8b547b4cef51ebe5f1dbdfd76b91e","b90a3eef20d83f300c74dccc60f7595d6a22e8bca5cca246c64d272746749d43","cbb2b3a5e3099a762096f6a31d189def6801779e704d00bef659d0681a3508a3","7c45a46ca2182d34c276d00690da5d2e7264dde74b453fbbca07501df62d7db6","b3479e1df52a53f3217e5eb4df0f2e4079dbfdec152fed7d4d19ae7424adc783","f151a2964b82a536472ad8adf14ea21cc22d49b462e2bf7fbc07c894145a8323","a2e83fe09a6ad494998abdab2cc35670edde0817a682c707e55de16955523355","8557af38076c04f257f0d94dcd14354f3d1cc9f74e0a1162185918c2a3253cb5","da90818098a14385cbad7c1968aaf83e4910e808611c3da575b49219ed7fccd4","563e8705f59a2226ccfcb4a6a9ee82fed8600193b66463da98b2121fe70cb637","c173099d7fcca768782f4959243f92a721a577cb45c87a473e6d3fa6639584cd","ace68684ddea258bbb08d07a5a16247f61bdc9d53fb502b15c9b39615f612c92","c3ecdd7ddf8b68236165d28c2ed233f3fadee20bb59aad7ba038ae6c16d85a4c","f5f44f4d7d9be0736cd33cabb3e6148da1422f40305b82cd29a43ef36d6376cd","fcc20c59dab713ebd2d77bb0f44238636a92cf936f97b3aa01d38f66250e1f50","a3c63a703635875d1efea296ccd5ee84130acaeb6c8d4210451a45d0e2745c41","480d6b12495d954a5c59a93183f0f1887495ff0b68a28087aa9058ec8f782cbd","b759d38a00cace9c30461cf1340aa664c80917aa67e8dc4e420a63a393b52bb5","7b029c55b78626c3d13bccb4b77dd75047b73d84a7272405a770c3bab61bff15","c7c0b008caa3b7840ac9c52ee5ece3a36b65047ee12210dd2ea5276147a3a2ec","8d69c50f39132a4e9290f41cec755fa8bfa559362fb126f599409bdb6d8a3c7f","5c359ff6b9f27ed265bb87736679ba5eb9ef83d356e72f57f207b7b1faaa2be1","a48d08ece3b6e81687bb41fa00d85552fd39bd9da492c098cad622933b16661e","964cf42a495adc2cc2037613f43522be40fc82012446fbfa4a0c4e3cef2bb97e","0f1e425551df9aa6b11615a21f9d10903b47595cd31ac94cf4668a8dd0c05493","df5ad3e5f00364b3f1beb243a4ce7538b0cead886bfc7c9ef7a6b4084d120bff","63ea694c3e35f63c6c4261977c8a0c6c8a8c1d39989d5f7cddbe7e31a90680e3","a6af53ae0a4603cf6255dbd8bb4209edfad8e952bfa762684033782a28f68272","cbaac46ec418641fcb50afd7d0c8bf9462b6f7ca83af24d1317659a721175e2a","583afb8a108dd9eb775d9e3b9192abfb39abfa4e427df93bdebc6186f1b93f77","c6991234729127037d9d3653d89f1c8097caf2e22bf07bd603df5bc324b1c2ee","0f2d704b8c4d56eae35f88e646ebb05d3aac6bb9c3da915b0eaf6be8ea2e4758","6dba67434473193e6248d4db56aa0a23eed8791e861c863b36a4c347c5c9a307","6dcb16b880a06d2dd2912d2ce33c6f5bb09f4e7fa0f94090595caabeeb5454c6","a146e3f554d4f4eeb8fadf905892103cec35a60690c5d0437f65d1a5c85ecac7","65415fad6e906843d03b4f9ffecc427c7264a7b99824d95600f3ba24b0e8c511","ad12999de217ddbea616ff753af3f34217e717ffa9c67b62ca777e35ab3c5874","f6f348594ff4e973a6f4eb9362471771a16d153104dd54414467769f01af4432","966d70d89d30e36a2e59e4accce507aa318c714c62dd41871e24c348455aa5c2","539c78bde44b8b6a595df8e4ddd3a9c5a4952a66aeaaca822515b312ac7ae3d5","1fe8f0c13354c3939901e103ab22444de77b9e4aa6337e6fdaf2e4c3276fff45","2b86ecc37fe743c9cdd7b0f602dde4e82df61e65f8b967ed6d76d4eea337d81d","4030b77e9ae60454573a3719eb115cbf2011e77f3ce3cfb6e3fc5472d760cdf8","d54de56aae4ea724dd68867575ec03773571d1da9021d2a3faf1230ea7f5a833","144e4a91dc7f7037ed34641eadb23bd804d97e2003f6127d396cadd6fe036dd9","0eaa5c5acab4c493c1b6205679fd55a3040f1e64d3104f658c1e34f3de0d9c02","ba7373cda53b37cf5f7214aabfc4bfe27f1aec4b48cdb1442224066d9a2671bf","55827029b21b504bb993c4db18c782b3210e4326791d876e1c5b0ada996efd8d","1ef9d602026166f18df649f140027aaffe8a6bc6c4fd3255e2526f6f4a298ec1","1fed74dba3d945050f578010f36b01f87c81c85e70737b267bf79220e18e4380","700f36126f73ca804f813ce2548fed7265601b97445477c00992a65c519b9c64","865ad0975ae1da3d138922ee6f8361736ae84f3f458a3100984694060dd3d1c2","e2f6c974f55db571bbbc394d721016b49c907de932636c1f7a3c61f6449faf99","826998b9f2e477c5fb5dbcbf168f5d51f72196918e95b51e7c805e2b3a21302b","ad026571287c9f31c732fa858baec2de491730bff7ba17247edfe1edb2ceed94","13e463d59ee7be9e0d5f47db8aba3d498463e5f7ab499130a295a1e73297ab04","12ae74b5e66f0196fbeffcc1210f3a0e6855b4bfd8647c168fc0567882e608be","17e45f875f2552ef03b308f6242364d89d951a5490cc4abca7fc71caa500075e","cebd90ae1f1adfb07838c6f6d712975ca8433084ebb3ff6fc41a39c4ba4392a5","11ac7b421b95660cded5b955e43bbd496506e99d2a20ebb28e4893e4b62e22bd","e24f8a1db683f107c5ae493a6679744ccf2a3ee988c77f0b51ff90352778f2f0","a3d5cab76c67bc71f1e47fcc5d597d0753f3950347e050d2f3f0c128e7430ca6","9b6f7d1161bdc0422c102c61fb5b8438bb660b63466f6225d024b7c32ffc2fd0","7b243f178e0eddca23bac2e3c39781470c4f4280f72bf53860994bc3cd5ae0c3","57dd51ded61d067162e67bb136d6269df67299f17f5a1fd0ec32a68480c07cb8","964fbd88f705cd0e00c21b775b52e294192d749d182932348dfda323e49ddc74","e82f515f241eb9184cfaf9c303dc91de3529828be9c3c602ae97bb0bac418222","680df5a3635017efcbc272ee6bf3b419e7a575b646df72938a09b8d8399315ba","ad9d6e569ebf745a6517baee7f72d9030275510c87efe63d190ce1ab2ca7578c","ced78442f2a8a65a8ab008a4892ad4eb22953e6697b89764b25ad4f0c4825068","1a9f546b43ccffed20bde218d717ffcbcca5dbc6b7ef796f768dfe85d96e9e02","78ea139925ff0b981392b6e4da9e774330d1dba0adcc1a397810cdd45097a117","42bb09a0ee838e5c0c4709d397283a035939ae99679cb4301a35fa21512da31a","b6d69c8f8f0a5500c248191142d0b8931c792bbfa1e04fb20fc09ac4fa6a032f","70c090654200b566593653b0b5491124f2a1f4cec372e8e1647ed4080e1a2757","53d0d58da4962f18e328dbacb7cd0eb7067ce0385138e90187a8007701d7dafd","ada14ecae259b6b34dad9fa7fecf0d8ae26cd04dfc312a53c4b0ccb472bb9309","66966d396f3451fc8d0a5125475d7e24ea95d68e4f176e3af8c78fa9e1cd2795","4812ad98953705fa59c7c5b7c4ad46672531497e5c236f1bd625c479114dda00","9dcebbc6c3ba0e08658aa8ac54a9d605e252185b7c227a1cec09a52cdb736e1d","858f82bb3501bc4e3ec08c4d9f8035768a62549d4de42804600e9eb63a475e36","b6e4b2df38794096aba6944a0941accf45da9b97d2da719dd8a95d883b0fc7b1","023683fdc80a7f5c8dc1426427f328373aa309bf28be20bb7ff9b5fe1a3010c3","89770f74968d22e5195c92e6a15a2315b35c44a795bc488bc2c2c9cf94e3b34f","81b828cedde10b708124cf4acabddc57e5c17e54a42e07506ea5f4fbde663d87","5fa5ca164fea16db2c611d502b3f5c82c1f02417507de0c4debeaf924f771a7a","6e33f96796b3f6ad6f737d1d28d82b66427966907b8703b98b58c2ae8a5b2333","7256febd272a24bd76fc5ad02e1adddc9e52a412139783837f9930b9e3ea2435","d86f9872317cb0a8247a958182d56078fcc6d57669d79962d3501e9f79ec076c","35fc3a1f8c2f11cccb720d532639cdaced8a52d5800fd8da54c73c4ff405f99d","fe7c0cebf68625c1820b1fc93319648d9409021d2bad14a002645ca938a4ed6a","2933d72e14929db9787067dcf54092df7fa805b5cd899e5887d857962c34dbde","bdff031b82377b6a28afb4192490abbe16f065130ccf2e2294aebbe50a0146c4","2b69bdd0d8c3cf8a1996b403ad7759677175442562e89bb0f4b2d091ff707c97","10bd790f2555d8adc0a03f461660eba554273e3246c0ceb3f6a5f417d6629748","55aa8f99f91f68660dfb603d17d32801962c338a90a7d9661936e4c582a66608","8de633078fc317e8d998cf1f6b4b9d57c89eada17505da12b496e1d9686d3b2e","c878e4bdfd75a03485af04beb1651ff5010359446d41572222536d00a5ee2502","d3d2e941165ff1b1e63bf19c863b92b89e50a1f6f2fa8339a1dbfecabd46f756","a91c5524a4df7051a0384c05ab0683261a40eec16d0cab13470aabb18eb761b6","14ecfc29e0c44ad4c5e50f9b597492cd8f45a2a635db8b5fe911a5da83e26cf8","bd93a3a1fabff2b95fe9442989cafdda76c3c8949ae1fc4bc75a92d04396d9e2","02ed2766d79a00719ac3cc77851d54bd7197c1b12085ea12126bc2a65068223e","4b84373e192b7e0f8569b65eb16857098a6ee279b75d49223db2a751fdd7efde","fc85a7c96dc69c9e16ccc8d9520075d1ec272e0036aa26c88251709ba25ac841","7c37569e586a3276ae7cbc405c9f1c51efdf3f603cc8b76dd2196d1b01c2f9d0","bef359bd6998f4ce186f7450ec3fbd9cf47ee3097d75c26828b6d985c843a48d","696a04758e6c58966e18bb99a64292017fac57f0ba5482e1bc0b617be850b12e","46fe6faf3d6907bb675b5c37df15b6021b9ca1e4f91b25ccc422630b4c1568e3","c45a995ea8fd0d701c3e013dcf7a106809d9b1517c7115ade3f58d4196bd350c","0332891c6714ceea22d919677ba76e7875f4be1104dc1c2a19b9359b7a2e08e4","38a217719a1e847d3b56f0e513075f07740ea536a838c332d02b2ce4288f23be","d51809d133c78da34a13a1b4267e29afb0d979f50acbeb4321e10d74380beeea","68745f37d24b1b5800c45d0c5c00abfcbb031f9be0bcecdafd29405667397abe","fccc4725f7937821ed7744c796c090963929da13a497a05a58ba478d1c1442ef","7537e0e842b0da6682fd234989bac6c8a2fe146520225b142c75f39fb31b2549","29b531d00f444dac2e3479c2def9654fb71a2c0df68aaa7f134a6fed897412f9","60fbce4fe62a585d67228f8c1e43e7f1e5493519ac7f3d0fb383d95c1f690a1b","ec680627cfcc2c14c92a3771593020cd6ef28b20ac2c11595c788c22e5ed8825","eab9f911bbc4f6ad22381245527dd59ec7961feb385539a93deaa64ce9acffb6","067b2b20a1277e3379840be584fb58ee04851935cc07879d2b6fd36b7cfc9106","a1af693f9be467c12c034a2f30126579f32648ff74e25cd733f03994314ff27f","6e63d0927c992bbaa6f4b6d2b8725622573aa64ff6483706150d338ed6c12c3e","0a7b40ea5973f8441be1d0ec6c6ee50472532c8ad0118b0c91396933ad7ae1fa","26e924322c7ce85c97c9a8b286b3f40a2aa394e648a0b0a0244ab1e066b51f09","db69cc9ac3a31dc9a2101753edb73bd5ce48fc3d678bd123ff1fc0e8bd6d9da1","91ced9c18c0b2fcbcc2356cc48232a1ea9f35f8c6200648c14fb594ea7182857","f820c1e15dea8665742bedd00f36bc16404e53b2b6efb1ee39cd9755d5ac19d7","4c102ca82ea788c3b0ae184a6b259bb8fef744bf040e15d1ef3737599ce17a49","aa4b05181ea7df35382d12fdb06ff0dd8b6e5183f572483e8ef8473ca5f209bb","65834bde83f0841502806c9c32e72e30b618a87abf8e634cebe13427bfe342aa","650e33bbefe6511a04bf7ceb2585ac959992753acdc9ebff3c9a14ec35f58218","9553ca48840172371ecc4d8fb9256d65d87b212e7f5f9729505667e50c55819b","e57d22ad77cfade24633fa913c058a4808b8deb05a7d1a117a005c31a7ac0070","75bd9c38752d263279213294a5cd5d299ac942b17015636cc072604ec6f36d66","1a1e506008918880f6287dfb132a971e6365685f6ad389fe83a9f667d812bfbc","a833732440deaa9f5d1a83e11586fbaa014a38d21e51dff0668fa2cd88411c42","49779cf9f366644d54a627f33aa2d4b10c406ca583f7c776f0ba91c89c4eef24","6b9c37249aee3d8cfb736fdc33367a660aa988e265571dc96bb19f6d39b3b697","127d46ca2b06c299acb4c611974bb2a514c6c8dba3e1fff785f6d3b91094f113","3262e34e0eea982fffd22ca370e5635ad067cfda3a972623b6281341ca2b6531","47c2a8c06b90e091e43e4634dd696c24922237f4eadad16c606083ce3dba1b0c","80215616fe17781ab5837ca991a1436db1bb56078e6a5cdf884902cb7747b068","aa0202c1c61ec4fd5aef58f697e40966d9d689cf0e4d8fa01baba8ebe5f713b2","92b32a29fe763ddf8fa4c9c0ca9625b2e8ddc9bd08bc79fadbc9addf6c542c55","72e1b346af8458ef00eeef693433ac9886cfe80fec95f4b3bb8ca289678193d8","94e14855249a3b55dd3ec614770ceddb1ea073c2507fc3a618d876e1dfa03b36","13dfbe74283a413686ba822474ed67b34063bdf34b0d848d3184e20b49d00e85","ff09548f022deb10e9dbfc58934fb79e93eefe133d42129e20b8e25b5ccbf3e1","dc99c3ca26ac64205794519982d57edcd20fa034df76a9b17bdbf45f778886e6","b687b72c9056a174005bb25dfd6b2022d9bd0f27e25b8d0cca6bc201c8ab37df","af762f7b10f26f3cdffaa5b0e5480b0e2f1ad7a9a42ab0c47db9d20b8c4220df","8cbbc61e47b2b7dc3ab5d04e6344d8299e23d43244792593122dfed58f50c3c2","65d74041d453ea6a86ded3c1c1e0d9b915a93db98882f7c667eb94454b4bbe18","cd32a10a63d80e05777ff980e86c754a0cb54b4867515f6cd536f749f1f8ee1c","5463dbd064e1a0e773d38092e6e18a92b7867fefd0e2ac668c4636e8a111af93","ddd54674ee93bdee9b190170af8d699716c8b547b4cef51ebe5f1dbdfd76b91e","b90a3eef20d83f300c74dccc60f7595d6a22e8bca5cca246c64d272746749d43","cbb2b3a5e3099a762096f6a31d189def6801779e704d00bef659d0681a3508a3","7c45a46ca2182d34c276d00690da5d2e7264dde74b453fbbca07501df62d7db6","b3479e1df52a53f3217e5eb4df0f2e4079dbfdec152fed7d4d19ae7424adc783","f151a2964b82a536472ad8adf14ea21cc22d49b462e2bf7fbc07c894145a8323","a2e83fe09a6ad494998abdab2cc35670edde0817a682c707e55de16955523355","8557af38076c04f257f0d94dcd14354f3d1cc9f74e0a1162185918c2a3253cb5","0a0464d3c5431ef57ef90dab3a55e8414d6f90533627c16460646f64b12693fb","e3272b2b6000622540c4ce783c4e867261b48a2d901b2f5d067f09a7c93a613f","9ad9ca17ed9724c164dae6eec3397a2ba773b93f05905b517e687f3f2faafb2b","256e85620e8136812d0c46a1b2e6e4da93b452722fc130167877194dc74c1684","dbcaacea5434cae4d8e131db08b851528c9597e03f2a5ea15480e980d752ce09","ffaacbbd1227d7eb932a9dfec51dfa5f69e9f282fe6848ca37c8a21ba311562a",{"version":"5f5dec849850dbe07f77c50369d100c6a95f3a967adc93f43377d3cbfa01c4e4","signature":"6b080ae8df9c7c47ca8748287600ad4b3ee5a9dad4d678ebd6e7823968205a32"},{"version":"8f378b28883029f5be6c6891850e8e4508f54a63f56c588e547fa60072b71f72","signature":"8b83875ae31088f3d1bcfdf664b3648f09a547fdff9ae2d9e9707922be9771e3"},{"version":"a8eee722ae3dfbe147678d83b4b9f06e591326be1be5a589a4b37b0235193ff7","signature":"0575e7800f441aa6a3a00c2c263628ff25ba465e89241de86589ba2406cbd63e"},"7db93310b26eec00c09fb942380e587b30407ee7178b7dd6b1a508a7d6077568","bbcd98df2336ea9ca777ebae6be9ae46aa0a4d43808c7b0e1bcfe3c002d6962f","e643de99243f81207ffe2ce7dbfe6b55a1e8e546e97181192cddb710f9918dc5",{"version":"bbe8fc4f27df7bfb4e766fcdac3797a0527c3fc2819acacbed4dfae2e6e65a82","signature":"4ea6214ce8762d62fa5c3063a6a92bec7cd35c4c05dc12f9f3e5675e7876db1e"},{"version":"1df87e603e0631cf86b342697c8294c32b41d69cef57ee2a47285d3ced2fbebb","signature":"cb7e26c03aff899c7fb8ba9b4825219d5e086a372c4c9920740a66a95900732b"},"56bc515e7cdeeb3c960c34c15ad265b3a27ed8720dc2d4d5bcfceb2595f4a450","81c91a4c3b0c20bda8cca5423c6807a63515d48d4bdbc53db176f078f3a92526","bfe930af35cb57b0561009b48a54fd84d6ea68224d5adb235a577c4f4ef68ec5","e0f031b4e6818a76fa3fd6bf38aa29264bc598dee1601f0087ec9537b0ffc8fa","aac4e6377f752a85c57ee66bcd7b36f6d757c692dab7e43d1bf64a17b8608f5d","62e51bdb51dbd23440d4c2b3976178ec7ca00adb1690c5fc56848085dbb3ef9a","9a76bec121a708a33b6b43fcfd1442898cf978a2ac2a9f15ca8cb5966d8c4b06","78cb0f496f365d27d213be6da0777ddba8ff8ef3a09e2a7d638ad5b1a8086540","bb4ce47a759e6c6a80e4ed1115e72f5830fbac8e940e8d9661ba1f95eea1d58f","a301f0459e7a00c0c5acf7cf82eb1cdf3f58194c51dd2cb00d7c86089af14df1","e92fda58674904c0704ab9d368dffc40bb0ead8b3325c9a10323386cd885b0f5","dcab3465b724aed54a583a74831cf8197a701cba8f1598495324eb323621dfe6","da2b5982235725afe9a0aed6ed60c6c0ccec4d9a9795b86aafdb1443fb913e54","7f93f4c204e36e7c4db3eab8eb1b536ade99629591449780ab063d14ac579292","bb5798e6512df7e32d326445d8e4d96d4adcc0de4120c3b3cd5eb267d8d89c2e","cf94ad90795e7d46d8eac710770036cb38f90cdac9e5581bc5e6b4f31d5ffdfd","d0694b66ec2d6f02ee196495d6a75790c08d2c16bafe5bd8e74ec96bb2d8431a","a4fc63e89fdf3b910bc942f3735c490edb1e9184cbc2d80387dd0dc52d49f0a7","8d523e6a4bb252bdb3441284623fd45c1607326ae037561365d08858055391d8","2728ef0658cb9efc597dd29d00156f1d298b3dc3478f99205c37155928922dd8","d0d88f7468427dcd2f2356aa08322cbfa16a8dd800611d850bd699b97f5b7ca3","a2b426dc2db567da3111136e5dd3ac1ce666fb8066a1535931fc9b40f49bbe6c","9f881daa662d54fda5c67ead52b1c024410d273672a8cb2e241a07fc2461a56f","7189e88a8093ae3ee36a1ce2ab8978c18fd0d8c5ecf6d2525cfab1fc425016ac","eda60e730f313d5d280e01f60b23db6f1158f7fcacad2892a37bee53ebbfd827","1d26859aa495b18bb96c30b081290ce275a50bbbd95e238ebbdd2ff631089be5","9961dd61083c50f45a7d5e4ad0a510648df4c080b4e77a6609f05f37310fedfc","5999a2ff4a66451434052e5eda20e2ef0e2758f88a18d7f1245d86c44572b959","90da881d9a9757da8b8e477a8f3f13b69fc86eca6dc8abbf784d133546348dde","ac79bc6b150d5263ecba0a6be6a448fe7eabfcbbc368194d662e647ae9d3fdbc","dde88288512456171ef12e02a22144c0e3289738a2378620252454d8aef95739","4d949922c12ae2d15d4a010ce13d61eede41c6850b04c9fc970eb4bcb433bdc1","7c914bab31ace660ddb5e2b0ae2aa924d2b5faaeeca0261e0ada1ebba9722305","a6c6e0d17dd706d93c88377cc29f4cd1d6fd70e0162cb7610300c2d81f83a3d3","ea06b244f942be5467b237178774fc052573152ef69d1d9e1bf1c061af15df10","8a8cd239a260d899d1dd92b8bae39c412ee4175ad9ead9832514f66b500ee676","4e622d02fb2d2bff3cea84857d46f58841fd1e9c776ed531af29235f6999b33b","60a4e5eef20a7803ee8eb778b6cd22259d83bb337113ea8865260cd18424c4f6","a024f84f26b95098b7785e802bedc96a76913716624ed568ec6ec00f040cb558","22e9d0cf03baae41d990f7c00c25f1e9c2f2550657a2e429bd7785c1a92cf688","7b839cab81ef228b8b4bc801e4cb6ffe5bcb59cc2e8da4c0e9c759fcd45388c5","ccff76e52a25a6a592715c5f167595d0f530142a58ff1d8feafeb1879a1996f2","11f7be8f77e1c8bc6b26d0b289d1f65dab807cb6dc22dbe40150808cf62af8a9","db29510b78c9a0abb195e3c0752cf961b716ad7a05a17e1857eedd0b0180bd0e","ff5e1bab0ab65344e5f0524b1f57d0d18288f96b74eaec2e492de9cbc6745f80","8c4fe6ec9b96ad444f9d16bd8dea18ce718027a357ed6c9153b92798735f4eaa","0d585153128de22400c9019778adedb8ffc3b41f7b2df76f3dcb53690f39a971","05d94cbe6d182223c53e85e4a2962b78b57c756b5800c2fd5b1c03e90fc15d3a","9c9fad129175148440d53268d1d3d839aa041016621a3a41be24abda3e25a3aa","dc35fc3eacf34575409fadd368b00dc3a89477a0027428f4210bd56eb6bea43a","6f82c16c3e436915f5792401fa64dcc12648a512d05baa35f19ce8731b5cb303","9536444828264f4e5022ab5e51c57a212f46889dee2a7173d9b883cc1872a1fe","8325275b6d3be9d8ee53d08fa85de396f02119d4badb336b873ce6524c36246e","c7758e6a96449c33c0f043c8a6ab99b0d089243be754cb1d03c5f65a3b6e8094","8fa0d1ea1b1229a37aefaa60a0a0249ab5f0dd53d1aa196146dbd8724942434c","af3fbc1db8f057f05e01960b8db4fc759185b09365b967da7f3a5b96465fe9da","a8c9e9f1a591481d756c2448a305f0058c8e83726fde616e0bb474f0c74e39b3","0e97456057e413a64f5a103df512abbeebfffa5c69445c5df0471cb89cbf699c","e8cf14c649c3aa51be5b9a197dfe8ef5a5a1dc82f3bfb0e1d323439b1c68c59a","b417d435356381d85e9ca31e7b6c895631f40e01ac52fa42500f29e720656658","3f5e1e7005c7720145df60b0ba437e2d58357ca93b0baff5580ece09ba7cb950","10aa47e00a95f55c322857804ae1c1adbb69e39160dcbbe61b2bbe2efc9c6e14","3b168db0ce7997b45e1511a0801ac3816a9b1cab961d1943e3cbc8a3edec1c1f","6570704cf843c84d2e025e7d3964a1c2a378735c47ac4b8fb93505dd187fed6f","ebc87f2ccf4fb6479809e5b2b29f10f76a21321394649b50fa20b9d2ed4cb606","349f403183a0197bb3398dc4c3e0a68a7d0309fafc9a9fea644272849c23b803","7d2b7fe4adb76d8253f20e4dbdce044f1cdfab4902ec33c3604585f553883f7d",{"version":"e7aebbeb8600f5704d11f2ca1d3e598a8882160bd25b04d23f4006c4fa04b6af","signature":"dd12965c23ca00125ca4c91c98475b6d061678a1a32f1d5767e13794121239e3"},{"version":"609d7ea3407e80c8ab1f0772a8d44857a7f89d5c9896df7f065dcf69c72ce7da","signature":"bda8626de9b0d73e6624f40a1a1872db5b7a750d907b6c03b820b17008ae0072"},{"version":"139bbe121a9501b94e581f36d94cedbb125e2b8ea4a00aa3a16d698481332547","signature":"6cf6ab44be875ef8698c4ad136861e121ff9d751e747b67821b4de8959142603"}],"root":[[487,489],493,494,[562,564]],"options":{"declaration":true,"declarationMap":true,"esModuleInterop":true,"inlineSources":true,"module":1,"noImplicitAny":false,"noUnusedLocals":true,"outDir":"./dist","rootDir":"./src","sourceMap":true,"strict":true,"target":7},"fileIdsList":[[226,227],[226],[99,228],[246,247,248],[99,247],[99,219],[88],[89],[88,89,90,91,92,93,94,95,96,97,98],[89,90,93,95],[92],[321,322,323],[99,287,308,321],[256,287,320],[287,320],[309,310,311,312,314,315,316,317,318,319],[99,153,190,287],[287],[287,309],[153,190,287,309,311],[153,190,287,309],[287,309,313],[99,256,287,309,311,312,315],[153,190,287,309,318],[99],[99,228,234,235],[228,234,235,239],[229,230,231,232,233,234,235,236,237,239,240,241,242,243,244,245,250,251,252,253,254,255],[238],[99,228,249],[99,228,234],[234],[99,234,235],[234,235],[257,260],[221],[220,221],[192,220],[192,257,259],[99,192,221,228,256],[257],[263],[156,190],[100,101,102,192,220,221,222,223,224,225,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286],[153,190,191,192,220],[99,221],[260],[192,257,259,260,266],[99,225,258],[219,220],[192,219],[191,221],[275],[256],[99,287],[258],[290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307],[287,289],[153,190,287],[99,228,256,287],[228,256,287],[256,287],[103],[140],[141,146,174],[142,153,154,161,171,182],[142,143,153,161],[144,183],[145,146,154,162],[146,171,179],[147,149,153,161],[140,148],[149,150],[153],[151,153],[140,153],[153,154,155,171,182],[153,154,155,168,171,174],[138,187],[149,153,156,161,171,182],[153,154,156,157,161,171,179,182],[156,158,171,179,182],[103,104,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189],[153,159],[160,182,187],[149,153,161,171],[162],[163],[140,164],[165,181,187],[166],[167],[153,168,169],[168,170,183,185],[141,153,171,172,173,174],[141,171,173],[171,172],[174],[175],[140,171],[153,177,178],[177,178],[146,161,171,179],[180],[161,181],[141,156,167,182],[146,183],[171,184],[160,185],[186],[141,146,153,155,164,171,182,185,187],[171,188],[48,77,87,156,488,489,493,494,562],[488,489,493,494,562,563],[324,486,487],[59,60,75,77,324,488],[445,487],[59,60,75,77,445,493,536,560,561],[59,60,75,77,492,493],[59,60,153,190,400],[395],[395,396,397,398,399,400,401,402],[59,60,153,190],[197,198,199],[200],[153,200,202],[205],[193,194,195,196,201,202,203,204,207,208,209,210,211,212,213,214,215,216,217,218],[205,206,207],[153,200],[73,153],[498],[59,60,73,75],[59,60],[59,60,498,502],[59,60,497,498,499,500,501,502,503,504],[59,60,73,75,497,498,500,501,502,503],[59,60,73,75,497,498,500,501,504],[54],[52,53,55],[49,50,51,52,53,54,55,56,57,58],[78,79,80,81,82,83,84,85,86],[59,60,73,522,526,527],[59,60,73,505,515,522,528],[526,527,528,529,530],[59,60,529],[59,60,73,75,416,435],[73,416],[436,437],[60],[60,61,74],[59,60,61,73],[59,60,73,75,552,553],[552,554,556],[73,75,539,557],[555],[557,558],[75,557],[73],[73,75],[75,416],[537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,559],[59,60,75],[59,60,75,416],[59,60,416],[59,60,73,75,416],[73,75,539],[75],[416],[335,336],[335],[59,60,511],[511],[511,512,514],[507,509],[507,509,510],[507],[508],[511,513],[394,439,481,482,483,484,485],[73,75,393],[59,60,73,393,435,438],[59,60,73,75,439,445,480],[59,60,73,75,480],[73,75,363,480],[393,464],[73,337],[353,354,355],[73,354],[73,219],[62],[63],[62,63,64,65,66,67,68,69,70,71,72],[63,64,67,69],[66],[440],[59,60,73,75,363,440,443],[440,441,442,443,444],[59,60,73,75,505,515,516,517,518,519,520],[521],[516],[506,515,516,517,518,519,520,521],[59,60,73,518],[477,478,479],[73,393,464,477],[363,393,476],[393,476],[465,466,467,468,470,471,472,473,474,475],[73,153,190,393],[393],[393,465],[153,190,393,465,467],[153,190,393,465],[393,465,469],[73,363,393,465,467,468,471],[153,190,393,465,474],[73,337,343,344],[337,343,344,346],[338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,357,358,359,360,361,362],[73,337,356],[73,337,343],[343],[73,343,344],[343,344],[364,367],[330],[329,330],[328,329],[328,364,366],[73,328,330,337,363],[364],[370],[325,326,327,328,329,330,331,332,333,334,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392],[153,190,191,328,329],[73,330],[367],[328,364,366,367,373],[73,334,365],[219,329],[219,328],[191,330],[382],[363],[73,393],[365],[446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463],[289,393],[153,190,393],[73,337,363,393],[337,363,393],[363,393],[59,60,87,404,405],[59,60,73,407,408],[59,60,404,407],[59,60,403],[153,190,404],[404,405,406,407,408,409,410,411,412,413,414,415],[59,60,403,404],[59,60,404],[404],[76],[495,496,523,524,525,532,533,534,535],[73,445,495],[73,153,190,403,505],[59,60,73,153,190,416,505,515,522,524,531],[59,60,73,75,416,505,515,522],[73,532],[73,531],[490,491],[73,445],[288],[156,158,161],[422,423,427,428,429,430],[417,421,422],[417,421,423],[424,425,426],[422],[421,422],[418],[174,190,418,419,420],[432,433,434],[417,431,432,433],[417,432,434],[417],[115,119,182],[115,171,182],[110],[112,115,179,182],[161,179],[190],[110,190],[112,115,161,182],[107,108,111,114,141,153,171,182],[107,113],[111,115,141,174,182,190],[141,190],[131,141,190],[109,110,190],[115],[109,110,111,112,113,114,115,116,117,119,120,121,122,123,124,125,126,127,128,129,130,132,133,134,135,136,137],[115,122,123],[113,115,123,124],[114],[107,110,115],[115,119,123,124],[119],[113,115,118,182],[107,112,113,115,119,122],[141,171],[110,115,131,141,187,190],[565],[77,488,489,493,494,562],[324,566],[77,324,488,567,568,569],[570],[77,493,560,567,568,569],[77,493,567,568,569,571],[433,434,572],[417,431,433,572],[417,434,572]],"referencedMap":[[228,1],[227,2],[246,3],[249,4],[248,5],[247,6],[89,7],[91,8],[99,9],[96,10],[97,11],[95,7],[324,12],[322,13],[323,14],[321,15],[320,16],[309,17],[310,18],[311,19],[312,20],[313,21],[314,22],[316,23],[317,19],[318,21],[315,18],[319,24],[229,25],[236,26],[240,27],[256,28],[243,29],[239,29],[244,25],[250,30],[235,31],[234,25],[251,32],[252,33],[254,29],[255,34],[270,35],[102,25],[222,36],[223,37],[224,38],[225,25],[260,39],[261,25],[257,40],[262,41],[264,42],[258,43],[287,44],[221,45],[192,46],[265,25],[266,47],[269,35],[267,48],[268,35],[259,49],[271,50],[220,51],[273,52],[276,53],[275,54],[279,55],[280,25],[283,54],[286,56],[308,57],[290,58],[291,55],[292,18],[297,55],[298,18],[299,59],[293,55],[300,60],[301,61],[302,18],[295,18],[296,18],[294,18],[303,18],[304,62],[305,18],[306,18],[307,18],[103,63],[104,63],[140,64],[141,65],[142,66],[143,67],[144,68],[145,69],[146,70],[147,71],[148,72],[149,73],[150,73],[152,74],[151,75],[153,76],[154,77],[155,78],[139,79],[156,80],[157,81],[158,82],[190,83],[159,84],[160,85],[161,86],[162,87],[163,88],[164,89],[165,90],[166,91],[167,92],[168,93],[169,93],[170,94],[171,95],[173,96],[172,97],[174,98],[175,99],[176,100],[177,101],[178,102],[179,103],[180,104],[181,105],[182,106],[183,107],[184,108],[185,109],[186,110],[187,111],[188,112],[563,113],[564,114],[488,115],[489,116],[493,117],[562,118],[494,119],[401,120],[396,121],[403,122],[400,123],[200,124],[201,125],[203,126],[206,127],[219,128],[208,129],[210,125],[202,130],[497,131],[499,132],[500,133],[501,134],[503,135],[505,136],[504,137],[502,138],[50,134],[55,139],[54,140],[59,141],[87,142],[528,143],[527,144],[531,145],[530,146],[436,147],[437,148],[438,149],[61,150],[75,151],[74,152],[60,134],[554,153],[557,154],[555,155],[556,156],[559,157],[558,158],[538,159],[537,159],[553,133],[539,160],[540,161],[560,162],[541,163],[542,159],[543,164],[544,165],[545,166],[546,167],[548,168],[549,169],[550,159],[551,159],[337,170],[336,171],[512,172],[513,173],[515,174],[510,175],[511,176],[508,177],[509,178],[514,179],[486,180],[394,181],[439,182],[481,183],[482,184],[483,185],[484,163],[485,186],[353,187],[356,188],[355,189],[354,190],[63,191],[65,192],[73,193],[70,194],[71,195],[69,191],[441,196],[444,197],[442,161],[445,198],[440,159],[506,159],[521,199],[516,200],[517,201],[522,202],[519,159],[520,203],[480,204],[478,205],[479,206],[477,207],[476,208],[465,209],[466,210],[467,211],[468,212],[469,213],[470,214],[472,215],[473,211],[474,213],[471,210],[475,216],[338,159],[345,217],[347,218],[363,219],[350,29],[346,29],[351,159],[357,220],[344,221],[343,159],[358,222],[359,223],[361,29],[362,224],[377,225],[327,159],[331,226],[332,227],[333,228],[334,159],[367,229],[368,159],[364,230],[369,231],[371,232],[365,43],[393,233],[330,234],[328,235],[372,159],[373,236],[376,225],[374,237],[375,225],[366,238],[378,239],[329,240],[380,241],[383,242],[382,243],[386,244],[387,159],[390,243],[392,245],[464,246],[446,247],[447,244],[448,210],[453,244],[454,210],[455,248],[449,244],[456,249],[457,250],[458,210],[451,210],[452,210],[450,210],[459,210],[460,251],[461,210],[462,210],[463,210],[406,252],[409,253],[408,254],[410,255],[411,256],[407,134],[416,257],[405,258],[412,259],[414,259],[404,134],[413,260],[415,259],[77,261],[76,163],[536,262],[496,263],[495,159],[524,264],[525,134],[532,265],[523,266],[533,267],[534,268],[492,269],[490,270],[491,163],[289,271],[48,272],[431,273],[423,274],[422,275],[427,276],[424,274],[425,277],[426,278],[420,279],[419,279],[421,280],[435,281],[434,282],[433,283],[432,284],[122,285],[129,286],[121,285],[136,287],[113,288],[112,289],[135,290],[130,291],[133,292],[115,293],[114,294],[110,295],[109,296],[132,297],[111,298],[116,299],[120,299],[138,300],[137,299],[124,301],[125,302],[127,303],[123,304],[126,305],[131,290],[118,306],[119,307],[128,308],[108,309],[134,310]],"exportedModulesMap":[[228,1],[227,2],[246,3],[249,4],[248,5],[247,6],[89,7],[91,8],[99,9],[96,10],[97,11],[95,7],[324,12],[322,13],[323,14],[321,15],[320,16],[309,17],[310,18],[311,19],[312,20],[313,21],[314,22],[316,23],[317,19],[318,21],[315,18],[319,24],[229,25],[236,26],[240,27],[256,28],[243,311],[239,311],[244,25],[250,30],[235,31],[234,25],[251,32],[252,33],[254,311],[255,34],[270,35],[102,25],[222,36],[223,37],[224,38],[225,25],[260,39],[261,25],[257,40],[262,41],[264,42],[258,43],[287,44],[221,45],[192,46],[265,25],[266,47],[269,35],[267,48],[268,35],[259,49],[271,50],[220,51],[273,52],[276,53],[275,54],[279,55],[280,25],[283,54],[286,56],[308,57],[290,58],[291,55],[292,18],[297,55],[298,18],[299,59],[293,55],[300,60],[301,61],[302,18],[295,18],[296,18],[294,18],[303,18],[304,62],[305,18],[306,18],[307,18],[103,63],[104,63],[140,64],[141,65],[142,66],[143,67],[144,68],[145,69],[146,70],[147,71],[148,72],[149,73],[150,73],[152,74],[151,75],[153,76],[154,77],[155,78],[139,79],[156,80],[157,81],[158,82],[190,83],[159,84],[160,85],[161,86],[162,87],[163,88],[164,89],[165,90],[166,91],[167,92],[168,93],[169,93],[170,94],[171,95],[173,96],[172,97],[174,98],[175,99],[176,100],[177,101],[178,102],[179,103],[180,104],[181,105],[182,106],[183,107],[184,108],[185,109],[186,110],[187,111],[188,112],[563,312],[564,114],[488,313],[489,314],[493,315],[562,316],[494,317],[401,120],[396,121],[403,122],[400,123],[200,124],[201,125],[203,126],[206,127],[219,128],[208,129],[210,125],[202,130],[497,131],[499,132],[500,133],[501,134],[503,135],[505,136],[504,137],[502,138],[50,134],[55,139],[54,140],[59,141],[87,142],[528,143],[527,144],[531,145],[530,146],[436,147],[437,148],[438,149],[61,150],[75,151],[74,152],[60,134],[554,153],[557,154],[555,155],[556,156],[559,157],[558,158],[538,159],[537,159],[553,133],[539,160],[540,161],[560,162],[541,163],[542,159],[543,164],[544,165],[545,166],[546,167],[548,168],[549,169],[550,159],[551,159],[337,170],[336,171],[512,172],[513,173],[515,174],[510,175],[511,176],[508,177],[509,178],[514,179],[486,180],[394,181],[439,182],[481,183],[482,184],[483,185],[484,163],[485,186],[353,187],[356,188],[355,189],[354,190],[63,191],[65,192],[73,193],[70,194],[71,195],[69,191],[441,196],[444,197],[442,161],[445,198],[440,159],[506,159],[521,199],[516,200],[517,201],[522,202],[519,159],[520,203],[480,204],[478,205],[479,206],[477,207],[476,208],[465,209],[466,210],[467,211],[468,212],[469,213],[470,214],[472,215],[473,211],[474,213],[471,210],[475,216],[338,159],[345,217],[347,218],[363,219],[350,311],[346,311],[351,159],[357,220],[344,221],[343,159],[358,222],[359,223],[361,311],[362,224],[377,225],[327,159],[331,226],[332,227],[333,228],[334,159],[367,229],[368,159],[364,230],[369,231],[371,232],[365,43],[393,233],[330,234],[328,235],[372,159],[373,236],[376,225],[374,237],[375,225],[366,238],[378,239],[329,240],[380,241],[383,242],[382,243],[386,244],[387,159],[390,243],[392,245],[464,246],[446,247],[447,244],[448,210],[453,244],[454,210],[455,248],[449,244],[456,249],[457,250],[458,210],[451,210],[452,210],[450,210],[459,210],[460,251],[461,210],[462,210],[463,210],[406,252],[409,253],[408,254],[410,255],[411,256],[407,134],[416,257],[405,258],[412,259],[414,259],[404,134],[413,260],[415,259],[77,261],[76,163],[536,262],[496,263],[495,159],[524,264],[525,134],[532,265],[523,266],[533,267],[534,268],[492,269],[490,270],[491,163],[289,271],[48,272],[431,273],[423,274],[422,275],[427,276],[424,274],[425,277],[426,278],[420,279],[419,279],[421,280],[435,318],[434,319],[433,320],[432,284],[122,285],[129,286],[121,285],[136,287],[113,288],[112,289],[135,290],[130,291],[133,292],[115,293],[114,294],[110,295],[109,296],[132,297],[111,298],[116,299],[120,299],[138,300],[137,299],[124,301],[125,302],[127,303],[123,304],[126,305],[131,290],[118,306],[119,307],[128,308],[108,309],[134,310]],"semanticDiagnosticsPerFile":[46,47,8,9,11,10,2,12,13,14,15,16,17,18,19,3,20,4,21,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,43,44,39,40,41,42,1,45,228,226,227,246,249,248,247,89,90,91,92,99,93,94,96,97,98,95,88,324,322,323,321,320,309,310,311,312,313,314,316,317,318,315,319,230,229,231,232,233,236,237,240,256,241,242,243,239,244,245,250,235,234,251,252,253,254,255,100,101,270,102,285,222,223,224,225,260,261,257,262,264,258,287,221,192,265,266,269,267,268,259,271,272,220,273,274,276,284,277,278,263,275,279,280,283,281,286,282,308,290,291,292,297,298,299,293,300,301,302,295,296,294,303,304,305,306,307,103,104,140,141,142,143,144,145,146,147,148,149,150,152,151,153,154,155,139,189,156,157,158,190,159,160,161,162,163,164,165,166,167,168,169,170,171,173,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,561,563,564,488,489,487,493,562,494,398,395,399,401,396,403,397,402,400,197,198,200,199,193,194,205,195,196,201,203,206,204,219,208,209,210,207,211,212,213,214,215,216,217,202,218,497,499,500,501,503,498,505,504,502,58,49,50,51,55,56,52,54,59,57,53,78,79,80,81,87,82,83,84,85,86,528,527,531,529,530,526,436,437,438,61,75,74,60,552,554,557,555,556,559,558,538,537,553,539,540,560,541,542,543,544,545,546,547,548,549,550,551,337,335,336,512,513,515,510,507,511,508,509,514,486,394,439,481,482,483,484,485,353,356,355,354,63,64,65,66,73,67,68,70,71,72,69,62,441,444,442,445,443,440,506,521,516,517,518,522,519,520,480,478,479,477,476,465,466,467,468,469,470,472,473,474,471,475,339,338,340,341,342,345,347,363,348,349,350,346,351,352,357,344,343,358,359,360,361,362,325,326,377,327,331,332,333,334,367,368,364,369,371,365,393,330,328,372,373,376,374,375,366,378,379,329,380,381,383,391,384,385,370,382,386,387,390,388,392,389,464,446,447,448,453,454,455,449,456,457,458,451,452,450,459,460,461,462,463,406,409,408,410,411,407,416,405,412,414,404,413,415,77,76,536,496,495,524,525,532,523,533,534,535,492,490,491,417,289,105,288,191,48,238,106,429,431,423,422,427,424,430,425,426,428,418,420,419,421,435,434,433,432,122,129,121,136,113,112,135,130,133,115,114,110,109,132,111,116,117,120,107,138,137,124,125,127,123,126,131,118,119,128,108,134]},"version":"5.4.0-dev.20231219"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 0dbc899c7..9fbe1239d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "packages/live-share-media", "packages/live-share-turbo", "packages/live-share-react", + "internal/test-utils", "samples/javascript/*", "samples/typescript/*" ], @@ -26,11 +27,638 @@ "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "prettier": "^2.8.8", - "sxh": "^1.0.0", "typedoc": "^0.24.6", "typescript": "^5.0.4" } }, + "internal/test-utils": { + "name": "@live-share-private/test-utils", + "version": "2.0.0-internal.2", + "license": "MIT", + "dependencies": { + "@fluid-experimental/attributor": "^2.0.0-rc.1", + "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.1", + "@fluidframework/agent-scheduler": "^2.0.0-rc.1", + "@fluidframework/aqueduct": "^2.0.0-rc.1.0.3", + "@fluidframework/cell": "^2.0.0-rc.1", + "@fluidframework/container-loader": "^2.0.0-rc.1.0.3", + "@fluidframework/container-runtime": "^2.0.0-rc.1.0.4", + "@fluidframework/core-interfaces": "^2.0.0-rc.1", + "@fluidframework/core-utils": "^2.0.0-rc.1", + "@fluidframework/counter": "^2.0.0-rc.1", + "@fluidframework/datastore-definitions": "^2.0.0-rc.1.0.4", + "@fluidframework/driver-definitions": "^2.0.0-rc.1", + "@fluidframework/local-driver": "^2.0.0-rc.1", + "@fluidframework/map": "^2.0.0-rc.1.0.4", + "@fluidframework/matrix": "^2.0.0-rc.1", + "@fluidframework/ordered-collection": "^2.0.0-rc.1", + "@fluidframework/register-collection": "^2.0.0-rc.1.0.4", + "@fluidframework/runtime-definitions": "^2.0.0-rc.1.0.4", + "@fluidframework/sequence": "^2.0.0-rc.1.0.4", + "@fluidframework/server-local-server": "^3.1.0-237980", + "@fluidframework/telemetry-utils": "^2.0.0-rc.1.0.4", + "@fluidframework/test-driver-definitions": "^2.0.0-rc.1", + "@fluidframework/test-utils": "^2.0.0-rc.1.0.3" + }, + "devDependencies": { + "@fluidframework/eslint-config-fluid": "^3.5.0", + "@typescript-eslint/eslint-plugin": "^7.1.1", + "eslint": "~8.56.0", + "eslint-plugin-unused-imports": "^3.1.0", + "mocha-json-output-reporter": "^2.0.1", + "mocha-multi-reporters": "^1.5.1", + "prettier": "~3.0.3", + "rimraf": "^4.4.0", + "typescript": "~5.1.6" + } + }, + "internal/test-utils/node_modules/@fluidframework/gitresources": { + "version": "3.1.0-240326", + "resolved": "https://registry.npmjs.org/@fluidframework/gitresources/-/gitresources-3.1.0-240326.tgz", + "integrity": "sha512-ZYA+xIk4/nHKbpzz3vqr2LrE/yCsuvL+5UgmgZG9hTdaAQEvOo/QNbLn29VCP6Gnv58Xmyt8Wo609DtnnAhqLw==" + }, + "internal/test-utils/node_modules/@fluidframework/protocol-base": { + "version": "3.1.0-240326", + "resolved": "https://registry.npmjs.org/@fluidframework/protocol-base/-/protocol-base-3.1.0-240326.tgz", + "integrity": "sha512-UCnYMx1KOTwknIcHznoJuQQGVluXhFYASnczCDJiC5dRVpwAaj+Z7FaPF+mtPDnJ6rtAjLTc8yHIDscc5PKS0Q==", + "dependencies": { + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/gitresources": "3.1.0-240326", + "@fluidframework/protocol-definitions": "^3.2.0-237840", + "events": "^3.1.0" + } + }, + "internal/test-utils/node_modules/@fluidframework/protocol-definitions": { + "version": "3.2.0-237840", + "resolved": "https://registry.npmjs.org/@fluidframework/protocol-definitions/-/protocol-definitions-3.2.0-237840.tgz", + "integrity": "sha512-NlAZT7WjESOzQYiFRIXiWi58ISlubc69zrC2bObHuDE/hMdIEA0mVnJS8x8A/WHaikNEjZ1cyryJsRscSjg5WA==" + }, + "internal/test-utils/node_modules/@fluidframework/server-lambdas": { + "version": "3.1.0-240326", + "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas/-/server-lambdas-3.1.0-240326.tgz", + "integrity": "sha512-UsoEQYWjrST+tNCtyvF6iOuk3VuhrkIYDLdXQnYOZblHsAw+T1f6McUt8is572Um3noRA5VwL7xiffMO65CArQ==", + "dependencies": { + "@fluidframework/common-definitions": "^1.1.0", + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/gitresources": "3.1.0-240326", + "@fluidframework/protocol-base": "3.1.0-240326", + "@fluidframework/protocol-definitions": "^3.2.0-237840", + "@fluidframework/server-lambdas-driver": "3.1.0-240326", + "@fluidframework/server-services-client": "3.1.0-240326", + "@fluidframework/server-services-core": "3.1.0-240326", + "@fluidframework/server-services-telemetry": "3.1.0-240326", + "@types/semver": "^7.5.0", + "assert": "^2.0.0", + "async": "^3.2.2", + "axios": "^1.6.2", + "buffer": "^6.0.3", + "double-ended-queue": "^2.1.0-0", + "events": "^3.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.21", + "nconf": "^0.12.0", + "semver": "^7.5.3", + "sha.js": "^2.4.11", + "uuid": "^9.0.0" + } + }, + "internal/test-utils/node_modules/@fluidframework/server-lambdas-driver": { + "version": "3.1.0-240326", + "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas-driver/-/server-lambdas-driver-3.1.0-240326.tgz", + "integrity": "sha512-/+Q4KmJN17Pg50Yy1ZPCiouE87sHu9l7EAOMVFH/DE6yYxqfnDv2Qomm9GpcXO3gUgrmvAgKciRPJICAF/q4Vg==", + "dependencies": { + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/server-services-client": "3.1.0-240326", + "@fluidframework/server-services-core": "3.1.0-240326", + "@fluidframework/server-services-telemetry": "3.1.0-240326", + "assert": "^2.0.0", + "async": "^3.2.2", + "events": "^3.1.0", + "lodash": "^4.17.21", + "nconf": "^0.12.0", + "serialize-error": "^8.1.0" + } + }, + "internal/test-utils/node_modules/@fluidframework/server-local-server": { + "version": "3.1.0-240326", + "resolved": "https://registry.npmjs.org/@fluidframework/server-local-server/-/server-local-server-3.1.0-240326.tgz", + "integrity": "sha512-fTvqo/pPOTG+aqvvQVFETAWCPywk34jmfXvYgokTrITWgGNlNJzYxTfJTfqXHMqnsVdCdFSIJiH26gIfHpteZw==", + "dependencies": { + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/protocol-definitions": "^3.2.0-237840", + "@fluidframework/server-lambdas": "3.1.0-240326", + "@fluidframework/server-memory-orderer": "3.1.0-240326", + "@fluidframework/server-services-client": "3.1.0-240326", + "@fluidframework/server-services-core": "3.1.0-240326", + "@fluidframework/server-services-telemetry": "3.1.0-240326", + "@fluidframework/server-test-utils": "3.1.0-240326", + "debug": "^4.3.4", + "events": "^3.1.0", + "jsrsasign": "^11.0.0", + "uuid": "^9.0.0" + } + }, + "internal/test-utils/node_modules/@fluidframework/server-memory-orderer": { + "version": "3.1.0-240326", + "resolved": "https://registry.npmjs.org/@fluidframework/server-memory-orderer/-/server-memory-orderer-3.1.0-240326.tgz", + "integrity": "sha512-66dXxi46YGK+yxC3xS/DK3yNQfkHL5Rvzj+3//J4iLEG3ouPPgIXy/gAuD2uukdu5rmX4KEZDMwzhv/GaJkysw==", + "dependencies": { + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/protocol-base": "3.1.0-240326", + "@fluidframework/protocol-definitions": "^3.2.0-237840", + "@fluidframework/server-lambdas": "3.1.0-240326", + "@fluidframework/server-services-client": "3.1.0-240326", + "@fluidframework/server-services-core": "3.1.0-240326", + "@fluidframework/server-services-telemetry": "3.1.0-240326", + "@types/debug": "^4.1.5", + "@types/double-ended-queue": "^2.1.0", + "@types/lodash": "^4.14.118", + "@types/node": "^18.17.1", + "@types/ws": "^6.0.1", + "assert": "^2.0.0", + "debug": "^4.3.4", + "double-ended-queue": "^2.1.0-0", + "events": "^3.1.0", + "lodash": "^4.17.21", + "sillyname": "^0.1.0", + "uuid": "^9.0.0", + "ws": "^7.4.6" + } + }, + "internal/test-utils/node_modules/@fluidframework/server-services-client": { + "version": "3.1.0-240326", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-client/-/server-services-client-3.1.0-240326.tgz", + "integrity": "sha512-q72lcFbMyM2GkNhhXjVTFmeP9mJQ1SYtmkL/SKlng5gk/TCV5kui99asdaBmmATnOTM0FzuK/Z0Bra5Hv980QQ==", + "dependencies": { + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/gitresources": "3.1.0-240326", + "@fluidframework/protocol-base": "3.1.0-240326", + "@fluidframework/protocol-definitions": "^3.2.0-237840", + "axios": "^1.6.2", + "crc-32": "1.2.0", + "debug": "^4.3.4", + "json-stringify-safe": "^5.0.1", + "jsrsasign": "^11.0.0", + "jwt-decode": "^4.0.0", + "sillyname": "^0.1.0", + "uuid": "^9.0.0" + } + }, + "internal/test-utils/node_modules/@fluidframework/server-services-core": { + "version": "3.1.0-240326", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-core/-/server-services-core-3.1.0-240326.tgz", + "integrity": "sha512-CK/yvBq94bHQm4qgCUp3EnfQedS7Dlyrsx7SE7FxeLLj4zm1Df8h1UX7t91SzJRyHMTI4l5xLrES6jbvp8vHRA==", + "dependencies": { + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/gitresources": "3.1.0-240326", + "@fluidframework/protocol-definitions": "^3.2.0-237840", + "@fluidframework/server-services-client": "3.1.0-240326", + "@fluidframework/server-services-telemetry": "3.1.0-240326", + "@types/nconf": "^0.10.2", + "@types/node": "^18.17.1", + "debug": "^4.3.4", + "events": "^3.1.0", + "nconf": "^0.12.0" + } + }, + "internal/test-utils/node_modules/@fluidframework/server-services-telemetry": { + "version": "3.1.0-240326", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-telemetry/-/server-services-telemetry-3.1.0-240326.tgz", + "integrity": "sha512-G8baYbIFOkpq4sa9GkpzYYnx1oBBfdzdsI0CCsEY9D0XNmETgm0Qf+qspfGUB5BvwvoAB6ciyGkjXGRZQ4ytYw==", + "dependencies": { + "@fluidframework/common-utils": "^3.1.0", + "json-stringify-safe": "^5.0.1", + "path-browserify": "^1.0.1", + "serialize-error": "^8.1.0", + "uuid": "^9.0.0" + } + }, + "internal/test-utils/node_modules/@fluidframework/server-test-utils": { + "version": "3.1.0-240326", + "resolved": "https://registry.npmjs.org/@fluidframework/server-test-utils/-/server-test-utils-3.1.0-240326.tgz", + "integrity": "sha512-BpOkkU/jfpdM/dB/aAYUGpcBzsZoJoA1ozVrVRO2cAVrnjJxgzXN1pSe5EDGmcr9KI1tHBstpxRZmOHdYkQ47w==", + "dependencies": { + "@fluidframework/common-utils": "^3.1.0", + "@fluidframework/gitresources": "3.1.0-240326", + "@fluidframework/protocol-base": "3.1.0-240326", + "@fluidframework/protocol-definitions": "^3.2.0-237840", + "@fluidframework/server-services-client": "3.1.0-240326", + "@fluidframework/server-services-core": "3.1.0-240326", + "@fluidframework/server-services-telemetry": "3.1.0-240326", + "assert": "^2.0.0", + "debug": "^4.3.4", + "events": "^3.1.0", + "lodash": "^4.17.21", + "string-hash": "^1.1.3", + "uuid": "^9.0.0" + } + }, + "internal/test-utils/node_modules/@types/node": { + "version": "18.19.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.21.tgz", + "integrity": "sha512-2Q2NeB6BmiTFQi4DHBzncSoq/cJMLDdhPaAoJFnFCyD9a8VPZRf7a1GAwp1Edb7ROaZc5Jz/tnZyL6EsWMRaqw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "internal/test-utils/node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.1.tgz", + "integrity": "sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/type-utils": "7.1.1", + "@typescript-eslint/utils": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "internal/test-utils/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.1.tgz", + "integrity": "sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.1.1", + "@typescript-eslint/utils": "7.1.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "internal/test-utils/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.1.tgz", + "integrity": "sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/typescript-estree": "7.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "internal/test-utils/node_modules/@typescript-eslint/parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.1.tgz", + "integrity": "sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/typescript-estree": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "internal/test-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz", + "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "internal/test-utils/node_modules/@typescript-eslint/types": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz", + "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "internal/test-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz", + "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "internal/test-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz", + "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.1.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "internal/test-utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "internal/test-utils/node_modules/eslint-plugin-unused-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.1.0.tgz", + "integrity": "sha512-9l1YFCzXKkw1qtAru1RWUtG2EVDZY0a0eChKXcL+EZ5jitG7qxdctu4RnvhOJHv4xfmUf7h+JJPINlVpGhZMrw==", + "dev": true, + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "6 - 7", + "eslint": "8" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "internal/test-utils/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "internal/test-utils/node_modules/glob/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "internal/test-utils/node_modules/jsrsasign": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-11.1.0.tgz", + "integrity": "sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==", + "funding": { + "url": "https://github.com/kjur/jsrsasign#donations" + } + }, + "internal/test-utils/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "internal/test-utils/node_modules/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "internal/test-utils/node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "dev": true, + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "internal/test-utils/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "internal/test-version-utils": { + "name": "@fluid-private/test-version-utils", + "version": "2.0.0-rc.2.0.0", + "extraneous": true, + "license": "MIT", + "dependencies": { + "@fluid-experimental/attributor": "^2.0.0-rc.1", + "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.1", + "@fluid-private/test-drivers": "^2.0.0-rc.1", + "@fluid-tools/version-tools": "^0.34.0", + "@fluidframework/agent-scheduler": "^2.0.0-rc.1", + "@fluidframework/aqueduct": "^2.0.0-rc.1", + "@fluidframework/cell": "^2.0.0-rc.1", + "@fluidframework/container-definitions": "^2.0.0-rc.1", + "@fluidframework/container-loader": "^2.0.0-rc.1", + "@fluidframework/container-runtime": "^2.0.0-rc.1", + "@fluidframework/core-interfaces": "^2.0.0-rc.1", + "@fluidframework/core-utils": "^2.0.0-rc.1", + "@fluidframework/counter": "^2.0.0-rc.1", + "@fluidframework/datastore-definitions": "^2.0.0-rc.1", + "@fluidframework/driver-definitions": "^2.0.0-rc.1", + "@fluidframework/driver-utils": "^2.0.0-rc.1", + "@fluidframework/map": "^2.0.0-rc.1", + "@fluidframework/matrix": "^2.0.0-rc.1", + "@fluidframework/ordered-collection": "^2.0.0-rc.1", + "@fluidframework/protocol-definitions": "^3.2.0-237840", + "@fluidframework/register-collection": "^2.0.0-rc.1", + "@fluidframework/runtime-definitions": "^2.0.0-rc.1", + "@fluidframework/sequence": "^2.0.0-rc.1", + "@fluidframework/telemetry-utils": "^2.0.0-rc.1", + "@fluidframework/test-driver-definitions": "^2.0.0-rc.1", + "@fluidframework/test-utils": "^2.0.0-rc.1", + "nconf": "^0.12.0", + "proper-lockfile": "^4.1.2", + "semver": "^7.5.3" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.13.3", + "@fluid-tools/build-cli": "^0.34.0", + "@fluidframework/build-common": "^2.0.3", + "@fluidframework/build-tools": "^0.34.0", + "@fluidframework/eslint-config-fluid": "^3.5.0", + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", + "@microsoft/api-extractor": "^7.39.1", + "@types/mocha": "^9.1.1", + "@types/nock": "^9.3.0", + "@types/node": "^18.19.0", + "@types/proper-lockfile": "^4.1.4", + "@types/semver": "^7.5.0", + "@types/uuid": "^9.0.2", + "c8": "^8.0.1", + "copyfiles": "^2.4.1", + "cross-env": "^7.0.3", + "eslint": "~8.50.0", + "mocha": "^10.2.0", + "mocha-json-output-reporter": "^2.0.1", + "mocha-multi-reporters": "^1.5.1", + "moment": "^2.21.0", + "nock": "^13.3.3", + "prettier": "~3.0.3", + "rimraf": "^4.4.0", + "ts-loader": "^9.3.0", + "typescript": "~5.1.6", + "uuid": "^9.0.0", + "webpack": "^5.82.0", + "webpack-cli": "^4.9.2" + } + }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -576,6 +1204,20 @@ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.40.1.tgz", + "integrity": "sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==", + "dev": true, + "dependencies": { + "comment-parser": "1.4.0", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -2237,13 +2879,45 @@ "@swc/helpers": "^0.5.1" } }, + "node_modules/@fluid-experimental/attributor": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluid-experimental/attributor/-/attributor-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-oYPkHPbtUxHwLztpUlHwT/WHdE5PKr4DPcY75DYMgyP/CanUNkeZxwtm2bJA1EazdnKUTps7vQQXm5fyVtEB1A==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "lz4js": "^0.2.0" + } + }, + "node_modules/@fluid-experimental/sequence-deprecated": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluid-experimental/sequence-deprecated/-/sequence-deprecated-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-rnBwN6koQomrhiUoZO+7YzMjLTLzJGL7FfRJ/y/OfWl1IzjYF9cpgPSxnBkC8ZVfMIWS1oUIOWhKH422qNsOqg==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/sequence": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" + } + }, "node_modules/@fluid-internal/client-utils": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluid-internal/client-utils/-/client-utils-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-udcDKSKpJ/t0wuialWYCwdHzBFHPd6nwQsgYuakNHSAdzmIQprlmIn/jrbZwAWGQummkNK2k/yXytyyOxe3s2A==", + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluid-internal/client-utils/-/client-utils-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-rNTytq3S3HaUCHwnGx0+UqmxamJoXS0SKgfjBV1g6s1OXhV3eV4oU9s820YpyMrj4j9O09z5BSKtadqKRRX6yQ==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@types/events": "^3.0.0", "base64-js": "^1.5.1", "buffer": "^6.0.3", @@ -2252,6 +2926,25 @@ "sha.js": "^2.4.11" } }, + "node_modules/@fluidframework/agent-scheduler": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/agent-scheduler/-/agent-scheduler-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-8WBTQZxVaJ/HY4Kh1C88j5kc+ExJYyJQtpHlgOIaOyZVAXU30n8dv52U8V5qCIkV6fK7I02XxnakNklF/8E/4w==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/map": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/register-collection": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "uuid": "^9.0.0" + } + }, "node_modules/@fluidframework/aqueduct": { "version": "2.0.0-rc.1.0.3", "resolved": "https://registry.npmjs.org/@fluidframework/aqueduct/-/aqueduct-2.0.0-rc.1.0.3.tgz", @@ -2295,6 +2988,20 @@ "axios": "^1.6.2" } }, + "node_modules/@fluidframework/cell": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/cell/-/cell-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-eIi1VIc/TejRe2DSRUj1SajCVbYKi6C5WrUASg+0EDo5iseEB2XI5r3jYQluteB8rrndt2dVw+bClK61o2Ju4w==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" + } + }, "node_modules/@fluidframework/common-definitions": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@fluidframework/common-definitions/-/common-definitions-1.1.0.tgz", @@ -2315,12 +3022,12 @@ } }, "node_modules/@fluidframework/container-definitions": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-H73Z7jlnUIEys5J8ItmCn1Y+rtNHh9StouohR9J97QS0vHFTdPi0l9jOkxI+UkmKe4bFT7aUePuiRMZfEfDKCw==", + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-Ll8JSUqnbAT1XDADh571GAIKFxImofEeeJwNuX+0pWDG1gbysrN2Q5sBb9c+kzqY+oVfXzIVLFJ8sDojMTULtA==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0", "events": "^3.1.0" } @@ -2347,124 +3054,453 @@ } }, "node_modules/@fluidframework/container-runtime": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-mC4zXzgYxXJpycgr2H+uxuomJEpR2JYlun956mtv/3Uvq4pkJ1ZXKlVSe73sZG063mwTUa1w+R7Hqvs5yMjZFw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@tylerbu/sorted-btree-es6": "^1.8.0", + "double-ended-queue": "^2.1.0-0", + "events": "^3.1.0", + "lz4js": "^0.2.0", + "uuid": "^9.0.0" + } + }, + "node_modules/@fluidframework/container-runtime-definitions": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-x+RxpUUM5RFEXZJkqOSb1FiC5Rjll9gFEZa0SaSw6pK3n8T3Hf5tDEMUcN0CF631ZRZ+7uNbIzRrOWvLCEPv4g==", + "dependencies": { + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" + } + }, + "node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-b9DCsA8z9ParTxNQNL3G8V4Cb6RxNzszXUdp8NWcSp+KJQUcGP3ypTIo5udI9RQuntXxDN93NTGW0mWvoToYQA==" + }, + "node_modules/@fluidframework/core-utils": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/core-utils/-/core-utils-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-gtkWPBOWJDbRLkEKShUDrbUNMOvHl56roZnMej8Agcsb31IqdoCOTXkgWtalnHL2BKDyWODELhUXB26u9zyhQA==" + }, + "node_modules/@fluidframework/counter": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/counter/-/counter-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-/zHnCCSFPZwSgFFxH5MRLdJH42FvdDoAa6Kct5vAFhE3Tgpu/1ALM0+lsoooEZtAUbVKCMogNWvBn33iXgs/ow==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" + } + }, + "node_modules/@fluidframework/datastore": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-NYXcGb3B0kmiS8TuuPQI9btu+RJZLJHwTDgTLDr52p02vdrdJtPvX05UXJmU2kVu04zOLv8vbEJ1Af5B/xrIkw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "lodash": "^4.17.21", + "uuid": "^9.0.0" + } + }, + "node_modules/@fluidframework/datastore-definitions": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-oTCudfTKjaqkNk8DmEEjIfHi3UrFUIW8WPf4mUTTAraS64LkkpWJuAelNSPcHkjN4/S+2qiToU3bLEQn4ApwIA==", + "dependencies": { + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" + } + }, + "node_modules/@fluidframework/driver-base": { "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-1U7Mb+LkaAsjk9reDAGGViTwn+utCQGsLWhKE3lRQ1JpxK40WsVnQYknPdd1tw+6/iZT9X7cMYGLnJ2lF5MHsQ==", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-2.0.0-rc.1.0.3.tgz", + "integrity": "sha512-4jI6AjeXX14dH6+cri8mRGxFUeaATtGxom3d5R3iVDjguzjPmMxKlSbul43/zutUHmRbrbp3GaaWRwqYsbHUAA==", "dependencies": { "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@tylerbu/sorted-btree-es6": "^1.8.0", - "double-ended-queue": "^2.1.0-0", - "events": "^3.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" + } + }, + "node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-h8hzdK7kdgJCE8XV3PQS11ipfppvTfqkcoHGaeQ9tLatdNqpJW2nGFCAZ6KorCIdiNYnStjxFmhhHmZ1jraK4w==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0" + } + }, + "node_modules/@fluidframework/driver-utils": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-njfT/nyve7n9Y0KcCG9awg8vgUKAUFd9Jb5cezz68mwlAqw8+Y3xe1jSJQ0UV5XVxPUuAIyd3te2/wchhzNw6A==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/gitresources": "^3.0.0", + "@fluidframework/protocol-base": "^3.0.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "axios": "^1.6.2", "lz4js": "^0.2.0", + "url": "^0.11.0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/container-runtime-definitions": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-EafHKu/foXzo11XiLJU6q32o8B7hB8Y6CkSzZ+4HSO0rZhViauuXzWB9s/i4JylO30fBRhW1a4BHBCC3sfa21w==", + "node_modules/@fluidframework/eslint-config-fluid": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@fluidframework/eslint-config-fluid/-/eslint-config-fluid-3.5.0.tgz", + "integrity": "sha512-lpvCjZ56QlaSD+v75blAIYXExeK8U54xcT4UuhzTno+6kbaJg4AIB2xedelFGeSON96uUpTauHX4cvuF5/VoNw==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "^0.14.2", + "@rushstack/eslint-patch": "~1.4.0", + "@rushstack/eslint-plugin": "~0.13.0", + "@rushstack/eslint-plugin-security": "~0.7.0", + "@typescript-eslint/eslint-plugin": "~6.7.2", + "@typescript-eslint/parser": "~6.7.2", + "eslint-config-prettier": "~9.0.0", + "eslint-import-resolver-typescript": "~3.6.1", + "eslint-plugin-eslint-comments": "~3.2.0", + "eslint-plugin-import": "npm:eslint-plugin-i@~2.29.0", + "eslint-plugin-jsdoc": "~46.8.1", + "eslint-plugin-promise": "~6.1.1", + "eslint-plugin-react": "~7.33.2", + "eslint-plugin-react-hooks": "~4.6.0", + "eslint-plugin-tsdoc": "~0.2.17", + "eslint-plugin-unicorn": "~48.0.1", + "eslint-plugin-unused-imports": "~3.0.0", + "ts-morph": "^20.0.0" + } + }, + "node_modules/@fluidframework/eslint-config-fluid/node_modules/@ts-morph/common": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.21.0.tgz", + "integrity": "sha512-ES110Mmne5Vi4ypUKrtVQfXFDtCsDXiUiGxF6ILVlE90dDD4fdpC1LSjydl/ml7xJWKSDZwUYD2zkOePMSrPBA==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.12", + "minimatch": "^7.4.3", + "mkdirp": "^2.1.6", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz", + "integrity": "sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/type-utils": "6.7.5", + "@typescript-eslint/utils": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/parser": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz", + "integrity": "sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/scope-manager": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz", + "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/type-utils": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz", + "integrity": "sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/utils": "6.7.5", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/types": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz", + "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz", + "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/utils": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz", + "integrity": "sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz", + "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@fluidframework/eslint-config-fluid/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" + "balanced-match": "^1.0.0" } }, - "node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-Qw1jr5yhkJpFh/uMiU04PM4FoQoFSnNnUoaSdclMsUk0I8CZMQThmMOBkiwlpYsWeHcWZq9FEONWLaujiU6e9w==" - }, - "node_modules/@fluidframework/core-utils": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/core-utils/-/core-utils-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-7ifcm/hDORnmN8t+gwHXey6ipWlEKaD6Z4d9LonzH2Nj0K9KCY5oPoBsgO3kJ4PC86VpJtk4JY0eC7fHvcyX9Q==" + "node_modules/@fluidframework/eslint-config-fluid/node_modules/code-block-writer": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-12.0.0.tgz", + "integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==", + "dev": true }, - "node_modules/@fluidframework/datastore": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-UJy71kM1iXro6P9psYxKUd+pO6aAqRA+Q3+ozuYKr9CrcgZtk7Kpp9Xng2xwkILrPDYHaaCSKWOuWZUBul9WpA==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "lodash": "^4.17.21", - "uuid": "^9.0.0" + "node_modules/@fluidframework/eslint-config-fluid/node_modules/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/@fluidframework/datastore-definitions": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-8sUKttyvHtLqoGTQlUKq9AxNGf60MJmUA5gTucxcdfiA44/AySwmGTlIZqaY4i3xzf1p9MWUsIz8VOaZfAT+7A==", + "node_modules/@fluidframework/eslint-config-fluid/node_modules/eslint-plugin-unused-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.0.0.tgz", + "integrity": "sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==", + "dev": true, "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^6.0.0", + "eslint": "^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } } }, - "node_modules/@fluidframework/driver-base": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-4jI6AjeXX14dH6+cri8mRGxFUeaATtGxom3d5R3iVDjguzjPmMxKlSbul43/zutUHmRbrbp3GaaWRwqYsbHUAA==", + "node_modules/@fluidframework/eslint-config-fluid/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-MzyWQ/6/O78fL5FK6ZvQRFMmN0RRwc+g3EzMgRKacnoL4p/x1cZ/qI02/xR20zw7k/AuWAXY3bzZWDdWb+jK9g==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0" + "node_modules/@fluidframework/eslint-config-fluid/node_modules/mkdirp": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@fluidframework/driver-utils": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-OwRx65WLr8TOyDPXiMIKF5Bw/t+WdpeOzBmBjw7BnHTTcexYk+pY/FKQdFEEVffc4PhA7y/LLIVZz3ZWwTR62w==", + "node_modules/@fluidframework/eslint-config-fluid/node_modules/ts-morph": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-20.0.0.tgz", + "integrity": "sha512-JVmEJy2Wow5n/84I3igthL9sudQ8qzjh/6i4tmYCm6IqYyKFlNbJZi7oBdjyqcWSWYRu3CtL0xbT6fS03ESZIg==", + "dev": true, "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/gitresources": "^3.0.0", - "@fluidframework/protocol-base": "^3.0.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "axios": "^1.6.2", - "lz4js": "^0.2.0", - "url": "^0.11.0", - "uuid": "^9.0.0" + "@ts-morph/common": "~0.21.0", + "code-block-writer": "^12.0.0" } }, "node_modules/@fluidframework/fluid-static": { @@ -2492,14 +3528,14 @@ "integrity": "sha512-kpbONpwCIE7q2G+Q+KTfBHUz+VneL/7tPWlYFZ96uP0dpeBVdSJdf9dgd0ILIzs6rpO6XRpceI2D503LRU6j9g==" }, "node_modules/@fluidframework/id-compressor": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/id-compressor/-/id-compressor-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-OInGvGWqN83XBd15KPs+FY2c8sLpwOF8c2JL+GXnxuKz31RYQOf1ukijNwcOmZFOP/xGhpssFy+MRv+RtC2J7g==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/id-compressor/-/id-compressor-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-ePsAK+KxxotmFw0BkoU+ArBbeWd8AHLQ4/zKKgqdw6pYtUCKkRoub4NfJ/f07dtdrAhEKZRxZ8Np0Y6Gn7IBbQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@tylerbu/sorted-btree-es6": "^1.8.0", "uuid": "^9.0.0" } @@ -2508,7 +3544,6 @@ "version": "2.0.0-rc.1.0.3", "resolved": "https://registry.npmjs.org/@fluidframework/local-driver/-/local-driver-2.0.0-rc.1.0.3.tgz", "integrity": "sha512-tsMnI98fSHNqIshDGvFWlYv597xXy7i9jJmktShxReP61BgyCLenNHEAiLFFnFY+YhWJb/EimZPkj+jdntn+Mg==", - "dev": true, "dependencies": { "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", @@ -2531,39 +3566,93 @@ } }, "node_modules/@fluidframework/map": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-lxVB6Bb3H7Icj9xjNfqY5Bo/lMFAKizDTuFxh9OeVliuDy4OW7ytwZmh2Ee7oYHMtVtBeDr8BimUMvFh8RSRMQ==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-Kc5He/nRCbaiUtVLCRKHMc0OHYpmz0XLP7K+b/MxdUmlmNKIRtjzmdEImSIs2VgGMDKipqrw8HprCI/zkokMGw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "path-browserify": "^1.0.1" } }, + "node_modules/@fluidframework/matrix": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/matrix/-/matrix-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-Ep0zycfPfS42W76ztKZywwLPXc9uCrN6sPnd+271tvlqjvhUPNrth2VMOLe4aZd85/GodC/2nqMILopicfj5dQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@tiny-calc/nano": "0.0.0-alpha.5", + "events": "^3.1.0", + "tslib": "^1.10.0" + } + }, + "node_modules/@fluidframework/matrix/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/@fluidframework/merge-tree": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-xHBH69U7hEWS2xwa2gOARp6umoywgn9EHO0swlybO/irgRVqG5TwfhyDAoUoIFkIcSZICjxSxZhsWayQiiywWw==", + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-I5OFN4VI+bgdfwLZjqf4cTnVB/dYQ8I1mBQLCN00xDM/n/scfj7lo9hVGttwMEZvceFLBzuLa/9v07qh7VLY+w==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" + } + }, + "node_modules/@fluidframework/mocha-test-setup": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/mocha-test-setup/-/mocha-test-setup-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-+UgAY/HoF0iAyQQV2Jz3db5yBt9zDnbjAl189e4YtkmqKYBLzU2RCmwFY7gDAGybLzdGNbaF9g9ashq6N8s4RA==", + "dev": true, "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/test-driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "mocha": "^10.2.0", + "source-map-support": "^0.5.21" + } + }, + "node_modules/@fluidframework/ordered-collection": { + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/ordered-collection/-/ordered-collection-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-d/K4hfB/izlBjnWx7ovQPxn3NW6wI9JjXQuYYfFFDuw2ck5ERLYHFGImotZAHYr0/SrlSN4Mo3jhbD73iduQ7A==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/protocol-base": { @@ -2583,18 +3672,18 @@ "integrity": "sha512-BgGF82z4sk5M4torMR38NGjHjFG9t6Y653UcGOlXiIaGQMDZpRfrxiIuq53Gb12OTfUgbNtvBJL1W46JfLvzQw==" }, "node_modules/@fluidframework/register-collection": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/register-collection/-/register-collection-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-Wy/LjrLgsLTr0j/Ll6b5Ba4USrDFCCTLGtWmt0fmAUaOv5s7t7EK82mp4epJ3vB/xiAO2R/pD2va4cmKoHVD8A==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/register-collection/-/register-collection-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-SiBF9Cr37LafFtgLXvh3Ag7ozp0EbdhwbdcvzZlHoyAAiMmORajjnZDAAC05b75+ip5px8112CkWwmGumlz8AQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" } }, "node_modules/@fluidframework/request-handler": { @@ -2633,49 +3722,49 @@ } }, "node_modules/@fluidframework/runtime-definitions": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-VUP4IIS53XOA4pTmCLXn6xMFDdbfc9C0kDBWhU9AfpO92G5tz06VEgV/Xhu5HxuhTdG8DYbqyr7u41MPTIRjDg==", - "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-13daERnsRtNrOM1t2qNuOVINXVDvJW11EYkUs91e1XJGPuR+QCKTSFYX1J5HfY6uo18jjFexEVlDJHjtRYrmVQ==", + "dependencies": { + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0" } }, "node_modules/@fluidframework/runtime-utils": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-HD/sC8C/NcwhUW3zR44erNaTF9JFlw3dbSxqNPhUmibiBZ9siFVN1lDz3vg2787ezQgLsykGFGNfnS6mC2eS8w==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-Zw/Rd0PLEzaFaVpbIIxGfY1UuaZK1OP4oGuCVNrOW0uJNHYqY2W0Wa6VtzLzbO2lFdEQGJqHU3f1ZU7PbDKSog==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" } }, "node_modules/@fluidframework/sequence": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-wKIcbLcBasxCTxEJym39KwWN0P41RH7yep2ti/3EW2O1PkZnPJCPBdb3xBjsvY2zSJRQX8PJHINSfbmrpH99tQ==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-FIOXvv+FoC2rof7dEFz2ai2sGPZo4nb9MSeCECP8FBG61qI1Lwf8msf6FUFUPIhD2/HeU0oF8QYtfAdwmtd3Cw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "uuid": "^9.0.0" } }, @@ -2683,7 +3772,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas/-/server-lambdas-3.0.0.tgz", "integrity": "sha512-vx6vlFJ1uW/hxam14NumitMeCw4vpmu863CR8MtNlzWem1YtHkYCjBYl/8tz8ziBUZTCaFeHg2xPyl3U8s2Tjw==", - "dev": true, "dependencies": { "@fluidframework/common-definitions": "^1.1.0", "@fluidframework/common-utils": "^3.1.0", @@ -2713,7 +3801,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas-driver/-/server-lambdas-driver-3.0.0.tgz", "integrity": "sha512-3DqlnteWnb5GOEL0yp6aYZ7m9+xvbjDGtBJEE9gq3kA2bpnYB9Z51g08DsFQonzfEdllSO8iVt5/GAsBNkluXQ==", - "dev": true, "dependencies": { "@fluidframework/common-utils": "^3.1.0", "@fluidframework/server-services-client": "~3.0.0", @@ -2731,7 +3818,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@fluidframework/server-local-server/-/server-local-server-3.0.0.tgz", "integrity": "sha512-7ZlJ0wlS5384WO7NAaiGX0JuhT0UNeJDDBJIylMn5ZB7f0Aj/CGrC5B+wLhFTnhA0QYIjZ+MtwV91yyLFQG5hg==", - "dev": true, "dependencies": { "@fluidframework/common-utils": "^3.1.0", "@fluidframework/protocol-definitions": "^3.1.0", @@ -2751,7 +3837,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@fluidframework/server-memory-orderer/-/server-memory-orderer-3.0.0.tgz", "integrity": "sha512-zT+/rmEVFc07TAdy0KZ8zq9Fmz5SWm6K8HeAKfbWLduUioVKR+2LjYoxg6sKQTOVXLlS9auhgMUSln9WHu++Sw==", - "dev": true, "dependencies": { "@fluidframework/common-utils": "^3.1.0", "@fluidframework/protocol-base": "~3.0.0", @@ -2779,7 +3864,6 @@ "version": "18.19.17", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.17.tgz", "integrity": "sha512-SzyGKgwPzuWp2SHhlpXKzCX0pIOfcI4V2eF37nNBJOhwlegQ83omtVQ1XxZpDE06V/d6AQvfQdPfnw0tRC//Ng==", - "dev": true, "dependencies": { "undici-types": "~5.26.4" } @@ -2788,7 +3872,6 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, "engines": { "node": ">=8.3.0" }, @@ -2829,7 +3912,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@fluidframework/server-services-core/-/server-services-core-3.0.0.tgz", "integrity": "sha512-MyZnArgoNWHldCONx0oEhC7kzNY9hfemHdKH07ESFjpj9d2AqzDNfM/lZfb6uK5oiTs7G2sbR8VTdWWJZdzz8g==", - "dev": true, "dependencies": { "@fluidframework/common-utils": "^3.1.0", "@fluidframework/gitresources": "~3.0.0", @@ -2847,7 +3929,6 @@ "version": "18.19.17", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.17.tgz", "integrity": "sha512-SzyGKgwPzuWp2SHhlpXKzCX0pIOfcI4V2eF37nNBJOhwlegQ83omtVQ1XxZpDE06V/d6AQvfQdPfnw0tRC//Ng==", - "dev": true, "dependencies": { "undici-types": "~5.26.4" } @@ -2856,7 +3937,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@fluidframework/server-services-telemetry/-/server-services-telemetry-3.0.0.tgz", "integrity": "sha512-6t8aapyGgoCefgkHhU6CAdZEqPf43nHOulht5ghEBuyhrxqY+BEJYtNq9/5O4E7kpph1d1M/tYPIZD1adjgCIQ==", - "dev": true, "dependencies": { "@fluidframework/common-utils": "^3.1.0", "json-stringify-safe": "^5.0.1", @@ -2869,7 +3949,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@fluidframework/server-test-utils/-/server-test-utils-3.0.0.tgz", "integrity": "sha512-XX2Tdfga0nL/KBtND6QngRQ/rk5p1Pd8knOp0b6Cz3T5kf2UrRnkft11e0QPe3xtVs2JCB8tvpptsF3Uj7qxSw==", - "dev": true, "dependencies": { "@fluidframework/common-utils": "^3.1.0", "@fluidframework/gitresources": "~3.0.0", @@ -2887,21 +3966,21 @@ } }, "node_modules/@fluidframework/shared-object-base": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-VDSphSUc6RJ7ATtPnss+oiaiorEWGQ+tABmUl5OPPVi31mHuvQtnNRdoITlyqM8M4DF2eqoVcXHeH3mIDrKlfA==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-RSDwwCjoCck7Z7Tb1OEGJt6Qavl0nOkQkE6S1hEZRvaWa/+bNcl8QKm5hwUQKoHTW+FaR8jInHaz2eRbasynYg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "uuid": "^9.0.0" } }, @@ -2914,13 +3993,13 @@ } }, "node_modules/@fluidframework/telemetry-utils": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-5+4xRh1D8tuoO5Ayomr6onaGmpHXr5pJ0PT5nueUnlP6wOgfk569Ot2KOq+Ag0FjQQDtnSRM/mXKxqNmhhpYlg==", + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-j7WbFtY8Kh5wPHLh7SRc9kVs5YFvydEWrKe2EqpEKFjb1Spz2KPdcha4BbeF3estpcH/uySmAamclIUJ1ffnkw==", "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0", "debug": "^4.3.4", "events": "^3.1.0", @@ -2928,13 +4007,12 @@ } }, "node_modules/@fluidframework/test-driver-definitions": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-9ESfhpj7SxRuXOBMEcokWZy7xDcXFJCj2QOQPTqgp2QmnMNy93s/LYySRau3Fxn99qnaHfHKvtLDTx+5TsVmsw==", - "dev": true, + "version": "2.0.0-rc.1.0.4", + "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.1.0.4.tgz", + "integrity": "sha512-Mcq/cdG+uke0LuplZ5VxDYrj9rX0dr5OG40nRrJJ68jzW3NZHC8yRzFqxglUIraTOHGgUKdaizn3vUzyzXvIhQ==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0", "uuid": "^9.0.0" } @@ -2943,7 +4021,6 @@ "version": "2.0.0-rc.1.0.3", "resolved": "https://registry.npmjs.org/@fluidframework/test-runtime-utils/-/test-runtime-utils-2.0.0-rc.1.0.3.tgz", "integrity": "sha512-1VPJarGDsv+LpE3tr6DDPgLIW+x4ojWcH9dGgT2gR100GLnBW1MJvaLmJfetw8eG+XbUxqXMYi58M/V674mhAQ==", - "dev": true, "dependencies": { "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", @@ -2966,7 +4043,6 @@ "version": "2.0.0-rc.1.0.3", "resolved": "https://registry.npmjs.org/@fluidframework/test-utils/-/test-utils-2.0.0-rc.1.0.3.tgz", "integrity": "sha512-1NqniWGIBiuEgCHx9bfqnLnVl9A3DESqM8CJizauBStSbzHGV8rN0xDtXmRBYtKK1W10H36W3M1+/ZTOHg1zqw==", - "dev": true, "dependencies": { "@fluidframework/aqueduct": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", @@ -3445,6 +4521,10 @@ "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==" }, + "node_modules/@live-share-private/test-utils": { + "resolved": "internal/test-utils", + "link": true + }, "node_modules/@microsoft/01.dice-roller": { "resolved": "samples/javascript/01.dice-roller", "link": true @@ -3529,6 +4609,37 @@ "debug": "^4.3.3" } }, + "node_modules/@microsoft/tsdoc": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", + "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", + "dev": true + }, + "node_modules/@microsoft/tsdoc-config": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", + "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "0.14.2", + "ajv": "~6.12.6", + "jju": "~1.4.0", + "resolve": "~1.19.0" + } + }, + "node_modules/@microsoft/tsdoc-config/node_modules/resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3689,13 +4800,51 @@ "node": ">=12" } }, - "node_modules/@remix-run/router": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.0.tgz", - "integrity": "sha512-HOil5aFtme37dVQTB6M34G95kPM3MMuqSmIRVCC52eKV+Y/tGSqw9P3rWhlAx6A+mz+MoX+XxsGsNJbaI5qCgQ==", - "engines": { - "node": ">=14.0.0" - } + "node_modules/@remix-run/router": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.0.tgz", + "integrity": "sha512-HOil5aFtme37dVQTB6M34G95kPM3MMuqSmIRVCC52eKV+Y/tGSqw9P3rWhlAx6A+mz+MoX+XxsGsNJbaI5qCgQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.4.0.tgz", + "integrity": "sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==", + "dev": true + }, + "node_modules/@rushstack/eslint-plugin": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-plugin/-/eslint-plugin-0.13.1.tgz", + "integrity": "sha512-qQ6iPCm8SFuY+bpcSv5hlYtdwDHcFlE6wlpUHa0ywG9tGVBYM5But8S4qVRFq1iejAuFX+ubNUOyFJHvxpox+A==", + "dev": true, + "dependencies": { + "@rushstack/tree-pattern": "0.3.1", + "@typescript-eslint/experimental-utils": "~5.59.2" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@rushstack/eslint-plugin-security": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-plugin-security/-/eslint-plugin-security-0.7.1.tgz", + "integrity": "sha512-84N42tlONhcbXdlk5Rkb+/pVxPnH+ojX8XwtFoecCRV88/4Ii7eGEyJPb73lOpHaE3NJxLzLVIeixKYQmdjImA==", + "dev": true, + "dependencies": { + "@rushstack/tree-pattern": "0.3.1", + "@typescript-eslint/experimental-utils": "~5.59.2" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@rushstack/tree-pattern": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@rushstack/tree-pattern/-/tree-pattern-0.3.1.tgz", + "integrity": "sha512-2yn4qTkXZTByQffL3ymS6viYuyZk3YnJT49bopGBlm9Thtyfa7iuFUV6tt+09YIRO1sjmSWILf4dPj6+Dr5YVA==", + "dev": true }, "node_modules/@sideway/address": { "version": "4.1.5", @@ -3853,6 +5002,11 @@ "@testing-library/dom": ">=7.21.4" } }, + "node_modules/@tiny-calc/nano": { + "version": "0.0.0-alpha.5", + "resolved": "https://registry.npmjs.org/@tiny-calc/nano/-/nano-0.0.0-alpha.5.tgz", + "integrity": "sha512-Hs37tz9ZtvK21/5s4tjt5RBa/PFHKYS0AzvdxiXuSd3+AKQN2ygxw7uwD9j0DIG9qONddg1vIASO77JIGyZzyw==" + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -3898,7 +5052,6 @@ "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dev": true, "dependencies": { "@types/ms": "*" } @@ -3906,8 +5059,7 @@ "node_modules/@types/double-ended-queue": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/@types/double-ended-queue/-/double-ended-queue-2.1.7.tgz", - "integrity": "sha512-OVbdb2iOJakEg/Ou6dVZsH0LLxlO+GFjc1FB2W8/jT7bnhoFVJwnZOqi/H26ospeMBaEbGiX3Qy2a7r6pfZKXQ==", - "dev": true + "integrity": "sha512-OVbdb2iOJakEg/Ou6dVZsH0LLxlO+GFjc1FB2W8/jT7bnhoFVJwnZOqi/H26ospeMBaEbGiX3Qy2a7r6pfZKXQ==" }, "node_modules/@types/eslint": { "version": "8.56.2", @@ -4018,8 +5170,7 @@ "node_modules/@types/lodash": { "version": "4.14.202", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", - "dev": true + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" }, "node_modules/@types/mocha": { "version": "10.0.6", @@ -4030,14 +5181,12 @@ "node_modules/@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "dev": true + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/nconf": { "version": "0.10.6", "resolved": "https://registry.npmjs.org/@types/nconf/-/nconf-0.10.6.tgz", - "integrity": "sha512-nzmiF6CdR2MNa73WRSerRsJ0KLUWonZD0Iti0Tq3CIn09HLAVnSXqwoITLw8TsLQ3JvmRJ/T0t/HDlYiM4pFjA==", - "dev": true + "integrity": "sha512-nzmiF6CdR2MNa73WRSerRsJ0KLUWonZD0Iti0Tq3CIn09HLAVnSXqwoITLw8TsLQ3JvmRJ/T0t/HDlYiM4pFjA==" }, "node_modules/@types/node": { "version": "20.11.19", @@ -4047,6 +5196,12 @@ "undici-types": "~5.26.4" } }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, "node_modules/@types/prop-types": { "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", @@ -4078,8 +5233,7 @@ "node_modules/@types/semver": { "version": "7.5.7", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz", - "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==", - "dev": true + "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==" }, "node_modules/@types/stack-utils": { "version": "2.0.3", @@ -4104,7 +5258,6 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-6.0.4.tgz", "integrity": "sha512-PpPrX7SZW9re6+Ha8ojZG4Se8AZXgf0GK6zmfqEuCsY49LFDNXO3SByp44X3dFEqtB73lkCDAdUazhAjVPiNwg==", - "dev": true, "dependencies": { "@types/node": "*" } @@ -4166,6 +5319,125 @@ } } }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.59.11.tgz", + "integrity": "sha512-GkQGV0UF/V5Ra7gZMBmiD1WrYUFOJNvCZs+XQnUyJoxmqfWMXVNyB2NVCPRKefoQcpvTv9UpJyfCvsJFs8NzzQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.59.11" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.11.tgz", + "integrity": "sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/visitor-keys": "5.59.11" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.11.tgz", + "integrity": "sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.11.tgz", + "integrity": "sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/visitor-keys": "5.59.11", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.11.tgz", + "integrity": "sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.11", + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/typescript-estree": "5.59.11", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.11.tgz", + "integrity": "sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.11", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/parser": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", @@ -4734,6 +6006,15 @@ "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -4890,7 +6171,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "is-nan": "^1.3.2", @@ -4914,8 +6194,7 @@ "node_modules/async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "node_modules/asynciterator.prototype": { "version": "1.0.0", @@ -5032,8 +6311,7 @@ "node_modules/best-random": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/best-random/-/best-random-1.0.3.tgz", - "integrity": "sha512-zrncs76CBFyhE7KVsq85lsc/TT5PUfGTS8arh2aJZcIzQU+WdGNwWYwFsn+w/nuedk04efQdqMy8g5C5pw4shQ==", - "dev": true + "integrity": "sha512-zrncs76CBFyhE7KVsq85lsc/TT5PUfGTS8arh2aJZcIzQU+WdGNwWYwFsn+w/nuedk04efQdqMy8g5C5pw4shQ==" }, "node_modules/binary-extensions": { "version": "2.2.0", @@ -5147,6 +6425,18 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -5317,6 +6607,27 @@ "node": ">=8" } }, + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clean-regexp/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -5410,6 +6721,15 @@ "node": ">= 6" } }, + "node_modules/comment-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.0.tgz", + "integrity": "sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==", + "dev": true, + "engines": { + "node": ">= 12.0.0" + } + }, "node_modules/common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", @@ -5982,6 +7302,16 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "peer": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -6036,7 +7366,6 @@ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, - "peer": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -6279,7 +7608,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, "engines": { "node": ">=6" } @@ -6384,6 +7712,171 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" + }, + "engines": { + "node": ">=6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-plugin-import": { + "name": "eslint-plugin-i", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-i/-/eslint-plugin-i-2.29.1.tgz", + "integrity": "sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "doctrine": "^3.0.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "get-tsconfig": "^4.7.2", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://opencollective.com/unts" + }, + "peerDependencies": { + "eslint": "^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "46.8.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.8.2.tgz", + "integrity": "sha512-5TSnD018f3tUJNne4s4gDWQflbsgOycIKEUBoCLn6XtBMgNHxQFmV8vVxUtiPxAQq8lrX85OaSG/2gnctxw9uQ==", + "dev": true, + "dependencies": { + "@es-joy/jsdoccomment": "~0.40.1", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.0", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "is-builtin-module": "^3.2.1", + "semver": "^7.5.4", + "spdx-expression-parse": "^3.0.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, "node_modules/eslint-plugin-prettier": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", @@ -6405,6 +7898,18 @@ } } }, + "node_modules/eslint-plugin-promise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, "node_modules/eslint-plugin-react": { "version": "7.33.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", @@ -6468,6 +7973,69 @@ "semver": "bin/semver.js" } }, + "node_modules/eslint-plugin-tsdoc": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.17.tgz", + "integrity": "sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "0.14.2", + "@microsoft/tsdoc-config": "0.16.2" + } + }, + "node_modules/eslint-plugin-unicorn": { + "version": "48.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-48.0.1.tgz", + "integrity": "sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "@eslint-community/eslint-utils": "^4.4.0", + "ci-info": "^3.8.0", + "clean-regexp": "^1.0.0", + "esquery": "^1.5.0", + "indent-string": "^4.0.0", + "is-builtin-module": "^3.2.1", + "jsesc": "^3.0.2", + "lodash": "^4.17.21", + "pluralize": "^8.0.0", + "read-pkg-up": "^7.0.1", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.10.0", + "semver": "^7.5.4", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + }, + "peerDependencies": { + "eslint": ">=8.44.0" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -7136,7 +8704,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -7200,6 +8767,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/get-uri": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", @@ -7549,7 +9128,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, + "devOptional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -7760,6 +9339,21 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -7840,7 +9434,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -7875,7 +9468,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dev": true, "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -8035,7 +9627,6 @@ "version": "1.1.13", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, "dependencies": { "which-typed-array": "^1.1.14" }, @@ -8607,6 +10198,12 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true + }, "node_modules/joi": { "version": "17.12.1", "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.1.tgz", @@ -8643,6 +10240,15 @@ "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", "dev": true }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/jsdom": { "version": "21.1.2", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-21.1.2.tgz", @@ -9209,6 +10815,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/mitt": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", @@ -9290,6 +10905,32 @@ "node": ">= 14.0.0" } }, + "node_modules/mocha-json-output-reporter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mocha-json-output-reporter/-/mocha-json-output-reporter-2.1.0.tgz", + "integrity": "sha512-FF2BItlMo8nK9+SgN/WAD01ue7G+qI1Po0U3JCZXQiiyTJ5OV3KcT1mSoZKirjYP73JFZznaaPC6Mp052PF3Vw==", + "dev": true, + "peerDependencies": { + "mocha": "^10.0.0", + "moment": "^2.21.0" + } + }, + "node_modules/mocha-multi-reporters": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/mocha-multi-reporters/-/mocha-multi-reporters-1.5.1.tgz", + "integrity": "sha512-Yb4QJOaGLIcmB0VY7Wif5AjvLMUFAdV57D2TWEva1Y0kU/3LjKpeRVmlMIfuO1SVbauve459kgtIizADqxMWPg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "lodash": "^4.17.15" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "mocha": ">=3.1.2" + } + }, "node_modules/mocha/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -9444,6 +11085,16 @@ "node": ">=10" } }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -9483,7 +11134,6 @@ "version": "0.12.1", "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.1.tgz", "integrity": "sha512-p2cfF+B3XXacQdswUYWZ0w6Vld0832A/tuqjLBu3H1sfUcby4N2oVbGhyuCkZv+t3iY3aiFEj7gZGqax9Q2c1w==", - "dev": true, "dependencies": { "async": "^3.0.0", "ini": "^2.0.0", @@ -9498,7 +11148,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -9508,14 +11157,12 @@ "node_modules/nconf/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/nconf/node_modules/ini": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, "engines": { "node": ">=10" } @@ -9524,7 +11171,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -9533,7 +11179,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -9547,7 +11192,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9564,7 +11208,6 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "engines": { "node": ">=10" } @@ -9573,7 +11216,6 @@ "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -9591,7 +11233,6 @@ "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, "engines": { "node": ">=10" } @@ -10309,6 +11950,40 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -10456,6 +12131,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss": { "version": "8.4.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", @@ -10956,6 +12640,108 @@ "node": ">=6" } }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/read-pkg/node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -11019,6 +12805,15 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true, + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", @@ -11036,6 +12831,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regjsparser": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", + "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, "node_modules/release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", @@ -11052,7 +12868,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -11116,6 +12931,15 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -11267,7 +13091,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "devOptional": true }, "node_modules/saxes": { "version": "6.0.0", @@ -11347,14 +13171,12 @@ "node_modules/secure-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", - "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==", - "dev": true + "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==" }, "node_modules/semver": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -11369,7 +13191,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -11380,14 +13201,12 @@ "node_modules/semver/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/serialize-error": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", - "dev": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -11872,8 +13691,7 @@ "node_modules/string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", - "dev": true + "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==" }, "node_modules/string-width": { "version": "3.1.0", @@ -11979,7 +13797,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -12056,12 +13873,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sxh": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sxh/-/sxh-1.0.0.tgz", - "integrity": "sha512-mfkOqpA7uR/p72kdeRJArJmi9wDJBbD8GumWwtdsOZKmUoHqgDdnMs6T5G8YcxczkwW3sQfA6s4VazmPF6tA5g==", - "dev": true - }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -12082,7 +13893,6 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, - "peer": true, "engines": { "node": ">=6" } @@ -12283,6 +14093,18 @@ "tree-kill": "cli.js" } }, + "node_modules/ts-api-utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", + "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-mocha": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", @@ -12422,7 +14244,6 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, "engines": { "node": ">=10" }, @@ -12714,7 +14535,6 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -13397,8 +15217,10 @@ "devDependencies": { "@fluid-internal/client-utils": "^2.0.0-rc.1", "@fluidframework/azure-client": "^2.0.0-rc.1", + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@fluidframework/test-utils": "^2.0.0-rc.1", + "@live-share-private/test-utils": "^2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -13438,7 +15260,10 @@ "version": "2.0.0-internal.2", "license": "SEE LICENSE IN LICENSE", "devDependencies": { + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-utils": "^2.0.0-rc.1", + "@live-share-private/test-utils": "^2.0.0-internal.2", "@microsoft/live-share": "2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", diff --git a/package.json b/package.json index aeac2230f..c4abf4ae6 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,13 @@ "packages/live-share-media", "packages/live-share-turbo", "packages/live-share-react", + "internal/test-utils", "samples/javascript/*", "samples/typescript/*" ], "scripts": { - "build": "node workspace-cmd-util.js build packages samples/javascript samples/typescript", - "build:packages": "node workspace-cmd-util.js build packages", + "build": "node workspace-cmd-util.js build internal packages samples/javascript samples/typescript", + "build:packages": "node workspace-cmd-util.js build internal packages", "build:samples": "node workspace-cmd-util.js build samples/javascript samples/typescript", "build:docs": "typedoc packages/live-share packages/live-share-media packages/live-share-turbo packages/live-share-canvas", "test:packages": "node workspace-cmd-util.js test packages", @@ -31,7 +32,6 @@ "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "prettier": "^2.8.8", - "sxh": "^1.0.0", "typedoc": "^0.24.6", "typescript": "^5.0.4" } diff --git a/packages/live-share-media/package.json b/packages/live-share-media/package.json index 6d1cb4b42..f4fc69c7b 100644 --- a/packages/live-share-media/package.json +++ b/packages/live-share-media/package.json @@ -16,7 +16,10 @@ }, "devDependencies": { "@microsoft/live-share": "2.0.0-internal.2", + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-utils": "^2.0.0-rc.1", + "@live-share-private/test-utils": "^2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", diff --git a/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts b/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts index 644df0529..4654dd233 100644 --- a/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts +++ b/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts @@ -6,9 +6,11 @@ import { TestLiveMediaSession, TestMediaTimeStampProvider } from "./TestUtils"; import { Deferred } from "@microsoft/live-share/src/internals/Deferred"; import { strict as assert } from "assert"; -import { requestFluidObject } from "@fluidframework/runtime-utils"; -import { ITestObjectProvider } from "@fluidframework/test-utils"; -import { describeNoCompat } from "@fluidframework/test-version-utils"; +import { + ITestObjectProvider, + fluidEntryPoint, + getContainerEntryPointBackCompat, +} from "@fluidframework/test-utils"; import { ITimestampProvider, LiveEventScope, @@ -25,6 +27,7 @@ import { ExtendedMediaSessionActionDetails, } from "../MediaSessionExtensions"; import { IMediaPlayerState } from "../LiveMediaSessionCoordinator"; +import { describeCompat } from "@live-share-private/test-utils"; async function getObjects( getTestObjectProvider, @@ -59,17 +62,18 @@ async function getObjects( let provider: ITestObjectProvider = getTestObjectProvider(); - let container1 = await provider.createContainer(ObjectProxy1.factory); - let object1 = await requestFluidObject( - container1, - "default" + let container1 = await provider.createContainer( + ObjectProxy1.factory as fluidEntryPoint + ); + let object1 = await getContainerEntryPointBackCompat( + container1 ); object1.coordinator.positionUpdateInterval = 0.02; - - let container2 = await provider.loadContainer(ObjectProxy2.factory); - let object2 = await requestFluidObject( - container2, - "default" + let container2 = await provider.loadContainer( + ObjectProxy2.factory as fluidEntryPoint + ); + let object2 = await getContainerEntryPointBackCompat( + container2 ); object2.coordinator.positionUpdateInterval = 0.02; @@ -119,7 +123,7 @@ async function getObjects( }; } -describeNoCompat( +describeCompat( "LiveMediaSession Manual Action Handlers (mostly testing coordinator)", (getTestObjectProvider) => { it("should send 'positionUpdate' event when someone joins.", async () => { diff --git a/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts b/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts index 01213cdc9..fc04d8a12 100644 --- a/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts +++ b/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts @@ -10,9 +10,11 @@ import { } from "./TestUtils"; import { Deferred } from "@microsoft/live-share/src/internals/Deferred"; import { strict as assert } from "assert"; -import { requestFluidObject } from "@fluidframework/runtime-utils"; -import { ITestObjectProvider } from "@fluidframework/test-utils"; -import { describeNoCompat } from "@fluidframework/test-version-utils"; +import { + ITestObjectProvider, + fluidEntryPoint, + getContainerEntryPointBackCompat, +} from "@fluidframework/test-utils"; import { ITimestampProvider, LocalTimestampProvider, @@ -35,6 +37,7 @@ import { MediaPlayerSynchronizer, MediaPlayerSynchronizerEvents, } from "../MediaPlayerSynchronizer"; +import { describeCompat } from "@live-share-private/test-utils"; async function getObjects( getTestObjectProvider, @@ -69,17 +72,18 @@ async function getObjects( let provider: ITestObjectProvider = getTestObjectProvider(); - let container1 = await provider.createContainer(ObjectProxy1.factory); - let object1 = await requestFluidObject( - container1, - "default" + let container1 = await provider.createContainer( + ObjectProxy1.factory as fluidEntryPoint + ); + let object1 = await getContainerEntryPointBackCompat( + container1 ); object1.coordinator.positionUpdateInterval = 0.02; - - let container2 = await provider.loadContainer(ObjectProxy2.factory); - let object2 = await requestFluidObject( - container2, - "default" + let container2 = await provider.loadContainer( + ObjectProxy2.factory as fluidEntryPoint + ); + let object2 = await getContainerEntryPointBackCompat( + container2 ); object2.coordinator.positionUpdateInterval = 0.02; // need to be connected to send signals @@ -111,7 +115,7 @@ async function getObjects( }; } -describeNoCompat( +describeCompat( "LiveMediaSession Using MediaPlayerSynchronizer", (getTestObjectProvider) => { it("should play and pause on both", async () => { diff --git a/packages/live-share-react/src/live-hooks/useLiveCanvas.ts b/packages/live-share-react/src/live-hooks/useLiveCanvas.ts index fc6631143..8096c944b 100644 --- a/packages/live-share-react/src/live-hooks/useLiveCanvas.ts +++ b/packages/live-share-react/src/live-hooks/useLiveCanvas.ts @@ -82,7 +82,7 @@ export function useLiveCanvas( // cleanup function to be called when the component is unmount return () => { - // liveCanvas.dispose(); + liveCanvas.dispose(); inkingManager.removeAllListeners(); }; }, [liveCanvas]); diff --git a/packages/live-share-react/src/live-hooks/useMediaSynchronizer.ts b/packages/live-share-react/src/live-hooks/useMediaSynchronizer.ts index ddeac7b6b..263f723dc 100644 --- a/packages/live-share-react/src/live-hooks/useMediaSynchronizer.ts +++ b/packages/live-share-react/src/live-hooks/useMediaSynchronizer.ts @@ -250,7 +250,7 @@ export function useMediaSynchronizer( synchronizer.removeAllListeners(); mediaSession.removeAllListeners(); synchronizer?.end(); - // mediaSession?.dispose(); + mediaSession?.dispose(); }; }, [mediaSession, mediaPlayerElement]); diff --git a/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts b/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts index ecdfcb750..0265ef049 100644 --- a/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts +++ b/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts @@ -21,7 +21,7 @@ DynamicObjectRegistry.registerObjectClass( ); type DynamicObjectsCollection = ConsensusRegisterCollection>; -const dynamicObjectsCollectionKey = "<>"; +const dynamicObjectsCollectionKey = "liveShareConsensusRegisterCollectionKey"; /** * Fluid DataObject used in `FluidTurboClient` for the purposes of dynamically loading DDSes. diff --git a/packages/live-share-turbo/src/internals/schema.ts b/packages/live-share-turbo/src/internals/schema.ts index b4d44f6e5..0e27b2fb3 100644 --- a/packages/live-share-turbo/src/internals/schema.ts +++ b/packages/live-share-turbo/src/internals/schema.ts @@ -3,12 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DynamicObjectRegistry } from "@microsoft/live-share"; -import { - ContainerSchema, - LoadableObjectClassRecord, - SharedMap, -} from "fluid-framework"; +import { ContainerSchema, SharedMap } from "fluid-framework"; import { DynamicObjectManager } from "../dds-objects"; /** diff --git a/packages/live-share-turbo/src/test/AzureTurboClient.spec.ts b/packages/live-share-turbo/src/test/AzureTurboClient.spec.ts index e7184af73..f040c5065 100644 --- a/packages/live-share-turbo/src/test/AzureTurboClient.spec.ts +++ b/packages/live-share-turbo/src/test/AzureTurboClient.spec.ts @@ -14,9 +14,21 @@ import { AzureLocalConnectionConfig, } from "@fluidframework/azure-client"; import { AzureTurboClient } from "../AzureTurboClient"; -import { InsecureTokenProvider } from "@fluidframework/test-client-utils"; -import { generateUser } from "@fluidframework/server-services-client"; +import { + IInsecureUser, + InsecureTokenProvider, +} from "@fluidframework/test-runtime-utils"; import { LiveEvent } from "@microsoft/live-share"; +import { v4 as uuid } from "uuid"; + +function generateUser(): IInsecureUser { + const randomUser = { + id: uuid(), + name: uuid(), + }; + + return randomUser; +} describe("AzureTurboClient", () => { (window.performance as any).mark = () => { diff --git a/packages/live-share-turbo/src/test/getContainerSchema.spec.ts b/packages/live-share-turbo/src/test/getContainerSchema.spec.ts index f0dff60df..052edf69a 100644 --- a/packages/live-share-turbo/src/test/getContainerSchema.spec.ts +++ b/packages/live-share-turbo/src/test/getContainerSchema.spec.ts @@ -5,12 +5,9 @@ import { LiveEvent, TestLiveShareHost } from "@microsoft/live-share"; import { strict as assert } from "assert"; -import { - LoadableObjectClassRecord, - SharedMap, - SharedString, -} from "fluid-framework"; +import { LoadableObjectClassRecord, SharedMap } from "fluid-framework"; import { LiveShareTurboClient } from "../LiveShareTurboClient"; +import { SharedString } from "@fluidframework/sequence"; class TestLiveShareTurboClient extends LiveShareTurboClient { // exposes protected method as public diff --git a/packages/live-share/package.json b/packages/live-share/package.json index 8d62842c8..5bbee8040 100644 --- a/packages/live-share/package.json +++ b/packages/live-share/package.json @@ -18,10 +18,12 @@ "uuid": "^9.0.0" }, "devDependencies": { - "@fluidframework/test-utils": "^2.0.0-rc.1", + "@fluid-internal/client-utils": "^2.0.0-rc.1", "@fluidframework/azure-client": "^2.0.0-rc.1", + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", - "@fluid-internal/client-utils": "^2.0.0-rc.1", + "@fluidframework/test-utils": "^2.0.0-rc.1", + "@live-share-private/test-utils": "^2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", diff --git a/packages/live-share/src/LiveDataObject.ts b/packages/live-share/src/LiveDataObject.ts index 7837392f4..ee0d5b6e7 100644 --- a/packages/live-share/src/LiveDataObject.ts +++ b/packages/live-share/src/LiveDataObject.ts @@ -76,8 +76,16 @@ export abstract class LiveDataObject< public constructor(props: IDataObjectProps) { super(props); + this.runtime.once("dispose", () => { + this.dispose(); + }); } + /** + * Disposes of the object when its container is disposed of. + */ + public dispose(): void {} + /** * Get the client info for a given clientId * @param clientId Fluid clientId we are requesting user info for diff --git a/packages/live-share/src/LiveFollowMode.ts b/packages/live-share/src/LiveFollowMode.ts index f3e7c19a2..3b2b66629 100644 --- a/packages/live-share/src/LiveFollowMode.ts +++ b/packages/live-share/src/LiveFollowMode.ts @@ -674,11 +674,11 @@ export class LiveFollowMode extends LiveDataObject<{ /** * Disposes of the object when its container is disposed of. */ - // public dispose(): void { - // super.dispose(); - // this.presence.dispose(); - // this.presentingUserIdState.dispose(); - // } + public dispose(): void { + super.dispose(); + this.presence.dispose(); + this.presentingUserIdState.dispose(); + } /** * initializingFirstTime is run only once by the first client to create the DataObject. Here we use it to diff --git a/packages/live-share/src/LivePresence.ts b/packages/live-share/src/LivePresence.ts index dfcb6db38..7dc05ccf8 100644 --- a/packages/live-share/src/LivePresence.ts +++ b/packages/live-share/src/LivePresence.ts @@ -212,12 +212,12 @@ export class LivePresence< /** * Disposes of the object when its container is disposed of. */ - // public dispose(): void { - // super.dispose(); - // if (this._synchronizer) { - // this._synchronizer.dispose(); - // } - // } + public dispose(): void { + super.dispose(); + if (this._synchronizer) { + this._synchronizer.dispose(); + } + } /** * Returns a snapshot of the current list of presence objects being tracked. diff --git a/packages/live-share/src/LiveState.ts b/packages/live-share/src/LiveState.ts index 9649fd203..8af107502 100644 --- a/packages/live-share/src/LiveState.ts +++ b/packages/live-share/src/LiveState.ts @@ -175,12 +175,12 @@ export class LiveState extends LiveDataObject<{ /** * Disposes of the object when its container is disposed of. */ - // public dispose(): void { - // super.dispose(); - // if (this._synchronizer) { - // this._synchronizer.dispose(); - // } - // } + public dispose(): void { + super.dispose(); + if (this._synchronizer) { + this._synchronizer.dispose(); + } + } /** * Set a new state value diff --git a/packages/live-share/src/LiveTimer.ts b/packages/live-share/src/LiveTimer.ts index c5866aa64..bfef199cd 100644 --- a/packages/live-share/src/LiveTimer.ts +++ b/packages/live-share/src/LiveTimer.ts @@ -215,12 +215,12 @@ export class LiveTimer extends LiveDataObject<{ /** * Disposes of the object when its container is disposed of. */ - // public dispose(): void { - // super.dispose(); - // if (this._synchronizer) { - // this._synchronizer.dispose(); - // } - // } + public dispose(): void { + super.dispose(); + if (this._synchronizer) { + this._synchronizer.dispose(); + } + } /** * Starts the timer with a specified duration. diff --git a/packages/live-share/src/test/LiveEvent.spec.ts b/packages/live-share/src/test/LiveEvent.spec.ts index 31f25a00f..c8dfb1d05 100644 --- a/packages/live-share/src/test/LiveEvent.spec.ts +++ b/packages/live-share/src/test/LiveEvent.spec.ts @@ -4,9 +4,11 @@ */ import { strict as assert } from "assert"; -import { requestFluidObject } from "@fluidframework/runtime-utils"; -import { ITestObjectProvider } from "@fluidframework/test-utils"; -import { describeNoCompat } from "@fluidframework/test-version-utils"; +import { + ITestObjectProvider, + fluidEntryPoint, + getContainerEntryPointBackCompat, +} from "@fluidframework/test-utils"; import { LiveEvent } from "../LiveEvent"; import { Deferred } from "../internals"; import { MockTimestampProvider } from "./MockTimestampProvider"; @@ -17,8 +19,9 @@ import { TestLiveShareHost } from "../TestLiveShareHost"; import { getLiveDataObjectClass } from "../schema-injection-utils"; import { LiveShareRuntime } from "../LiveShareRuntime"; import { DataObjectClass } from "fluid-framework"; +import { describeCompat } from "@live-share-private/test-utils"; -describeNoCompat("LiveEvent", (getTestObjectProvider) => { +describeCompat("LiveEvent", (getTestObjectProvider) => { let provider: ITestObjectProvider; let object1: LiveEvent; let object2: LiveEvent; @@ -45,15 +48,16 @@ describeNoCompat("LiveEvent", (getTestObjectProvider) => { beforeEach(async () => { provider = getTestObjectProvider(); + const container1 = await provider.createContainer( - LiveEventProxy1.factory + LiveEventProxy1.factory as fluidEntryPoint ); - object1 = await requestFluidObject(container1, "default"); + object1 = await getContainerEntryPointBackCompat(container1); const container2 = await provider.loadContainer( - LiveEventProxy2.factory + LiveEventProxy2.factory as fluidEntryPoint ); - object2 = await requestFluidObject(container2, "default"); + object2 = await getContainerEntryPointBackCompat(container2); // need to be connected to send signals if (!container1.connect) { diff --git a/packages/live-share/src/test/LiveFollowMode.spec.ts b/packages/live-share/src/test/LiveFollowMode.spec.ts index 5f0eba9cd..1f743eedd 100644 --- a/packages/live-share/src/test/LiveFollowMode.spec.ts +++ b/packages/live-share/src/test/LiveFollowMode.spec.ts @@ -4,9 +4,11 @@ */ import { strict as assert } from "assert"; -import { requestFluidObject } from "@fluidframework/runtime-utils"; -import { ITestObjectProvider } from "@fluidframework/test-utils"; -import { describeNoCompat } from "@fluidframework/test-version-utils"; +import { + ITestObjectProvider, + fluidEntryPoint, + getContainerEntryPointBackCompat, +} from "@fluidframework/test-utils"; import { FollowModeType, IFollowModePresenceUserData, @@ -17,6 +19,7 @@ import { Deferred, waitForDelay } from "../internals"; import { getLiveDataObjectClass } from "../schema-injection-utils"; import { MockLiveShareRuntime } from "./MockLiveShareRuntime"; import { LivePresenceUser } from "../LivePresenceUser"; +import { describeCompat } from "@live-share-private/test-utils"; interface TestFollowData { page: string; @@ -39,17 +42,20 @@ async function getObjects(getTestObjectProvider) { let provider: ITestObjectProvider = getTestObjectProvider(); - let container1 = await provider.createContainer(ObjectProxy1.factory); - let object1 = await requestFluidObject>( - container1, - "default" + let container1 = await provider.createContainer( + ObjectProxy1.factory as fluidEntryPoint + ); + let object1 = await getContainerEntryPointBackCompat( + container1 ); - let container2 = await provider.loadContainer(ObjectProxy2.factory); - let object2 = await requestFluidObject>( - container2, - "default" + let container2 = await provider.loadContainer( + ObjectProxy2.factory as fluidEntryPoint ); + let object2 = await getContainerEntryPointBackCompat( + container2 + ); + // need to be connected to send signals if (!container1.connect) { await new Promise((resolve) => container1.once("connected", resolve)); @@ -76,7 +82,7 @@ const mockDefaultValue: TestFollowData = { page: "foo", }; -describeNoCompat("LiveFollowMode", (getTestObjectProvider) => { +describeCompat("LiveFollowMode", (getTestObjectProvider) => { it("Should initialize with correct defaults", async () => { const { object1, object2, dispose } = await getObjects( getTestObjectProvider diff --git a/packages/live-share/src/test/LivePresence.spec.ts b/packages/live-share/src/test/LivePresence.spec.ts index a792296bb..f71079a19 100644 --- a/packages/live-share/src/test/LivePresence.spec.ts +++ b/packages/live-share/src/test/LivePresence.spec.ts @@ -4,9 +4,11 @@ */ import { strict as assert } from "assert"; -import { requestFluidObject } from "@fluidframework/runtime-utils"; -import { ITestObjectProvider } from "@fluidframework/test-utils"; -import { describeNoCompat } from "@fluidframework/test-version-utils"; +import { + ITestObjectProvider, + fluidEntryPoint, + getContainerEntryPointBackCompat, +} from "@fluidframework/test-utils"; import { LivePresence } from "../LivePresence"; import { PresenceState } from "../LivePresenceUser"; import { waitForDelay } from "../internals"; @@ -22,6 +24,7 @@ import { import { TestLiveShareHost } from "../TestLiveShareHost"; import { getLiveDataObjectClass } from "../schema-injection-utils"; import { MockLiveShareRuntime } from "./MockLiveShareRuntime"; +import { describeCompat } from "@live-share-private/test-utils"; class TestLivePresence< TData extends object = object @@ -58,17 +61,19 @@ async function getObjects( let provider: ITestObjectProvider = getTestObjectProvider(); - let container1 = await provider.createContainer(ObjectProxy1.factory); - let object1 = await requestFluidObject>( - container1, - "default" + let container1 = await provider.createContainer( + ObjectProxy1.factory as fluidEntryPoint ); + let object1 = await getContainerEntryPointBackCompat< + TestLivePresence<{ foo: string }> + >(container1); - let container2 = await provider.loadContainer(ObjectProxy2.factory); - let object2 = await requestFluidObject>( - container2, - "default" + let container2 = await provider.loadContainer( + ObjectProxy2.factory as fluidEntryPoint ); + let object2 = await getContainerEntryPointBackCompat< + TestLivePresence<{ foo: string }> + >(container2); // need to be connected to send signals if (!container1.connect) { await new Promise((resolve) => container1.once("connected", resolve)); @@ -104,7 +109,7 @@ async function getObjects( }; } -describeNoCompat("LivePresence", (getTestObjectProvider) => { +describeCompat("LivePresence", (getTestObjectProvider) => { it("Should exchange initial presence information", async () => { const { object1, object2, disposeAll } = await getObjects( getTestObjectProvider @@ -292,6 +297,7 @@ describeNoCompat("LivePresence", (getTestObjectProvider) => { await waitForDelay(1); assert( + // @ts-ignore invalid, assersion earlier in test is making the linter think this assertion is unintentional. object2PresenceChangeCount == 4, `expected 4 events from object2, ${object2PresenceChangeCount}` ); @@ -300,6 +306,7 @@ describeNoCompat("LivePresence", (getTestObjectProvider) => { `expected two events from object2 that was online, ${object2PresenceChangeOnlineCount}` ); assert( + // @ts-ignore invalid, assersion earlier in test is making the linter think this assertion is unintentional. object2PresenceChangeOfflineCount == 2, `expected two events from object2 that was offline, ${object2PresenceChangeOfflineCount}` ); diff --git a/packages/live-share/src/test/LiveState.spec.ts b/packages/live-share/src/test/LiveState.spec.ts index 5c467292f..c6e88280e 100644 --- a/packages/live-share/src/test/LiveState.spec.ts +++ b/packages/live-share/src/test/LiveState.spec.ts @@ -4,13 +4,16 @@ */ import { strict as assert } from "assert"; -import { requestFluidObject } from "@fluidframework/runtime-utils"; -import { ITestObjectProvider } from "@fluidframework/test-utils"; -import { describeNoCompat } from "@fluidframework/test-version-utils"; +import { + ITestObjectProvider, + fluidEntryPoint, + getContainerEntryPointBackCompat, +} from "@fluidframework/test-utils"; import { LiveState } from "../LiveState"; import { Deferred } from "../internals"; import { getLiveDataObjectClass } from "../schema-injection-utils"; import { MockLiveShareRuntime } from "./MockLiveShareRuntime"; +import { describeCompat } from "@live-share-private/test-utils"; interface TestStateData { status: string; @@ -22,29 +25,33 @@ async function getObjects(getTestObjectProvider) { let liveRuntime1 = new MockLiveShareRuntime(false); let liveRuntime2 = new MockLiveShareRuntime(false); - let ObjectProxy1: any = getLiveDataObjectClass< - LiveState - >(LiveState, liveRuntime1); - let ObjectProxy2: any = getLiveDataObjectClass< - LiveState - >(LiveState, liveRuntime2); + let ObjectProxy1: any = getLiveDataObjectClass>( + LiveState, + liveRuntime1 + ); + let ObjectProxy2: any = getLiveDataObjectClass>( + LiveState, + liveRuntime2 + ); await liveRuntime1.start(); await liveRuntime2.start(); let provider: ITestObjectProvider = getTestObjectProvider(); - let container1 = await provider.createContainer(ObjectProxy1.factory); - let object1 = await requestFluidObject>( - container1, - "default" + let container1 = await provider.createContainer( + ObjectProxy1.factory as fluidEntryPoint ); + let object1 = await getContainerEntryPointBackCompat< + LiveState + >(container1); - let container2 = await provider.loadContainer(ObjectProxy2.factory); - let object2 = await requestFluidObject>( - container2, - "default" + let container2 = await provider.loadContainer( + ObjectProxy2.factory as fluidEntryPoint ); + let object2 = await getContainerEntryPointBackCompat< + LiveState + >(container2); // need to be connected to send signals if (!container1.connect) { await new Promise((resolve) => container1.once("connected", resolve)); @@ -72,7 +79,7 @@ const mockDefaultValue: TestStateData = { value: "defaultValue", }; -describeNoCompat("LiveState", (getTestObjectProvider) => { +describeCompat("LiveState", (getTestObjectProvider) => { it("Should changeState() to new state and value", async () => { const { object1, object2, dispose } = await getObjects( getTestObjectProvider diff --git a/packages/live-share/src/test/LiveTimer.spec.ts b/packages/live-share/src/test/LiveTimer.spec.ts index 6b239da0d..a4d9a74f5 100644 --- a/packages/live-share/src/test/LiveTimer.spec.ts +++ b/packages/live-share/src/test/LiveTimer.spec.ts @@ -4,13 +4,16 @@ */ import { strict as assert } from "assert"; -import { requestFluidObject } from "@fluidframework/runtime-utils"; -import { ITestObjectProvider } from "@fluidframework/test-utils"; -import { describeNoCompat } from "@fluidframework/test-version-utils"; +import { + ITestObjectProvider, + fluidEntryPoint, + getContainerEntryPointBackCompat, +} from "@fluidframework/test-utils"; import { LiveTimer } from "../LiveTimer"; import { Deferred, waitForDelay } from "../internals"; import { getLiveDataObjectClass } from "../schema-injection-utils"; import { MockLiveShareRuntime } from "./MockLiveShareRuntime"; +import { describeCompat } from "@live-share-private/test-utils"; async function getObjects( getTestObjectProvider, @@ -34,11 +37,15 @@ async function getObjects( let provider: ITestObjectProvider = getTestObjectProvider(); - let container1 = await provider.createContainer(ObjectProxy1.factory); - let object1 = await requestFluidObject(container1, "default"); + let container1 = await provider.createContainer( + ObjectProxy1.factory as fluidEntryPoint + ); + let object1 = await getContainerEntryPointBackCompat(container1); - let container2 = await provider.loadContainer(ObjectProxy2.factory); - let object2 = await requestFluidObject(container2, "default"); + let container2 = await provider.loadContainer( + ObjectProxy2.factory as fluidEntryPoint + ); + let object2 = await getContainerEntryPointBackCompat(container2); // need to be connected to send signals if (!container1.connect) { await new Promise((resolve) => container1.once("connected", resolve)); @@ -62,7 +69,7 @@ async function getObjects( } const milliTolerance = 31; -describeNoCompat("LiveTimer", (getTestObjectProvider) => { +describeCompat("LiveTimer", (getTestObjectProvider) => { it("Should raise local and remote start events", async () => { const { object1, object2, dispose } = await getObjects( getTestObjectProvider From fd17ce9526bdb84baf411d115250e3c378c38855 Mon Sep 17 00:00:00 2001 From: Ryan Bliss Date: Fri, 15 Mar 2024 13:22:59 -0700 Subject: [PATCH 06/40] publish v 2.0.0-internal.3 --- internal/test-utils/package.json | 2 +- package-lock.json | 124 +++++++++--------- packages/live-share-canvas/package.json | 6 +- packages/live-share-media/package.json | 6 +- packages/live-share-react/package.json | 16 +-- packages/live-share-turbo/package.json | 6 +- packages/live-share/package.json | 2 +- .../javascript/01.dice-roller/package.json | 2 +- .../javascript/02.react-video/package.json | 4 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 8 +- .../05.dice-roller-turbo/package.json | 4 +- .../21.react-media-template/package.json | 6 +- .../22.react-agile-poker/package.json | 2 +- .../23.react-live-canvas/package.json | 4 +- .../typescript/01.dice-roller/package.json | 2 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 8 +- .../05.dice-roller-turbo/package.json | 4 +- .../06.presence-avatars/package.json | 8 +- .../07.countdown-timer/package.json | 8 +- samples/typescript/08.3d-model/package.json | 8 +- .../21.react-media-template/package.json | 6 +- .../31.live-canvas-tests/package.json | 4 +- 24 files changed, 124 insertions(+), 124 deletions(-) diff --git a/internal/test-utils/package.json b/internal/test-utils/package.json index c4b4de4b5..d3b6c0c7d 100644 --- a/internal/test-utils/package.json +++ b/internal/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@live-share-private/test-utils", - "version": "2.0.0-internal.2", + "version": "2.0.0-internal.3", "description": "testing utils for live share", "repository": { "type": "git", diff --git a/package-lock.json b/package-lock.json index 9fbe1239d..b669c3ffa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ }, "internal/test-utils": { "name": "@live-share-private/test-utils", - "version": "2.0.0-internal.2", + "version": "2.0.0-internal.3", "license": "MIT", "dependencies": { "@fluid-experimental/attributor": "^2.0.0-rc.1", @@ -15209,7 +15209,7 @@ }, "packages/live-share": { "name": "@microsoft/live-share", - "version": "2.0.0-internal.2", + "version": "2.0.0-internal.3", "license": "SEE LICENSE IN LICENSE", "dependencies": { "uuid": "^9.0.0" @@ -15237,10 +15237,10 @@ }, "packages/live-share-canvas": { "name": "@microsoft/live-share-canvas", - "version": "2.0.0-internal.2", + "version": "2.0.0-internal.3", "license": "SEE LICENSE IN LICENSE", "devDependencies": { - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -15251,20 +15251,20 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, "packages/live-share-media": { "name": "@microsoft/live-share-media", - "version": "2.0.0-internal.2", + "version": "2.0.0-internal.3", "license": "SEE LICENSE IN LICENSE", "devDependencies": { "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@fluidframework/test-utils": "^2.0.0-rc.1", "@live-share-private/test-utils": "^2.0.0-internal.2", - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -15275,24 +15275,24 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, "packages/live-share-react": { "name": "@microsoft/live-share-react", - "version": "2.0.0-internal.2", + "version": "2.0.0-internal.3", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share-turbo": "2.0.0-internal.2", + "@microsoft/live-share-turbo": "2.0.0-internal.3", "url": "^0.11.0", "uuid": "^9.0.0" }, "devDependencies": { "@babel/core": "^7.21.8", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", @@ -15301,9 +15301,9 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal", "react": "^16.8.0 || ^17 || ^18", "react-dom": "^16.8.0 || ^17 || ^18" @@ -15311,14 +15311,14 @@ }, "packages/live-share-turbo": { "name": "@microsoft/live-share-turbo", - "version": "2.0.0-internal.2", + "version": "2.0.0-internal.3", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@fluidframework/register-collection": "^2.0.0-rc.1" }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -15333,7 +15333,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, @@ -15343,7 +15343,7 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -15365,8 +15365,8 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", @@ -15417,8 +15417,8 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -15440,10 +15440,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", - "@microsoft/live-share-react": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share-react": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -15479,8 +15479,8 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-turbo": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-turbo": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -15502,9 +15502,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -15543,7 +15543,7 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "prop-types": "^15.8.1", @@ -15576,8 +15576,8 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "react": "^18.2.0", @@ -15609,7 +15609,7 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -15628,8 +15628,8 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -15651,10 +15651,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", - "@microsoft/live-share-react": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share-react": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -15690,8 +15690,8 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-turbo": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-turbo": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -15713,10 +15713,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", - "@microsoft/live-share-react": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share-react": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -15755,10 +15755,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", - "@microsoft/live-share-react": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share-react": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -15799,10 +15799,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", - "@microsoft/live-share-react": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share-react": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -15844,9 +15844,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -16277,8 +16277,8 @@ "license": "SEE LICENSE IN LICENSE", "dependencies": { "@fluidframework/azure-client": "^2.0.0-rc.1", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { diff --git a/packages/live-share-canvas/package.json b/packages/live-share-canvas/package.json index 610756149..85791808d 100644 --- a/packages/live-share-canvas/package.json +++ b/packages/live-share-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-canvas", - "version": "2.0.0-internal.2", + "version": "2.0.0-internal.3", "description": "Live Share extension library for collaborative inking.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -14,7 +14,7 @@ "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test" }, "devDependencies": { - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -25,7 +25,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { diff --git a/packages/live-share-media/package.json b/packages/live-share-media/package.json index f4fc69c7b..4f6717f9d 100644 --- a/packages/live-share-media/package.json +++ b/packages/live-share-media/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-media", - "version": "2.0.0-internal.2", + "version": "2.0.0-internal.3", "description": "Live Share classes that synchronize media playback across clients.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -15,7 +15,7 @@ "test:race": "node ./../live-share/test-for-race-conditions.js" }, "devDependencies": { - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@fluidframework/test-utils": "^2.0.0-rc.1", @@ -30,7 +30,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { diff --git a/packages/live-share-react/package.json b/packages/live-share-react/package.json index 403a3bc67..c280cc80f 100644 --- a/packages/live-share-react/package.json +++ b/packages/live-share-react/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-react", - "version": "2.0.0-internal.2", + "version": "2.0.0-internal.3", "description": "Build collaborative React apps using Microsoft's Fluid & Live Share frameworks with ease.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -12,15 +12,15 @@ "typecheck": "tsc" }, "dependencies": { - "@microsoft/live-share-turbo": "2.0.0-internal.2", + "@microsoft/live-share-turbo": "2.0.0-internal.3", "url": "^0.11.0", "uuid": "^9.0.0" }, "devDependencies": { "@babel/core": "^7.21.8", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", @@ -29,9 +29,9 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal", "react": "^16.8.0 || ^17 || ^18", "react-dom": "^16.8.0 || ^17 || ^18" diff --git a/packages/live-share-turbo/package.json b/packages/live-share-turbo/package.json index 9b24f358a..58be3373b 100644 --- a/packages/live-share-turbo/package.json +++ b/packages/live-share-turbo/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-turbo", - "version": "2.0.0-internal.2", + "version": "2.0.0-internal.3", "description": "Alternative & lightweight way to build collaborative apps using Microsoft's Fluid Framework & Live Share.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -21,7 +21,7 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -36,7 +36,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { diff --git a/packages/live-share/package.json b/packages/live-share/package.json index 5bbee8040..9e8923cac 100644 --- a/packages/live-share/package.json +++ b/packages/live-share/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share", - "version": "2.0.0-internal.2", + "version": "2.0.0-internal.3", "description": "Building collaborative experiences for Microsoft Teams and M365 using Fluid.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", diff --git a/samples/javascript/01.dice-roller/package.json b/samples/javascript/01.dice-roller/package.json index e72a36825..64986c8a6 100644 --- a/samples/javascript/01.dice-roller/package.json +++ b/samples/javascript/01.dice-roller/package.json @@ -18,7 +18,7 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/javascript/02.react-video/package.json b/samples/javascript/02.react-video/package.json index ad81fea72..2f5ccfd7e 100644 --- a/samples/javascript/02.react-video/package.json +++ b/samples/javascript/02.react-video/package.json @@ -10,8 +10,8 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", diff --git a/samples/javascript/03.live-canvas-demo/package.json b/samples/javascript/03.live-canvas-demo/package.json index 5748c1f33..445d22c0b 100644 --- a/samples/javascript/03.live-canvas-demo/package.json +++ b/samples/javascript/03.live-canvas-demo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/javascript/04.live-share-react/package.json b/samples/javascript/04.live-share-react/package.json index 3941362b3..10a28f501 100644 --- a/samples/javascript/04.live-share-react/package.json +++ b/samples/javascript/04.live-share-react/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-react": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-react": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/javascript/05.dice-roller-turbo/package.json b/samples/javascript/05.dice-roller-turbo/package.json index f1ab9136d..b93a26589 100644 --- a/samples/javascript/05.dice-roller-turbo/package.json +++ b/samples/javascript/05.dice-roller-turbo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-turbo": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-turbo": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/javascript/21.react-media-template/package.json b/samples/javascript/21.react-media-template/package.json index b25b95b50..ff254ecd8 100644 --- a/samples/javascript/21.react-media-template/package.json +++ b/samples/javascript/21.react-media-template/package.json @@ -8,9 +8,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/javascript/22.react-agile-poker/package.json b/samples/javascript/22.react-agile-poker/package.json index 40cf1943e..a1b403382 100644 --- a/samples/javascript/22.react-agile-poker/package.json +++ b/samples/javascript/22.react-agile-poker/package.json @@ -8,7 +8,7 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "prop-types": "^15.8.1", diff --git a/samples/javascript/23.react-live-canvas/package.json b/samples/javascript/23.react-live-canvas/package.json index c57e1a549..d0b3c4f37 100644 --- a/samples/javascript/23.react-live-canvas/package.json +++ b/samples/javascript/23.react-live-canvas/package.json @@ -5,8 +5,8 @@ "author": "Microsoft", "license": "MIT", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "react": "^18.2.0", diff --git a/samples/typescript/01.dice-roller/package.json b/samples/typescript/01.dice-roller/package.json index 9aa39bae4..caeeeeca0 100644 --- a/samples/typescript/01.dice-roller/package.json +++ b/samples/typescript/01.dice-roller/package.json @@ -18,7 +18,7 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/typescript/03.live-canvas-demo/package.json b/samples/typescript/03.live-canvas-demo/package.json index 8d8ef0c67..466b2d97f 100644 --- a/samples/typescript/03.live-canvas-demo/package.json +++ b/samples/typescript/03.live-canvas-demo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/typescript/04.live-share-react/package.json b/samples/typescript/04.live-share-react/package.json index 2728b1f6f..d6d90707a 100644 --- a/samples/typescript/04.live-share-react/package.json +++ b/samples/typescript/04.live-share-react/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-react": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-react": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/05.dice-roller-turbo/package.json b/samples/typescript/05.dice-roller-turbo/package.json index 808f7edda..745930b30 100644 --- a/samples/typescript/05.dice-roller-turbo/package.json +++ b/samples/typescript/05.dice-roller-turbo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-turbo": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-turbo": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/typescript/06.presence-avatars/package.json b/samples/typescript/06.presence-avatars/package.json index 605fa3400..73672b8eb 100644 --- a/samples/typescript/06.presence-avatars/package.json +++ b/samples/typescript/06.presence-avatars/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-react": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-react": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/07.countdown-timer/package.json b/samples/typescript/07.countdown-timer/package.json index 860bb2763..9d7736752 100644 --- a/samples/typescript/07.countdown-timer/package.json +++ b/samples/typescript/07.countdown-timer/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-react": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-react": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/08.3d-model/package.json b/samples/typescript/08.3d-model/package.json index 627d2fdd0..cf871a53f 100644 --- a/samples/typescript/08.3d-model/package.json +++ b/samples/typescript/08.3d-model/package.json @@ -10,10 +10,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", - "@microsoft/live-share-react": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share-react": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/21.react-media-template/package.json b/samples/typescript/21.react-media-template/package.json index 92d2d8302..cd42beac2 100644 --- a/samples/typescript/21.react-media-template/package.json +++ b/samples/typescript/21.react-media-template/package.json @@ -8,9 +8,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", - "@microsoft/live-share-media": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share-media": "2.0.0-internal.3", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/31.live-canvas-tests/package.json b/samples/typescript/31.live-canvas-tests/package.json index 27f834f47..b711fbe86 100644 --- a/samples/typescript/31.live-canvas-tests/package.json +++ b/samples/typescript/31.live-canvas-tests/package.json @@ -17,8 +17,8 @@ }, "dependencies": { "@fluidframework/azure-client": "^2.0.0-rc.1", - "@microsoft/live-share": "2.0.0-internal.2", - "@microsoft/live-share-canvas": "2.0.0-internal.2", + "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share-canvas": "2.0.0-internal.3", "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { From 887393c09e8f74e4786a7244f87864bc245c9b51 Mon Sep 17 00:00:00 2001 From: Ryan Bliss Date: Thu, 28 Mar 2024 11:04:59 -0700 Subject: [PATCH 07/40] remove NodeJS.Timeout types for node compatibility --- packages/live-share-turbo/src/internals/debounce.ts | 2 +- packages/live-share/src/internals/ContainerSynchronizer.ts | 2 +- packages/live-share/src/internals/ThrottledEventQueue.ts | 2 +- packages/live-share/src/internals/utils.ts | 2 +- samples/typescript/08.3d-model/src/hooks/useSharingStatus.tsx | 2 +- .../src/teams-js-hooks/useSharingStatus.ts | 2 +- .../21.react-media-template/src/utils/AzureMediaPlayer.ts | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/live-share-turbo/src/internals/debounce.ts b/packages/live-share-turbo/src/internals/debounce.ts index c2ef38033..4db2cc7a7 100644 --- a/packages/live-share-turbo/src/internals/debounce.ts +++ b/packages/live-share-turbo/src/internals/debounce.ts @@ -7,7 +7,7 @@ export function debounce( fn: (...args: any[]) => R, ms: number ): [(...args: any[]) => Promise, () => void] { - let timer: NodeJS.Timeout; + let timer: any; const debouncedFunc = (...args: any[]): Promise => new Promise((resolve) => { diff --git a/packages/live-share/src/internals/ContainerSynchronizer.ts b/packages/live-share/src/internals/ContainerSynchronizer.ts index 04b150cd4..74b3bf6fb 100644 --- a/packages/live-share/src/internals/ContainerSynchronizer.ts +++ b/packages/live-share/src/internals/ContainerSynchronizer.ts @@ -21,7 +21,7 @@ export class ContainerSynchronizer { private _throttledEventsQueue: ThrottledEventQueue = new ThrottledEventQueue(this); private _connectedKeys: string[] = []; - private _hTimer: NodeJS.Timeout | undefined; + private _hTimer?: any; private _connectSentForClientId?: string; private _onBoundConnectedListener?: (clientId: string) => Promise; private _onReceiveObjectUpdateListener?: ( diff --git a/packages/live-share/src/internals/ThrottledEventQueue.ts b/packages/live-share/src/internals/ThrottledEventQueue.ts index 145c90ce9..7b7c05710 100644 --- a/packages/live-share/src/internals/ThrottledEventQueue.ts +++ b/packages/live-share/src/internals/ThrottledEventQueue.ts @@ -17,7 +17,7 @@ export class ThrottledEventQueue { private _events: StateSyncEventContent = {}; private _throttleIntervalMilli: number; private _deferred: Deferred> | undefined; - private _hTimer: NodeJS.Timeout | undefined; + private _hTimer?: any; /** * @hidden * Queue for grouping multiple signal events together. diff --git a/packages/live-share/src/internals/utils.ts b/packages/live-share/src/internals/utils.ts index 71c1ce182..903e9f318 100644 --- a/packages/live-share/src/internals/utils.ts +++ b/packages/live-share/src/internals/utils.ts @@ -118,7 +118,7 @@ export function timeoutRequest( lateFinish?: () => void ): Promise { return new Promise(async (resolve, reject) => { - let hTimer: NodeJS.Timeout | null = setTimeout(() => { + let hTimer: any = setTimeout(() => { reject(new TimeoutError()); hTimer = null; }, timeout); diff --git a/samples/typescript/08.3d-model/src/hooks/useSharingStatus.tsx b/samples/typescript/08.3d-model/src/hooks/useSharingStatus.tsx index bd13db498..489bf433c 100644 --- a/samples/typescript/08.3d-model/src/hooks/useSharingStatus.tsx +++ b/samples/typescript/08.3d-model/src/hooks/useSharingStatus.tsx @@ -22,7 +22,7 @@ export const useSharingStatus = ( }; } ); - const intervalIdRef = useRef(); + const intervalIdRef = useRef(); const context = useTeamsContext(); useEffect(() => { diff --git a/samples/typescript/21.react-media-template/src/teams-js-hooks/useSharingStatus.ts b/samples/typescript/21.react-media-template/src/teams-js-hooks/useSharingStatus.ts index 8c89ab45d..dd54dfaac 100644 --- a/samples/typescript/21.react-media-template/src/teams-js-hooks/useSharingStatus.ts +++ b/samples/typescript/21.react-media-template/src/teams-js-hooks/useSharingStatus.ts @@ -3,7 +3,7 @@ import { useEffect, useState, useRef } from "react"; export const useSharingStatus = (context?: microsoftTeams.app.Context) => { const [sharingActive, setSharingActive] = useState(false); - const intervalIdRef = useRef(); + const intervalIdRef = useRef(); useEffect(() => { if (!intervalIdRef.current) { diff --git a/samples/typescript/21.react-media-template/src/utils/AzureMediaPlayer.ts b/samples/typescript/21.react-media-template/src/utils/AzureMediaPlayer.ts index 1bb980ccd..4f031f21b 100644 --- a/samples/typescript/21.react-media-template/src/utils/AzureMediaPlayer.ts +++ b/samples/typescript/21.react-media-template/src/utils/AzureMediaPlayer.ts @@ -78,7 +78,7 @@ export class AzureMediaPlayer extends EventTarget { _options; // Position tracking - _positionTimer: NodeJS.Timeout | undefined; + _positionTimer?: any; // Track state _track = emptyTrackState(""); From e424043305d51f424a21f9ab6f504e76354b5aaf Mon Sep 17 00:00:00 2001 From: Ryan Bliss Date: Thu, 28 Mar 2024 12:18:56 -0700 Subject: [PATCH 08/40] Replaced EventEmitter with TypedEventEmitter --- .../src/core/InkingManager.ts | 60 ++++++++++++++++++- .../src/LiveMediaSessionCoordinator.ts | 18 +++++- .../src/MediaPlayerSynchronizer.ts | 19 +++++- .../src/internals/GroupCoordinatorState.ts | 6 +- .../src/internals/GroupPlaybackRate.ts | 6 +- .../src/internals/GroupPlaybackTrack.ts | 6 +- .../src/internals/GroupPlaybackTrackData.ts | 6 +- .../src/internals/GroupTransportState.ts | 6 +- .../src/internals/interfaces.ts | 14 +++++ packages/live-share/src/LiveEventScope.ts | 26 +++++++- 10 files changed, 145 insertions(+), 22 deletions(-) diff --git a/packages/live-share-canvas/src/core/InkingManager.ts b/packages/live-share-canvas/src/core/InkingManager.ts index 0a576c90b..7685fc2e4 100644 --- a/packages/live-share-canvas/src/core/InkingManager.ts +++ b/packages/live-share-canvas/src/core/InkingManager.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { EventEmitter } from "events"; +import { TypedEventEmitter } from "@fluid-internal/client-utils"; import { CanvasReferencePoint, InkingCanvas, @@ -51,6 +51,7 @@ import { computeQuadPath, renderQuadPathToSVG, } from "./internals"; +import { IEvent } from "@fluidframework/common-definitions"; /** * Defines available inking tools. @@ -412,10 +413,65 @@ class WetLineStroke extends WetStroke { } } +/** + * Events emitted by the `InkingManager` class. + */ +export interface IInkingManagerEvents extends IEvent { + /** + * Event listener for when the user's pointer is moved over the canvas element + * @param event update + * @param listener listener function + * @param listener.event the `IPointerMovedEventArgs` event + */ + ( + event: "PointerMoved", + listener: (event: IPointerMovedEventArgs) => void + ): void; + /** + * Event listener for when strokes are added to the canvas element + * @param event update + * @param listener listener function + * @param listener.strokes list of strokes that were added + */ + (event: "StrokesAdded", listener: (strokes: IStroke[]) => void): void; + /** + * Event listener for when strokes are removed from the canvas element + * @param event update + * @param listener listener function + * @param listener.strokeIds list of stroke ids that were removed + */ + (event: "StrokesRemoved", listener: (strokeIds: string[]) => void): void; + /** + * Event listener for when all strokes are cleared from the canvas element. + * @see InkingManager.clear + * @param event update + * @param listener listener function + */ + (event: "Clear", listener: () => void): void; + /** + * Event listener for when a stroke begins. + * @param event update + * @param listener listener function + * @param listener.event event object with information about the stroke that begun + */ + ( + event: "BeginStroke", + listener: (event: IBeginStrokeEventArgs) => void + ): void; + /** + * Event listener for when points are added to a stroke. + * Also called when the stroke ends. + * @param event update + * @param listener listener function + * @param listener.event event object with information about the added points + */ + (event: "AddPoints", listener: (event: IAddPointsEventArgs) => void): void; +} + /** * Handles user interaction with a canvas, and manages the rendering of wet and dry strokes. */ -export class InkingManager extends EventEmitter { +export class InkingManager extends TypedEventEmitter { /** * Configures the amount of time to wait before sending a pointer moved event. This delay * allows for the elimination of fast, consecutive pointer move events, and only send the diff --git a/packages/live-share-media/src/LiveMediaSessionCoordinator.ts b/packages/live-share-media/src/LiveMediaSessionCoordinator.ts index e26e68b6c..09aeaef1e 100644 --- a/packages/live-share-media/src/LiveMediaSessionCoordinator.ts +++ b/packages/live-share-media/src/LiveMediaSessionCoordinator.ts @@ -36,8 +36,9 @@ import { IRateChangeCommandEvent, } from "./internals"; import { LiveMediaSessionCoordinatorSuspension } from "./LiveMediaSessionCoordinatorSuspension"; -import EventEmitter from "events"; import { isErrorLike } from "@microsoft/live-share/bin/internals"; +import { TypedEventEmitter } from "@fluid-internal/client-utils"; +import { IEvent } from "@fluidframework/common-definitions"; /** * Most recent state of the media session. @@ -67,12 +68,25 @@ export interface IMediaPlayerState { positionState?: MediaPositionState; } +/** + * @hidden + */ +export interface ILiveMediaSessionCoordinatorEvents extends IEvent { + /** + * Event listener for events emitted + * @param event update + * @param listener listener function + * @param listener.event the event instance + */ + (event: string, listener: (event: any) => void): void; +} + /** * The `LiveMediaSessionCoordinator` tracks the playback & position state of all other * clients being synchronized with. It is responsible for keeping the local media player * in sync with the group. */ -export class LiveMediaSessionCoordinator extends EventEmitter { +export class LiveMediaSessionCoordinator extends TypedEventEmitter { private readonly _id: string; private readonly _runtime: IRuntimeSignaler; private readonly _liveRuntime: LiveShareRuntime; diff --git a/packages/live-share-media/src/MediaPlayerSynchronizer.ts b/packages/live-share-media/src/MediaPlayerSynchronizer.ts index 4c042c398..116ae0900 100644 --- a/packages/live-share-media/src/MediaPlayerSynchronizer.ts +++ b/packages/live-share-media/src/MediaPlayerSynchronizer.ts @@ -7,7 +7,6 @@ import { ILiveEvent, IRuntimeSignaler, } from "@microsoft/live-share"; -import EventEmitter from "events"; import { ExtendedMediaSessionAction, ExtendedMediaSessionPlaybackState, @@ -22,6 +21,8 @@ import { LiveMediaSession } from "./LiveMediaSession"; import { IMediaPlayer } from "./IMediaPlayer"; import { ITriggerActionEvent, TelemetryEvents } from "./internals"; import { waitUntilConnected } from "@microsoft/live-share/bin/internals"; +import { TypedEventEmitter } from "@fluid-internal/client-utils"; +import { IEvent } from "@fluidframework/common-definitions"; /** * Event data returned by `MediaPlayerSynchronizer` object. @@ -49,6 +50,20 @@ export enum MediaPlayerSynchronizerEvents { useraction = "useraction", } +/** + * @hidden + * Emitted events from the `MediaPlayerSynchronizer` class. + */ +export interface IMediaPlayerSynchronizerEvents extends IEvent { + /** + * Event listener for events emitted + * @param event update + * @param listener listener function + * @param listener.event the event instance + */ + (event: string, listener: (event: any) => void): void; +} + /** * Synchronizes a local HTML Media Element with a group of remote HTML Media Elements. * @@ -58,7 +73,7 @@ export enum MediaPlayerSynchronizerEvents { * to the local player. When the group session is joined the commands will be broadcast to the * group in addition to being applied to the local player. */ -export class MediaPlayerSynchronizer extends EventEmitter { +export class MediaPlayerSynchronizer extends TypedEventEmitter { private static SESSION_ACTIONS: ExtendedMediaSessionAction[] = [ "play", "pause", diff --git a/packages/live-share-media/src/internals/GroupCoordinatorState.ts b/packages/live-share-media/src/internals/GroupCoordinatorState.ts index bfa803460..8b4e37210 100644 --- a/packages/live-share-media/src/internals/GroupCoordinatorState.ts +++ b/packages/live-share-media/src/internals/GroupCoordinatorState.ts @@ -11,7 +11,6 @@ import { LiveShareRuntime, IEvent, } from "@microsoft/live-share"; -import EventEmitter from "events"; import { ExtendedMediaMetadata, CoordinationWaitPoint, @@ -50,6 +49,9 @@ import { IPlaybackRateChangeEvent, PlaybackRateEvents, } from "./GroupPlaybackRate"; +import { TypedEventEmitter } from "@fluid-internal/client-utils"; +import { IEvent as FluidIEvent } from "@fluidframework/common-definitions"; +import { IGenericTypedEvents } from "./interfaces"; /** * @hidden @@ -113,7 +115,7 @@ export enum GroupCoordinatorStateEvents { /** * @hidden */ -export class GroupCoordinatorState extends EventEmitter { +export class GroupCoordinatorState extends TypedEventEmitter { private readonly _runtime: IRuntimeSignaler; private readonly _liveRuntime: LiveShareRuntime; private readonly _logger: LiveTelemetryLogger; diff --git a/packages/live-share-media/src/internals/GroupPlaybackRate.ts b/packages/live-share-media/src/internals/GroupPlaybackRate.ts index fd9781168..f6bbcec4d 100644 --- a/packages/live-share-media/src/internals/GroupPlaybackRate.ts +++ b/packages/live-share-media/src/internals/GroupPlaybackRate.ts @@ -3,9 +3,9 @@ * Licensed under the Microsoft Live Share SDK License. */ -import EventEmitter from "events"; +import { TypedEventEmitter } from "@fluid-internal/client-utils"; import { ExtendedMediaSessionActionSource } from "../MediaSessionExtensions"; -import { IGroupStateEvent } from "./interfaces"; +import { IGroupStateEvent, IGenericTypedEvents } from "./interfaces"; /** * @hidden @@ -33,7 +33,7 @@ export interface IPlaybackRateChangeEvent extends IGroupStateEvent { /** * @hidden */ -export class GroupPlaybackRate extends EventEmitter { +export class GroupPlaybackRate extends TypedEventEmitter { private _current: IPlaybackRate; constructor() { diff --git a/packages/live-share-media/src/internals/GroupPlaybackTrack.ts b/packages/live-share-media/src/internals/GroupPlaybackTrack.ts index 7e4f41ddd..f4dcc5550 100644 --- a/packages/live-share-media/src/internals/GroupPlaybackTrack.ts +++ b/packages/live-share-media/src/internals/GroupPlaybackTrack.ts @@ -3,14 +3,14 @@ * Licensed under the Microsoft Live Share SDK License. */ -import EventEmitter from "events"; import { IMediaPlayerState } from "../LiveMediaSessionCoordinator"; import { CoordinationWaitPoint, ExtendedMediaMetadata, ExtendedMediaSessionActionSource, } from "../MediaSessionExtensions"; -import { IGroupStateEvent } from "./interfaces"; +import { IGenericTypedEvents, IGroupStateEvent } from "./interfaces"; +import { TypedEventEmitter } from "@fluid-internal/client-utils"; /** * @hidden @@ -39,7 +39,7 @@ export interface IPlaybackTrackChangeEvent extends IGroupStateEvent { /** * @hidden */ -export class GroupPlaybackTrack extends EventEmitter { +export class GroupPlaybackTrack extends TypedEventEmitter { private readonly _getMediaPlayerState: () => IMediaPlayerState; private _current: IPlaybackTrack; diff --git a/packages/live-share-media/src/internals/GroupPlaybackTrackData.ts b/packages/live-share-media/src/internals/GroupPlaybackTrackData.ts index 6098b6c0b..2bc181d06 100644 --- a/packages/live-share-media/src/internals/GroupPlaybackTrackData.ts +++ b/packages/live-share-media/src/internals/GroupPlaybackTrackData.ts @@ -3,13 +3,13 @@ * Licensed under the Microsoft Live Share SDK License. */ -import EventEmitter from "events"; import { GroupPlaybackTrack, GroupPlaybackTrackEvents, } from "./GroupPlaybackTrack"; import { ExtendedMediaSessionActionSource } from "../MediaSessionExtensions"; -import { IGroupStateEvent } from "./interfaces"; +import { IGenericTypedEvents, IGroupStateEvent } from "./interfaces"; +import { TypedEventEmitter } from "@fluid-internal/client-utils"; /** * @hidden @@ -37,7 +37,7 @@ export interface IPlaybackTrackDataChangeEvent extends IGroupStateEvent { /** * @hidden */ -export class GroupPlaybackTrackData extends EventEmitter { +export class GroupPlaybackTrackData extends TypedEventEmitter { private _track: GroupPlaybackTrack; private _current: IPlaybackTrackData; diff --git a/packages/live-share-media/src/internals/GroupTransportState.ts b/packages/live-share-media/src/internals/GroupTransportState.ts index 0a35f46dd..ec682d9c4 100644 --- a/packages/live-share-media/src/internals/GroupTransportState.ts +++ b/packages/live-share-media/src/internals/GroupTransportState.ts @@ -4,7 +4,7 @@ */ import { LiveShareRuntime } from "@microsoft/live-share"; -import EventEmitter from "events"; +import { TypedEventEmitter } from "@fluid-internal/client-utils"; import { IMediaPlayerState } from "../LiveMediaSessionCoordinator"; import { ExtendedMediaSessionPlaybackState, @@ -15,7 +15,7 @@ import { GroupPlaybackTrack, GroupPlaybackTrackEvents, } from "./GroupPlaybackTrack"; -import { IGroupStateEvent } from "./interfaces"; +import { IGenericTypedEvents, IGroupStateEvent } from "./interfaces"; import { GroupPlaybackRate } from "./GroupPlaybackRate"; /** @@ -46,7 +46,7 @@ export interface ITransportStateChangeEvent extends IGroupStateEvent { /** * @hidden */ -export class GroupTransportState extends EventEmitter { +export class GroupTransportState extends TypedEventEmitter { private readonly _getMediaPlayerState: () => IMediaPlayerState; private _track: GroupPlaybackTrack; private _playbackRate: GroupPlaybackRate; diff --git a/packages/live-share-media/src/internals/interfaces.ts b/packages/live-share-media/src/internals/interfaces.ts index b140cd8f0..254a34efa 100644 --- a/packages/live-share-media/src/internals/interfaces.ts +++ b/packages/live-share-media/src/internals/interfaces.ts @@ -1,4 +1,5 @@ import { IEvent } from "@microsoft/live-share"; +import { IEvent as IFluidEvent } from "@fluidframework/common-definitions"; import { ExtendedMediaSessionActionSource } from "../MediaSessionExtensions"; /** @@ -8,3 +9,16 @@ export interface IGroupStateEvent extends IEvent { clientId: string; source: ExtendedMediaSessionActionSource; } + +/** + * @hidden + */ +export interface IGenericTypedEvents extends IFluidEvent { + /** + * Event listener for events emitted + * @param event update + * @param listener listener function + * @param listener.event the event instance + */ + (event: string, listener: (event: any) => void): void; +} diff --git a/packages/live-share/src/LiveEventScope.ts b/packages/live-share/src/LiveEventScope.ts index b2285c462..b0a0bddc3 100644 --- a/packages/live-share/src/LiveEventScope.ts +++ b/packages/live-share/src/LiveEventScope.ts @@ -3,7 +3,6 @@ * Licensed under the Microsoft Live Share SDK License. */ -import EventEmitter from "events"; import { IErrorEvent } from "@fluidframework/core-interfaces"; import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils"; import { TypedEventEmitter } from "@fluid-internal/client-utils"; @@ -11,6 +10,7 @@ import { IInboundSignalMessage } from "@fluidframework/runtime-definitions"; import { ILiveEvent, UserMeetingRole } from "./interfaces"; import { LiveShareRuntime } from "./LiveShareRuntime"; import { isILiveEvent, waitUntilConnected } from "./internals"; +import { IEvent } from "@fluidframework/common-definitions"; /** * Live event callback. @@ -40,6 +40,27 @@ export interface IRuntimeSignaler { submitSignal(type: string, content: any): void; } +/** + * @hidden + */ +interface ILiveEventInternalEmitterEvents extends IEvent { + /** + * Event listener for error events + * @param event update + * @param listener listener function + * @param listener.error the error instance + */ + (event: "error", listener: (error: any) => void): void; + /** + * Event listener for events emitted through `LiveEventScope` + * @param event update + * @param listener listener function + * @param listener.event the event instance + * @param listener.local whether the event was initiated from the local client + */ + (event: string, listener: (event: any, local: boolean) => void): void; +} + /** * Object responsible for sending and receiving live share events. * @@ -55,7 +76,8 @@ export interface IRuntimeSignaler { * events. */ export class LiveEventScope extends TypedEventEmitter { - private readonly emitter = new EventEmitter(); + private readonly emitter = + new TypedEventEmitter(); private readonly _runtime: IRuntimeSignaler; private _allowedRoles: UserMeetingRole[]; From 0066390583b98e9e678ebeb49265e55b476dff93 Mon Sep 17 00:00:00 2001 From: Ryan Bliss Date: Thu, 28 Mar 2024 12:26:56 -0700 Subject: [PATCH 09/40] updated versions --- internal/test-utils/package.json | 2 +- package-lock.json | 124 +++++++++--------- packages/live-share-canvas/package.json | 6 +- packages/live-share-media/package.json | 6 +- packages/live-share-react/package.json | 16 +-- packages/live-share-turbo/package.json | 6 +- packages/live-share/package.json | 2 +- .../javascript/01.dice-roller/package.json | 2 +- .../javascript/02.react-video/package.json | 4 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 8 +- .../05.dice-roller-turbo/package.json | 4 +- .../21.react-media-template/package.json | 6 +- .../22.react-agile-poker/package.json | 2 +- .../23.react-live-canvas/package.json | 4 +- .../typescript/01.dice-roller/package.json | 2 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 8 +- .../05.dice-roller-turbo/package.json | 4 +- .../06.presence-avatars/package.json | 8 +- .../07.countdown-timer/package.json | 8 +- samples/typescript/08.3d-model/package.json | 8 +- .../21.react-media-template/package.json | 6 +- .../31.live-canvas-tests/package.json | 4 +- 24 files changed, 124 insertions(+), 124 deletions(-) diff --git a/internal/test-utils/package.json b/internal/test-utils/package.json index d3b6c0c7d..1496a8293 100644 --- a/internal/test-utils/package.json +++ b/internal/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@live-share-private/test-utils", - "version": "2.0.0-internal.3", + "version": "2.0.0-internal.4", "description": "testing utils for live share", "repository": { "type": "git", diff --git a/package-lock.json b/package-lock.json index b669c3ffa..11030992a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ }, "internal/test-utils": { "name": "@live-share-private/test-utils", - "version": "2.0.0-internal.3", + "version": "2.0.0-internal.4", "license": "MIT", "dependencies": { "@fluid-experimental/attributor": "^2.0.0-rc.1", @@ -15209,7 +15209,7 @@ }, "packages/live-share": { "name": "@microsoft/live-share", - "version": "2.0.0-internal.3", + "version": "2.0.0-internal.4", "license": "SEE LICENSE IN LICENSE", "dependencies": { "uuid": "^9.0.0" @@ -15237,10 +15237,10 @@ }, "packages/live-share-canvas": { "name": "@microsoft/live-share-canvas", - "version": "2.0.0-internal.3", + "version": "2.0.0-internal.4", "license": "SEE LICENSE IN LICENSE", "devDependencies": { - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -15251,20 +15251,20 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, "packages/live-share-media": { "name": "@microsoft/live-share-media", - "version": "2.0.0-internal.3", + "version": "2.0.0-internal.4", "license": "SEE LICENSE IN LICENSE", "devDependencies": { "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@fluidframework/test-utils": "^2.0.0-rc.1", "@live-share-private/test-utils": "^2.0.0-internal.2", - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -15275,24 +15275,24 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, "packages/live-share-react": { "name": "@microsoft/live-share-react", - "version": "2.0.0-internal.3", + "version": "2.0.0-internal.4", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share-turbo": "2.0.0-internal.3", + "@microsoft/live-share-turbo": "2.0.0-internal.4", "url": "^0.11.0", "uuid": "^9.0.0" }, "devDependencies": { "@babel/core": "^7.21.8", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", @@ -15301,9 +15301,9 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal", "react": "^16.8.0 || ^17 || ^18", "react-dom": "^16.8.0 || ^17 || ^18" @@ -15311,14 +15311,14 @@ }, "packages/live-share-turbo": { "name": "@microsoft/live-share-turbo", - "version": "2.0.0-internal.3", + "version": "2.0.0-internal.4", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@fluidframework/register-collection": "^2.0.0-rc.1" }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -15333,7 +15333,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, @@ -15343,7 +15343,7 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -15365,8 +15365,8 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", @@ -15417,8 +15417,8 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -15440,10 +15440,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", - "@microsoft/live-share-react": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -15479,8 +15479,8 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-turbo": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-turbo": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -15502,9 +15502,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -15543,7 +15543,7 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "prop-types": "^15.8.1", @@ -15576,8 +15576,8 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "react": "^18.2.0", @@ -15609,7 +15609,7 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -15628,8 +15628,8 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -15651,10 +15651,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", - "@microsoft/live-share-react": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -15690,8 +15690,8 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-turbo": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-turbo": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, @@ -15713,10 +15713,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", - "@microsoft/live-share-react": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -15755,10 +15755,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", - "@microsoft/live-share-react": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -15799,10 +15799,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", - "@microsoft/live-share-react": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -15844,9 +15844,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", @@ -16277,8 +16277,8 @@ "license": "SEE LICENSE IN LICENSE", "dependencies": { "@fluidframework/azure-client": "^2.0.0-rc.1", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { diff --git a/packages/live-share-canvas/package.json b/packages/live-share-canvas/package.json index 85791808d..5cb9b1564 100644 --- a/packages/live-share-canvas/package.json +++ b/packages/live-share-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-canvas", - "version": "2.0.0-internal.3", + "version": "2.0.0-internal.4", "description": "Live Share extension library for collaborative inking.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -14,7 +14,7 @@ "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test" }, "devDependencies": { - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -25,7 +25,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { diff --git a/packages/live-share-media/package.json b/packages/live-share-media/package.json index 4f6717f9d..0e488296c 100644 --- a/packages/live-share-media/package.json +++ b/packages/live-share-media/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-media", - "version": "2.0.0-internal.3", + "version": "2.0.0-internal.4", "description": "Live Share classes that synchronize media playback across clients.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -15,7 +15,7 @@ "test:race": "node ./../live-share/test-for-race-conditions.js" }, "devDependencies": { - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", "@fluidframework/test-utils": "^2.0.0-rc.1", @@ -30,7 +30,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { diff --git a/packages/live-share-react/package.json b/packages/live-share-react/package.json index c280cc80f..a6a3e9b92 100644 --- a/packages/live-share-react/package.json +++ b/packages/live-share-react/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-react", - "version": "2.0.0-internal.3", + "version": "2.0.0-internal.4", "description": "Build collaborative React apps using Microsoft's Fluid & Live Share frameworks with ease.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -12,15 +12,15 @@ "typecheck": "tsc" }, "dependencies": { - "@microsoft/live-share-turbo": "2.0.0-internal.3", + "@microsoft/live-share-turbo": "2.0.0-internal.4", "url": "^0.11.0", "uuid": "^9.0.0" }, "devDependencies": { "@babel/core": "^7.21.8", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", @@ -29,9 +29,9 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal", "react": "^16.8.0 || ^17 || ^18", "react-dom": "^16.8.0 || ^17 || ^18" diff --git a/packages/live-share-turbo/package.json b/packages/live-share-turbo/package.json index 58be3373b..8c9446399 100644 --- a/packages/live-share-turbo/package.json +++ b/packages/live-share-turbo/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-turbo", - "version": "2.0.0-internal.3", + "version": "2.0.0-internal.4", "description": "Alternative & lightweight way to build collaborative apps using Microsoft's Fluid Framework & Live Share.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -21,7 +21,7 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -36,7 +36,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { diff --git a/packages/live-share/package.json b/packages/live-share/package.json index 9e8923cac..8640a7ca7 100644 --- a/packages/live-share/package.json +++ b/packages/live-share/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share", - "version": "2.0.0-internal.3", + "version": "2.0.0-internal.4", "description": "Building collaborative experiences for Microsoft Teams and M365 using Fluid.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", diff --git a/samples/javascript/01.dice-roller/package.json b/samples/javascript/01.dice-roller/package.json index 64986c8a6..4810485c3 100644 --- a/samples/javascript/01.dice-roller/package.json +++ b/samples/javascript/01.dice-roller/package.json @@ -18,7 +18,7 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/javascript/02.react-video/package.json b/samples/javascript/02.react-video/package.json index 2f5ccfd7e..22747a9b9 100644 --- a/samples/javascript/02.react-video/package.json +++ b/samples/javascript/02.react-video/package.json @@ -10,8 +10,8 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", diff --git a/samples/javascript/03.live-canvas-demo/package.json b/samples/javascript/03.live-canvas-demo/package.json index 445d22c0b..ae6a24d4e 100644 --- a/samples/javascript/03.live-canvas-demo/package.json +++ b/samples/javascript/03.live-canvas-demo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/javascript/04.live-share-react/package.json b/samples/javascript/04.live-share-react/package.json index 10a28f501..551718d8b 100644 --- a/samples/javascript/04.live-share-react/package.json +++ b/samples/javascript/04.live-share-react/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-react": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/javascript/05.dice-roller-turbo/package.json b/samples/javascript/05.dice-roller-turbo/package.json index b93a26589..9f04c848b 100644 --- a/samples/javascript/05.dice-roller-turbo/package.json +++ b/samples/javascript/05.dice-roller-turbo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-turbo": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-turbo": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/javascript/21.react-media-template/package.json b/samples/javascript/21.react-media-template/package.json index ff254ecd8..100c14b8f 100644 --- a/samples/javascript/21.react-media-template/package.json +++ b/samples/javascript/21.react-media-template/package.json @@ -8,9 +8,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/javascript/22.react-agile-poker/package.json b/samples/javascript/22.react-agile-poker/package.json index a1b403382..b1c37540d 100644 --- a/samples/javascript/22.react-agile-poker/package.json +++ b/samples/javascript/22.react-agile-poker/package.json @@ -8,7 +8,7 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "prop-types": "^15.8.1", diff --git a/samples/javascript/23.react-live-canvas/package.json b/samples/javascript/23.react-live-canvas/package.json index d0b3c4f37..d6ce42806 100644 --- a/samples/javascript/23.react-live-canvas/package.json +++ b/samples/javascript/23.react-live-canvas/package.json @@ -5,8 +5,8 @@ "author": "Microsoft", "license": "MIT", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "react": "^18.2.0", diff --git a/samples/typescript/01.dice-roller/package.json b/samples/typescript/01.dice-roller/package.json index caeeeeca0..f3a756665 100644 --- a/samples/typescript/01.dice-roller/package.json +++ b/samples/typescript/01.dice-roller/package.json @@ -18,7 +18,7 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/typescript/03.live-canvas-demo/package.json b/samples/typescript/03.live-canvas-demo/package.json index 466b2d97f..3b283511e 100644 --- a/samples/typescript/03.live-canvas-demo/package.json +++ b/samples/typescript/03.live-canvas-demo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/typescript/04.live-share-react/package.json b/samples/typescript/04.live-share-react/package.json index d6d90707a..435d9bbdc 100644 --- a/samples/typescript/04.live-share-react/package.json +++ b/samples/typescript/04.live-share-react/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-react": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/05.dice-roller-turbo/package.json b/samples/typescript/05.dice-roller-turbo/package.json index 745930b30..3e90d1300 100644 --- a/samples/typescript/05.dice-roller-turbo/package.json +++ b/samples/typescript/05.dice-roller-turbo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-turbo": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-turbo": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1" }, diff --git a/samples/typescript/06.presence-avatars/package.json b/samples/typescript/06.presence-avatars/package.json index 73672b8eb..8b475cfde 100644 --- a/samples/typescript/06.presence-avatars/package.json +++ b/samples/typescript/06.presence-avatars/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-react": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/07.countdown-timer/package.json b/samples/typescript/07.countdown-timer/package.json index 9d7736752..1ffb2ae8a 100644 --- a/samples/typescript/07.countdown-timer/package.json +++ b/samples/typescript/07.countdown-timer/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-react": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/08.3d-model/package.json b/samples/typescript/08.3d-model/package.json index cf871a53f..811090c78 100644 --- a/samples/typescript/08.3d-model/package.json +++ b/samples/typescript/08.3d-model/package.json @@ -10,10 +10,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", - "@microsoft/live-share-react": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/21.react-media-template/package.json b/samples/typescript/21.react-media-template/package.json index cd42beac2..eb996e5cd 100644 --- a/samples/typescript/21.react-media-template/package.json +++ b/samples/typescript/21.react-media-template/package.json @@ -8,9 +8,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", - "@microsoft/live-share-media": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.1", "lodash": "^4.17.21", diff --git a/samples/typescript/31.live-canvas-tests/package.json b/samples/typescript/31.live-canvas-tests/package.json index b711fbe86..e97772f71 100644 --- a/samples/typescript/31.live-canvas-tests/package.json +++ b/samples/typescript/31.live-canvas-tests/package.json @@ -17,8 +17,8 @@ }, "dependencies": { "@fluidframework/azure-client": "^2.0.0-rc.1", - "@microsoft/live-share": "2.0.0-internal.3", - "@microsoft/live-share-canvas": "2.0.0-internal.3", + "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share-canvas": "2.0.0-internal.4", "fluid-framework": "^2.0.0-rc.1" }, "devDependencies": { From f6651da69cd807863fdd54bda62e0f2e79f34a4d Mon Sep 17 00:00:00 2001 From: Ryan Bliss Date: Fri, 5 Apr 2024 10:56:48 -0700 Subject: [PATCH 10/40] Fixed `InkingManager` ES compatibility issues, `SharedMap` v2 clear() bug in `LiveCanvas`, and upgraded Fluid version (#775) --- ensure-packages-built.js | 60 +- internal/test-utils/package.json | 24 +- internal/test-utils/src/describeCompat.ts | 5 +- package-lock.json | 1747 ++++++++++------- packages/live-share-canvas/package.json | 2 +- .../src/core/InkingManager.ts | 14 +- .../live-share-canvas/src/core/LiveCanvas.ts | 3 +- packages/live-share-media/package.json | 8 +- packages/live-share-react/package.json | 2 +- packages/live-share-turbo/package.json | 6 +- .../live-share-turbo/src/FluidTurboClient.ts | 6 +- packages/live-share/package.json | 12 +- packages/live-share/src/LiveEventScope.ts | 25 +- .../live-share/src/LiveTelemetryLogger.ts | 53 +- .../live-share/src/internals/type-guards.ts | 13 + packages/live-share/src/internals/utils.ts | 41 + .../javascript/01.dice-roller/package.json | 4 +- .../javascript/02.react-video/package.json | 4 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 4 +- .../05.dice-roller-turbo/package.json | 4 +- .../21.react-media-template/package.json | 4 +- .../22.react-agile-poker/package.json | 4 +- .../23.react-live-canvas/package.json | 4 +- .../typescript/01.dice-roller/package.json | 4 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 4 +- .../05.dice-roller-turbo/package.json | 4 +- .../06.presence-avatars/package.json | 4 +- .../src/components/index.ts | 7 +- .../07.countdown-timer/package.json | 4 +- samples/typescript/08.3d-model/package.json | 4 +- .../21.react-media-template/package.json | 4 +- .../31.live-canvas-tests/package.json | 6 +- 34 files changed, 1238 insertions(+), 860 deletions(-) diff --git a/ensure-packages-built.js b/ensure-packages-built.js index b4bf47375..65a5a5cac 100644 --- a/ensure-packages-built.js +++ b/ensure-packages-built.js @@ -9,16 +9,18 @@ const fs = require("fs"); ensurePackagesBuilt(); /** * if packages are not built or if they are old builds then: - * + * * 1. run npm install from "packages/live-share-react". * live-share-react uses all other live-share packages as dependencies, hence will install all packages needed to build live-share packages. * 2. run npm run build:packages from root */ async function ensurePackagesBuilt() { const rootFolderPath = await getRootFolder(); - const currentGitHash = await getGitHash() + const currentGitHash = await getGitHash(); - const packagesNotBuilt = !fs.existsSync(`${rootFolderPath}/node_modules/@microsoft/live-share-react/bin`); + const packagesNotBuilt = !fs.existsSync( + `${rootFolderPath}/node_modules/@microsoft/live-share-react/bin` + ); const isOldBuild = currentGitHash !== getBuildData()?.lastGitHashBuilt; if (packagesNotBuilt || isOldBuild) { await npmInstallFromLiveShareReact(); @@ -26,10 +28,14 @@ async function ensurePackagesBuilt() { } async function getGitHash() { - const currentGitHash = childProcess.spawn("git", ["rev-parse", "HEAD"], { - shell: true, - cwd: process.cwd(), - }); + const currentGitHash = childProcess.spawn( + "git", + ["rev-parse", "HEAD"], + { + shell: true, + cwd: process.cwd(), + } + ); return new Promise((resolve, reject) => { currentGitHash.stdout.on("data", (data) => { const hash = data.toString().slice(0, -1); @@ -40,15 +46,19 @@ async function ensurePackagesBuilt() { reject(code); } }); - }) + }); } async function getRootFolder() { - const rootDir = childProcess.spawn("git", ["rev-parse", " --show-toplevel"], { - shell: true, - cwd: process.cwd(), - }); - + const rootDir = childProcess.spawn( + "git", + ["rev-parse", " --show-toplevel"], + { + shell: true, + cwd: process.cwd(), + } + ); + return new Promise((resolve, reject) => { rootDir.stdout.on("data", (data) => { const path = data.toString().slice(0, -1); @@ -59,7 +69,7 @@ async function ensurePackagesBuilt() { reject(code); } }); - }) + }); } // live-share-react uses all other live-share packages as dependencies @@ -70,7 +80,7 @@ async function ensurePackagesBuilt() { cwd: `${rootFolderPath}/packages/live-share-react`, stdio: "inherit", }); - + installProcess.on("close", (code) => { if (code == 0) { resolve(); @@ -78,16 +88,20 @@ async function ensurePackagesBuilt() { reject(code); } }); - }) + }); } function build() { - const buildProcess = childProcess.spawn("npm", ["run", "build:packages"], { - shell: true, - cwd: rootFolderPath, - stdio: "inherit", - }); - + const buildProcess = childProcess.spawn( + "npm", + ["run", "build:packages"], + { + shell: true, + cwd: rootFolderPath, + stdio: "inherit", + } + ); + buildProcess.on("close", (code) => { if (code === 0) { fs.writeFileSync( @@ -109,4 +123,4 @@ async function ensurePackagesBuilt() { return undefined; } } -} \ No newline at end of file +} diff --git a/internal/test-utils/package.json b/internal/test-utils/package.json index 1496a8293..4de085ecb 100644 --- a/internal/test-utils/package.json +++ b/internal/test-utils/package.json @@ -24,28 +24,28 @@ "tsc": "tsc" }, "dependencies": { - "@fluid-experimental/attributor": "^2.0.0-rc.1", - "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.1", - "@fluidframework/agent-scheduler": "^2.0.0-rc.1", + "@fluid-experimental/attributor": "^2.0.0-rc.2.0.0", + "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.2.0.0", + "@fluidframework/agent-scheduler": "^2.0.0-rc.2.0.0", "@fluidframework/aqueduct": "^2.0.0-rc.1.0.3", - "@fluidframework/cell": "^2.0.0-rc.1", + "@fluidframework/cell": "^2.0.0-rc.2.0.0", "@fluidframework/container-loader": "^2.0.0-rc.1.0.3", "@fluidframework/container-runtime": "^2.0.0-rc.1.0.4", - "@fluidframework/core-interfaces": "^2.0.0-rc.1", - "@fluidframework/core-utils": "^2.0.0-rc.1", - "@fluidframework/counter": "^2.0.0-rc.1", + "@fluidframework/core-interfaces": "^2.0.0-rc.2.0.0", + "@fluidframework/core-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/counter": "^2.0.0-rc.2.0.0", "@fluidframework/datastore-definitions": "^2.0.0-rc.1.0.4", - "@fluidframework/driver-definitions": "^2.0.0-rc.1", - "@fluidframework/local-driver": "^2.0.0-rc.1", + "@fluidframework/driver-definitions": "^2.0.0-rc.2.0.0", + "@fluidframework/local-driver": "^2.0.0-rc.2.0.0", "@fluidframework/map": "^2.0.0-rc.1.0.4", - "@fluidframework/matrix": "^2.0.0-rc.1", - "@fluidframework/ordered-collection": "^2.0.0-rc.1", + "@fluidframework/matrix": "^2.0.0-rc.2.0.0", + "@fluidframework/ordered-collection": "^2.0.0-rc.2.0.0", "@fluidframework/register-collection": "^2.0.0-rc.1.0.4", "@fluidframework/runtime-definitions": "^2.0.0-rc.1.0.4", "@fluidframework/sequence": "^2.0.0-rc.1.0.4", "@fluidframework/server-local-server": "^3.1.0-237980", "@fluidframework/telemetry-utils": "^2.0.0-rc.1.0.4", - "@fluidframework/test-driver-definitions": "^2.0.0-rc.1", + "@fluidframework/test-driver-definitions": "^2.0.0-rc.2.0.0", "@fluidframework/test-utils": "^2.0.0-rc.1.0.3" }, "devDependencies": { diff --git a/internal/test-utils/src/describeCompat.ts b/internal/test-utils/src/describeCompat.ts index 55270552c..157374d94 100644 --- a/internal/test-utils/src/describeCompat.ts +++ b/internal/test-utils/src/describeCompat.ts @@ -33,8 +33,9 @@ function createCompatSuite( before(async function () { try { - provider = - await getVersionedTestObjectProviderFromApis(apis); + provider = await getVersionedTestObjectProviderFromApis( + apis + ); } catch (error) { const logger = createChildLogger({ logger: getTestLogger?.(), diff --git a/package-lock.json b/package-lock.json index 11030992a..6e4af80d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,28 +36,28 @@ "version": "2.0.0-internal.4", "license": "MIT", "dependencies": { - "@fluid-experimental/attributor": "^2.0.0-rc.1", - "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.1", - "@fluidframework/agent-scheduler": "^2.0.0-rc.1", + "@fluid-experimental/attributor": "^2.0.0-rc.2.0.0", + "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.2.0.0", + "@fluidframework/agent-scheduler": "^2.0.0-rc.2.0.0", "@fluidframework/aqueduct": "^2.0.0-rc.1.0.3", - "@fluidframework/cell": "^2.0.0-rc.1", + "@fluidframework/cell": "^2.0.0-rc.2.0.0", "@fluidframework/container-loader": "^2.0.0-rc.1.0.3", "@fluidframework/container-runtime": "^2.0.0-rc.1.0.4", - "@fluidframework/core-interfaces": "^2.0.0-rc.1", - "@fluidframework/core-utils": "^2.0.0-rc.1", - "@fluidframework/counter": "^2.0.0-rc.1", + "@fluidframework/core-interfaces": "^2.0.0-rc.2.0.0", + "@fluidframework/core-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/counter": "^2.0.0-rc.2.0.0", "@fluidframework/datastore-definitions": "^2.0.0-rc.1.0.4", - "@fluidframework/driver-definitions": "^2.0.0-rc.1", - "@fluidframework/local-driver": "^2.0.0-rc.1", + "@fluidframework/driver-definitions": "^2.0.0-rc.2.0.0", + "@fluidframework/local-driver": "^2.0.0-rc.2.0.0", "@fluidframework/map": "^2.0.0-rc.1.0.4", - "@fluidframework/matrix": "^2.0.0-rc.1", - "@fluidframework/ordered-collection": "^2.0.0-rc.1", + "@fluidframework/matrix": "^2.0.0-rc.2.0.0", + "@fluidframework/ordered-collection": "^2.0.0-rc.2.0.0", "@fluidframework/register-collection": "^2.0.0-rc.1.0.4", "@fluidframework/runtime-definitions": "^2.0.0-rc.1.0.4", "@fluidframework/sequence": "^2.0.0-rc.1.0.4", "@fluidframework/server-local-server": "^3.1.0-237980", "@fluidframework/telemetry-utils": "^2.0.0-rc.1.0.4", - "@fluidframework/test-driver-definitions": "^2.0.0-rc.1", + "@fluidframework/test-driver-definitions": "^2.0.0-rc.2.0.0", "@fluidframework/test-utils": "^2.0.0-rc.1.0.3" }, "devDependencies": { @@ -72,6 +72,20 @@ "typescript": "~5.1.6" } }, + "internal/test-utils/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "internal/test-utils/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" + } + }, "internal/test-utils/node_modules/@fluidframework/gitresources": { "version": "3.1.0-240326", "resolved": "https://registry.npmjs.org/@fluidframework/gitresources/-/gitresources-3.1.0-240326.tgz", @@ -88,11 +102,6 @@ "events": "^3.1.0" } }, - "internal/test-utils/node_modules/@fluidframework/protocol-definitions": { - "version": "3.2.0-237840", - "resolved": "https://registry.npmjs.org/@fluidframework/protocol-definitions/-/protocol-definitions-3.2.0-237840.tgz", - "integrity": "sha512-NlAZT7WjESOzQYiFRIXiWi58ISlubc69zrC2bObHuDE/hMdIEA0mVnJS8x8A/WHaikNEjZ1cyryJsRscSjg5WA==" - }, "internal/test-utils/node_modules/@fluidframework/server-lambdas": { "version": "3.1.0-240326", "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas/-/server-lambdas-3.1.0-240326.tgz", @@ -253,6 +262,16 @@ "uuid": "^9.0.0" } }, + "internal/test-utils/node_modules/@fluidframework/test-driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-atFHp64DzzcuXXv9Ubtv8Pl+lJcKvmP46RA96goHP3AjZrZtNVs16uYvf+FRtDt6Q+8IGHBDSUpH7He0EatH3A==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" + } + }, "internal/test-utils/node_modules/@types/node": { "version": "18.19.21", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.21.tgz", @@ -515,14 +534,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "internal/test-utils/node_modules/jsrsasign": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-11.1.0.tgz", - "integrity": "sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==", - "funding": { - "url": "https://github.com/kjur/jsrsasign#donations" - } - }, "internal/test-utils/node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", @@ -597,32 +608,32 @@ "extraneous": true, "license": "MIT", "dependencies": { - "@fluid-experimental/attributor": "^2.0.0-rc.1", - "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.1", - "@fluid-private/test-drivers": "^2.0.0-rc.1", + "@fluid-experimental/attributor": "^2.0.0-rc.2.0.0", + "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.2.0.0", + "@fluid-private/test-drivers": "^2.0.0-rc.2.0.0", "@fluid-tools/version-tools": "^0.34.0", - "@fluidframework/agent-scheduler": "^2.0.0-rc.1", - "@fluidframework/aqueduct": "^2.0.0-rc.1", - "@fluidframework/cell": "^2.0.0-rc.1", - "@fluidframework/container-definitions": "^2.0.0-rc.1", - "@fluidframework/container-loader": "^2.0.0-rc.1", - "@fluidframework/container-runtime": "^2.0.0-rc.1", - "@fluidframework/core-interfaces": "^2.0.0-rc.1", - "@fluidframework/core-utils": "^2.0.0-rc.1", - "@fluidframework/counter": "^2.0.0-rc.1", - "@fluidframework/datastore-definitions": "^2.0.0-rc.1", - "@fluidframework/driver-definitions": "^2.0.0-rc.1", - "@fluidframework/driver-utils": "^2.0.0-rc.1", - "@fluidframework/map": "^2.0.0-rc.1", - "@fluidframework/matrix": "^2.0.0-rc.1", - "@fluidframework/ordered-collection": "^2.0.0-rc.1", + "@fluidframework/agent-scheduler": "^2.0.0-rc.2.0.0", + "@fluidframework/aqueduct": "^2.0.0-rc.2.0.0", + "@fluidframework/cell": "^2.0.0-rc.2.0.0", + "@fluidframework/container-definitions": "^2.0.0-rc.2.0.0", + "@fluidframework/container-loader": "^2.0.0-rc.2.0.0", + "@fluidframework/container-runtime": "^2.0.0-rc.2.0.0", + "@fluidframework/core-interfaces": "^2.0.0-rc.2.0.0", + "@fluidframework/core-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/counter": "^2.0.0-rc.2.0.0", + "@fluidframework/datastore-definitions": "^2.0.0-rc.2.0.0", + "@fluidframework/driver-definitions": "^2.0.0-rc.2.0.0", + "@fluidframework/driver-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/map": "^2.0.0-rc.2.0.0", + "@fluidframework/matrix": "^2.0.0-rc.2.0.0", + "@fluidframework/ordered-collection": "^2.0.0-rc.2.0.0", "@fluidframework/protocol-definitions": "^3.2.0-237840", - "@fluidframework/register-collection": "^2.0.0-rc.1", - "@fluidframework/runtime-definitions": "^2.0.0-rc.1", - "@fluidframework/sequence": "^2.0.0-rc.1", - "@fluidframework/telemetry-utils": "^2.0.0-rc.1", - "@fluidframework/test-driver-definitions": "^2.0.0-rc.1", - "@fluidframework/test-utils": "^2.0.0-rc.1", + "@fluidframework/register-collection": "^2.0.0-rc.2.0.0", + "@fluidframework/runtime-definitions": "^2.0.0-rc.2.0.0", + "@fluidframework/sequence": "^2.0.0-rc.2.0.0", + "@fluidframework/telemetry-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-driver-definitions": "^2.0.0-rc.2.0.0", + "@fluidframework/test-utils": "^2.0.0-rc.2.0.0", "nconf": "^0.12.0", "proper-lockfile": "^4.1.2", "semver": "^7.5.3" @@ -633,7 +644,7 @@ "@fluidframework/build-common": "^2.0.3", "@fluidframework/build-tools": "^0.34.0", "@fluidframework/eslint-config-fluid": "^3.5.0", - "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.0", "@microsoft/api-extractor": "^7.39.1", "@types/mocha": "^9.1.1", "@types/nock": "^9.3.0", @@ -2880,128 +2891,170 @@ } }, "node_modules/@fluid-experimental/attributor": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluid-experimental/attributor/-/attributor-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-oYPkHPbtUxHwLztpUlHwT/WHdE5PKr4DPcY75DYMgyP/CanUNkeZxwtm2bJA1EazdnKUTps7vQQXm5fyVtEB1A==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluid-experimental/attributor/-/attributor-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-Z+zKLDnLwGYkvcoKZlDCxZ0gfSRHwMvoVvN9J/Ry4eKNO1x1Lc4oPB+J7Ccex7VqQLhgTY6GQ31dSHVY2yszeg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "lz4js": "^0.2.0" } }, + "node_modules/@fluid-experimental/attributor/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluid-experimental/sequence-deprecated": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluid-experimental/sequence-deprecated/-/sequence-deprecated-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-rnBwN6koQomrhiUoZO+7YzMjLTLzJGL7FfRJ/y/OfWl1IzjYF9cpgPSxnBkC8ZVfMIWS1oUIOWhKH422qNsOqg==", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluid-experimental/sequence-deprecated/-/sequence-deprecated-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-roiaMVHegUIyX0ESn+FI5BiFSogs59mLC0w6fFzCG0zn+CsSSisqZ3EU5288dPiVt1NrHs8VdZxjePP40Do1Iw==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/sequence": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/sequence": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" } }, + "node_modules/@fluid-experimental/sequence-deprecated/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluid-internal/client-utils": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluid-internal/client-utils/-/client-utils-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-rNTytq3S3HaUCHwnGx0+UqmxamJoXS0SKgfjBV1g6s1OXhV3eV4oU9s820YpyMrj4j9O09z5BSKtadqKRRX6yQ==", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluid-internal/client-utils/-/client-utils-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-R/z8zu+qRtUEOosZ9zRIWGcUIayA/R4cYCv/Hl7bCKtArzmIL883Dek1l609DkECDsJCqUwSSVEXbXLX6BGztA==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@types/events": "^3.0.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@types/events_pkg": "npm:@types/events@^3.0.0", "base64-js": "^1.5.1", "buffer": "^6.0.3", - "events": "^3.1.0", + "events_pkg": "npm:events@^3.1.0", "lodash": "^4.17.21", "sha.js": "^2.4.11" } }, + "node_modules/@fluid-internal/client-utils/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/agent-scheduler": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/agent-scheduler/-/agent-scheduler-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-8WBTQZxVaJ/HY4Kh1C88j5kc+ExJYyJQtpHlgOIaOyZVAXU30n8dv52U8V5qCIkV6fK7I02XxnakNklF/8E/4w==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/map": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/register-collection": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/agent-scheduler/-/agent-scheduler-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-FiiYnQ9ZlpB1Jp8kX/V4TYwwWBraXZjdIbvsUEN82dFsX3Lg5MKbwB3g8s9NlHtw8wwwRyRY9U2cZ09mS8a2rA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/map": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/register-collection": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "uuid": "^9.0.0" } }, + "node_modules/@fluidframework/agent-scheduler/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/aqueduct": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/aqueduct/-/aqueduct-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-7+56xyrngJrnPrUsn2qBI5RZDuq3CHJvykR4Sq+21F7posEgBbigIeJqCBNMPtHqpxQK1TH+795huH/7qzfF6Q==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/map": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/request-handler": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/synthesize": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/view-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "uuid": "^9.0.0" - } + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/aqueduct/-/aqueduct-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-UsGiqh22i2lcGkiT/oDlcFzE5T4dH/20QloODBjydlpOhPqMlUIoA4sq6I/jGOp2rBANgZS9x4EDJMgiNG/Hlg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/map": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/request-handler": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/synthesize": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + } + }, + "node_modules/@fluidframework/aqueduct/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" }, "node_modules/@fluidframework/azure-client": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/azure-client/-/azure-client-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-TfKS7xh/FVLmM4NaNEI32cESr1b87UGo6HBODaTS6Q9Gkkd/VI0Iav8+H0L+jqx2D2fKAt2rPVfmJ+oQC9IXKQ==", - "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-loader": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/fluid-static": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/map": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/routerlicious-driver": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/server-services-client": "^3.0.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/azure-client/-/azure-client-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-CwNrTQnp+Wwr4sNK70mxtt6body6AorBLhwvzieTcQ1M8hfGZyJwTdKYn5iqv7lpCDXCZYWlXXbthL6h/Ra3Pg==", + "dependencies": { + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/fluid-static": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/map": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/server-services-client": "^4.0.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "axios": "^1.6.2" } }, + "node_modules/@fluidframework/azure-client/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/@fluidframework/azure-client/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" + } + }, "node_modules/@fluidframework/cell": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/cell/-/cell-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-eIi1VIc/TejRe2DSRUj1SajCVbYKi6C5WrUASg+0EDo5iseEB2XI5r3jYQluteB8rrndt2dVw+bClK61o2Ju4w==", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/cell/-/cell-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-b4P4wGhq30dqhde7NkKcluxY95nc/VQvNM46irJTOM3LQyOi/NUi8NNOD31UfedMr6KoXlDh/ZFVg8/jI9DlzQ==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" } }, + "node_modules/@fluidframework/cell/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/common-definitions": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@fluidframework/common-definitions/-/common-definitions-1.1.0.tgz", @@ -3022,172 +3075,280 @@ } }, "node_modules/@fluidframework/container-definitions": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-Ll8JSUqnbAT1XDADh571GAIKFxImofEeeJwNuX+0pWDG1gbysrN2Q5sBb9c+kzqY+oVfXzIVLFJ8sDojMTULtA==", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-LMD0GUnNBZvUBppG+fvd78eR1cWiXAMPMMmCadRVoMH1B6F8SPT2bTjF0G438u8oMZxu9NJmcuCrPHe0hCifFA==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "events": "^3.1.0" + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@types/events_pkg": "npm:@types/events@^3.0.0" + } + }, + "node_modules/@fluidframework/container-definitions/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/@fluidframework/container-definitions/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" } }, "node_modules/@fluidframework/container-loader": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/container-loader/-/container-loader-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-RAU+QtBKAeLtNztM/ubpT6a2Pk8lmHoI5oXcjcN1iP4Uw9tipZN31c/40SyO8Kh7Ln2IT5kqVKes/jZuMMdjuQ==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-base": "^3.0.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/container-loader/-/container-loader-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-+Siam9MKCG/XwlBUhCiii+HJkGTf6PpkzcHiFRcruN4eMxE/xDU+pKGQ6JlStc4oXlWB/sTsi8Od4HfvE4EOCg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-base": "^4.0.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@ungap/structured-clone": "^1.2.0", "debug": "^4.3.4", "double-ended-queue": "^2.1.0-0", - "events": "^3.1.0", - "url": "^0.11.0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/container-runtime": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-mC4zXzgYxXJpycgr2H+uxuomJEpR2JYlun956mtv/3Uvq4pkJ1ZXKlVSe73sZG063mwTUa1w+R7Hqvs5yMjZFw==", + "node_modules/@fluidframework/container-loader/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/@fluidframework/container-loader/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" + } + }, + "node_modules/@fluidframework/container-runtime": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-KIpaplIWTrdB8zRxP4vkcWZisgEs3d7nre32RbkWxLOp3Hz3ANZYKRkX5EmHtQ0A9GhbLGrULm2n11gqKg/uCQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "@tylerbu/sorted-btree-es6": "^1.8.0", "double-ended-queue": "^2.1.0-0", - "events": "^3.1.0", "lz4js": "^0.2.0", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/container-runtime-definitions": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-x+RxpUUM5RFEXZJkqOSb1FiC5Rjll9gFEZa0SaSw6pK3n8T3Hf5tDEMUcN0CF631ZRZ+7uNbIzRrOWvLCEPv4g==", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-P81VcpxhRZXnWgfcXLzn1/M5of4CKY9y9vIH8BYELk73NTeBeXNJfVwPPZ5kOA75si/dc70R1NWP68CNLyiqzA==", "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + } + }, + "node_modules/@fluidframework/container-runtime-definitions/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/@fluidframework/container-runtime-definitions/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" + } + }, + "node_modules/@fluidframework/container-runtime/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/@fluidframework/container-runtime/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" } }, "node_modules/@fluidframework/core-interfaces": { "version": "2.0.0-rc.1.0.4", "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-b9DCsA8z9ParTxNQNL3G8V4Cb6RxNzszXUdp8NWcSp+KJQUcGP3ypTIo5udI9RQuntXxDN93NTGW0mWvoToYQA==" + "integrity": "sha512-b9DCsA8z9ParTxNQNL3G8V4Cb6RxNzszXUdp8NWcSp+KJQUcGP3ypTIo5udI9RQuntXxDN93NTGW0mWvoToYQA==", + "dev": true }, "node_modules/@fluidframework/core-utils": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/core-utils/-/core-utils-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-gtkWPBOWJDbRLkEKShUDrbUNMOvHl56roZnMej8Agcsb31IqdoCOTXkgWtalnHL2BKDyWODELhUXB26u9zyhQA==" + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-utils/-/core-utils-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-uxWSeOpFYquYrQ9VuB+9D9bVU9AsVD+7hzwyXQiNw1aiehKA0hgrHF/Ld61wnw9nKJuJl6HZeIpx6ObJxmJXCw==" }, "node_modules/@fluidframework/counter": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/counter/-/counter-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-/zHnCCSFPZwSgFFxH5MRLdJH42FvdDoAa6Kct5vAFhE3Tgpu/1ALM0+lsoooEZtAUbVKCMogNWvBn33iXgs/ow==", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/counter/-/counter-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-+QAO3iIvyrBF26r32DXhkpyGwWmPUSwHPlR4fykRQON3QxW5Q6myNCRVIqVIldOhyL5nrownA9PfcEDwkf9pxw==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" } }, + "node_modules/@fluidframework/counter/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/datastore": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-NYXcGb3B0kmiS8TuuPQI9btu+RJZLJHwTDgTLDr52p02vdrdJtPvX05UXJmU2kVu04zOLv8vbEJ1Af5B/xrIkw==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-h93fxNjklAKTjxpvam4/uOy4RzqzyS0a+i4Dt/BFGbg3lCKixA7g1qizO0WJtdiHr95nzzKluTRrv1SNhUySXw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "lodash": "^4.17.21", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/datastore-definitions": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-oTCudfTKjaqkNk8DmEEjIfHi3UrFUIW8WPf4mUTTAraS64LkkpWJuAelNSPcHkjN4/S+2qiToU3bLEQn4ApwIA==", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-eguoG60bJz4KfIQRpXOmvO8tqw6p/t2waPrnltAUbRW3NXfS2ZbLaoBCWW8OZ0YOe6pV0EBubKmysFXTtK1rAQ==", "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + } + }, + "node_modules/@fluidframework/datastore-definitions/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/@fluidframework/datastore/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/@fluidframework/datastore/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" } }, "node_modules/@fluidframework/driver-base": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-4jI6AjeXX14dH6+cri8mRGxFUeaATtGxom3d5R3iVDjguzjPmMxKlSbul43/zutUHmRbrbp3GaaWRwqYsbHUAA==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-3oQs7e+/baPCr3nTNq6/rlVxu7z56dYkf7KAkJ0CvWIaIVTWzvHUjCWG7Pb9EFOoOCAGW+PI1RQ1UYoriVt33Q==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + } + }, + "node_modules/@fluidframework/driver-base/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/@fluidframework/driver-base/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" } }, "node_modules/@fluidframework/driver-definitions": { "version": "2.0.0-rc.1.0.4", "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.1.0.4.tgz", "integrity": "sha512-h8hzdK7kdgJCE8XV3PQS11ipfppvTfqkcoHGaeQ9tLatdNqpJW2nGFCAZ6KorCIdiNYnStjxFmhhHmZ1jraK4w==", + "dev": true, "dependencies": { "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0" } }, "node_modules/@fluidframework/driver-utils": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-njfT/nyve7n9Y0KcCG9awg8vgUKAUFd9Jb5cezz68mwlAqw8+Y3xe1jSJQ0UV5XVxPUuAIyd3te2/wchhzNw6A==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/gitresources": "^3.0.0", - "@fluidframework/protocol-base": "^3.0.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-J78Nc8zFUNoe1Fp9twe/aypKoBxLeaMIlh6j1JLK+MjNQ4U1JlAlspDXh7uwNXYMNYfGb5CnU2JfWV9cuLtgpA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/gitresources": "^4.0.0", + "@fluidframework/protocol-base": "^4.0.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "axios": "^1.6.2", "lz4js": "^0.2.0", - "url": "^0.11.0", "uuid": "^9.0.0" } }, + "node_modules/@fluidframework/driver-utils/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/@fluidframework/driver-utils/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" + } + }, "node_modules/@fluidframework/eslint-config-fluid": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/@fluidframework/eslint-config-fluid/-/eslint-config-fluid-3.5.0.tgz", @@ -3504,128 +3665,165 @@ } }, "node_modules/@fluidframework/fluid-static": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/fluid-static/-/fluid-static-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-bxFPpdV3NI7vSSax1qhnyBbKN3nIYhpPaH/7JtMONixrqwiv6Eb3wgQnrJE7ttwlxyBgsytAzLvbaLYR1ErOjw==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/aqueduct": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-loader": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/request-handler": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" - } + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/fluid-static/-/fluid-static-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-VzYsiqS3xi3PdmM2YakYVQHLtX5/9+ly0mos35AvjLz8DmNGHMpZSbQ8KXFeHoL9bJUhgKoNgG/MMpjL308jMQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/aqueduct": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/request-handler": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + } + }, + "node_modules/@fluidframework/fluid-static/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" }, "node_modules/@fluidframework/gitresources": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/gitresources/-/gitresources-3.0.0.tgz", - "integrity": "sha512-kpbONpwCIE7q2G+Q+KTfBHUz+VneL/7tPWlYFZ96uP0dpeBVdSJdf9dgd0ILIzs6rpO6XRpceI2D503LRU6j9g==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/gitresources/-/gitresources-4.0.0.tgz", + "integrity": "sha512-3E4bjOp0/el0EFIzut8fb5XDM5xF/zWKyKn8n1RLEsstMM9nktjFOhCHoP57tRsfc16p3g9GoXhtpWCwe0vqnQ==" }, "node_modules/@fluidframework/id-compressor": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/id-compressor/-/id-compressor-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-ePsAK+KxxotmFw0BkoU+ArBbeWd8AHLQ4/zKKgqdw6pYtUCKkRoub4NfJ/f07dtdrAhEKZRxZ8Np0Y6Gn7IBbQ==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/id-compressor/-/id-compressor-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-UcAY+Sepl/OxpyuerrSy9vnjvSnig7AzG1RXjPnEFVckuZmYQ513reX6Na03gi4y4G7WHp4I4A2B5eWUPtW3sg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "@tylerbu/sorted-btree-es6": "^1.8.0", "uuid": "^9.0.0" } }, + "node_modules/@fluidframework/id-compressor/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/local-driver": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/local-driver/-/local-driver-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-tsMnI98fSHNqIshDGvFWlYv597xXy7i9jJmktShxReP61BgyCLenNHEAiLFFnFY+YhWJb/EimZPkj+jdntn+Mg==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-base": "^3.0.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/routerlicious-driver": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/server-local-server": "^3.0.0", - "@fluidframework/server-services-client": "^3.0.0", - "@fluidframework/server-services-core": "^3.0.0", - "@fluidframework/server-test-utils": "^3.0.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "events": "^3.1.0", - "jsrsasign": "^10.5.25", - "url": "^0.11.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/local-driver/-/local-driver-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-Vib8eizxw82PnK7jj4BzUTL5/8tC4Ejx9bB3bVMKoxuBnTzTJ/nvvtbPM68JogD+jC92ea4Q27OfBN2X1wH7ig==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-base": "^4.0.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/server-local-server": "^4.0.0", + "@fluidframework/server-services-client": "^4.0.0", + "@fluidframework/server-services-core": "^4.0.0", + "@fluidframework/server-test-utils": "^4.0.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "jsrsasign": "^11.0.0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/map": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-Kc5He/nRCbaiUtVLCRKHMc0OHYpmz0XLP7K+b/MxdUmlmNKIRtjzmdEImSIs2VgGMDKipqrw8HprCI/zkokMGw==", + "node_modules/@fluidframework/local-driver/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/@fluidframework/local-driver/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" + } + }, + "node_modules/@fluidframework/map": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-Z48Kpudh4lSn02mNTHb1SyDY+J9nAiu8yUq0p+KHLXZphSz0iXJXGUxolRYcsfW/KdhHBnFuDBEpHwXJtTS4mA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "path-browserify": "^1.0.1" } }, + "node_modules/@fluidframework/map/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/matrix": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/matrix/-/matrix-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-Ep0zycfPfS42W76ztKZywwLPXc9uCrN6sPnd+271tvlqjvhUPNrth2VMOLe4aZd85/GodC/2nqMILopicfj5dQ==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/matrix/-/matrix-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-hAFsm6UJh2VjMHIpS7eMYKuOglhb4f18JCRelgKyEg4S1epCR8pC6LulEH9xKn/Tcoqi3cIlq3XvWl0LPKUKVA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "@tiny-calc/nano": "0.0.0-alpha.5", - "events": "^3.1.0", + "double-ended-queue": "^2.1.0-0", "tslib": "^1.10.0" } }, + "node_modules/@fluidframework/matrix/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/matrix/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@fluidframework/merge-tree": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-I5OFN4VI+bgdfwLZjqf4cTnVB/dYQ8I1mBQLCN00xDM/n/scfj7lo9hVGttwMEZvceFLBzuLa/9v07qh7VLY+w==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" - } + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-bEXHJ87GjmL/Woxj2n6dpRXrI3UKI0hAqlRpiug1FkL5hUb7pDOzcNF+OzC6cf1dDyG2nA+Oc0xyN3sSlmWquA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + } + }, + "node_modules/@fluidframework/merge-tree/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" }, "node_modules/@fluidframework/mocha-test-setup": { "version": "2.0.0-rc.1.0.4", @@ -3640,148 +3838,202 @@ } }, "node_modules/@fluidframework/ordered-collection": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/ordered-collection/-/ordered-collection-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-d/K4hfB/izlBjnWx7ovQPxn3NW6wI9JjXQuYYfFFDuw2ck5ERLYHFGImotZAHYr0/SrlSN4Mo3jhbD73iduQ7A==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/ordered-collection/-/ordered-collection-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-KRvm2lnWtgMp8IzapOXPWhWfuOK67khe7Jn57FhdalxEeY6td1a42BndNOVCwkBrr6kfhtajtUsESOj1OIVVIw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "uuid": "^9.0.0" } }, + "node_modules/@fluidframework/ordered-collection/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/protocol-base": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/protocol-base/-/protocol-base-3.0.0.tgz", - "integrity": "sha512-csvei49LHDZhD+gQ3brUZEeekQmvk/ndsBNhYnqxJeoAOlBi5MtIqyb5vA96pKd0o23cwGE5PWEfrxJcsqEmTQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/protocol-base/-/protocol-base-4.0.0.tgz", + "integrity": "sha512-mpuYXOOfCXKKEdzauxQ3KTY+ZWNj+NTEQTEJW8PD/xqN95g3AYoYXiikEkuzPbKghkAWcr6gYNxmK//MLbIVFw==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~3.0.0", - "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/gitresources": "~4.0.0", + "@fluidframework/protocol-definitions": "^3.2.0", "events": "^3.1.0" } }, "node_modules/@fluidframework/protocol-definitions": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@fluidframework/protocol-definitions/-/protocol-definitions-3.1.0.tgz", - "integrity": "sha512-BgGF82z4sk5M4torMR38NGjHjFG9t6Y653UcGOlXiIaGQMDZpRfrxiIuq53Gb12OTfUgbNtvBJL1W46JfLvzQw==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@fluidframework/protocol-definitions/-/protocol-definitions-3.2.0.tgz", + "integrity": "sha512-xgcyMN4uF6dAp2/XYFSHvGFITIV7JbVt3itA+T0c71/lZjq/HU/a/ClPIxfl9AEN0RbtuR/1n5LP4FXSV9j0hA==" }, "node_modules/@fluidframework/register-collection": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/register-collection/-/register-collection-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-SiBF9Cr37LafFtgLXvh3Ag7ozp0EbdhwbdcvzZlHoyAAiMmORajjnZDAAC05b75+ip5px8112CkWwmGumlz8AQ==", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/register-collection/-/register-collection-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-omfButdp+uNUmpR2IPBhAI77qRFQ2Lzsv5ep5EpepvIM30S0O8EF9PW/ZZFNwbuFCZ9v8w4VcfdCm2Vg8o/3qw==", "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" } }, + "node_modules/@fluidframework/register-collection/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/request-handler": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/request-handler/-/request-handler-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-8Za0aFTmPx3Gn3YFe0nolWz1bezMMHWUa8u2Rmkte3nADYLNBE97q/RYnTwM5VtdWfmOcgcgBrzuuaik7AeZHw==", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/request-handler/-/request-handler-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-FlTVWYz7iEtjp3eEjmQErvKkQQvoLJI2nr43pB8fF8cXaNnF2GymfF3s5fjYGZXMXYV+pf4Oi46qvYFv8HyYsg==", "dependencies": { - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" } }, + "node_modules/@fluidframework/request-handler/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/routerlicious-driver": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/routerlicious-driver/-/routerlicious-driver-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-Myy1zt8z3tTjnb8mk7+y4tSwSCdBnAS2cyHLyorjt5TtUoROSR8DofOS2qN1b9qgb3CpE1SfVX02QkhjitGekA==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/gitresources": "^3.0.0", - "@fluidframework/protocol-base": "^3.0.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/server-services-client": "^3.0.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/routerlicious-driver/-/routerlicious-driver-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-+M2x8XIOby7Avv/ISJhM6o/+g2tJi89F8Qs2ZQl8Slt5oEpEQ4wuzFMenno2ADXH5L5t0UpgPwQcGYNUOpaJYQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/gitresources": "^4.0.0", + "@fluidframework/protocol-base": "^4.0.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/server-services-client": "^4.0.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "cross-fetch": "^3.1.5", "json-stringify-safe": "5.0.1", - "socket.io-client": "^4.6.1", - "url-parse": "^1.5.8", + "socket.io-client": "^4.7.3", "uuid": "^9.0.0" } }, + "node_modules/@fluidframework/routerlicious-driver/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/@fluidframework/routerlicious-driver/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" + } + }, "node_modules/@fluidframework/runtime-definitions": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-13daERnsRtNrOM1t2qNuOVINXVDvJW11EYkUs91e1XJGPuR+QCKTSFYX1J5HfY6uo18jjFexEVlDJHjtRYrmVQ==", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-5ozTpjF8u44cybHQjRVRSJdws+JN69p+D+CwH8pz1CgJSgfyHkdEcHV0ht7AsXp4cfnw/iYsGKedFiJLis9gzw==", "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0" + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" } }, - "node_modules/@fluidframework/runtime-utils": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-Zw/Rd0PLEzaFaVpbIIxGfY1UuaZK1OP4oGuCVNrOW0uJNHYqY2W0Wa6VtzLzbO2lFdEQGJqHU3f1ZU7PbDKSog==", + "node_modules/@fluidframework/runtime-definitions/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/@fluidframework/runtime-definitions/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0" + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" } }, + "node_modules/@fluidframework/runtime-utils": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-vsKxPkoVmgXWISMz4o77bQs4eqBloJKY3cGhPGja8XwIt6KXEwvSrU7D+z7sWqjnc+0YP+8/RYNQLZ9LVJ7ojA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + } + }, + "node_modules/@fluidframework/runtime-utils/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/sequence": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-FIOXvv+FoC2rof7dEFz2ai2sGPZo4nb9MSeCECP8FBG61qI1Lwf8msf6FUFUPIhD2/HeU0oF8QYtfAdwmtd3Cw==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-OYP1AOwqbT0QwZlfoYKrNzzl7yuBOiRGckT9r1LY+DXS92y4QqHnCv5Wsub/nucgcTRCsg2hqZFH/Y9fiy9c4w==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "double-ended-queue": "^2.1.0-0", "uuid": "^9.0.0" } }, + "node_modules/@fluidframework/sequence/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/server-lambdas": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas/-/server-lambdas-3.0.0.tgz", - "integrity": "sha512-vx6vlFJ1uW/hxam14NumitMeCw4vpmu863CR8MtNlzWem1YtHkYCjBYl/8tz8ziBUZTCaFeHg2xPyl3U8s2Tjw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas/-/server-lambdas-4.0.0.tgz", + "integrity": "sha512-htB+QpkRzzrJnKTl0MIxEiaD3d2l0fx7mUy3rQ6/oJzs1ZisD2KoTG4ZNaKmWBcBZpNwFYPdOfvfeKGCKovuHg==", "dependencies": { "@fluidframework/common-definitions": "^1.1.0", "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~3.0.0", - "@fluidframework/protocol-base": "~3.0.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/server-lambdas-driver": "~3.0.0", - "@fluidframework/server-services-client": "~3.0.0", - "@fluidframework/server-services-core": "~3.0.0", - "@fluidframework/server-services-telemetry": "~3.0.0", + "@fluidframework/gitresources": "~4.0.0", + "@fluidframework/protocol-base": "~4.0.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/server-lambdas-driver": "~4.0.0", + "@fluidframework/server-services-client": "~4.0.0", + "@fluidframework/server-services-core": "~4.0.0", + "@fluidframework/server-services-telemetry": "~4.0.0", "@types/semver": "^7.5.0", "assert": "^2.0.0", "async": "^3.2.2", @@ -3798,14 +4050,14 @@ } }, "node_modules/@fluidframework/server-lambdas-driver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas-driver/-/server-lambdas-driver-3.0.0.tgz", - "integrity": "sha512-3DqlnteWnb5GOEL0yp6aYZ7m9+xvbjDGtBJEE9gq3kA2bpnYB9Z51g08DsFQonzfEdllSO8iVt5/GAsBNkluXQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas-driver/-/server-lambdas-driver-4.0.0.tgz", + "integrity": "sha512-3RM55xj1PrlUBYjGbtiBTMk8oFcNKUa+aofTBcoYiJsNvI7qOSifRvgl7TBLxPKLBSjZ25NjYBo0NXSG0p0l5A==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/server-services-client": "~3.0.0", - "@fluidframework/server-services-core": "~3.0.0", - "@fluidframework/server-services-telemetry": "~3.0.0", + "@fluidframework/server-services-client": "~4.0.0", + "@fluidframework/server-services-core": "~4.0.0", + "@fluidframework/server-services-telemetry": "~4.0.0", "assert": "^2.0.0", "async": "^3.2.2", "events": "^3.1.0", @@ -3815,36 +4067,36 @@ } }, "node_modules/@fluidframework/server-local-server": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-local-server/-/server-local-server-3.0.0.tgz", - "integrity": "sha512-7ZlJ0wlS5384WO7NAaiGX0JuhT0UNeJDDBJIylMn5ZB7f0Aj/CGrC5B+wLhFTnhA0QYIjZ+MtwV91yyLFQG5hg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-local-server/-/server-local-server-4.0.0.tgz", + "integrity": "sha512-fHycWdu0GnP5yziN/2/l1SL3nLk82E7RwczGdhnoLEcLsZIT9paEFr0XYrNliYX9Tu82ZA1m1mHrxhAOyYHkYg==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/server-lambdas": "~3.0.0", - "@fluidframework/server-memory-orderer": "~3.0.0", - "@fluidframework/server-services-client": "~3.0.0", - "@fluidframework/server-services-core": "~3.0.0", - "@fluidframework/server-services-telemetry": "~3.0.0", - "@fluidframework/server-test-utils": "~3.0.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/server-lambdas": "~4.0.0", + "@fluidframework/server-memory-orderer": "~4.0.0", + "@fluidframework/server-services-client": "~4.0.0", + "@fluidframework/server-services-core": "~4.0.0", + "@fluidframework/server-services-telemetry": "~4.0.0", + "@fluidframework/server-test-utils": "~4.0.0", "debug": "^4.3.4", "events": "^3.1.0", - "jsrsasign": "^10.5.25", + "jsrsasign": "^11.0.0", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/server-memory-orderer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-memory-orderer/-/server-memory-orderer-3.0.0.tgz", - "integrity": "sha512-zT+/rmEVFc07TAdy0KZ8zq9Fmz5SWm6K8HeAKfbWLduUioVKR+2LjYoxg6sKQTOVXLlS9auhgMUSln9WHu++Sw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-memory-orderer/-/server-memory-orderer-4.0.0.tgz", + "integrity": "sha512-/Da91g+VnTUJu8Byp58csSRGsjLB9Ju+a0788Ag/IcwUBjYEDUWe8jlCLCdnNOScZnFW9W88R+F2RTC0LFlMOg==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/protocol-base": "~3.0.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/server-lambdas": "~3.0.0", - "@fluidframework/server-services-client": "~3.0.0", - "@fluidframework/server-services-core": "~3.0.0", - "@fluidframework/server-services-telemetry": "~3.0.0", + "@fluidframework/protocol-base": "~4.0.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/server-lambdas": "~4.0.0", + "@fluidframework/server-services-client": "~4.0.0", + "@fluidframework/server-services-core": "~4.0.0", + "@fluidframework/server-services-telemetry": "~4.0.0", "@types/debug": "^4.1.5", "@types/double-ended-queue": "^2.1.0", "@types/lodash": "^4.14.118", @@ -3861,9 +4113,9 @@ } }, "node_modules/@fluidframework/server-memory-orderer/node_modules/@types/node": { - "version": "18.19.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.17.tgz", - "integrity": "sha512-SzyGKgwPzuWp2SHhlpXKzCX0pIOfcI4V2eF37nNBJOhwlegQ83omtVQ1XxZpDE06V/d6AQvfQdPfnw0tRC//Ng==", + "version": "18.19.29", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.29.tgz", + "integrity": "sha512-5pAX7ggTmWZdhUrhRWLPf+5oM7F80bcKVCBbr0zwEkTNzTJL2CWQjznpFgHYy6GrzkYi2Yjy7DHKoynFxqPV8g==", "dependencies": { "undici-types": "~5.26.4" } @@ -3889,35 +4141,34 @@ } }, "node_modules/@fluidframework/server-services-client": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-client/-/server-services-client-3.0.0.tgz", - "integrity": "sha512-obsH2oYOkmvQoOSuluwEwiViOuZe3wNBNBWxuUHkGKmfeg1xU5Ko2Sj5/0Ku45f5EY8puRenlApCTS/2mKhSaw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-client/-/server-services-client-4.0.0.tgz", + "integrity": "sha512-ExvztSQrliaYMSeLLxlACdWkuDk6auDle4eIQ2euvkgl0RWnupatPYgUVdfnNMIE6vBIeOwDzJaWy2giFx7Z6Q==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~3.0.0", - "@fluidframework/protocol-base": "~3.0.0", - "@fluidframework/protocol-definitions": "^3.1.0", + "@fluidframework/gitresources": "~4.0.0", + "@fluidframework/protocol-base": "~4.0.0", + "@fluidframework/protocol-definitions": "^3.2.0", "axios": "^1.6.2", "crc-32": "1.2.0", "debug": "^4.3.4", "json-stringify-safe": "^5.0.1", - "jsrsasign": "^10.5.25", + "jsrsasign": "^11.0.0", "jwt-decode": "^4.0.0", - "querystring": "^0.2.0", "sillyname": "^0.1.0", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/server-services-core": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-core/-/server-services-core-3.0.0.tgz", - "integrity": "sha512-MyZnArgoNWHldCONx0oEhC7kzNY9hfemHdKH07ESFjpj9d2AqzDNfM/lZfb6uK5oiTs7G2sbR8VTdWWJZdzz8g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-core/-/server-services-core-4.0.0.tgz", + "integrity": "sha512-gt8GLNIDf8ZALbZGsS7WDytSLXwVPYEBCmuE+J3bikd3mItGxFhxQQI/6ZynUz/lue7GvoZtSuDyeal3DarwCQ==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~3.0.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/server-services-client": "~3.0.0", - "@fluidframework/server-services-telemetry": "~3.0.0", + "@fluidframework/gitresources": "~4.0.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/server-services-client": "~4.0.0", + "@fluidframework/server-services-telemetry": "~4.0.0", "@types/nconf": "^0.10.2", "@types/node": "^18.17.1", "debug": "^4.3.4", @@ -3926,17 +4177,17 @@ } }, "node_modules/@fluidframework/server-services-core/node_modules/@types/node": { - "version": "18.19.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.17.tgz", - "integrity": "sha512-SzyGKgwPzuWp2SHhlpXKzCX0pIOfcI4V2eF37nNBJOhwlegQ83omtVQ1XxZpDE06V/d6AQvfQdPfnw0tRC//Ng==", + "version": "18.19.29", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.29.tgz", + "integrity": "sha512-5pAX7ggTmWZdhUrhRWLPf+5oM7F80bcKVCBbr0zwEkTNzTJL2CWQjznpFgHYy6GrzkYi2Yjy7DHKoynFxqPV8g==", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@fluidframework/server-services-telemetry": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-telemetry/-/server-services-telemetry-3.0.0.tgz", - "integrity": "sha512-6t8aapyGgoCefgkHhU6CAdZEqPf43nHOulht5ghEBuyhrxqY+BEJYtNq9/5O4E7kpph1d1M/tYPIZD1adjgCIQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-telemetry/-/server-services-telemetry-4.0.0.tgz", + "integrity": "sha512-EK3+l1a2x4rOwBr688h3DqGrDmgJnv6kYxHKaoxJ9gVPXgg866m2ajEU75IvneqOyomqUINE2oZOrRqjdvJR1Q==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", "json-stringify-safe": "^5.0.1", @@ -3946,17 +4197,17 @@ } }, "node_modules/@fluidframework/server-test-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-test-utils/-/server-test-utils-3.0.0.tgz", - "integrity": "sha512-XX2Tdfga0nL/KBtND6QngRQ/rk5p1Pd8knOp0b6Cz3T5kf2UrRnkft11e0QPe3xtVs2JCB8tvpptsF3Uj7qxSw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-test-utils/-/server-test-utils-4.0.0.tgz", + "integrity": "sha512-tygY1aWGswuY0qWJ3EOk4HlWjuCSiyPJu6OQNlSzzT50B43Ku146MQe8WdTdWmxxgQjk+/R5BPLxrCugu74LJw==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~3.0.0", - "@fluidframework/protocol-base": "~3.0.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/server-services-client": "~3.0.0", - "@fluidframework/server-services-core": "~3.0.0", - "@fluidframework/server-services-telemetry": "~3.0.0", + "@fluidframework/gitresources": "~4.0.0", + "@fluidframework/protocol-base": "~4.0.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/server-services-client": "~4.0.0", + "@fluidframework/server-services-core": "~4.0.0", + "@fluidframework/server-services-telemetry": "~4.0.0", "assert": "^2.0.0", "debug": "^4.3.4", "events": "^3.1.0", @@ -3966,50 +4217,60 @@ } }, "node_modules/@fluidframework/shared-object-base": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-RSDwwCjoCck7Z7Tb1OEGJt6Qavl0nOkQkE6S1hEZRvaWa/+bNcl8QKm5hwUQKoHTW+FaR8jInHaz2eRbasynYg==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-ccwaNRtIPp01FiUJxKf123eJ59fPqJkbS2hZouQGioC7od7g+1t8LXwwaVXRTWA8lew0w/GrQhwnJU0Nhlotog==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "uuid": "^9.0.0" } }, + "node_modules/@fluidframework/shared-object-base/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/synthesize": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/synthesize/-/synthesize-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-Oo9geoOgS05LmkEMfUdcHC0hyJF/mYIaD2jhWohg8+rJ0lbNHa865L5GONEPXvOZGXkk6n/q6YvsVnmZ0x0qyg==", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/synthesize/-/synthesize-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-eg4O3mVVTbWAhFjaeiussPGaF+YM8CQrY9LrdJO8QisrN61P1Cu2O+f1HhWiiYFvXAoNCHjNJK+igl3+oy//fg==", "dependencies": { - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" } }, "node_modules/@fluidframework/telemetry-utils": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-j7WbFtY8Kh5wPHLh7SRc9kVs5YFvydEWrKe2EqpEKFjb1Spz2KPdcha4BbeF3estpcH/uySmAamclIUJ1ffnkw==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-trB3AqQLlsiJQ3P1yNl4HeTxC4sV9jwzIZIW+J+99TJgy1VmdGwk0ivsGqZM+XFKrAADuwwtgK73Yzjs+YT+bw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", "debug": "^4.3.4", - "events": "^3.1.0", "uuid": "^9.0.0" } }, + "node_modules/@fluidframework/telemetry-utils/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, "node_modules/@fluidframework/test-driver-definitions": { "version": "2.0.0-rc.1.0.4", "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.1.0.4.tgz", "integrity": "sha512-Mcq/cdG+uke0LuplZ5VxDYrj9rX0dr5OG40nRrJJ68jzW3NZHC8yRzFqxglUIraTOHGgUKdaizn3vUzyzXvIhQ==", + "dev": true, "dependencies": { "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", @@ -4018,87 +4279,125 @@ } }, "node_modules/@fluidframework/test-runtime-utils": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/test-runtime-utils/-/test-runtime-utils-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-1VPJarGDsv+LpE3tr6DDPgLIW+x4ojWcH9dGgT2gR100GLnBW1MJvaLmJfetw8eG+XbUxqXMYi58M/V674mhAQ==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/routerlicious-driver": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "events": "^3.1.0", - "jsrsasign": "^10.5.25", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/test-runtime-utils/-/test-runtime-utils-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-CARdoZKWA1aIGL4nyCOcxin8VIeJzRnsnmzq1rPVGwJAAaiDKWBy8sCb0T8enx8UGHZgWE8o27VeeDYN3kKszw==", + "dev": true, + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "jsrsasign": "^11.0.0", "uuid": "^9.0.0" } }, + "node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==", + "dev": true + }, + "node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", + "dev": true, + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" + } + }, "node_modules/@fluidframework/test-utils": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/test-utils/-/test-utils-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-1NqniWGIBiuEgCHx9bfqnLnVl9A3DESqM8CJizauBStSbzHGV8rN0xDtXmRBYtKK1W10H36W3M1+/ZTOHg1zqw==", - "dependencies": { - "@fluidframework/aqueduct": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-loader": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/local-driver": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/map": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/request-handler": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/routerlicious-driver": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/test-driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/test-runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/test-utils/-/test-utils-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-0yEG6hW1v43WMv6jxZKAoUWlWWGpjgZdT0vx63yGdPL50fpG/GLZ6vOPK2Ex6v0aP39I31HMDI/Y5Lk/YEhV3w==", + "dependencies": { + "@fluidframework/aqueduct": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/local-driver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/map": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/request-handler": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/test-driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "best-random": "^1.0.0", "debug": "^4.3.4", + "mocha": "^10.2.0", "uuid": "^9.0.0" } }, + "node_modules/@fluidframework/test-utils/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/@fluidframework/test-utils/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" + } + }, + "node_modules/@fluidframework/test-utils/node_modules/@fluidframework/test-driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-atFHp64DzzcuXXv9Ubtv8Pl+lJcKvmP46RA96goHP3AjZrZtNVs16uYvf+FRtDt6Q+8IGHBDSUpH7He0EatH3A==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" + } + }, "node_modules/@fluidframework/tree": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/tree/-/tree-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-2/clJZo9eWZFQ02EfXdjX7IdN7y1bqNL8x1yCv7dTMh3rf4KB4ZqULiZxU4Zk2Gw/l29eSihm77uERoIFqUSzQ==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/tree/-/tree-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-OOBoa+aAYlqgTa4ayHP1cz9uWGRfMEqIfWqxFdgvnMp7mhh6VhxV3tajzNOSl5770VX4s8FsQLtNva7iq3CtjA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", "@sinclair/typebox": "^0.29.4", "@tylerbu/sorted-btree-es6": "^1.8.0", "@ungap/structured-clone": "^1.2.0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/view-interfaces": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/@fluidframework/view-interfaces/-/view-interfaces-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-YW1anify9PNOC9bwzMMbOrmpxwPskAjtHlEpyrXueDgYUw2xZZFE/hNBfE8m4qfONbbqvzkZlRndsYjOeh8Caw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" - } + "node_modules/@fluidframework/tree/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" }, "node_modules/@griffel/core": { "version": "1.15.2", @@ -5095,6 +5394,12 @@ "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz", "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==" }, + "node_modules/@types/events_pkg": { + "name": "@types/events", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz", + "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==" + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -5942,7 +6247,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, "engines": { "node": ">=6" } @@ -5979,7 +6283,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -6024,8 +6327,7 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/aria-query": { "version": "5.1.3", @@ -6270,8 +6572,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/bare-events": { "version": "2.2.0", @@ -6317,7 +6618,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, "engines": { "node": ">=8" } @@ -6352,8 +6652,7 @@ "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, "node_modules/browserslist": { "version": "4.23.0", @@ -6536,7 +6835,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "funding": [ { "type": "individual", @@ -6563,7 +6861,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -7170,7 +7467,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, "engines": { "node": ">=0.3.1" } @@ -7616,7 +7912,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "engines": { "node": ">=10" }, @@ -8181,6 +8476,15 @@ "node": ">=0.8.x" } }, + "node_modules/events_pkg": { + "name": "events", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -8444,7 +8748,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -8460,7 +8763,6 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, "bin": { "flat": "cli.js" } @@ -8501,17 +8803,31 @@ "dev": true }, "node_modules/fluid-framework": { - "version": "2.0.0-rc.1.0.3", - "resolved": "https://registry.npmjs.org/fluid-framework/-/fluid-framework-2.0.0-rc.1.0.3.tgz", - "integrity": "sha512-NPWZ9/smwjpKWkMSJ6Xj1befBikc2K5NTeAUrNDLRNtMc2acPx6NfCfVcHSOwpqXR3s9eDDFZLykuvS5uKlzsw==", + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/fluid-framework/-/fluid-framework-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-0vu7g+cRv1P0v1btnG2ruS8wPGpfCTmrptHNBc2AE4W5gOI6Wo20rd6+ThZSznMun6fyOw7lL/p8mIOaJ1WJYQ==", + "dependencies": { + "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/fluid-static": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/map": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/sequence": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/tree": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + } + }, + "node_modules/fluid-framework/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + }, + "node_modules/fluid-framework/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", + "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/container-loader": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/fluid-static": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/map": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/sequence": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0", - "@fluidframework/tree": ">=2.0.0-rc.1.0.3 <2.0.0-rc.1.1.0" + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" } }, "node_modules/follow-redirects": { @@ -8640,14 +8956,12 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -9048,7 +9362,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, "bin": { "he": "bin/he" } @@ -9201,7 +9514,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -9310,7 +9622,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -9404,7 +9715,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9448,7 +9758,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -9526,7 +9835,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, "engines": { "node": ">=8" } @@ -9647,7 +9955,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, "engines": { "node": ">=10" }, @@ -10226,7 +10533,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -10454,9 +10760,9 @@ } }, "node_modules/jsrsasign": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", - "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-11.1.0.tgz", + "integrity": "sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==", "funding": { "url": "https://github.com/kjur/jsrsasign#donations" } @@ -10574,7 +10880,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -10606,7 +10911,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -10874,7 +11178,6 @@ "version": "10.3.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", - "dev": true, "dependencies": { "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", @@ -10935,7 +11238,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -10944,7 +11246,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -10954,14 +11255,12 @@ "node_modules/mocha/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/mocha/node_modules/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10980,7 +11279,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -10989,7 +11287,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -11000,14 +11297,12 @@ "node_modules/mocha/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mocha/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -11021,7 +11316,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -11036,7 +11330,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -11053,7 +11346,6 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "engines": { "node": ">=10" } @@ -11062,7 +11354,6 @@ "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -11080,7 +11371,6 @@ "version": "20.2.4", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, "engines": { "node": ">=10" } @@ -11332,7 +11622,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -11717,7 +12006,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -11767,7 +12055,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -11782,7 +12069,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -11921,7 +12207,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -12425,19 +12710,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystring": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", - "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -12469,7 +12746,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -12759,7 +13035,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -12890,7 +13165,8 @@ "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true }, "node_modules/resolve": { "version": "2.0.0-next.5", @@ -13221,7 +13497,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -13395,9 +13670,9 @@ } }, "node_modules/socket.io-client": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.4.tgz", - "integrity": "sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", @@ -13837,7 +14112,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { "node": ">=8" }, @@ -14498,6 +14772,7 @@ "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -14909,8 +15184,7 @@ "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" }, "node_modules/wrap-ansi": { "version": "5.1.0", @@ -14977,8 +15251,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "3.0.3", @@ -15080,7 +15353,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -15095,7 +15367,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, "engines": { "node": ">=10" }, @@ -15107,7 +15378,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, "engines": { "node": ">=10" }, @@ -15199,7 +15469,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, @@ -15215,17 +15484,17 @@ "uuid": "^9.0.0" }, "devDependencies": { - "@fluid-internal/client-utils": "^2.0.0-rc.1", - "@fluidframework/azure-client": "^2.0.0-rc.1", - "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", - "@fluidframework/test-utils": "^2.0.0-rc.1", + "@fluid-internal/client-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/azure-client": "^2.0.0-rc.2.0.0", + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-utils": "^2.0.0-rc.2.0.0", "@live-share-private/test-utils": "^2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", @@ -15244,7 +15513,7 @@ "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", @@ -15260,15 +15529,15 @@ "version": "2.0.0-internal.4", "license": "SEE LICENSE IN LICENSE", "devDependencies": { - "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", - "@fluidframework/test-utils": "^2.0.0-rc.1", + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-utils": "^2.0.0-rc.2.0.0", "@live-share-private/test-utils": "^2.0.0-internal.2", "@microsoft/live-share": "2.0.0-internal.4", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", @@ -15297,7 +15566,7 @@ "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", "babel-loader": "^9.1.2", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "typescript": "^5.0.4" }, "peerDependencies": { @@ -15314,16 +15583,16 @@ "version": "2.0.0-internal.4", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@fluidframework/register-collection": "^2.0.0-rc.1" + "@fluidframework/register-collection": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@microsoft/live-share": "2.0.0-internal.4", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "jsdom": "^21.1.0", "jsdom-global": "^3.0.2", "mocha": "^10.2.0", @@ -15345,10 +15614,10 @@ "dependencies": { "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15371,7 +15640,7 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -15382,7 +15651,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", @@ -15420,10 +15689,10 @@ "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15445,7 +15714,7 @@ "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15457,7 +15726,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15482,10 +15751,10 @@ "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/live-share-turbo": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15506,7 +15775,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15518,7 +15787,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15545,7 +15814,7 @@ "@fluentui/react-theme": "^9.1.5", "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -15555,7 +15824,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15579,7 +15848,7 @@ "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router": "^6.4.2", @@ -15588,7 +15857,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15611,10 +15880,10 @@ "dependencies": { "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15631,10 +15900,10 @@ "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15656,7 +15925,7 @@ "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15668,7 +15937,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15693,10 +15962,10 @@ "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/live-share-turbo": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15718,7 +15987,7 @@ "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15730,7 +15999,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15760,7 +16029,7 @@ "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15772,7 +16041,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15804,7 +16073,7 @@ "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15818,7 +16087,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15848,7 +16117,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15860,7 +16129,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -16276,13 +16545,13 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@fluidframework/azure-client": "^2.0.0-rc.1", + "@fluidframework/azure-client": "^2.0.0-rc.2.0.0", "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/live-share-canvas": "2.0.0-internal.4", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "buffer": "^6.0.3", "concurrently": "^5.3.0", "start-server-and-test": "^2.0.0", diff --git a/packages/live-share-canvas/package.json b/packages/live-share-canvas/package.json index 5cb9b1564..ca18ee259 100644 --- a/packages/live-share-canvas/package.json +++ b/packages/live-share-canvas/package.json @@ -18,7 +18,7 @@ "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", diff --git a/packages/live-share-canvas/src/core/InkingManager.ts b/packages/live-share-canvas/src/core/InkingManager.ts index 7685fc2e4..aaac951be 100644 --- a/packages/live-share-canvas/src/core/InkingManager.ts +++ b/packages/live-share-canvas/src/core/InkingManager.ts @@ -217,11 +217,11 @@ class ChangeLog { } public getRemovedStrokes(): string[] { - return [...this._removedStrokes]; + return Array.from(this._removedStrokes); } public getAddedStrokes(): IStroke[] { - return [...this._addedStrokes.values()]; + return Array.from(this._addedStrokes.values()); } get hasChanges(): boolean { @@ -586,7 +586,7 @@ export class InkingManager extends TypedEventEmitter { this._dryCanvas.offset = this._offset; this._dryCanvas.scale = this._scale; - const sortedStrokes = [...this._strokes.values()].sort( + const sortedStrokes = Array.from(this._strokes.values()).sort( (stroke1: IStroke, stroke2: IStroke) => { return stroke1.timeStamp - stroke2.timeStamp; } @@ -617,8 +617,8 @@ export class InkingManager extends TypedEventEmitter { } if (this._changeLog.hasChanges) { - this.notifyStrokesRemoved(...this._changeLog.getRemovedStrokes()); - this.notifyStrokesAdded(...this._changeLog.getAddedStrokes()); + this.notifyStrokesRemoved(this._changeLog.getRemovedStrokes()); + this.notifyStrokesAdded(this._changeLog.getAddedStrokes()); this._changeLog.clear(); } @@ -969,13 +969,13 @@ export class InkingManager extends TypedEventEmitter { this.emit(PointerMovedEvent, eventArgs); } - private notifyStrokesAdded(...strokes: IStroke[]) { + private notifyStrokesAdded(strokes: IStroke[]) { if (strokes.length > 0) { this.emit(StrokesAddedEvent, strokes); } } - private notifyStrokesRemoved(...strokeIds: string[]) { + private notifyStrokesRemoved(strokeIds: string[]) { if (strokeIds.length > 0) { this.emit(StrokesRemovedEvent, strokeIds); } diff --git a/packages/live-share-canvas/src/core/LiveCanvas.ts b/packages/live-share-canvas/src/core/LiveCanvas.ts index d4a63ad85..4ae40a4db 100644 --- a/packages/live-share-canvas/src/core/LiveCanvas.ts +++ b/packages/live-share-canvas/src/core/LiveCanvas.ts @@ -1022,7 +1022,8 @@ function isClearEvent(value: any): boolean { return ( typeof value === "object" && typeof value.type === "string" && - value.type === ClearEvent + // Fluid v2 emits "clear" instead of "Clear" on SharedMap.clear(), so we equalize it + value.type.toLowerCase() === ClearEvent.toLowerCase() ); } diff --git a/packages/live-share-media/package.json b/packages/live-share-media/package.json index 0e488296c..990e1cf0f 100644 --- a/packages/live-share-media/package.json +++ b/packages/live-share-media/package.json @@ -16,14 +16,14 @@ }, "devDependencies": { "@microsoft/live-share": "2.0.0-internal.4", - "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", - "@fluidframework/test-utils": "^2.0.0-rc.1", + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-utils": "^2.0.0-rc.2.0.0", "@live-share-private/test-utils": "^2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", diff --git a/packages/live-share-react/package.json b/packages/live-share-react/package.json index a6a3e9b92..e1b02dfd2 100644 --- a/packages/live-share-react/package.json +++ b/packages/live-share-react/package.json @@ -25,7 +25,7 @@ "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", "babel-loader": "^9.1.2", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "typescript": "^5.0.4" }, "peerDependencies": { diff --git a/packages/live-share-turbo/package.json b/packages/live-share-turbo/package.json index 8c9446399..45598daf8 100644 --- a/packages/live-share-turbo/package.json +++ b/packages/live-share-turbo/package.json @@ -17,16 +17,16 @@ "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test" }, "dependencies": { - "@fluidframework/register-collection": "^2.0.0-rc.1" + "@fluidframework/register-collection": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@microsoft/live-share": "2.0.0-internal.4", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "jsdom-global": "^3.0.2", "jsdom": "^21.1.0", "mocha": "^10.2.0", diff --git a/packages/live-share-turbo/src/FluidTurboClient.ts b/packages/live-share-turbo/src/FluidTurboClient.ts index 531fc03a6..2c98ff244 100644 --- a/packages/live-share-turbo/src/FluidTurboClient.ts +++ b/packages/live-share-turbo/src/FluidTurboClient.ts @@ -98,7 +98,11 @@ export abstract class FluidTurboClient implements IFluidTurboClient { if (initialDDS !== undefined) { return initialDDS; } - const uniqueKey = `<${objectClass.name}>:${objectKey}`; + // TODO: investigate fixes + // Fluid v2.0.0 removed "name" from their interfaces... + // This likely causes problems for non Live Share DDSs (which have static name fields) + const className = (objectClass as any).name ?? "unknown"; + const uniqueKey = `<${className}>:${objectKey}`; const response = await this.dynamicObjects.getDDS( uniqueKey, objectClass, diff --git a/packages/live-share/package.json b/packages/live-share/package.json index 8640a7ca7..243ff8b96 100644 --- a/packages/live-share/package.json +++ b/packages/live-share/package.json @@ -18,17 +18,17 @@ "uuid": "^9.0.0" }, "devDependencies": { - "@fluid-internal/client-utils": "^2.0.0-rc.1", - "@fluidframework/azure-client": "^2.0.0-rc.1", - "@fluidframework/mocha-test-setup": "^2.0.0-rc.1", - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", - "@fluidframework/test-utils": "^2.0.0-rc.1", + "@fluid-internal/client-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/azure-client": "^2.0.0-rc.2.0.0", + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-utils": "^2.0.0-rc.2.0.0", "@live-share-private/test-utils": "^2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", diff --git a/packages/live-share/src/LiveEventScope.ts b/packages/live-share/src/LiveEventScope.ts index b0a0bddc3..9c099cd90 100644 --- a/packages/live-share/src/LiveEventScope.ts +++ b/packages/live-share/src/LiveEventScope.ts @@ -3,13 +3,19 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { IErrorEvent } from "@fluidframework/core-interfaces"; -import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils"; +import { + IErrorEvent, + ITelemetryBaseLogger, +} from "@fluidframework/core-interfaces"; import { TypedEventEmitter } from "@fluid-internal/client-utils"; import { IInboundSignalMessage } from "@fluidframework/runtime-definitions"; import { ILiveEvent, UserMeetingRole } from "./interfaces"; import { LiveShareRuntime } from "./LiveShareRuntime"; -import { isILiveEvent, waitUntilConnected } from "./internals"; +import { + isILiveEvent, + safeFluidTelemetryLogError, + waitUntilConnected, +} from "./internals"; import { IEvent } from "@fluidframework/common-definitions"; /** @@ -30,7 +36,7 @@ export type LiveEventListener = ( export interface IRuntimeSignaler { readonly clientId: string | undefined; readonly connected: boolean; - readonly logger: ITelemetryLoggerExt; + readonly logger: ITelemetryBaseLogger; on(event: "connected", listener: (clientId: string) => void): this; off(event: "connected", listener: (clientId: string) => void): this; on( @@ -256,7 +262,13 @@ export class LiveEventScope extends TypedEventEmitter { if (value) { this.emitter.emit(event.name, event, local); } else if (this.throwForEvents.includes(event.name)) { - this._runtime.logger.sendErrorEvent( + const error = new Error( + `The clientId of "${clientId}" doesn't have a role of ${JSON.stringify( + this._allowedRoles + )}.` + ); + safeFluidTelemetryLogError( + this._runtime, { eventName: "LiveEvent:invalidRole" }, new Error( `The clientId of "${clientId}" doesn't have a role of ${JSON.stringify( @@ -267,7 +279,8 @@ export class LiveEventScope extends TypedEventEmitter { } }) .catch((err) => { - this._runtime.logger.sendErrorEvent( + safeFluidTelemetryLogError( + this._runtime, { eventName: "LiveEvent:invalidRole" }, err ); diff --git a/packages/live-share/src/LiveTelemetryLogger.ts b/packages/live-share/src/LiveTelemetryLogger.ts index 92335321d..71cb38600 100644 --- a/packages/live-share/src/LiveTelemetryLogger.ts +++ b/packages/live-share/src/LiveTelemetryLogger.ts @@ -4,19 +4,22 @@ */ import { - ITelemetryErrorEvent, - ITelemetryGenericEvent, - ITelemetryPerformanceEvent, - ITelemetryProperties, -} from "@fluidframework/common-definitions"; + ITelemetryBaseProperties, + LogLevel, +} from "@fluidframework/core-interfaces"; +import { + ITelemetryPerformanceEventExt, + ITelemetryErrorEventExt, + ITelemetryGenericEventExt, +} from "@fluidframework/telemetry-utils"; import { IRuntimeSignaler } from "./LiveEventScope"; -import { LiveShareClient } from "./LiveShareClient"; import { LiveShareRuntime } from "./LiveShareRuntime"; +import { isExtendedLogger, safeFluidTelemetryLogError } from "./internals"; /** * Properties included on all events sent by `LiveTelemetryLogger`. */ -export interface ILiveTelemetryProperties extends ITelemetryProperties { +export interface ILiveTelemetryProperties extends ITelemetryBaseProperties { /** * Optional. ID of the client if it's been assigned by the runtime. */ @@ -70,11 +73,22 @@ export class LiveTelemetryLogger { additionalProperties?: Partial ): void { if (this._runtime.logger) { - const evt: ITelemetryGenericEvent = this.createTelemetryEvent( + const evt: ITelemetryGenericEventExt = this.createTelemetryEvent( eventName, additionalProperties ); - this._runtime.logger.sendTelemetryEvent(evt, error); + // Newer versions of Fluid seem to use ITelemetryBaseEvent instead of ITelemetryGenericEventExt + if (isExtendedLogger(this._runtime.logger)) { + this._runtime.logger.sendTelemetryEvent(evt, error); + return; + } + this._runtime.logger.send( + { + ...evt, + category: evt.category ?? "default", + }, + LogLevel.default + ); } } @@ -90,11 +104,12 @@ export class LiveTelemetryLogger { additionalProperties?: Partial ): void { if (this._runtime.logger) { - const evt: ITelemetryErrorEvent = this.createTelemetryEvent( + const evt: ITelemetryErrorEventExt = this.createTelemetryEvent( eventName, additionalProperties ); - this._runtime.logger.sendErrorEvent(evt, error); + // Newer versions of Fluid seem to use ITelemetryBaseEvent instead of ITelemetryGenericEventExt + safeFluidTelemetryLogError(this._runtime, evt, error); } } @@ -112,11 +127,23 @@ export class LiveTelemetryLogger { additionalProperties?: Partial ): void { if (this._runtime.logger) { - const evt: ITelemetryPerformanceEvent = { + const evt: ITelemetryPerformanceEventExt = { duration: duration, ...this.createTelemetryEvent(eventName, additionalProperties), }; - this._runtime.logger.sendPerformanceEvent(evt, error); + // Newer versions of Fluid seem to use ITelemetryBaseEvent instead of ITelemetryGenericEventExt + if (isExtendedLogger(this._runtime.logger)) { + this._runtime.logger.sendPerformanceEvent(evt, error); + return; + } + this._runtime.logger.send( + { + ...evt, + category: evt.category ?? "performance", + error: error.verbose, + }, + LogLevel.error + ); } } diff --git a/packages/live-share/src/internals/type-guards.ts b/packages/live-share/src/internals/type-guards.ts index 0187b4856..48293e8f6 100644 --- a/packages/live-share/src/internals/type-guards.ts +++ b/packages/live-share/src/internals/type-guards.ts @@ -1,5 +1,6 @@ import { TimestampProvider } from "../TimestampProvider"; import { IClientInfo, ILiveEvent, UserMeetingRole } from "../interfaces"; +import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils"; interface IMobileWorkaroundRolesResponse { userRoles: UserMeetingRole[]; @@ -59,3 +60,15 @@ export function isILiveEvent(value: any): value is ILiveEvent { export function isTimestampProvider(value: any): value is TimestampProvider { return typeof value?.start === "function"; } + +/** + * @hidden + */ +export function isExtendedLogger(value: any): value is ITelemetryLoggerExt { + return ( + value && + typeof value.sendTelemetryEvent === "function" && + typeof value.sendErrorEvent === "function" && + typeof value.sendPerformanceEvent === "function" + ); +} diff --git a/packages/live-share/src/internals/utils.ts b/packages/live-share/src/internals/utils.ts index 903e9f318..c36d3241d 100644 --- a/packages/live-share/src/internals/utils.ts +++ b/packages/live-share/src/internals/utils.ts @@ -6,6 +6,9 @@ import { ITokenProvider } from "@fluidframework/azure-client"; import { v4 as uuid } from "uuid"; import { IRuntimeSignaler } from "../LiveEventScope"; +import { isExtendedLogger } from "./type-guards"; +import { ITelemetryErrorEventExt } from "@fluidframework/telemetry-utils"; +import { LogLevel } from "@fluidframework/core-interfaces"; /** * @hidden @@ -181,3 +184,41 @@ export function waitUntilConnected(runtime: IRuntimeSignaler): Promise { } }); } + +/** + * @hidden + */ +function parseErrorMessage(error?: any): string { + if (!error) { + return `${error}`; + } + if (typeof error === "string") { + return error; + } + if (typeof error.message === "string") { + return error.message; + } + return `${JSON.stringify(error)}`; +} + +/** + * @hidden + */ +export function safeFluidTelemetryLogError( + runtime: IRuntimeSignaler, + event: ITelemetryErrorEventExt, + error?: unknown +) { + if (isExtendedLogger(runtime.logger)) { + runtime.logger.sendErrorEvent(event, error); + return; + } + runtime.logger.send( + { + ...event, + category: "error", + error: parseErrorMessage(error), + }, + LogLevel.error + ); +} diff --git a/samples/javascript/01.dice-roller/package.json b/samples/javascript/01.dice-roller/package.json index 4810485c3..10b852325 100644 --- a/samples/javascript/01.dice-roller/package.json +++ b/samples/javascript/01.dice-roller/package.json @@ -20,10 +20,10 @@ "dependencies": { "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/02.react-video/package.json b/samples/javascript/02.react-video/package.json index 22747a9b9..6901dba8a 100644 --- a/samples/javascript/02.react-video/package.json +++ b/samples/javascript/02.react-video/package.json @@ -16,7 +16,7 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -27,7 +27,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", diff --git a/samples/javascript/03.live-canvas-demo/package.json b/samples/javascript/03.live-canvas-demo/package.json index ae6a24d4e..5c7832637 100644 --- a/samples/javascript/03.live-canvas-demo/package.json +++ b/samples/javascript/03.live-canvas-demo/package.json @@ -20,10 +20,10 @@ "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/04.live-share-react/package.json b/samples/javascript/04.live-share-react/package.json index 551718d8b..bd3c625e4 100644 --- a/samples/javascript/04.live-share-react/package.json +++ b/samples/javascript/04.live-share-react/package.json @@ -13,7 +13,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/javascript/05.dice-roller-turbo/package.json b/samples/javascript/05.dice-roller-turbo/package.json index 9f04c848b..17c4a9c5e 100644 --- a/samples/javascript/05.dice-roller-turbo/package.json +++ b/samples/javascript/05.dice-roller-turbo/package.json @@ -20,10 +20,10 @@ "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/live-share-turbo": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/21.react-media-template/package.json b/samples/javascript/21.react-media-template/package.json index 100c14b8f..2fa1e1d7e 100644 --- a/samples/javascript/21.react-media-template/package.json +++ b/samples/javascript/21.react-media-template/package.json @@ -12,7 +12,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -24,7 +24,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", diff --git a/samples/javascript/22.react-agile-poker/package.json b/samples/javascript/22.react-agile-poker/package.json index b1c37540d..3f0ca2b5f 100644 --- a/samples/javascript/22.react-agile-poker/package.json +++ b/samples/javascript/22.react-agile-poker/package.json @@ -10,7 +10,7 @@ "@fluentui/react-theme": "^9.1.5", "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -20,7 +20,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/javascript/23.react-live-canvas/package.json b/samples/javascript/23.react-live-canvas/package.json index d6ce42806..a2e5a929e 100644 --- a/samples/javascript/23.react-live-canvas/package.json +++ b/samples/javascript/23.react-live-canvas/package.json @@ -8,7 +8,7 @@ "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router": "^6.4.2", @@ -17,7 +17,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/01.dice-roller/package.json b/samples/typescript/01.dice-roller/package.json index f3a756665..a31a0f103 100644 --- a/samples/typescript/01.dice-roller/package.json +++ b/samples/typescript/01.dice-roller/package.json @@ -20,10 +20,10 @@ "dependencies": { "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/03.live-canvas-demo/package.json b/samples/typescript/03.live-canvas-demo/package.json index 3b283511e..ad25b6976 100644 --- a/samples/typescript/03.live-canvas-demo/package.json +++ b/samples/typescript/03.live-canvas-demo/package.json @@ -20,10 +20,10 @@ "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/04.live-share-react/package.json b/samples/typescript/04.live-share-react/package.json index 435d9bbdc..57c2579ed 100644 --- a/samples/typescript/04.live-share-react/package.json +++ b/samples/typescript/04.live-share-react/package.json @@ -13,7 +13,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/05.dice-roller-turbo/package.json b/samples/typescript/05.dice-roller-turbo/package.json index 3e90d1300..573602a2a 100644 --- a/samples/typescript/05.dice-roller-turbo/package.json +++ b/samples/typescript/05.dice-roller-turbo/package.json @@ -20,10 +20,10 @@ "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/live-share-turbo": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/06.presence-avatars/package.json b/samples/typescript/06.presence-avatars/package.json index 8b475cfde..58b03b0d3 100644 --- a/samples/typescript/06.presence-avatars/package.json +++ b/samples/typescript/06.presence-avatars/package.json @@ -13,7 +13,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/06.presence-avatars/src/components/index.ts b/samples/typescript/06.presence-avatars/src/components/index.ts index 2f196ab69..c632279eb 100644 --- a/samples/typescript/06.presence-avatars/src/components/index.ts +++ b/samples/typescript/06.presence-avatars/src/components/index.ts @@ -1,9 +1,4 @@ import { FlexRow, FlexColumn, FlexItem } from "./flex"; import { MoreInformationText } from "./MoreInformationText"; -export { - FlexRow, - FlexColumn, - FlexItem, - MoreInformationText, -}; +export { FlexRow, FlexColumn, FlexItem, MoreInformationText }; diff --git a/samples/typescript/07.countdown-timer/package.json b/samples/typescript/07.countdown-timer/package.json index 1ffb2ae8a..c6ca6441e 100644 --- a/samples/typescript/07.countdown-timer/package.json +++ b/samples/typescript/07.countdown-timer/package.json @@ -13,7 +13,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/08.3d-model/package.json b/samples/typescript/08.3d-model/package.json index 811090c78..54ce0d024 100644 --- a/samples/typescript/08.3d-model/package.json +++ b/samples/typescript/08.3d-model/package.json @@ -15,7 +15,7 @@ "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/live-share-react": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -29,7 +29,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/21.react-media-template/package.json b/samples/typescript/21.react-media-template/package.json index eb996e5cd..78f60fd89 100644 --- a/samples/typescript/21.react-media-template/package.json +++ b/samples/typescript/21.react-media-template/package.json @@ -12,7 +12,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.4", "@microsoft/live-share-media": "2.0.0-internal.4", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.1", + "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -24,7 +24,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@types/lodash": "^4.14.191", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", diff --git a/samples/typescript/31.live-canvas-tests/package.json b/samples/typescript/31.live-canvas-tests/package.json index e97772f71..4bb7b6c14 100644 --- a/samples/typescript/31.live-canvas-tests/package.json +++ b/samples/typescript/31.live-canvas-tests/package.json @@ -16,13 +16,13 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@fluidframework/azure-client": "^2.0.0-rc.1", + "@fluidframework/azure-client": "^2.0.0-rc.2.0.0", "@microsoft/live-share": "2.0.0-internal.4", "@microsoft/live-share-canvas": "2.0.0-internal.4", - "fluid-framework": "^2.0.0-rc.1" + "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.1", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "buffer": "^6.0.3", "concurrently": "^5.3.0", "start-server-and-test": "^2.0.0", From df65822b3b0282b0de96202b1de492bcf8727c6f Mon Sep 17 00:00:00 2001 From: Ryan Bliss Date: Fri, 5 Apr 2024 11:01:27 -0700 Subject: [PATCH 11/40] Updated versions to 2.0.0-internal.5 --- internal/test-utils/package.json | 2 +- package-lock.json | 124 +++++++++--------- packages/live-share-canvas/package.json | 6 +- packages/live-share-media/package.json | 6 +- packages/live-share-react/package.json | 16 +-- packages/live-share-turbo/package.json | 6 +- packages/live-share/package.json | 2 +- .../javascript/01.dice-roller/package.json | 2 +- .../javascript/02.react-video/package.json | 4 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 8 +- .../05.dice-roller-turbo/package.json | 4 +- .../21.react-media-template/package.json | 6 +- .../22.react-agile-poker/package.json | 2 +- .../23.react-live-canvas/package.json | 4 +- .../typescript/01.dice-roller/package.json | 2 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 8 +- .../05.dice-roller-turbo/package.json | 4 +- .../06.presence-avatars/package.json | 8 +- .../07.countdown-timer/package.json | 8 +- samples/typescript/08.3d-model/package.json | 8 +- .../21.react-media-template/package.json | 6 +- .../31.live-canvas-tests/package.json | 4 +- 24 files changed, 124 insertions(+), 124 deletions(-) diff --git a/internal/test-utils/package.json b/internal/test-utils/package.json index 4de085ecb..47e04e8a5 100644 --- a/internal/test-utils/package.json +++ b/internal/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@live-share-private/test-utils", - "version": "2.0.0-internal.4", + "version": "2.0.0-internal.5", "description": "testing utils for live share", "repository": { "type": "git", diff --git a/package-lock.json b/package-lock.json index 6e4af80d0..87289566e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ }, "internal/test-utils": { "name": "@live-share-private/test-utils", - "version": "2.0.0-internal.4", + "version": "2.0.0-internal.5", "license": "MIT", "dependencies": { "@fluid-experimental/attributor": "^2.0.0-rc.2.0.0", @@ -15478,7 +15478,7 @@ }, "packages/live-share": { "name": "@microsoft/live-share", - "version": "2.0.0-internal.4", + "version": "2.0.0-internal.5", "license": "SEE LICENSE IN LICENSE", "dependencies": { "uuid": "^9.0.0" @@ -15506,10 +15506,10 @@ }, "packages/live-share-canvas": { "name": "@microsoft/live-share-canvas", - "version": "2.0.0-internal.4", + "version": "2.0.0-internal.5", "license": "SEE LICENSE IN LICENSE", "devDependencies": { - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -15520,20 +15520,20 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, "packages/live-share-media": { "name": "@microsoft/live-share-media", - "version": "2.0.0-internal.4", + "version": "2.0.0-internal.5", "license": "SEE LICENSE IN LICENSE", "devDependencies": { "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.0", "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@fluidframework/test-utils": "^2.0.0-rc.2.0.0", "@live-share-private/test-utils": "^2.0.0-internal.2", - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -15544,24 +15544,24 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, "packages/live-share-react": { "name": "@microsoft/live-share-react", - "version": "2.0.0-internal.4", + "version": "2.0.0-internal.5", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share-turbo": "2.0.0-internal.4", + "@microsoft/live-share-turbo": "2.0.0-internal.5", "url": "^0.11.0", "uuid": "^9.0.0" }, "devDependencies": { "@babel/core": "^7.21.8", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", @@ -15570,9 +15570,9 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal", "react": "^16.8.0 || ^17 || ^18", "react-dom": "^16.8.0 || ^17 || ^18" @@ -15580,14 +15580,14 @@ }, "packages/live-share-turbo": { "name": "@microsoft/live-share-turbo", - "version": "2.0.0-internal.4", + "version": "2.0.0-internal.5", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@fluidframework/register-collection": "^2.0.0-rc.2.0.0" }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -15602,7 +15602,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, @@ -15612,7 +15612,7 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0" }, @@ -15634,8 +15634,8 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", @@ -15686,8 +15686,8 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0" }, @@ -15709,10 +15709,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", - "@microsoft/live-share-react": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", + "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", @@ -15748,8 +15748,8 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-turbo": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-turbo": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0" }, @@ -15771,9 +15771,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", @@ -15812,7 +15812,7 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "prop-types": "^15.8.1", @@ -15845,8 +15845,8 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "react": "^18.2.0", @@ -15878,7 +15878,7 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0" }, @@ -15897,8 +15897,8 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0" }, @@ -15920,10 +15920,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", - "@microsoft/live-share-react": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", + "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", @@ -15959,8 +15959,8 @@ "hasInstallScript": true, "license": "Microsoft", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-turbo": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-turbo": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0" }, @@ -15982,10 +15982,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", - "@microsoft/live-share-react": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", + "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", @@ -16024,10 +16024,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", - "@microsoft/live-share-react": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", + "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", @@ -16068,10 +16068,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", - "@microsoft/live-share-react": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", + "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", @@ -16113,9 +16113,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", @@ -16546,8 +16546,8 @@ "license": "SEE LICENSE IN LICENSE", "dependencies": { "@fluidframework/azure-client": "^2.0.0-rc.2.0.0", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { diff --git a/packages/live-share-canvas/package.json b/packages/live-share-canvas/package.json index ca18ee259..c6cc44013 100644 --- a/packages/live-share-canvas/package.json +++ b/packages/live-share-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-canvas", - "version": "2.0.0-internal.4", + "version": "2.0.0-internal.5", "description": "Live Share extension library for collaborative inking.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -14,7 +14,7 @@ "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test" }, "devDependencies": { - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -25,7 +25,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { diff --git a/packages/live-share-media/package.json b/packages/live-share-media/package.json index 990e1cf0f..25f86112e 100644 --- a/packages/live-share-media/package.json +++ b/packages/live-share-media/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-media", - "version": "2.0.0-internal.4", + "version": "2.0.0-internal.5", "description": "Live Share classes that synchronize media playback across clients.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -15,7 +15,7 @@ "test:race": "node ./../live-share/test-for-race-conditions.js" }, "devDependencies": { - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.0", "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", "@fluidframework/test-utils": "^2.0.0-rc.2.0.0", @@ -30,7 +30,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { diff --git a/packages/live-share-react/package.json b/packages/live-share-react/package.json index e1b02dfd2..b7fe6f15d 100644 --- a/packages/live-share-react/package.json +++ b/packages/live-share-react/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-react", - "version": "2.0.0-internal.4", + "version": "2.0.0-internal.5", "description": "Build collaborative React apps using Microsoft's Fluid & Live Share frameworks with ease.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -12,15 +12,15 @@ "typecheck": "tsc" }, "dependencies": { - "@microsoft/live-share-turbo": "2.0.0-internal.4", + "@microsoft/live-share-turbo": "2.0.0-internal.5", "url": "^0.11.0", "uuid": "^9.0.0" }, "devDependencies": { "@babel/core": "^7.21.8", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", @@ -29,9 +29,9 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal", "react": "^16.8.0 || ^17 || ^18", "react-dom": "^16.8.0 || ^17 || ^18" diff --git a/packages/live-share-turbo/package.json b/packages/live-share-turbo/package.json index 45598daf8..f551ea077 100644 --- a/packages/live-share-turbo/package.json +++ b/packages/live-share-turbo/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share-turbo", - "version": "2.0.0-internal.4", + "version": "2.0.0-internal.5", "description": "Alternative & lightweight way to build collaborative apps using Microsoft's Fluid Framework & Live Share.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", @@ -21,7 +21,7 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", @@ -36,7 +36,7 @@ "typescript": "^5.0.4" }, "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" }, "repository": { diff --git a/packages/live-share/package.json b/packages/live-share/package.json index 243ff8b96..38fb4c8ec 100644 --- a/packages/live-share/package.json +++ b/packages/live-share/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/live-share", - "version": "2.0.0-internal.4", + "version": "2.0.0-internal.5", "description": "Building collaborative experiences for Microsoft Teams and M365 using Fluid.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", diff --git a/samples/javascript/01.dice-roller/package.json b/samples/javascript/01.dice-roller/package.json index 10b852325..767600a1e 100644 --- a/samples/javascript/01.dice-roller/package.json +++ b/samples/javascript/01.dice-roller/package.json @@ -18,7 +18,7 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0" }, diff --git a/samples/javascript/02.react-video/package.json b/samples/javascript/02.react-video/package.json index 6901dba8a..cc97b9484 100644 --- a/samples/javascript/02.react-video/package.json +++ b/samples/javascript/02.react-video/package.json @@ -10,8 +10,8 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", diff --git a/samples/javascript/03.live-canvas-demo/package.json b/samples/javascript/03.live-canvas-demo/package.json index 5c7832637..1aee91393 100644 --- a/samples/javascript/03.live-canvas-demo/package.json +++ b/samples/javascript/03.live-canvas-demo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0" }, diff --git a/samples/javascript/04.live-share-react/package.json b/samples/javascript/04.live-share-react/package.json index bd3c625e4..758c4c5e0 100644 --- a/samples/javascript/04.live-share-react/package.json +++ b/samples/javascript/04.live-share-react/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-react": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", diff --git a/samples/javascript/05.dice-roller-turbo/package.json b/samples/javascript/05.dice-roller-turbo/package.json index 17c4a9c5e..f6a2eb244 100644 --- a/samples/javascript/05.dice-roller-turbo/package.json +++ b/samples/javascript/05.dice-roller-turbo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-turbo": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-turbo": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0" }, diff --git a/samples/javascript/21.react-media-template/package.json b/samples/javascript/21.react-media-template/package.json index 2fa1e1d7e..7cbc52d57 100644 --- a/samples/javascript/21.react-media-template/package.json +++ b/samples/javascript/21.react-media-template/package.json @@ -8,9 +8,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", diff --git a/samples/javascript/22.react-agile-poker/package.json b/samples/javascript/22.react-agile-poker/package.json index 3f0ca2b5f..58fa46a6f 100644 --- a/samples/javascript/22.react-agile-poker/package.json +++ b/samples/javascript/22.react-agile-poker/package.json @@ -8,7 +8,7 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "prop-types": "^15.8.1", diff --git a/samples/javascript/23.react-live-canvas/package.json b/samples/javascript/23.react-live-canvas/package.json index a2e5a929e..e1af37fc7 100644 --- a/samples/javascript/23.react-live-canvas/package.json +++ b/samples/javascript/23.react-live-canvas/package.json @@ -5,8 +5,8 @@ "author": "Microsoft", "license": "MIT", "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "react": "^18.2.0", diff --git a/samples/typescript/01.dice-roller/package.json b/samples/typescript/01.dice-roller/package.json index a31a0f103..0667ba13b 100644 --- a/samples/typescript/01.dice-roller/package.json +++ b/samples/typescript/01.dice-roller/package.json @@ -18,7 +18,7 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0" }, diff --git a/samples/typescript/03.live-canvas-demo/package.json b/samples/typescript/03.live-canvas-demo/package.json index ad25b6976..a7a9b5b35 100644 --- a/samples/typescript/03.live-canvas-demo/package.json +++ b/samples/typescript/03.live-canvas-demo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0" }, diff --git a/samples/typescript/04.live-share-react/package.json b/samples/typescript/04.live-share-react/package.json index 57c2579ed..330cb79a3 100644 --- a/samples/typescript/04.live-share-react/package.json +++ b/samples/typescript/04.live-share-react/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-react": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", diff --git a/samples/typescript/05.dice-roller-turbo/package.json b/samples/typescript/05.dice-roller-turbo/package.json index 573602a2a..e132506a4 100644 --- a/samples/typescript/05.dice-roller-turbo/package.json +++ b/samples/typescript/05.dice-roller-turbo/package.json @@ -17,8 +17,8 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-turbo": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-turbo": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0" }, diff --git a/samples/typescript/06.presence-avatars/package.json b/samples/typescript/06.presence-avatars/package.json index 58b03b0d3..71411886e 100644 --- a/samples/typescript/06.presence-avatars/package.json +++ b/samples/typescript/06.presence-avatars/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-react": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", diff --git a/samples/typescript/07.countdown-timer/package.json b/samples/typescript/07.countdown-timer/package.json index c6ca6441e..a789e8641 100644 --- a/samples/typescript/07.countdown-timer/package.json +++ b/samples/typescript/07.countdown-timer/package.json @@ -8,10 +8,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-react": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", diff --git a/samples/typescript/08.3d-model/package.json b/samples/typescript/08.3d-model/package.json index 54ce0d024..702fdffbb 100644 --- a/samples/typescript/08.3d-model/package.json +++ b/samples/typescript/08.3d-model/package.json @@ -10,10 +10,10 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", - "@microsoft/live-share-react": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", + "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", diff --git a/samples/typescript/21.react-media-template/package.json b/samples/typescript/21.react-media-template/package.json index 78f60fd89..1694e3475 100644 --- a/samples/typescript/21.react-media-template/package.json +++ b/samples/typescript/21.react-media-template/package.json @@ -8,9 +8,9 @@ "@fluentui/react-components": "^9.18.6", "@fluentui/react-icons": "^2.0.202", "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", - "@microsoft/live-share-media": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", "fluid-framework": "^2.0.0-rc.2.0.0", "lodash": "^4.17.21", diff --git a/samples/typescript/31.live-canvas-tests/package.json b/samples/typescript/31.live-canvas-tests/package.json index 4bb7b6c14..0bca7c0c2 100644 --- a/samples/typescript/31.live-canvas-tests/package.json +++ b/samples/typescript/31.live-canvas-tests/package.json @@ -17,8 +17,8 @@ }, "dependencies": { "@fluidframework/azure-client": "^2.0.0-rc.2.0.0", - "@microsoft/live-share": "2.0.0-internal.4", - "@microsoft/live-share-canvas": "2.0.0-internal.4", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", "fluid-framework": "^2.0.0-rc.2.0.0" }, "devDependencies": { From 1956dff6e5126b10768858d27d15f7a32e639107 Mon Sep 17 00:00:00 2001 From: huntj88 Date: Tue, 28 May 2024 15:17:17 -0500 Subject: [PATCH 12/40] Updated FluidFramework packages (#779) Co-authored-by: James Hunt --- internal/test-utils/package.json | 46 +- internal/test-utils/src/compatUtils.ts | 8 +- internal/test-utils/src/describeCompat.ts | 6 +- internal/test-utils/src/localDriverApi.ts | 2 +- .../test-utils/src/localServerTestDriver.ts | 2 +- internal/test-utils/src/testApi.ts | 22 +- package-lock.json | 1770 ++++++----------- packages/live-share-canvas/package.json | 2 +- .../live-share-canvas/src/core/LiveCanvas.ts | 4 +- packages/live-share-media/package.json | 8 +- .../live-share-media/src/LiveMediaSession.ts | 2 +- .../src/internals/GroupCoordinatorState.ts | 1 - packages/live-share-react/package.json | 2 +- .../src/shared-hooks/useSharedMap.ts | 2 +- .../shared-hooks/useSharedStateRegistry.ts | 2 +- .../live-share-react/src/types/ResultTypes.ts | 3 +- packages/live-share-turbo/package.json | 6 +- .../live-share-turbo/src/FluidTurboClient.ts | 2 +- .../src/dds-objects/DynamicObjectManager.ts | 6 +- .../src/interfaces/IFluidTurboClient.ts | 3 +- .../live-share-turbo/src/internals/schema.ts | 3 +- packages/live-share/package.json | 12 +- packages/live-share/src/AzureLiveShareHost.ts | 4 +- .../live-share/src/DynamicObjectRegistry.ts | 8 +- packages/live-share/src/LiveDataObject.ts | 4 +- packages/live-share/src/LiveEvent.ts | 2 +- packages/live-share/src/LiveEventScope.ts | 20 +- packages/live-share/src/LiveFollowMode.ts | 4 +- packages/live-share/src/LivePresence.ts | 2 +- packages/live-share/src/LiveShareRuntime.ts | 2 +- packages/live-share/src/LiveState.ts | 4 +- .../live-share/src/LiveTelemetryLogger.ts | 90 +- packages/live-share/src/LiveTimer.ts | 2 +- .../live-share/src/internals/type-guards.ts | 14 +- packages/live-share/src/internals/utils.ts | 41 - .../live-share/src/schema-injection-utils.ts | 13 +- .../javascript/01.dice-roller/package.json | 4 +- samples/javascript/01.dice-roller/src/app.js | 2 +- .../javascript/02.react-video/package.json | 4 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 4 +- .../src/pages/AzureAutoJoin.jsx | 2 +- .../05.dice-roller-turbo/package.json | 4 +- .../21.react-media-template/package.json | 4 +- .../src/live-share-hooks/useSharedObjects.js | 2 +- .../src/live-share-hooks/useTakeControl.js | 3 +- .../22.react-agile-poker/package.json | 4 +- .../src/live-share-hooks/useSharedObjects.js | 2 +- .../23.react-live-canvas/package.json | 4 +- .../typescript/01.dice-roller/package.json | 4 +- samples/typescript/01.dice-roller/src/app.ts | 2 +- .../src/renderMeetingSidePanel.ts | 3 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 4 +- .../src/pages/AzureAutoJoin.tsx | 4 +- .../05.dice-roller-turbo/package.json | 4 +- .../06.presence-avatars/package.json | 4 +- .../07.countdown-timer/package.json | 4 +- samples/typescript/08.3d-model/package.json | 4 +- .../21.react-media-template/package.json | 4 +- .../src/live-share-hooks/usePlaylist.ts | 2 +- .../src/live-share-hooks/useSharedObjects.ts | 3 +- .../src/live-share-hooks/useTakeControl.ts | 2 +- .../31.live-canvas-tests/package.json | 6 +- 64 files changed, 840 insertions(+), 1381 deletions(-) diff --git a/internal/test-utils/package.json b/internal/test-utils/package.json index 47e04e8a5..0fa173275 100644 --- a/internal/test-utils/package.json +++ b/internal/test-utils/package.json @@ -24,29 +24,29 @@ "tsc": "tsc" }, "dependencies": { - "@fluid-experimental/attributor": "^2.0.0-rc.2.0.0", - "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.2.0.0", - "@fluidframework/agent-scheduler": "^2.0.0-rc.2.0.0", - "@fluidframework/aqueduct": "^2.0.0-rc.1.0.3", - "@fluidframework/cell": "^2.0.0-rc.2.0.0", - "@fluidframework/container-loader": "^2.0.0-rc.1.0.3", - "@fluidframework/container-runtime": "^2.0.0-rc.1.0.4", - "@fluidframework/core-interfaces": "^2.0.0-rc.2.0.0", - "@fluidframework/core-utils": "^2.0.0-rc.2.0.0", - "@fluidframework/counter": "^2.0.0-rc.2.0.0", - "@fluidframework/datastore-definitions": "^2.0.0-rc.1.0.4", - "@fluidframework/driver-definitions": "^2.0.0-rc.2.0.0", - "@fluidframework/local-driver": "^2.0.0-rc.2.0.0", - "@fluidframework/map": "^2.0.0-rc.1.0.4", - "@fluidframework/matrix": "^2.0.0-rc.2.0.0", - "@fluidframework/ordered-collection": "^2.0.0-rc.2.0.0", - "@fluidframework/register-collection": "^2.0.0-rc.1.0.4", - "@fluidframework/runtime-definitions": "^2.0.0-rc.1.0.4", - "@fluidframework/sequence": "^2.0.0-rc.1.0.4", - "@fluidframework/server-local-server": "^3.1.0-237980", - "@fluidframework/telemetry-utils": "^2.0.0-rc.1.0.4", - "@fluidframework/test-driver-definitions": "^2.0.0-rc.2.0.0", - "@fluidframework/test-utils": "^2.0.0-rc.1.0.3" + "@fluid-experimental/attributor": "^2.0.0-rc.4.0.2", + "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.4.0.2", + "@fluidframework/agent-scheduler": "^2.0.0-rc.4.0.2", + "@fluidframework/aqueduct": "^2.0.0-rc.4.0.2", + "@fluidframework/cell": "^2.0.0-rc.4.0.2", + "@fluidframework/container-loader": "^2.0.0-rc.4.0.2", + "@fluidframework/container-runtime": "^2.0.0-rc.4.0.2", + "@fluidframework/core-interfaces": "^2.0.0-rc.4.0.2", + "@fluidframework/core-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/counter": "^2.0.0-rc.4.0.2", + "@fluidframework/datastore-definitions": "^2.0.0-rc.4.0.2", + "@fluidframework/driver-definitions": "^2.0.0-rc.4.0.2", + "@fluidframework/local-driver": "^2.0.0-rc.4.0.2", + "@fluidframework/map": "^2.0.0-rc.4.0.2", + "@fluidframework/matrix": "^2.0.0-rc.4.0.2", + "@fluidframework/ordered-collection": "^2.0.0-rc.4.0.2", + "@fluidframework/register-collection": "^2.0.0-rc.4.0.2", + "@fluidframework/runtime-definitions": "^2.0.0-rc.4.0.2", + "@fluidframework/sequence": "^2.0.0-rc.4.0.2", + "@fluidframework/server-local-server": "^4.0.1", + "@fluidframework/telemetry-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-driver-definitions": "^2.0.0-rc.2.0.7", + "@fluidframework/test-utils": "^2.0.0-rc.4.0.2" }, "devDependencies": { "@fluidframework/eslint-config-fluid": "^3.5.0", diff --git a/internal/test-utils/src/compatUtils.ts b/internal/test-utils/src/compatUtils.ts index 149a93861..8283ca9ae 100644 --- a/internal/test-utils/src/compatUtils.ts +++ b/internal/test-utils/src/compatUtils.ts @@ -7,20 +7,20 @@ import { IFluidLoadable } from "@fluidframework/core-interfaces"; import { IFluidDataStoreContext, IFluidDataStoreFactory, -} from "@fluidframework/runtime-definitions"; +} from "@fluidframework/runtime-definitions/internal"; import { IFluidDataStoreRuntime, IChannelFactory, } from "@fluidframework/datastore-definitions"; -import { ISharedDirectory } from "@fluidframework/map"; -import { unreachableCase } from "@fluidframework/core-utils"; +import { ISharedDirectory } from "@fluidframework/map/internal"; +import { unreachableCase } from "@fluidframework/core-utils/internal"; import { ITestContainerConfig, DataObjectFactoryType, ChannelFactoryRegistry, createTestContainerRuntimeFactory, TestObjectProvider, -} from "@fluidframework/test-utils"; +} from "@fluidframework/test-utils/internal"; import { mixinAttributor } from "@fluid-experimental/attributor"; import { ContainerRuntimeApi, DataRuntimeApi, LoaderApi } from "./testApi"; import { LocalServerTestDriver } from "./localServerTestDriver"; diff --git a/internal/test-utils/src/describeCompat.ts b/internal/test-utils/src/describeCompat.ts index 157374d94..ec6f8339e 100644 --- a/internal/test-utils/src/describeCompat.ts +++ b/internal/test-utils/src/describeCompat.ts @@ -3,11 +3,11 @@ * Licensed under the MIT License. */ -import { createChildLogger } from "@fluidframework/telemetry-utils"; +import { createChildLogger } from "@fluidframework/telemetry-utils/internal"; import { getUnexpectedLogErrorException, ITestObjectProvider, -} from "@fluidframework/test-utils"; +} from "@fluidframework/test-utils/internal"; import { CompatApis, getVersionedTestObjectProviderFromApis, @@ -68,7 +68,7 @@ function createCompatSuite( afterEach(function (this: Mocha.Context, done: Mocha.Done) { const logErrors = getUnexpectedLogErrorException( - provider.logger + provider.tracker ); // if the test failed for another reason // then we don't need to check errors diff --git a/internal/test-utils/src/localDriverApi.ts b/internal/test-utils/src/localDriverApi.ts index 85b82793d..4f8455708 100644 --- a/internal/test-utils/src/localDriverApi.ts +++ b/internal/test-utils/src/localDriverApi.ts @@ -7,7 +7,7 @@ import { LocalDocumentServiceFactory, LocalResolver, createLocalResolverCreateNewRequest, -} from "@fluidframework/local-driver"; +} from "@fluidframework/local-driver/internal"; import { LocalDeltaConnectionServer } from "@fluidframework/server-local-server"; /** diff --git a/internal/test-utils/src/localServerTestDriver.ts b/internal/test-utils/src/localServerTestDriver.ts index 7b4829ef2..2087cb92b 100644 --- a/internal/test-utils/src/localServerTestDriver.ts +++ b/internal/test-utils/src/localServerTestDriver.ts @@ -6,7 +6,7 @@ import { IRequest } from "@fluidframework/core-interfaces"; import { IDocumentServiceFactory, IUrlResolver, -} from "@fluidframework/driver-definitions"; +} from "@fluidframework/driver-definitions/internal"; import { ILocalDeltaConnectionServer, LocalDeltaConnectionServer, diff --git a/internal/test-utils/src/testApi.ts b/internal/test-utils/src/testApi.ts index 1a32d7cf1..e3a352a44 100644 --- a/internal/test-utils/src/testApi.ts +++ b/internal/test-utils/src/testApi.ts @@ -4,35 +4,35 @@ */ // Loader API -import { Loader } from "@fluidframework/container-loader"; +import { Loader } from "@fluidframework/container-loader/internal"; // ContainerRuntime API -import { ContainerRuntime } from "@fluidframework/container-runtime"; +import { ContainerRuntime } from "@fluidframework/container-runtime/internal"; // Data Runtime API import * as agentScheduler from "@fluidframework/agent-scheduler"; import * as cell from "@fluidframework/cell"; -import { SharedCell } from "@fluidframework/cell"; +import { SharedCell } from "@fluidframework/cell/internal"; import * as counter from "@fluidframework/counter"; -import { SharedCounter } from "@fluidframework/counter"; +import { SharedCounter } from "@fluidframework/counter/internal"; import * as map from "@fluidframework/map"; -import { SharedDirectory, SharedMap } from "@fluidframework/map"; +import { SharedDirectory, SharedMap } from "@fluidframework/map/internal"; import * as matrix from "@fluidframework/matrix"; -import { SharedMatrix } from "@fluidframework/matrix"; +import { SharedMatrix } from "@fluidframework/matrix/internal"; import * as orderedCollection from "@fluidframework/ordered-collection"; -import { ConsensusQueue } from "@fluidframework/ordered-collection"; +import { ConsensusQueue } from "@fluidframework/ordered-collection/internal"; import * as registerCollection from "@fluidframework/register-collection"; -import { ConsensusRegisterCollection } from "@fluidframework/register-collection"; +import { ConsensusRegisterCollection } from "@fluidframework/register-collection/internal"; import * as sequence from "@fluidframework/sequence"; -import { SharedString } from "@fluidframework/sequence"; -import { TestFluidObjectFactory } from "@fluidframework/test-utils"; +import { SharedString } from "@fluidframework/sequence/internal"; +import { TestFluidObjectFactory } from "@fluidframework/test-utils/internal"; // ContainerRuntime and Data Runtime API import { ContainerRuntimeFactoryWithDefaultDataStore, DataObject, DataObjectFactory, -} from "@fluidframework/aqueduct"; +} from "@fluidframework/aqueduct/internal"; import * as sequenceDeprecated from "@fluid-experimental/sequence-deprecated"; // #region Current versions of the APIs. diff --git a/package-lock.json b/package-lock.json index 87289566e..22b2595db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,29 +36,29 @@ "version": "2.0.0-internal.5", "license": "MIT", "dependencies": { - "@fluid-experimental/attributor": "^2.0.0-rc.2.0.0", - "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.2.0.0", - "@fluidframework/agent-scheduler": "^2.0.0-rc.2.0.0", - "@fluidframework/aqueduct": "^2.0.0-rc.1.0.3", - "@fluidframework/cell": "^2.0.0-rc.2.0.0", - "@fluidframework/container-loader": "^2.0.0-rc.1.0.3", - "@fluidframework/container-runtime": "^2.0.0-rc.1.0.4", - "@fluidframework/core-interfaces": "^2.0.0-rc.2.0.0", - "@fluidframework/core-utils": "^2.0.0-rc.2.0.0", - "@fluidframework/counter": "^2.0.0-rc.2.0.0", - "@fluidframework/datastore-definitions": "^2.0.0-rc.1.0.4", - "@fluidframework/driver-definitions": "^2.0.0-rc.2.0.0", - "@fluidframework/local-driver": "^2.0.0-rc.2.0.0", - "@fluidframework/map": "^2.0.0-rc.1.0.4", - "@fluidframework/matrix": "^2.0.0-rc.2.0.0", - "@fluidframework/ordered-collection": "^2.0.0-rc.2.0.0", - "@fluidframework/register-collection": "^2.0.0-rc.1.0.4", - "@fluidframework/runtime-definitions": "^2.0.0-rc.1.0.4", - "@fluidframework/sequence": "^2.0.0-rc.1.0.4", - "@fluidframework/server-local-server": "^3.1.0-237980", - "@fluidframework/telemetry-utils": "^2.0.0-rc.1.0.4", - "@fluidframework/test-driver-definitions": "^2.0.0-rc.2.0.0", - "@fluidframework/test-utils": "^2.0.0-rc.1.0.3" + "@fluid-experimental/attributor": "^2.0.0-rc.4.0.2", + "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.4.0.2", + "@fluidframework/agent-scheduler": "^2.0.0-rc.4.0.2", + "@fluidframework/aqueduct": "^2.0.0-rc.4.0.2", + "@fluidframework/cell": "^2.0.0-rc.4.0.2", + "@fluidframework/container-loader": "^2.0.0-rc.4.0.2", + "@fluidframework/container-runtime": "^2.0.0-rc.4.0.2", + "@fluidframework/core-interfaces": "^2.0.0-rc.4.0.2", + "@fluidframework/core-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/counter": "^2.0.0-rc.4.0.2", + "@fluidframework/datastore-definitions": "^2.0.0-rc.4.0.2", + "@fluidframework/driver-definitions": "^2.0.0-rc.4.0.2", + "@fluidframework/local-driver": "^2.0.0-rc.4.0.2", + "@fluidframework/map": "^2.0.0-rc.4.0.2", + "@fluidframework/matrix": "^2.0.0-rc.4.0.2", + "@fluidframework/ordered-collection": "^2.0.0-rc.4.0.2", + "@fluidframework/register-collection": "^2.0.0-rc.4.0.2", + "@fluidframework/runtime-definitions": "^2.0.0-rc.4.0.2", + "@fluidframework/sequence": "^2.0.0-rc.4.0.2", + "@fluidframework/server-local-server": "^4.0.1", + "@fluidframework/telemetry-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-driver-definitions": "^2.0.0-rc.2.0.7", + "@fluidframework/test-utils": "^2.0.0-rc.4.0.2" }, "devDependencies": { "@fluidframework/eslint-config-fluid": "^3.5.0", @@ -72,214 +72,30 @@ "typescript": "~5.1.6" } }, - "internal/test-utils/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "internal/test-utils/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", + "internal/test-utils/node_modules/@fluidframework/test-driver-definitions": { + "version": "2.0.0-rc.2.0.7", + "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.2.0.7.tgz", + "integrity": "sha512-BuQ1MWaCkEgQ5S6uXXVA6rHrVpFHJtsbopJ5IMsr//vxZMDNxaVL/kXJAkWO7yyFjCdFZdvXdYO66pasHj59yw==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.7 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.7 <2.0.0-rc.2.1.0", "@fluidframework/protocol-definitions": "^3.2.0" } }, - "internal/test-utils/node_modules/@fluidframework/gitresources": { - "version": "3.1.0-240326", - "resolved": "https://registry.npmjs.org/@fluidframework/gitresources/-/gitresources-3.1.0-240326.tgz", - "integrity": "sha512-ZYA+xIk4/nHKbpzz3vqr2LrE/yCsuvL+5UgmgZG9hTdaAQEvOo/QNbLn29VCP6Gnv58Xmyt8Wo609DtnnAhqLw==" - }, - "internal/test-utils/node_modules/@fluidframework/protocol-base": { - "version": "3.1.0-240326", - "resolved": "https://registry.npmjs.org/@fluidframework/protocol-base/-/protocol-base-3.1.0-240326.tgz", - "integrity": "sha512-UCnYMx1KOTwknIcHznoJuQQGVluXhFYASnczCDJiC5dRVpwAaj+Z7FaPF+mtPDnJ6rtAjLTc8yHIDscc5PKS0Q==", - "dependencies": { - "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "3.1.0-240326", - "@fluidframework/protocol-definitions": "^3.2.0-237840", - "events": "^3.1.0" - } - }, - "internal/test-utils/node_modules/@fluidframework/server-lambdas": { - "version": "3.1.0-240326", - "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas/-/server-lambdas-3.1.0-240326.tgz", - "integrity": "sha512-UsoEQYWjrST+tNCtyvF6iOuk3VuhrkIYDLdXQnYOZblHsAw+T1f6McUt8is572Um3noRA5VwL7xiffMO65CArQ==", - "dependencies": { - "@fluidframework/common-definitions": "^1.1.0", - "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "3.1.0-240326", - "@fluidframework/protocol-base": "3.1.0-240326", - "@fluidframework/protocol-definitions": "^3.2.0-237840", - "@fluidframework/server-lambdas-driver": "3.1.0-240326", - "@fluidframework/server-services-client": "3.1.0-240326", - "@fluidframework/server-services-core": "3.1.0-240326", - "@fluidframework/server-services-telemetry": "3.1.0-240326", - "@types/semver": "^7.5.0", - "assert": "^2.0.0", - "async": "^3.2.2", - "axios": "^1.6.2", - "buffer": "^6.0.3", - "double-ended-queue": "^2.1.0-0", - "events": "^3.1.0", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.21", - "nconf": "^0.12.0", - "semver": "^7.5.3", - "sha.js": "^2.4.11", - "uuid": "^9.0.0" - } - }, - "internal/test-utils/node_modules/@fluidframework/server-lambdas-driver": { - "version": "3.1.0-240326", - "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas-driver/-/server-lambdas-driver-3.1.0-240326.tgz", - "integrity": "sha512-/+Q4KmJN17Pg50Yy1ZPCiouE87sHu9l7EAOMVFH/DE6yYxqfnDv2Qomm9GpcXO3gUgrmvAgKciRPJICAF/q4Vg==", - "dependencies": { - "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/server-services-client": "3.1.0-240326", - "@fluidframework/server-services-core": "3.1.0-240326", - "@fluidframework/server-services-telemetry": "3.1.0-240326", - "assert": "^2.0.0", - "async": "^3.2.2", - "events": "^3.1.0", - "lodash": "^4.17.21", - "nconf": "^0.12.0", - "serialize-error": "^8.1.0" - } - }, - "internal/test-utils/node_modules/@fluidframework/server-local-server": { - "version": "3.1.0-240326", - "resolved": "https://registry.npmjs.org/@fluidframework/server-local-server/-/server-local-server-3.1.0-240326.tgz", - "integrity": "sha512-fTvqo/pPOTG+aqvvQVFETAWCPywk34jmfXvYgokTrITWgGNlNJzYxTfJTfqXHMqnsVdCdFSIJiH26gIfHpteZw==", - "dependencies": { - "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/protocol-definitions": "^3.2.0-237840", - "@fluidframework/server-lambdas": "3.1.0-240326", - "@fluidframework/server-memory-orderer": "3.1.0-240326", - "@fluidframework/server-services-client": "3.1.0-240326", - "@fluidframework/server-services-core": "3.1.0-240326", - "@fluidframework/server-services-telemetry": "3.1.0-240326", - "@fluidframework/server-test-utils": "3.1.0-240326", - "debug": "^4.3.4", - "events": "^3.1.0", - "jsrsasign": "^11.0.0", - "uuid": "^9.0.0" - } - }, - "internal/test-utils/node_modules/@fluidframework/server-memory-orderer": { - "version": "3.1.0-240326", - "resolved": "https://registry.npmjs.org/@fluidframework/server-memory-orderer/-/server-memory-orderer-3.1.0-240326.tgz", - "integrity": "sha512-66dXxi46YGK+yxC3xS/DK3yNQfkHL5Rvzj+3//J4iLEG3ouPPgIXy/gAuD2uukdu5rmX4KEZDMwzhv/GaJkysw==", - "dependencies": { - "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/protocol-base": "3.1.0-240326", - "@fluidframework/protocol-definitions": "^3.2.0-237840", - "@fluidframework/server-lambdas": "3.1.0-240326", - "@fluidframework/server-services-client": "3.1.0-240326", - "@fluidframework/server-services-core": "3.1.0-240326", - "@fluidframework/server-services-telemetry": "3.1.0-240326", - "@types/debug": "^4.1.5", - "@types/double-ended-queue": "^2.1.0", - "@types/lodash": "^4.14.118", - "@types/node": "^18.17.1", - "@types/ws": "^6.0.1", - "assert": "^2.0.0", - "debug": "^4.3.4", - "double-ended-queue": "^2.1.0-0", - "events": "^3.1.0", - "lodash": "^4.17.21", - "sillyname": "^0.1.0", - "uuid": "^9.0.0", - "ws": "^7.4.6" - } - }, - "internal/test-utils/node_modules/@fluidframework/server-services-client": { - "version": "3.1.0-240326", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-client/-/server-services-client-3.1.0-240326.tgz", - "integrity": "sha512-q72lcFbMyM2GkNhhXjVTFmeP9mJQ1SYtmkL/SKlng5gk/TCV5kui99asdaBmmATnOTM0FzuK/Z0Bra5Hv980QQ==", - "dependencies": { - "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "3.1.0-240326", - "@fluidframework/protocol-base": "3.1.0-240326", - "@fluidframework/protocol-definitions": "^3.2.0-237840", - "axios": "^1.6.2", - "crc-32": "1.2.0", - "debug": "^4.3.4", - "json-stringify-safe": "^5.0.1", - "jsrsasign": "^11.0.0", - "jwt-decode": "^4.0.0", - "sillyname": "^0.1.0", - "uuid": "^9.0.0" - } - }, - "internal/test-utils/node_modules/@fluidframework/server-services-core": { - "version": "3.1.0-240326", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-core/-/server-services-core-3.1.0-240326.tgz", - "integrity": "sha512-CK/yvBq94bHQm4qgCUp3EnfQedS7Dlyrsx7SE7FxeLLj4zm1Df8h1UX7t91SzJRyHMTI4l5xLrES6jbvp8vHRA==", - "dependencies": { - "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "3.1.0-240326", - "@fluidframework/protocol-definitions": "^3.2.0-237840", - "@fluidframework/server-services-client": "3.1.0-240326", - "@fluidframework/server-services-telemetry": "3.1.0-240326", - "@types/nconf": "^0.10.2", - "@types/node": "^18.17.1", - "debug": "^4.3.4", - "events": "^3.1.0", - "nconf": "^0.12.0" - } - }, - "internal/test-utils/node_modules/@fluidframework/server-services-telemetry": { - "version": "3.1.0-240326", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-telemetry/-/server-services-telemetry-3.1.0-240326.tgz", - "integrity": "sha512-G8baYbIFOkpq4sa9GkpzYYnx1oBBfdzdsI0CCsEY9D0XNmETgm0Qf+qspfGUB5BvwvoAB6ciyGkjXGRZQ4ytYw==", - "dependencies": { - "@fluidframework/common-utils": "^3.1.0", - "json-stringify-safe": "^5.0.1", - "path-browserify": "^1.0.1", - "serialize-error": "^8.1.0", - "uuid": "^9.0.0" - } - }, - "internal/test-utils/node_modules/@fluidframework/server-test-utils": { - "version": "3.1.0-240326", - "resolved": "https://registry.npmjs.org/@fluidframework/server-test-utils/-/server-test-utils-3.1.0-240326.tgz", - "integrity": "sha512-BpOkkU/jfpdM/dB/aAYUGpcBzsZoJoA1ozVrVRO2cAVrnjJxgzXN1pSe5EDGmcr9KI1tHBstpxRZmOHdYkQ47w==", - "dependencies": { - "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "3.1.0-240326", - "@fluidframework/protocol-base": "3.1.0-240326", - "@fluidframework/protocol-definitions": "^3.2.0-237840", - "@fluidframework/server-services-client": "3.1.0-240326", - "@fluidframework/server-services-core": "3.1.0-240326", - "@fluidframework/server-services-telemetry": "3.1.0-240326", - "assert": "^2.0.0", - "debug": "^4.3.4", - "events": "^3.1.0", - "lodash": "^4.17.21", - "string-hash": "^1.1.3", - "uuid": "^9.0.0" - } + "internal/test-utils/node_modules/@fluidframework/test-driver-definitions/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.2.0.7", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.7.tgz", + "integrity": "sha512-U0BvFzR5MopJRcsKL2HoqzlQCTC1ZC+9p5hTbhYblWY7IVp6dGgA50nCppsRO+vVRBkt7eDwyANuqPdTzAnZ5A==" }, - "internal/test-utils/node_modules/@fluidframework/test-driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-atFHp64DzzcuXXv9Ubtv8Pl+lJcKvmP46RA96goHP3AjZrZtNVs16uYvf+FRtDt6Q+8IGHBDSUpH7He0EatH3A==", + "internal/test-utils/node_modules/@fluidframework/test-driver-definitions/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.2.0.7", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.7.tgz", + "integrity": "sha512-K6sNschQbiLmAusyBFEnelftdRxLk6hOYYVlxPixHbmrQxo8X3bKNZBLh09L/tOHxWTmqVtoiStFulTuzzWJ0w==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.7 <2.0.0-rc.2.1.0", "@fluidframework/protocol-definitions": "^3.2.0" } }, - "internal/test-utils/node_modules/@types/node": { - "version": "18.19.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.21.tgz", - "integrity": "sha512-2Q2NeB6BmiTFQi4DHBzncSoq/cJMLDdhPaAoJFnFCyD9a8VPZRf7a1GAwp1Edb7ROaZc5Jz/tnZyL6EsWMRaqw==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, "internal/test-utils/node_modules/@typescript-eslint/eslint-plugin": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.1.tgz", @@ -582,26 +398,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "internal/test-utils/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "internal/test-version-utils": { "name": "@fluid-private/test-version-utils", "version": "2.0.0-rc.2.0.0", @@ -2891,54 +2687,44 @@ } }, "node_modules/@fluid-experimental/attributor": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluid-experimental/attributor/-/attributor-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-Z+zKLDnLwGYkvcoKZlDCxZ0gfSRHwMvoVvN9J/Ry4eKNO1x1Lc4oPB+J7Ccex7VqQLhgTY6GQ31dSHVY2yszeg==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluid-experimental/attributor/-/attributor-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-u0HCCzzwY4m63pIzCn/fc6GznUqc8CQjfNy44yQwmDFpT1PTYJ6pfi850K3Vma3OcWVGX2HwUSE8Yh3mi9Dzvg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "lz4js": "^0.2.0" } }, - "node_modules/@fluid-experimental/attributor/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluid-experimental/sequence-deprecated": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluid-experimental/sequence-deprecated/-/sequence-deprecated-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-roiaMVHegUIyX0ESn+FI5BiFSogs59mLC0w6fFzCG0zn+CsSSisqZ3EU5288dPiVt1NrHs8VdZxjePP40Do1Iw==", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluid-experimental/sequence-deprecated/-/sequence-deprecated-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-9hV+4fTu/ROFh3YQmkjrbuA01uQl0BBx2uw0h+33M1sEZT+lODVo4jGRRU3hoX8O+7dUb33Z5X2P8AbuIJEPzw==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/sequence": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/sequence": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" } }, - "node_modules/@fluid-experimental/sequence-deprecated/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluid-internal/client-utils": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluid-internal/client-utils/-/client-utils-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-R/z8zu+qRtUEOosZ9zRIWGcUIayA/R4cYCv/Hl7bCKtArzmIL883Dek1l609DkECDsJCqUwSSVEXbXLX6BGztA==", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluid-internal/client-utils/-/client-utils-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-ddj9HNMeOf8SvHCLlIDKsn8YeE4Eirj03KcLFQOZekUyHYpSZKqr8uneD/fTxfi16HoFZqBId+WUT3dqniXDsw==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@types/events_pkg": "npm:@types/events@^3.0.0", "base64-js": "^1.5.1", "buffer": "^6.0.3", @@ -2947,114 +2733,89 @@ "sha.js": "^2.4.11" } }, - "node_modules/@fluid-internal/client-utils/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + "node_modules/@fluid-internal/test-driver-definitions": { + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluid-internal/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-xyhaghjHD4kJKO86jAuKWT2rEE71VpQiJIkcbvA3kDTuwCi08IajyCn/LT9apC85P4tIPTO7mOKsmC9Suypw1w==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" + } }, "node_modules/@fluidframework/agent-scheduler": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/agent-scheduler/-/agent-scheduler-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-FiiYnQ9ZlpB1Jp8kX/V4TYwwWBraXZjdIbvsUEN82dFsX3Lg5MKbwB3g8s9NlHtw8wwwRyRY9U2cZ09mS8a2rA==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/map": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/register-collection": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/agent-scheduler/-/agent-scheduler-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-50HcBq3xWEVZUlnUdPK4bqoLZrOfjsEz6V08Uzn+/F3ng/hkSVfFJWqE3YOHNoHqtJxkMN+NuwBtY3oYqeOn6w==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/map": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/register-collection": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/agent-scheduler/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/aqueduct": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/aqueduct/-/aqueduct-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-UsGiqh22i2lcGkiT/oDlcFzE5T4dH/20QloODBjydlpOhPqMlUIoA4sq6I/jGOp2rBANgZS9x4EDJMgiNG/Hlg==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/map": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/request-handler": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/synthesize": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" - } - }, - "node_modules/@fluidframework/aqueduct/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/aqueduct/-/aqueduct-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-d2ePMYdZEGmIXHCwqx1VaMkgW+HVWrnovf2L+ZeSXoeY4XJWVndDMTJX3062PfFClF3ly7c4ytaHcJAdA0e1Qw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/map": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/request-handler": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/synthesize": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" + } }, "node_modules/@fluidframework/azure-client": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/azure-client/-/azure-client-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-CwNrTQnp+Wwr4sNK70mxtt6body6AorBLhwvzieTcQ1M8hfGZyJwTdKYn5iqv7lpCDXCZYWlXXbthL6h/Ra3Pg==", - "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-loader": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/fluid-static": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/map": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/azure-client/-/azure-client-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-XdzDc0QAgp3kRtaFvIR1KgGbSmymKvwp4aQnHwQMtdJzbRDY1zsW5F1PStwOZeBZW+GeiQloEMUZpHpRQczodA==", + "dependencies": { + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/fluid-static": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/map": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/routerlicious-driver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/server-services-client": "^4.0.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "axios": "^1.6.2" } }, - "node_modules/@fluidframework/azure-client/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/@fluidframework/azure-client/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" - } - }, "node_modules/@fluidframework/cell": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/cell/-/cell-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-b4P4wGhq30dqhde7NkKcluxY95nc/VQvNM46irJTOM3LQyOi/NUi8NNOD31UfedMr6KoXlDh/ZFVg8/jI9DlzQ==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/cell/-/cell-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-sUeoTvw9yR4KO8lBlv2XrSxbpy8aw4Ep+MHegTYvP4kz0qip2i1o2mSda2dsSOTwHjZGpl7VHJY0Zue+0vdhNQ==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" } }, - "node_modules/@fluidframework/cell/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/common-definitions": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@fluidframework/common-definitions/-/common-definitions-1.1.0.tgz", @@ -3075,82 +2836,53 @@ } }, "node_modules/@fluidframework/container-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-LMD0GUnNBZvUBppG+fvd78eR1cWiXAMPMMmCadRVoMH1B6F8SPT2bTjF0G438u8oMZxu9NJmcuCrPHe0hCifFA==", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-GOprVPX9n095CBqb/pa4XxDklO0Rbl3kVUn/uilanznOUKceZpsYj4BWUnw8QAzq6WSjAcCncIybomU3KuHgpQ==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@types/events_pkg": "npm:@types/events@^3.0.0" - } - }, - "node_modules/@fluidframework/container-definitions/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/@fluidframework/container-definitions/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0" } }, "node_modules/@fluidframework/container-loader": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/container-loader/-/container-loader-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-+Siam9MKCG/XwlBUhCiii+HJkGTf6PpkzcHiFRcruN4eMxE/xDU+pKGQ6JlStc4oXlWB/sTsi8Od4HfvE4EOCg==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/container-loader/-/container-loader-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-o9fEESWGAgyV2bWyVp6oGUv3gTTHTb/dxThYuhGM0ZtG7ZsaSI/ax7GbynJhHrtaiCreL2IiI//EmZQhiA6u5A==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-base": "^4.0.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@ungap/structured-clone": "^1.2.0", "debug": "^4.3.4", "double-ended-queue": "^2.1.0-0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/container-loader/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/@fluidframework/container-loader/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" - } - }, "node_modules/@fluidframework/container-runtime": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-KIpaplIWTrdB8zRxP4vkcWZisgEs3d7nre32RbkWxLOp3Hz3ANZYKRkX5EmHtQ0A9GhbLGrULm2n11gqKg/uCQ==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-XfhzQiPUk8sWU2XjgnRqk2XGRSOlfuZeugXzfhCjw+co6i5aNW9KUdLxWAlOBhx+9Wr0x5/LAc5nsyNFCi9EYA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@tylerbu/sorted-btree-es6": "^1.8.0", "double-ended-queue": "^2.1.0-0", "lz4js": "^0.2.0", @@ -3158,197 +2890,114 @@ } }, "node_modules/@fluidframework/container-runtime-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-P81VcpxhRZXnWgfcXLzn1/M5of4CKY9y9vIH8BYELk73NTeBeXNJfVwPPZ5kOA75si/dc70R1NWP68CNLyiqzA==", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-uFDGs7CLj4rOfx6/QxrOqe74dfzWLO83RQ0LXhdD3/bDjMQ3DATXDR9NDU6jFp8k8IlrkaP6ROycfrLFDvHk1w==", "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" - } - }, - "node_modules/@fluidframework/container-runtime-definitions/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/@fluidframework/container-runtime-definitions/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" - } - }, - "node_modules/@fluidframework/container-runtime/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/@fluidframework/container-runtime/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" } }, "node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-b9DCsA8z9ParTxNQNL3G8V4Cb6RxNzszXUdp8NWcSp+KJQUcGP3ypTIo5udI9RQuntXxDN93NTGW0mWvoToYQA==", - "dev": true + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-mk83sfAlrTFAwJygUMA6PoVUPDTeJ0QADw3LdBOBE410qTa+7dJbNv75twfNOc5Pe/fYLuNSF1al13AsZB/5ug==" }, "node_modules/@fluidframework/core-utils": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-utils/-/core-utils-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-uxWSeOpFYquYrQ9VuB+9D9bVU9AsVD+7hzwyXQiNw1aiehKA0hgrHF/Ld61wnw9nKJuJl6HZeIpx6ObJxmJXCw==" + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/core-utils/-/core-utils-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-OEaTxEDPBMBZDvFu9MwbtDdt/IOE5j96ihH6QJMBmSIJDuxt6zDbKi1kPLavy8DZx25C3zuTdWcN4hEUSnvzyg==" }, "node_modules/@fluidframework/counter": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/counter/-/counter-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-+QAO3iIvyrBF26r32DXhkpyGwWmPUSwHPlR4fykRQON3QxW5Q6myNCRVIqVIldOhyL5nrownA9PfcEDwkf9pxw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/counter/-/counter-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-xshKZpgbvBl9Q277gTdYsquIsYk4sesbhxQMZZKNGeicuTP169aCuNYokUXcHgtgb/zF2dI2MzOinbCD+DULog==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" } }, - "node_modules/@fluidframework/counter/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/datastore": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-h93fxNjklAKTjxpvam4/uOy4RzqzyS0a+i4Dt/BFGbg3lCKixA7g1qizO0WJtdiHr95nzzKluTRrv1SNhUySXw==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-EnayWfai97Q1E2mJMGfuW76fOddTyl1uiiTKjh3HOItGGOSAVpTC7FNP268loID3SJ5Vf7rVfh3KIFNP+TIytA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "lodash": "^4.17.21", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/datastore-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-eguoG60bJz4KfIQRpXOmvO8tqw6p/t2waPrnltAUbRW3NXfS2ZbLaoBCWW8OZ0YOe6pV0EBubKmysFXTtK1rAQ==", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-e28oAWa1ZR5QqPAR00AZYK3wIAa5/EAMgrbaTEklBeLpA4BBUdDlusAWjwmnWr6g9it9F5aJsMUbkOE7oEeM9w==", "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" - } - }, - "node_modules/@fluidframework/datastore-definitions/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/@fluidframework/datastore/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/@fluidframework/datastore/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" } }, "node_modules/@fluidframework/driver-base": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-3oQs7e+/baPCr3nTNq6/rlVxu7z56dYkf7KAkJ0CvWIaIVTWzvHUjCWG7Pb9EFOoOCAGW+PI1RQ1UYoriVt33Q==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-BOXwIfoqQKdP5fSHkYlKabocqE5sVJSPSnMq8Al5K7sUcO0KpXP0gYwUNeffmq52cyMUmpC/7zxcLlWOXfIoQw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" - } - }, - "node_modules/@fluidframework/driver-base/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/@fluidframework/driver-base/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" } }, "node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-h8hzdK7kdgJCE8XV3PQS11ipfppvTfqkcoHGaeQ9tLatdNqpJW2nGFCAZ6KorCIdiNYnStjxFmhhHmZ1jraK4w==", - "dev": true, + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-txvf15Ks+RkQqk1k0J+YOPnzxUlFO9YC+8q8auhb3cBdwzF4FOn8/S2PPggk6S2KllQUfMviJ3nrlAtT52xmSw==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/protocol-definitions": "^3.1.0" + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/protocol-definitions": "^3.2.0" } }, "node_modules/@fluidframework/driver-utils": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-J78Nc8zFUNoe1Fp9twe/aypKoBxLeaMIlh6j1JLK+MjNQ4U1JlAlspDXh7uwNXYMNYfGb5CnU2JfWV9cuLtgpA==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-e+1kdrHF256T+UY6XxhdVTb56Q8DfNQvEBiYs0Khwc2VKoXcOEWmUUV2uskcm7A486e/OQ+795Lo/y8RJXZLlg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/gitresources": "^4.0.0", "@fluidframework/protocol-base": "^4.0.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "axios": "^1.6.2", "lz4js": "^0.2.0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/driver-utils/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/@fluidframework/driver-utils/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" - } - }, "node_modules/@fluidframework/eslint-config-fluid": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/@fluidframework/eslint-config-fluid/-/eslint-config-fluid-3.5.0.tgz", @@ -3665,207 +3314,171 @@ } }, "node_modules/@fluidframework/fluid-static": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/fluid-static/-/fluid-static-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-VzYsiqS3xi3PdmM2YakYVQHLtX5/9+ly0mos35AvjLz8DmNGHMpZSbQ8KXFeHoL9bJUhgKoNgG/MMpjL308jMQ==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/aqueduct": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-loader": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/fluid-static/-/fluid-static-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-at41hTupQKbEoiGUHmfoDgoVXWj67MOFwrWtyF9/Ieoxics88JdWNL1SKrytyy/MRwGJU+6rmSXo/IlZPqN34w==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/aqueduct": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/request-handler": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + "@fluidframework/request-handler": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" } }, - "node_modules/@fluidframework/fluid-static/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/gitresources": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/gitresources/-/gitresources-4.0.0.tgz", - "integrity": "sha512-3E4bjOp0/el0EFIzut8fb5XDM5xF/zWKyKn8n1RLEsstMM9nktjFOhCHoP57tRsfc16p3g9GoXhtpWCwe0vqnQ==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/gitresources/-/gitresources-4.0.1.tgz", + "integrity": "sha512-NFH051hDmiGiw3YUKU3LbhBmeTyh19PElOJYsNzJLcKtBUrBcZ9xQQDfLDclQ7WT5ilwKr6I2EQElg+zeePkew==" }, "node_modules/@fluidframework/id-compressor": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/id-compressor/-/id-compressor-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-UcAY+Sepl/OxpyuerrSy9vnjvSnig7AzG1RXjPnEFVckuZmYQ513reX6Na03gi4y4G7WHp4I4A2B5eWUPtW3sg==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/id-compressor/-/id-compressor-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-CKi1BQZwq1aCikAULU2ksVmP58fNlBwso7bDiKyKeLgoNIDJm+cOKfREGnM07G78hCrOymJ26h3dKF+1aEbh2A==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@tylerbu/sorted-btree-es6": "^1.8.0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/id-compressor/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/local-driver": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/local-driver/-/local-driver-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-Vib8eizxw82PnK7jj4BzUTL5/8tC4Ejx9bB3bVMKoxuBnTzTJ/nvvtbPM68JogD+jC92ea4Q27OfBN2X1wH7ig==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/local-driver/-/local-driver-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-N6kwtjC13d0EK6Gt9JJfJ6D1/Y6UjH6hVP1/oHtLuRKNKsEeBASTQutd4V2QZBraZ4BNvNH/67zBTktbuQEmFQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-base": "^4.0.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/routerlicious-driver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/server-local-server": "^4.0.0", "@fluidframework/server-services-client": "^4.0.0", "@fluidframework/server-services-core": "^4.0.0", "@fluidframework/server-test-utils": "^4.0.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "jsrsasign": "^11.0.0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/local-driver/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/@fluidframework/local-driver/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" - } - }, "node_modules/@fluidframework/map": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-Z48Kpudh4lSn02mNTHb1SyDY+J9nAiu8yUq0p+KHLXZphSz0iXJXGUxolRYcsfW/KdhHBnFuDBEpHwXJtTS4mA==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-HDmWdUDTugVcHbtAmKbiTLT+I6045zL6qdlSFl9wN0QyyGJwGOxo3Wx/8GvixDjU1vjYWlZ7OPyckIMV4TgMdg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "path-browserify": "^1.0.1" } }, - "node_modules/@fluidframework/map/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/matrix": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/matrix/-/matrix-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-hAFsm6UJh2VjMHIpS7eMYKuOglhb4f18JCRelgKyEg4S1epCR8pC6LulEH9xKn/Tcoqi3cIlq3XvWl0LPKUKVA==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/matrix/-/matrix-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-OfAPhtR8spabUEse+dZvTpYq80acjYmIYQzUDH+PrX/4+uu0y1TfBsPd6ONkw49ADdz3HPrEEy3xjiqAt5wpcw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@tiny-calc/nano": "0.0.0-alpha.5", "double-ended-queue": "^2.1.0-0", "tslib": "^1.10.0" } }, - "node_modules/@fluidframework/matrix/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/matrix/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@fluidframework/merge-tree": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-bEXHJ87GjmL/Woxj2n6dpRXrI3UKI0hAqlRpiug1FkL5hUb7pDOzcNF+OzC6cf1dDyG2nA+Oc0xyN3sSlmWquA==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-+I2THRxfG2f7egQTy5lJFjE7OniN37MiT2UcY5JNqF0pih8FoKgIJS/m0xD3KrXtUxIl8jHaT16OFbptZrcgyQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" } }, - "node_modules/@fluidframework/merge-tree/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/mocha-test-setup": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/mocha-test-setup/-/mocha-test-setup-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-+UgAY/HoF0iAyQQV2Jz3db5yBt9zDnbjAl189e4YtkmqKYBLzU2RCmwFY7gDAGybLzdGNbaF9g9ashq6N8s4RA==", + "version": "2.0.0-rc.1.0.9", + "resolved": "https://registry.npmjs.org/@fluidframework/mocha-test-setup/-/mocha-test-setup-2.0.0-rc.1.0.9.tgz", + "integrity": "sha512-yng+1zA+9q6LEhAC9HvAIxYajeo+HAKCYZoPc5Ggpn3R2mBStogyBsDE1T2J/KiJxHsqrdaZXFWxX2gEi8FdzA==", "dev": true, "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/test-driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.9 <2.0.0-rc.1.1.0", + "@fluidframework/test-driver-definitions": ">=2.0.0-rc.1.0.9 <2.0.0-rc.1.1.0", "mocha": "^10.2.0", "source-map-support": "^0.5.21" } }, + "node_modules/@fluidframework/mocha-test-setup/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.1.0.9", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.1.0.9.tgz", + "integrity": "sha512-o7J+UNzfSU7ImQmT96TK27UJ6o2LB1sKBWxyaAsl5FMicBESIX6669yXE/jggBXoDZndUZfISBXRukDjhiQy0w==", + "dev": true + }, "node_modules/@fluidframework/ordered-collection": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/ordered-collection/-/ordered-collection-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-KRvm2lnWtgMp8IzapOXPWhWfuOK67khe7Jn57FhdalxEeY6td1a42BndNOVCwkBrr6kfhtajtUsESOj1OIVVIw==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/ordered-collection/-/ordered-collection-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-ddBFnqgxmOWiCG5npcTQdx7CqweQMfMqCUn/iLE2DZGU4eER+zzBsYB2j3ZZvw7KB2Qcxfo9dIX8UCjPdZmLmg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/ordered-collection/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/protocol-base": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/protocol-base/-/protocol-base-4.0.0.tgz", - "integrity": "sha512-mpuYXOOfCXKKEdzauxQ3KTY+ZWNj+NTEQTEJW8PD/xqN95g3AYoYXiikEkuzPbKghkAWcr6gYNxmK//MLbIVFw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/protocol-base/-/protocol-base-4.0.1.tgz", + "integrity": "sha512-bbnWAfcpTVuHqHZEd/LbuIUztvF8G+ifH7Av4O03G/09zDnFA1VS83n3fl1rkvssXQAYUOIbYZZJ27UvxuQ35w==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~4.0.0", + "@fluidframework/gitresources": "~4.0.1", "@fluidframework/protocol-definitions": "^3.2.0", "events": "^3.1.0" } @@ -3876,164 +3489,116 @@ "integrity": "sha512-xgcyMN4uF6dAp2/XYFSHvGFITIV7JbVt3itA+T0c71/lZjq/HU/a/ClPIxfl9AEN0RbtuR/1n5LP4FXSV9j0hA==" }, "node_modules/@fluidframework/register-collection": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/register-collection/-/register-collection-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-omfButdp+uNUmpR2IPBhAI77qRFQ2Lzsv5ep5EpepvIM30S0O8EF9PW/ZZFNwbuFCZ9v8w4VcfdCm2Vg8o/3qw==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/register-collection/-/register-collection-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-K7FMaqRGIb0+xP/CsxfxF506lPd5Zn3g8U8F7EE0SBS9uvCR5l1NjySvKriWooiFCQ2UHMrP/U+kRaVRLk1Cjg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" } }, - "node_modules/@fluidframework/register-collection/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/request-handler": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/request-handler/-/request-handler-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-FlTVWYz7iEtjp3eEjmQErvKkQQvoLJI2nr43pB8fF8cXaNnF2GymfF3s5fjYGZXMXYV+pf4Oi46qvYFv8HyYsg==", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/request-handler/-/request-handler-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-cjKKUYLFok9UZFvOltZFIwl/0g6/mKAtAgXUnZqBn9PbV89JmeIGDyrSgoXgfCQEosll6S+VaWF6QqEeso0O3w==", "dependencies": { - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" } }, - "node_modules/@fluidframework/request-handler/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/routerlicious-driver": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/routerlicious-driver/-/routerlicious-driver-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-+M2x8XIOby7Avv/ISJhM6o/+g2tJi89F8Qs2ZQl8Slt5oEpEQ4wuzFMenno2ADXH5L5t0UpgPwQcGYNUOpaJYQ==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/routerlicious-driver/-/routerlicious-driver-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-svHpFVm0WZcyXSa4Tq9Lv1i8PJF7YDMV1WmWOzP2g8lqBpz3kRblHKCvhzd+6NY+2R/2eqp/mvTcBAZ0wFeT1A==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/gitresources": "^4.0.0", "@fluidframework/protocol-base": "^4.0.0", "@fluidframework/protocol-definitions": "^3.2.0", "@fluidframework/server-services-client": "^4.0.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "cross-fetch": "^3.1.5", "json-stringify-safe": "5.0.1", "socket.io-client": "^4.7.3", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/routerlicious-driver/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/@fluidframework/routerlicious-driver/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" - } - }, "node_modules/@fluidframework/runtime-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-5ozTpjF8u44cybHQjRVRSJdws+JN69p+D+CwH8pz1CgJSgfyHkdEcHV0ht7AsXp4cfnw/iYsGKedFiJLis9gzw==", - "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" - } - }, - "node_modules/@fluidframework/runtime-definitions/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/@fluidframework/runtime-definitions/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-zEZiIDG005QRPSXYywhjqJgEtpoc8p231R579peoJc4PmH2ZwagB+j+t0tw3PHbZSYhk/SL/uOPmZ9jGB9M9Og==", + "dependencies": { + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0" } }, "node_modules/@fluidframework/runtime-utils": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-vsKxPkoVmgXWISMz4o77bQs4eqBloJKY3cGhPGja8XwIt6KXEwvSrU7D+z7sWqjnc+0YP+8/RYNQLZ9LVJ7ojA==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-YV/Uf8R186fAkjdgyvc3KP7dOl8Zf+rtlgcd2lyA4ah6Tako6Hi6nmhHDJmbujA9q8mXCFpatIWdmqyTjVlDpw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" } }, - "node_modules/@fluidframework/runtime-utils/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/sequence": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-OYP1AOwqbT0QwZlfoYKrNzzl7yuBOiRGckT9r1LY+DXS92y4QqHnCv5Wsub/nucgcTRCsg2hqZFH/Y9fiy9c4w==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-gmbCWOOZpSgyqADfIL38SGviV8hGVrflaUpW3v3/mZ6NNZW+qEWMS25OWTh1d8np5UvH1LFZFK9+HmHSgciBUw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "double-ended-queue": "^2.1.0-0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/sequence/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/server-lambdas": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas/-/server-lambdas-4.0.0.tgz", - "integrity": "sha512-htB+QpkRzzrJnKTl0MIxEiaD3d2l0fx7mUy3rQ6/oJzs1ZisD2KoTG4ZNaKmWBcBZpNwFYPdOfvfeKGCKovuHg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas/-/server-lambdas-4.0.1.tgz", + "integrity": "sha512-09uZV04PIufyiIgUALrKLH0lW5JruHBZXm40oTHDOjtyO4V842qmpeZp/qrtZ5xxZAR/PfArsI0HpqRV1XZTKQ==", "dependencies": { "@fluidframework/common-definitions": "^1.1.0", "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~4.0.0", - "@fluidframework/protocol-base": "~4.0.0", + "@fluidframework/gitresources": "~4.0.1", + "@fluidframework/protocol-base": "~4.0.1", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/server-lambdas-driver": "~4.0.0", - "@fluidframework/server-services-client": "~4.0.0", - "@fluidframework/server-services-core": "~4.0.0", - "@fluidframework/server-services-telemetry": "~4.0.0", + "@fluidframework/server-lambdas-driver": "~4.0.1", + "@fluidframework/server-services-client": "~4.0.1", + "@fluidframework/server-services-core": "~4.0.1", + "@fluidframework/server-services-telemetry": "~4.0.1", "@types/semver": "^7.5.0", "assert": "^2.0.0", "async": "^3.2.2", @@ -4050,14 +3615,14 @@ } }, "node_modules/@fluidframework/server-lambdas-driver": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas-driver/-/server-lambdas-driver-4.0.0.tgz", - "integrity": "sha512-3RM55xj1PrlUBYjGbtiBTMk8oFcNKUa+aofTBcoYiJsNvI7qOSifRvgl7TBLxPKLBSjZ25NjYBo0NXSG0p0l5A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas-driver/-/server-lambdas-driver-4.0.1.tgz", + "integrity": "sha512-sgNwuqSfvCvbHPc3GEagZIBCdEm79xr9IULIKrb/AcFdRuLnnH+pEWANW7SxhUhij+EKHrF6js4JkVozkkrjiw==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/server-services-client": "~4.0.0", - "@fluidframework/server-services-core": "~4.0.0", - "@fluidframework/server-services-telemetry": "~4.0.0", + "@fluidframework/server-services-client": "~4.0.1", + "@fluidframework/server-services-core": "~4.0.1", + "@fluidframework/server-services-telemetry": "~4.0.1", "assert": "^2.0.0", "async": "^3.2.2", "events": "^3.1.0", @@ -4067,18 +3632,18 @@ } }, "node_modules/@fluidframework/server-local-server": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-local-server/-/server-local-server-4.0.0.tgz", - "integrity": "sha512-fHycWdu0GnP5yziN/2/l1SL3nLk82E7RwczGdhnoLEcLsZIT9paEFr0XYrNliYX9Tu82ZA1m1mHrxhAOyYHkYg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/server-local-server/-/server-local-server-4.0.1.tgz", + "integrity": "sha512-zVpOa5cYOE9eWLxwNKr/pZeXbMfa6X8mBQHuxC9ZjOJdw4w/PDWxmemD48uusLn80JPIW1Km6GtTwRwz278oLw==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/server-lambdas": "~4.0.0", - "@fluidframework/server-memory-orderer": "~4.0.0", - "@fluidframework/server-services-client": "~4.0.0", - "@fluidframework/server-services-core": "~4.0.0", - "@fluidframework/server-services-telemetry": "~4.0.0", - "@fluidframework/server-test-utils": "~4.0.0", + "@fluidframework/server-lambdas": "~4.0.1", + "@fluidframework/server-memory-orderer": "~4.0.1", + "@fluidframework/server-services-client": "~4.0.1", + "@fluidframework/server-services-core": "~4.0.1", + "@fluidframework/server-services-telemetry": "~4.0.1", + "@fluidframework/server-test-utils": "~4.0.1", "debug": "^4.3.4", "events": "^3.1.0", "jsrsasign": "^11.0.0", @@ -4086,17 +3651,17 @@ } }, "node_modules/@fluidframework/server-memory-orderer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-memory-orderer/-/server-memory-orderer-4.0.0.tgz", - "integrity": "sha512-/Da91g+VnTUJu8Byp58csSRGsjLB9Ju+a0788Ag/IcwUBjYEDUWe8jlCLCdnNOScZnFW9W88R+F2RTC0LFlMOg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/server-memory-orderer/-/server-memory-orderer-4.0.1.tgz", + "integrity": "sha512-NwLAKtbVXd+8OuEjO2G/qzAaXvPQCPIUGsBja2jSTMqlKmKWspW5p0GOgFWxoQfSj1DcuhqoDmh2EGXAGu5AJQ==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/protocol-base": "~4.0.0", + "@fluidframework/protocol-base": "~4.0.1", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/server-lambdas": "~4.0.0", - "@fluidframework/server-services-client": "~4.0.0", - "@fluidframework/server-services-core": "~4.0.0", - "@fluidframework/server-services-telemetry": "~4.0.0", + "@fluidframework/server-lambdas": "~4.0.1", + "@fluidframework/server-services-client": "~4.0.1", + "@fluidframework/server-services-core": "~4.0.1", + "@fluidframework/server-services-telemetry": "~4.0.1", "@types/debug": "^4.1.5", "@types/double-ended-queue": "^2.1.0", "@types/lodash": "^4.14.118", @@ -4113,9 +3678,9 @@ } }, "node_modules/@fluidframework/server-memory-orderer/node_modules/@types/node": { - "version": "18.19.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.29.tgz", - "integrity": "sha512-5pAX7ggTmWZdhUrhRWLPf+5oM7F80bcKVCBbr0zwEkTNzTJL2CWQjznpFgHYy6GrzkYi2Yjy7DHKoynFxqPV8g==", + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", "dependencies": { "undici-types": "~5.26.4" } @@ -4141,13 +3706,13 @@ } }, "node_modules/@fluidframework/server-services-client": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-client/-/server-services-client-4.0.0.tgz", - "integrity": "sha512-ExvztSQrliaYMSeLLxlACdWkuDk6auDle4eIQ2euvkgl0RWnupatPYgUVdfnNMIE6vBIeOwDzJaWy2giFx7Z6Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-client/-/server-services-client-4.0.1.tgz", + "integrity": "sha512-iYbDBwfddWtq0WGQfHI807yR2anpKyY5IwJ4zh0nHbML+H/xjhdPoAMaF08r6aRFpKPtra0QSjvGHJnJneEOXA==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~4.0.0", - "@fluidframework/protocol-base": "~4.0.0", + "@fluidframework/gitresources": "~4.0.1", + "@fluidframework/protocol-base": "~4.0.1", "@fluidframework/protocol-definitions": "^3.2.0", "axios": "^1.6.2", "crc-32": "1.2.0", @@ -4160,15 +3725,15 @@ } }, "node_modules/@fluidframework/server-services-core": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-core/-/server-services-core-4.0.0.tgz", - "integrity": "sha512-gt8GLNIDf8ZALbZGsS7WDytSLXwVPYEBCmuE+J3bikd3mItGxFhxQQI/6ZynUz/lue7GvoZtSuDyeal3DarwCQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-core/-/server-services-core-4.0.1.tgz", + "integrity": "sha512-QV42CYmJsqBWXTJADsBxbzSAC8masjN094gbcM0xTogblI4a2KU8cOsq/7sNAnNDMSMotMPIN7lCIgz1ccxhSw==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~4.0.0", + "@fluidframework/gitresources": "~4.0.1", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/server-services-client": "~4.0.0", - "@fluidframework/server-services-telemetry": "~4.0.0", + "@fluidframework/server-services-client": "~4.0.1", + "@fluidframework/server-services-telemetry": "~4.0.1", "@types/nconf": "^0.10.2", "@types/node": "^18.17.1", "debug": "^4.3.4", @@ -4177,17 +3742,17 @@ } }, "node_modules/@fluidframework/server-services-core/node_modules/@types/node": { - "version": "18.19.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.29.tgz", - "integrity": "sha512-5pAX7ggTmWZdhUrhRWLPf+5oM7F80bcKVCBbr0zwEkTNzTJL2CWQjznpFgHYy6GrzkYi2Yjy7DHKoynFxqPV8g==", + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@fluidframework/server-services-telemetry": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-telemetry/-/server-services-telemetry-4.0.0.tgz", - "integrity": "sha512-EK3+l1a2x4rOwBr688h3DqGrDmgJnv6kYxHKaoxJ9gVPXgg866m2ajEU75IvneqOyomqUINE2oZOrRqjdvJR1Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-telemetry/-/server-services-telemetry-4.0.1.tgz", + "integrity": "sha512-he3phtBMUoZ96UiB/R2Iv26qqMeU21KjYu/RdE39otE56a80Y+5gaDDIVOaDgmsHBIwQBgXwwucG7k5BtbsN0Q==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", "json-stringify-safe": "^5.0.1", @@ -4197,17 +3762,17 @@ } }, "node_modules/@fluidframework/server-test-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@fluidframework/server-test-utils/-/server-test-utils-4.0.0.tgz", - "integrity": "sha512-tygY1aWGswuY0qWJ3EOk4HlWjuCSiyPJu6OQNlSzzT50B43Ku146MQe8WdTdWmxxgQjk+/R5BPLxrCugu74LJw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/server-test-utils/-/server-test-utils-4.0.1.tgz", + "integrity": "sha512-UnZpuJYHEQisKPoh4q35SmYYvqobHkUHRjnAGsJkhoPV6Hlk8bqjlsbXkPD21NSqPE0crGLq9QU9SH+cStEHzQ==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~4.0.0", - "@fluidframework/protocol-base": "~4.0.0", + "@fluidframework/gitresources": "~4.0.1", + "@fluidframework/protocol-base": "~4.0.1", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/server-services-client": "~4.0.0", - "@fluidframework/server-services-core": "~4.0.0", - "@fluidframework/server-services-telemetry": "~4.0.0", + "@fluidframework/server-services-client": "~4.0.1", + "@fluidframework/server-services-core": "~4.0.1", + "@fluidframework/server-services-telemetry": "~4.0.1", "assert": "^2.0.0", "debug": "^4.3.4", "events": "^3.1.0", @@ -4217,188 +3782,149 @@ } }, "node_modules/@fluidframework/shared-object-base": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-ccwaNRtIPp01FiUJxKf123eJ59fPqJkbS2hZouQGioC7od7g+1t8LXwwaVXRTWA8lew0w/GrQhwnJU0Nhlotog==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-vg1aE/egNt9M4LoCBVx6Iu/JctxpiiyeIrrNbuCXp8dWDjzgq7UoniGz50r2NZZsoSjp/dxGHU3xDqERp3Hreg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/shared-object-base/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/synthesize": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/synthesize/-/synthesize-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-eg4O3mVVTbWAhFjaeiussPGaF+YM8CQrY9LrdJO8QisrN61P1Cu2O+f1HhWiiYFvXAoNCHjNJK+igl3+oy//fg==", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/synthesize/-/synthesize-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-5B0KlTTZYQT0eQf8JMHWpq16+/djZIPBP9D7sk+kR8UTbk8izsuJR5ATez/CtjojP/DnL8cuPR/Boc3ox5JwsQ==", "dependencies": { - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" } }, "node_modules/@fluidframework/telemetry-utils": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-trB3AqQLlsiJQ3P1yNl4HeTxC4sV9jwzIZIW+J+99TJgy1VmdGwk0ivsGqZM+XFKrAADuwwtgK73Yzjs+YT+bw==", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-DbJYgfWk+cgRkx0Ibrv9GeIW0AL8QylgXxhNz8uveY2wbFyA4nwqU6du80CdDQqU15Vhfa0v99AlZF2xF/hsAQ==", "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", "debug": "^4.3.4", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/telemetry-utils/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@fluidframework/test-driver-definitions": { - "version": "2.0.0-rc.1.0.4", - "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.1.0.4.tgz", - "integrity": "sha512-Mcq/cdG+uke0LuplZ5VxDYrj9rX0dr5OG40nRrJJ68jzW3NZHC8yRzFqxglUIraTOHGgUKdaizn3vUzyzXvIhQ==", + "version": "2.0.0-rc.1.0.9", + "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.1.0.9.tgz", + "integrity": "sha512-7IGZDKA5241iHorW/QhLLvJOw6a6eKSv+G6nZWiejk08qvdpqcW7tFgPtdvXDoe28Or5Z+p2p3/c8D4qilDqag==", "dev": true, "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.4 <2.0.0-rc.1.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.9 <2.0.0-rc.1.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.9 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/test-runtime-utils": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/test-runtime-utils/-/test-runtime-utils-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-CARdoZKWA1aIGL4nyCOcxin8VIeJzRnsnmzq1rPVGwJAAaiDKWBy8sCb0T8enx8UGHZgWE8o27VeeDYN3kKszw==", - "dev": true, - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/routerlicious-driver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "jsrsasign": "^11.0.0", - "uuid": "^9.0.0" - } - }, - "node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==", + "node_modules/@fluidframework/test-driver-definitions/node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.1.0.9", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.1.0.9.tgz", + "integrity": "sha512-o7J+UNzfSU7ImQmT96TK27UJ6o2LB1sKBWxyaAsl5FMicBESIX6669yXE/jggBXoDZndUZfISBXRukDjhiQy0w==", "dev": true }, - "node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", + "node_modules/@fluidframework/test-driver-definitions/node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.1.0.9", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.1.0.9.tgz", + "integrity": "sha512-kefQ7jZQWxloRymUaZN5dqHx2CPnNVxAZS9H6wYitVstK4TN2KiCKGRm3kTXGyy2zGrF1L115+b9C8pH/8O6Ww==", "dev": true, "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" + "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.9 <2.0.0-rc.1.1.0", + "@fluidframework/protocol-definitions": "^3.1.0" + } + }, + "node_modules/@fluidframework/test-runtime-utils": { + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/test-runtime-utils/-/test-runtime-utils-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-2wkiWwuIA7NyODGKD/Q0j80Et+ga0HUZQrQ7IvtUV/gQSlfHL9r1HKg9WBpY/Mz5R4ZvguErSvvtdCLFznM1Kg==", + "dev": true, + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/protocol-definitions": "^3.2.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "jsrsasign": "^11.0.0", + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/test-utils": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/test-utils/-/test-utils-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-0yEG6hW1v43WMv6jxZKAoUWlWWGpjgZdT0vx63yGdPL50fpG/GLZ6vOPK2Ex6v0aP39I31HMDI/Y5Lk/YEhV3w==", - "dependencies": { - "@fluidframework/aqueduct": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-loader": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/local-driver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/map": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/test-utils/-/test-utils-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-DEIu5G884sUMek8DiTVAxvrSpBO7iWxssn7CoZVuFG5NeOQsvRdLdGxaWYl98B/hVzzrlL5rwjuImfuoJjYnsw==", + "dependencies": { + "@fluid-internal/test-driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/aqueduct": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/local-driver": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/map": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/request-handler": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/routerlicious-driver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/test-driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "@fluidframework/request-handler": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "best-random": "^1.0.0", "debug": "^4.3.4", "mocha": "^10.2.0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/test-utils/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/@fluidframework/test-utils/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" - } - }, - "node_modules/@fluidframework/test-utils/node_modules/@fluidframework/test-driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-atFHp64DzzcuXXv9Ubtv8Pl+lJcKvmP46RA96goHP3AjZrZtNVs16uYvf+FRtDt6Q+8IGHBDSUpH7He0EatH3A==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" - } - }, "node_modules/@fluidframework/tree": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/tree/-/tree-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-OOBoa+aAYlqgTa4ayHP1cz9uWGRfMEqIfWqxFdgvnMp7mhh6VhxV3tajzNOSl5770VX4s8FsQLtNva7iq3CtjA==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/@fluidframework/tree/-/tree-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-ISow2rijoRIbwn+q73ATvszazyoPsBvW3ITjfG1as93VhjqT/sNxHFL1UBH6yDSL/LlW1tbxqQ8ApQgakEfsew==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@sinclair/typebox": "^0.29.4", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@sinclair/typebox": "^0.32.29", "@tylerbu/sorted-btree-es6": "^1.8.0", "@ungap/structured-clone": "^1.2.0", "uuid": "^9.0.0" } }, - "node_modules/@fluidframework/tree/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, "node_modules/@griffel/core": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.15.2.tgz", @@ -5167,9 +4693,9 @@ "dev": true }, "node_modules/@sinclair/typebox": { - "version": "0.29.6", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.29.6.tgz", - "integrity": "sha512-aX5IFYWlMa7tQ8xZr3b2gtVReCvg7f3LEhjir/JAjX2bJCMVJA5tIPv30wTD4KDfcwMd7DDYY3hFDeGmOgtrZQ==" + "version": "0.32.30", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.32.30.tgz", + "integrity": "sha512-IYK1H0k2sHVB2GjzBK2DXBErhex45GoLuPdgn8lNw5t0+5elIuhpixOMPobFyq6kE0AGIBa4+76Ph4enco0q2Q==" }, "node_modules/@sinonjs/commons": { "version": "1.8.6", @@ -5190,9 +4716,9 @@ } }, "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" }, "node_modules/@swc/helpers": { "version": "0.5.6", @@ -5494,9 +5020,9 @@ "integrity": "sha512-nzmiF6CdR2MNa73WRSerRsJ0KLUWonZD0Iti0Tq3CIn09HLAVnSXqwoITLw8TsLQ3JvmRJ/T0t/HDlYiM4pFjA==" }, "node_modules/@types/node": { - "version": "20.11.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", - "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", "dependencies": { "undici-types": "~5.26.4" } @@ -8803,31 +8329,17 @@ "dev": true }, "node_modules/fluid-framework": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/fluid-framework/-/fluid-framework-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-0vu7g+cRv1P0v1btnG2ruS8wPGpfCTmrptHNBc2AE4W5gOI6Wo20rd6+ThZSznMun6fyOw7lL/p8mIOaJ1WJYQ==", - "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/container-loader": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/fluid-static": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/map": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/sequence": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/tree": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0" - } - }, - "node_modules/fluid-framework/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-pWPS5TgTNlm9oBvmUrh0D9aDXdoGiyIcRq5UXeM/va5NF6vZXUOMXtM5YzaAMm8S+LrC93iXoxEot3NWEtvmCA==" - }, - "node_modules/fluid-framework/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.1.tgz", - "integrity": "sha512-QiBlGXbSBkbrGOS/6tEl2AbOhUvYxs9Keyc9K2660vSR3KksNvP0591WM3vAkM2gI8qUZFYHAbHD9SQm/mErmw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" + "version": "2.0.0-rc.4.0.2", + "resolved": "https://registry.npmjs.org/fluid-framework/-/fluid-framework-2.0.0-rc.4.0.2.tgz", + "integrity": "sha512-Cukij46svhsApr2ylP/aTM9CBPPL0lyCjf6p7Tth9lyakyfJqzTc+zvd8ZaFjDjR4o2WnT+ZFmWElaVFt6z6Pg==", + "dependencies": { + "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/fluid-static": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/map": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/sequence": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/tree": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" } }, "node_modules/follow-redirects": { @@ -12236,16 +11748,16 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -15484,17 +14996,17 @@ "uuid": "^9.0.0" }, "devDependencies": { - "@fluid-internal/client-utils": "^2.0.0-rc.2.0.0", - "@fluidframework/azure-client": "^2.0.0-rc.2.0.0", - "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.0", - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", - "@fluidframework/test-utils": "^2.0.0-rc.2.0.0", + "@fluid-internal/client-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/azure-client": "^2.0.0-rc.4.0.2", + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.9", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-utils": "^2.0.0-rc.4.0.2", "@live-share-private/test-utils": "^2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", @@ -15513,7 +15025,7 @@ "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", @@ -15529,15 +15041,15 @@ "version": "2.0.0-internal.5", "license": "SEE LICENSE IN LICENSE", "devDependencies": { - "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.0", - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", - "@fluidframework/test-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.9", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-utils": "^2.0.0-rc.4.0.2", "@live-share-private/test-utils": "^2.0.0-internal.2", "@microsoft/live-share": "2.0.0-internal.5", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", @@ -15566,7 +15078,7 @@ "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", "babel-loader": "^9.1.2", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "typescript": "^5.0.4" }, "peerDependencies": { @@ -15583,16 +15095,16 @@ "version": "2.0.0-internal.5", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@fluidframework/register-collection": "^2.0.0-rc.2.0.0" + "@fluidframework/register-collection": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@microsoft/live-share": "2.0.0-internal.5", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "jsdom": "^21.1.0", "jsdom-global": "^3.0.2", "mocha": "^10.2.0", @@ -15614,10 +15126,10 @@ "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15640,7 +15152,7 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -15651,7 +15163,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", @@ -15689,10 +15201,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15714,7 +15226,7 @@ "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15726,7 +15238,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15751,10 +15263,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-turbo": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15775,7 +15287,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15787,7 +15299,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15814,7 +15326,7 @@ "@fluentui/react-theme": "^9.1.5", "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -15824,7 +15336,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15848,7 +15360,7 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router": "^6.4.2", @@ -15857,7 +15369,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15880,10 +15392,10 @@ "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15900,10 +15412,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15925,7 +15437,7 @@ "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15937,7 +15449,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15962,10 +15474,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-turbo": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15987,7 +15499,7 @@ "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15999,7 +15511,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -16029,7 +15541,7 @@ "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -16041,7 +15553,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -16073,7 +15585,7 @@ "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -16087,7 +15599,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -16117,7 +15629,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -16129,7 +15641,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -16545,13 +16057,13 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@fluidframework/azure-client": "^2.0.0-rc.2.0.0", + "@fluidframework/azure-client": "^2.0.0-rc.4.0.2", "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "buffer": "^6.0.3", "concurrently": "^5.3.0", "start-server-and-test": "^2.0.0", diff --git a/packages/live-share-canvas/package.json b/packages/live-share-canvas/package.json index c6cc44013..5c06f7b15 100644 --- a/packages/live-share-canvas/package.json +++ b/packages/live-share-canvas/package.json @@ -18,7 +18,7 @@ "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", diff --git a/packages/live-share-canvas/src/core/LiveCanvas.ts b/packages/live-share-canvas/src/core/LiveCanvas.ts index 4ae40a4db..aab5decbf 100644 --- a/packages/live-share-canvas/src/core/LiveCanvas.ts +++ b/packages/live-share-canvas/src/core/LiveCanvas.ts @@ -3,9 +3,9 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObjectFactory } from "@fluidframework/aqueduct"; +import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; import { IFluidHandle } from "@fluidframework/core-interfaces"; -import { IValueChanged, SharedMap } from "@fluidframework/map"; +import { IValueChanged, SharedMap } from "@fluidframework/map/internal"; import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions"; import { AddPointsEvent, diff --git a/packages/live-share-media/package.json b/packages/live-share-media/package.json index 25f86112e..f846e878b 100644 --- a/packages/live-share-media/package.json +++ b/packages/live-share-media/package.json @@ -16,14 +16,14 @@ }, "devDependencies": { "@microsoft/live-share": "2.0.0-internal.5", - "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.0", - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", - "@fluidframework/test-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.9", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-utils": "^2.0.0-rc.4.0.2", "@live-share-private/test-utils": "^2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", diff --git a/packages/live-share-media/src/LiveMediaSession.ts b/packages/live-share-media/src/LiveMediaSession.ts index b4b50e56d..571811e59 100644 --- a/packages/live-share-media/src/LiveMediaSession.ts +++ b/packages/live-share-media/src/LiveMediaSession.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObjectFactory } from "@fluidframework/aqueduct"; +import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; import { DynamicObjectRegistry, LiveDataObject, diff --git a/packages/live-share-media/src/internals/GroupCoordinatorState.ts b/packages/live-share-media/src/internals/GroupCoordinatorState.ts index 8b4e37210..9a72060a8 100644 --- a/packages/live-share-media/src/internals/GroupCoordinatorState.ts +++ b/packages/live-share-media/src/internals/GroupCoordinatorState.ts @@ -50,7 +50,6 @@ import { PlaybackRateEvents, } from "./GroupPlaybackRate"; import { TypedEventEmitter } from "@fluid-internal/client-utils"; -import { IEvent as FluidIEvent } from "@fluidframework/common-definitions"; import { IGenericTypedEvents } from "./interfaces"; /** diff --git a/packages/live-share-react/package.json b/packages/live-share-react/package.json index b7fe6f15d..c783a41f7 100644 --- a/packages/live-share-react/package.json +++ b/packages/live-share-react/package.json @@ -25,7 +25,7 @@ "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", "babel-loader": "^9.1.2", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "typescript": "^5.0.4" }, "peerDependencies": { diff --git a/packages/live-share-react/src/shared-hooks/useSharedMap.ts b/packages/live-share-react/src/shared-hooks/useSharedMap.ts index e8ff7d359..f276756c4 100644 --- a/packages/live-share-react/src/shared-hooks/useSharedMap.ts +++ b/packages/live-share-react/src/shared-hooks/useSharedMap.ts @@ -7,7 +7,7 @@ import React from "react"; import { isEntries, isJSON, isMap } from "../utils"; import { IUseSharedMapResults, SharedMapInitialData } from "../types"; import { useDynamicDDS } from "./useDynamicDDS"; -import { SharedMap } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { useFluidObjectsContext } from "../providers"; import { ActionContainerNotJoinedError, diff --git a/packages/live-share-react/src/shared-hooks/useSharedStateRegistry.ts b/packages/live-share-react/src/shared-hooks/useSharedStateRegistry.ts index 9ede09b6e..b68e16126 100644 --- a/packages/live-share-react/src/shared-hooks/useSharedStateRegistry.ts +++ b/packages/live-share-react/src/shared-hooks/useSharedStateRegistry.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { IValueChanged, SharedMap } from "fluid-framework"; +import { IValueChanged, SharedMap } from "fluid-framework/legacy"; import React from "react"; import { DeleteSharedStateAction, diff --git a/packages/live-share-react/src/types/ResultTypes.ts b/packages/live-share-react/src/types/ResultTypes.ts index 9ea12a283..4a034c48d 100644 --- a/packages/live-share-react/src/types/ResultTypes.ts +++ b/packages/live-share-react/src/types/ResultTypes.ts @@ -20,7 +20,8 @@ import { ExtendedMediaMetadata, MediaPlayerSynchronizer, } from "@microsoft/live-share-media"; -import { IFluidContainer, SharedMap } from "fluid-framework"; +import { IFluidContainer } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { IReceiveLiveEvent } from "../interfaces"; import { OnPauseTimerAction, diff --git a/packages/live-share-turbo/package.json b/packages/live-share-turbo/package.json index f551ea077..6f2727f63 100644 --- a/packages/live-share-turbo/package.json +++ b/packages/live-share-turbo/package.json @@ -17,16 +17,16 @@ "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test" }, "dependencies": { - "@fluidframework/register-collection": "^2.0.0-rc.2.0.0" + "@fluidframework/register-collection": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@microsoft/live-share": "2.0.0-internal.5", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "jsdom-global": "^3.0.2", "jsdom": "^21.1.0", "mocha": "^10.2.0", diff --git a/packages/live-share-turbo/src/FluidTurboClient.ts b/packages/live-share-turbo/src/FluidTurboClient.ts index 2c98ff244..856cff1a9 100644 --- a/packages/live-share-turbo/src/FluidTurboClient.ts +++ b/packages/live-share-turbo/src/FluidTurboClient.ts @@ -7,8 +7,8 @@ import { IFluidContainer, LoadableObjectClass, LoadableObjectClassRecord, - SharedMap, } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { AzureContainerServices } from "@fluidframework/azure-client"; import { IFluidLoadable, FluidObject } from "@fluidframework/core-interfaces"; import { IFluidTurboClient } from "./interfaces/IFluidTurboClient"; diff --git a/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts b/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts index 0265ef049..59fffa67b 100644 --- a/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts +++ b/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts @@ -3,15 +3,15 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObject, DataObjectFactory } from "@fluidframework/aqueduct"; +import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; import { LoadableObjectClass, IFluidContainer } from "fluid-framework"; import { IFluidHandle, FluidObject, IFluidLoadable, } from "@fluidframework/core-interfaces"; -import { assert } from "@fluidframework/core-utils"; -import { ConsensusRegisterCollection } from "@fluidframework/register-collection"; +import { assert } from "@fluidframework/core-utils/internal"; +import { ConsensusRegisterCollection } from "@fluidframework/register-collection/internal"; import { DynamicObjectRegistry, LiveDataObject } from "@microsoft/live-share"; // Register ConsensusRegisterCollection diff --git a/packages/live-share-turbo/src/interfaces/IFluidTurboClient.ts b/packages/live-share-turbo/src/interfaces/IFluidTurboClient.ts index a4499dfd8..f3e67c9ab 100644 --- a/packages/live-share-turbo/src/interfaces/IFluidTurboClient.ts +++ b/packages/live-share-turbo/src/interfaces/IFluidTurboClient.ts @@ -3,7 +3,8 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { LoadableObjectClass, SharedMap } from "fluid-framework"; +import { LoadableObjectClass } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { IFluidLoadable, FluidObject } from "@fluidframework/core-interfaces"; export interface IFluidTurboClient { diff --git a/packages/live-share-turbo/src/internals/schema.ts b/packages/live-share-turbo/src/internals/schema.ts index 0e27b2fb3..85038235d 100644 --- a/packages/live-share-turbo/src/internals/schema.ts +++ b/packages/live-share-turbo/src/internals/schema.ts @@ -3,7 +3,8 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { ContainerSchema, SharedMap } from "fluid-framework"; +import { ContainerSchema } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { DynamicObjectManager } from "../dds-objects"; /** diff --git a/packages/live-share/package.json b/packages/live-share/package.json index 38fb4c8ec..95919e0dd 100644 --- a/packages/live-share/package.json +++ b/packages/live-share/package.json @@ -18,17 +18,17 @@ "uuid": "^9.0.0" }, "devDependencies": { - "@fluid-internal/client-utils": "^2.0.0-rc.2.0.0", - "@fluidframework/azure-client": "^2.0.0-rc.2.0.0", - "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.0", - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", - "@fluidframework/test-utils": "^2.0.0-rc.2.0.0", + "@fluid-internal/client-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/azure-client": "^2.0.0-rc.4.0.2", + "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.9", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-utils": "^2.0.0-rc.4.0.2", "@live-share-private/test-utils": "^2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", diff --git a/packages/live-share/src/AzureLiveShareHost.ts b/packages/live-share/src/AzureLiveShareHost.ts index ea91a0cf9..52b631ede 100644 --- a/packages/live-share/src/AzureLiveShareHost.ts +++ b/packages/live-share/src/AzureLiveShareHost.ts @@ -73,9 +73,9 @@ export class AzureLiveShareHost implements ILiveShareHost { ); } return { - userId: audienceInfo.userId, + userId: audienceInfo.id, roles: this.getRolesForAudienceMember(audienceInfo), - displayName: audienceInfo.userName, + displayName: audienceInfo.name, }; } diff --git a/packages/live-share/src/DynamicObjectRegistry.ts b/packages/live-share/src/DynamicObjectRegistry.ts index 07da8c9f3..a91e127cb 100644 --- a/packages/live-share/src/DynamicObjectRegistry.ts +++ b/packages/live-share/src/DynamicObjectRegistry.ts @@ -3,10 +3,10 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { LoadableObjectClass, SharedMap } from "fluid-framework"; - -import { SharedDirectory } from "@fluidframework/map"; -import { SharedString } from "@fluidframework/sequence"; +import { LoadableObjectClass } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; +import { SharedDirectory } from "@fluidframework/map/internal"; +import { SharedString } from "@fluidframework/sequence/internal"; /** * Key for window global reference to loadable objects. diff --git a/packages/live-share/src/LiveDataObject.ts b/packages/live-share/src/LiveDataObject.ts index ee0d5b6e7..66eb2f443 100644 --- a/packages/live-share/src/LiveDataObject.ts +++ b/packages/live-share/src/LiveDataObject.ts @@ -2,9 +2,9 @@ import { DataObject, DataObjectTypes, IDataObjectProps, -} from "@fluidframework/aqueduct"; +} from "@fluidframework/aqueduct/internal"; import { LiveShareRuntime } from "./LiveShareRuntime"; -import { assert } from "@fluidframework/core-utils"; +import { assert } from "@fluidframework/core-utils/internal"; import { IClientInfo, LiveDataObjectInitializeState, diff --git a/packages/live-share/src/LiveEvent.ts b/packages/live-share/src/LiveEvent.ts index 1fb9c9533..a323ba754 100644 --- a/packages/live-share/src/LiveEvent.ts +++ b/packages/live-share/src/LiveEvent.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObjectFactory } from "@fluidframework/aqueduct"; +import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; import { IEvent } from "@fluidframework/common-definitions"; import { UserMeetingRole, diff --git a/packages/live-share/src/LiveEventScope.ts b/packages/live-share/src/LiveEventScope.ts index 9c099cd90..00e12f4ee 100644 --- a/packages/live-share/src/LiveEventScope.ts +++ b/packages/live-share/src/LiveEventScope.ts @@ -11,12 +11,9 @@ import { TypedEventEmitter } from "@fluid-internal/client-utils"; import { IInboundSignalMessage } from "@fluidframework/runtime-definitions"; import { ILiveEvent, UserMeetingRole } from "./interfaces"; import { LiveShareRuntime } from "./LiveShareRuntime"; -import { - isILiveEvent, - safeFluidTelemetryLogError, - waitUntilConnected, -} from "./internals"; +import { isILiveEvent, waitUntilConnected } from "./internals"; import { IEvent } from "@fluidframework/common-definitions"; +import { LiveTelemetryLogger } from "./LiveTelemetryLogger"; /** * Live event callback. @@ -86,6 +83,7 @@ export class LiveEventScope extends TypedEventEmitter { new TypedEventEmitter(); private readonly _runtime: IRuntimeSignaler; private _allowedRoles: UserMeetingRole[]; + private _logger: LiveTelemetryLogger; /** * Only throw role validation failed errors for events that are associated with this scope. @@ -107,6 +105,7 @@ export class LiveEventScope extends TypedEventEmitter { super(); this._runtime = runtime; this._allowedRoles = allowedRoles || []; + this._logger = new LiveTelemetryLogger(runtime, _liveRuntime); this.emitter.on("error", (error) => { this.emit("error", error); }); @@ -267,9 +266,8 @@ export class LiveEventScope extends TypedEventEmitter { this._allowedRoles )}.` ); - safeFluidTelemetryLogError( - this._runtime, - { eventName: "LiveEvent:invalidRole" }, + this._logger.sendErrorEvent( + "LiveEvent:invalidRole", new Error( `The clientId of "${clientId}" doesn't have a role of ${JSON.stringify( this._allowedRoles @@ -279,11 +277,7 @@ export class LiveEventScope extends TypedEventEmitter { } }) .catch((err) => { - safeFluidTelemetryLogError( - this._runtime, - { eventName: "LiveEvent:invalidRole" }, - err - ); + this._logger.sendErrorEvent("LiveEvent:invalidRole", err); }); } } diff --git a/packages/live-share/src/LiveFollowMode.ts b/packages/live-share/src/LiveFollowMode.ts index 3b2b66629..6d22d88f0 100644 --- a/packages/live-share/src/LiveFollowMode.ts +++ b/packages/live-share/src/LiveFollowMode.ts @@ -1,9 +1,9 @@ import { LiveDataObject } from "./LiveDataObject"; import { LiveState } from "./LiveState"; import { ILivePresenceEvents, LivePresence } from "./LivePresence"; -import { DataObjectFactory } from "@fluidframework/aqueduct"; +import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; import { IFluidHandle } from "@fluidframework/core-interfaces"; -import { assert } from "@fluidframework/core-utils"; +import { assert } from "@fluidframework/core-utils/internal"; import { LiveDataObjectInitializeState, UserMeetingRole } from "./interfaces"; import { LiveTelemetryLogger } from "./LiveTelemetryLogger"; import { LivePresenceUser, PresenceState } from "./LivePresenceUser"; diff --git a/packages/live-share/src/LivePresence.ts b/packages/live-share/src/LivePresence.ts index 7dc05ccf8..9902bb061 100644 --- a/packages/live-share/src/LivePresence.ts +++ b/packages/live-share/src/LivePresence.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObjectFactory } from "@fluidframework/aqueduct"; +import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; import { IEvent } from "@fluidframework/common-definitions"; import { LivePresenceUser, diff --git a/packages/live-share/src/LiveShareRuntime.ts b/packages/live-share/src/LiveShareRuntime.ts index 44740f13b..9d39adab8 100644 --- a/packages/live-share/src/LiveShareRuntime.ts +++ b/packages/live-share/src/LiveShareRuntime.ts @@ -1,4 +1,4 @@ -import { assert } from "@fluidframework/core-utils"; +import { assert } from "@fluidframework/core-utils/internal"; import { HostTimestampProvider } from "./HostTimestampProvider"; import { IClientInfo, diff --git a/packages/live-share/src/LiveState.ts b/packages/live-share/src/LiveState.ts index 8af107502..752a8d099 100644 --- a/packages/live-share/src/LiveState.ts +++ b/packages/live-share/src/LiveState.ts @@ -3,8 +3,8 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObjectFactory } from "@fluidframework/aqueduct"; -import { assert } from "@fluidframework/core-utils"; +import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; +import { assert } from "@fluidframework/core-utils/internal"; import { IEvent } from "@fluidframework/common-definitions"; import { ILiveEvent, diff --git a/packages/live-share/src/LiveTelemetryLogger.ts b/packages/live-share/src/LiveTelemetryLogger.ts index 71cb38600..dcc0818b9 100644 --- a/packages/live-share/src/LiveTelemetryLogger.ts +++ b/packages/live-share/src/LiveTelemetryLogger.ts @@ -4,17 +4,12 @@ */ import { + ITelemetryBaseEvent, ITelemetryBaseProperties, LogLevel, } from "@fluidframework/core-interfaces"; -import { - ITelemetryPerformanceEventExt, - ITelemetryErrorEventExt, - ITelemetryGenericEventExt, -} from "@fluidframework/telemetry-utils"; import { IRuntimeSignaler } from "./LiveEventScope"; import { LiveShareRuntime } from "./LiveShareRuntime"; -import { isExtendedLogger, safeFluidTelemetryLogError } from "./internals"; /** * Properties included on all events sent by `LiveTelemetryLogger`. @@ -41,6 +36,11 @@ export interface ILiveTelemetryProperties extends ITelemetryBaseProperties { * Time that the event occurred. The timestamp is generated by `_liveRuntime.getTimestamp`. */ timestamp: string; + + /** + * category of the event, like "error", "performance", "generic", etc. + */ + category: string; } /** @@ -73,22 +73,15 @@ export class LiveTelemetryLogger { additionalProperties?: Partial ): void { if (this._runtime.logger) { - const evt: ITelemetryGenericEventExt = this.createTelemetryEvent( - eventName, - additionalProperties - ); - // Newer versions of Fluid seem to use ITelemetryBaseEvent instead of ITelemetryGenericEventExt - if (isExtendedLogger(this._runtime.logger)) { - this._runtime.logger.sendTelemetryEvent(evt, error); - return; - } - this._runtime.logger.send( - { - ...evt, - category: evt.category ?? "default", - }, - LogLevel.default - ); + const evt: ITelemetryBaseEvent = { + ...this.createTelemetryEvent( + eventName, + "default", + additionalProperties + ), + error: this.parseErrorMessage(error), + }; + this._runtime.logger.send(evt, LogLevel.default); } } @@ -104,12 +97,15 @@ export class LiveTelemetryLogger { additionalProperties?: Partial ): void { if (this._runtime.logger) { - const evt: ITelemetryErrorEventExt = this.createTelemetryEvent( - eventName, - additionalProperties - ); - // Newer versions of Fluid seem to use ITelemetryBaseEvent instead of ITelemetryGenericEventExt - safeFluidTelemetryLogError(this._runtime, evt, error); + const evt: ITelemetryBaseEvent = { + ...this.createTelemetryEvent( + eventName, + "error", + additionalProperties + ), + error: this.parseErrorMessage(error), + }; + this._runtime.logger.send(evt, LogLevel.error); } } @@ -127,28 +123,22 @@ export class LiveTelemetryLogger { additionalProperties?: Partial ): void { if (this._runtime.logger) { - const evt: ITelemetryPerformanceEventExt = { + const evt: ITelemetryBaseEvent = { duration: duration, - ...this.createTelemetryEvent(eventName, additionalProperties), + ...this.createTelemetryEvent( + eventName, + "performance", + additionalProperties + ), + error: this.parseErrorMessage(error), }; - // Newer versions of Fluid seem to use ITelemetryBaseEvent instead of ITelemetryGenericEventExt - if (isExtendedLogger(this._runtime.logger)) { - this._runtime.logger.sendPerformanceEvent(evt, error); - return; - } - this._runtime.logger.send( - { - ...evt, - category: evt.category ?? "performance", - error: error.verbose, - }, - LogLevel.error - ); + this._runtime.logger.send(evt, LogLevel.error); } } private createTelemetryEvent( eventName: string, + category: string, additionalProperties?: Partial ): T { const now = this._liveRuntime.getTimestamp(); @@ -160,6 +150,7 @@ export class LiveTelemetryLogger { now ), timestamp: now, + category, ...additionalProperties, } as ILiveTelemetryProperties as T; } @@ -170,4 +161,17 @@ export class LiveTelemetryLogger { ): string { return `${clientId}:${timestamp}`; } + + private parseErrorMessage(error?: any): string { + if (!error) { + return `${error}`; + } + if (typeof error === "string") { + return error; + } + if (typeof error.message === "string") { + return error.message; + } + return `${JSON.stringify(error)}`; + } } diff --git a/packages/live-share/src/LiveTimer.ts b/packages/live-share/src/LiveTimer.ts index bfef199cd..e38c5bff0 100644 --- a/packages/live-share/src/LiveTimer.ts +++ b/packages/live-share/src/LiveTimer.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObjectFactory } from "@fluidframework/aqueduct"; +import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; import { LiveObjectSynchronizer } from "./LiveObjectSynchronizer"; import { IClientTimestamp, diff --git a/packages/live-share/src/internals/type-guards.ts b/packages/live-share/src/internals/type-guards.ts index 48293e8f6..73d55a76d 100644 --- a/packages/live-share/src/internals/type-guards.ts +++ b/packages/live-share/src/internals/type-guards.ts @@ -1,6 +1,6 @@ import { TimestampProvider } from "../TimestampProvider"; import { IClientInfo, ILiveEvent, UserMeetingRole } from "../interfaces"; -import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils"; +import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal"; interface IMobileWorkaroundRolesResponse { userRoles: UserMeetingRole[]; @@ -60,15 +60,3 @@ export function isILiveEvent(value: any): value is ILiveEvent { export function isTimestampProvider(value: any): value is TimestampProvider { return typeof value?.start === "function"; } - -/** - * @hidden - */ -export function isExtendedLogger(value: any): value is ITelemetryLoggerExt { - return ( - value && - typeof value.sendTelemetryEvent === "function" && - typeof value.sendErrorEvent === "function" && - typeof value.sendPerformanceEvent === "function" - ); -} diff --git a/packages/live-share/src/internals/utils.ts b/packages/live-share/src/internals/utils.ts index c36d3241d..903e9f318 100644 --- a/packages/live-share/src/internals/utils.ts +++ b/packages/live-share/src/internals/utils.ts @@ -6,9 +6,6 @@ import { ITokenProvider } from "@fluidframework/azure-client"; import { v4 as uuid } from "uuid"; import { IRuntimeSignaler } from "../LiveEventScope"; -import { isExtendedLogger } from "./type-guards"; -import { ITelemetryErrorEventExt } from "@fluidframework/telemetry-utils"; -import { LogLevel } from "@fluidframework/core-interfaces"; /** * @hidden @@ -184,41 +181,3 @@ export function waitUntilConnected(runtime: IRuntimeSignaler): Promise { } }); } - -/** - * @hidden - */ -function parseErrorMessage(error?: any): string { - if (!error) { - return `${error}`; - } - if (typeof error === "string") { - return error; - } - if (typeof error.message === "string") { - return error.message; - } - return `${JSON.stringify(error)}`; -} - -/** - * @hidden - */ -export function safeFluidTelemetryLogError( - runtime: IRuntimeSignaler, - event: ITelemetryErrorEventExt, - error?: unknown -) { - if (isExtendedLogger(runtime.logger)) { - runtime.logger.sendErrorEvent(event, error); - return; - } - runtime.logger.send( - { - ...event, - category: "error", - error: parseErrorMessage(error), - }, - LogLevel.error - ); -} diff --git a/packages/live-share/src/schema-injection-utils.ts b/packages/live-share/src/schema-injection-utils.ts index f96764859..0e3a43977 100644 --- a/packages/live-share/src/schema-injection-utils.ts +++ b/packages/live-share/src/schema-injection-utils.ts @@ -1,9 +1,9 @@ -import { DataObjectTypes, IDataObjectProps } from "@fluidframework/aqueduct"; -import { IFluidLoadable } from "@fluidframework/core-interfaces"; import { - LoadableObjectCtor, - DataObjectClass, -} from "@fluidframework/fluid-static"; + DataObjectTypes, + IDataObjectProps, +} from "@fluidframework/aqueduct/internal"; +import { IFluidLoadable } from "@fluidframework/core-interfaces"; +import { DataObjectClass } from "@fluidframework/fluid-static/internal"; import { LiveDataObject } from "./LiveDataObject"; import { LiveShareRuntime } from "./LiveShareRuntime"; import { @@ -19,8 +19,7 @@ import { */ type LiveObjectClass = { TypeName: string; -} & DataObjectClass & - LoadableObjectCtor; +} & DataObjectClass; /** * Inject Live Share dependencies into your Fluid container schema. diff --git a/samples/javascript/01.dice-roller/package.json b/samples/javascript/01.dice-roller/package.json index 767600a1e..05c959fdc 100644 --- a/samples/javascript/01.dice-roller/package.json +++ b/samples/javascript/01.dice-roller/package.json @@ -20,10 +20,10 @@ "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/01.dice-roller/src/app.js b/samples/javascript/01.dice-roller/src/app.js index b6c667c5c..07eb53049 100644 --- a/samples/javascript/01.dice-roller/src/app.js +++ b/samples/javascript/01.dice-roller/src/app.js @@ -14,7 +14,7 @@ import { renderMeetingStage } from "./renderMeetingStage"; import { renderMeetingSidePanel } from "./renderMeetingSidePanel"; import { renderTabConfig } from "./renderTabConfig"; import { renderError } from "./renderError"; -import { SharedMap } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; const searchParams = new URL(window.location.href).searchParams; const IN_TEAMS = searchParams.get("inTeams") === "1"; diff --git a/samples/javascript/02.react-video/package.json b/samples/javascript/02.react-video/package.json index cc97b9484..a8f9b4eef 100644 --- a/samples/javascript/02.react-video/package.json +++ b/samples/javascript/02.react-video/package.json @@ -16,7 +16,7 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -27,7 +27,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", diff --git a/samples/javascript/03.live-canvas-demo/package.json b/samples/javascript/03.live-canvas-demo/package.json index 1aee91393..a4d41d7ac 100644 --- a/samples/javascript/03.live-canvas-demo/package.json +++ b/samples/javascript/03.live-canvas-demo/package.json @@ -20,10 +20,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/04.live-share-react/package.json b/samples/javascript/04.live-share-react/package.json index 758c4c5e0..cbfcb99ec 100644 --- a/samples/javascript/04.live-share-react/package.json +++ b/samples/javascript/04.live-share-react/package.json @@ -13,7 +13,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/javascript/04.live-share-react/src/pages/AzureAutoJoin.jsx b/samples/javascript/04.live-share-react/src/pages/AzureAutoJoin.jsx index e2a3be9a8..e17a7d37a 100644 --- a/samples/javascript/04.live-share-react/src/pages/AzureAutoJoin.jsx +++ b/samples/javascript/04.live-share-react/src/pages/AzureAutoJoin.jsx @@ -1,6 +1,6 @@ import { InsecureTokenProvider } from "@fluidframework/test-runtime-utils"; import { AzureProvider } from "@microsoft/live-share-react"; -import { SharedMap } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { ExampleSharedMap, ExampleSharedState, diff --git a/samples/javascript/05.dice-roller-turbo/package.json b/samples/javascript/05.dice-roller-turbo/package.json index f6a2eb244..fcfa4bca4 100644 --- a/samples/javascript/05.dice-roller-turbo/package.json +++ b/samples/javascript/05.dice-roller-turbo/package.json @@ -20,10 +20,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-turbo": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/21.react-media-template/package.json b/samples/javascript/21.react-media-template/package.json index 7cbc52d57..a5dbe51e3 100644 --- a/samples/javascript/21.react-media-template/package.json +++ b/samples/javascript/21.react-media-template/package.json @@ -12,7 +12,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -24,7 +24,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", diff --git a/samples/javascript/21.react-media-template/src/live-share-hooks/useSharedObjects.js b/samples/javascript/21.react-media-template/src/live-share-hooks/useSharedObjects.js index fa29210e6..f5284b07b 100644 --- a/samples/javascript/21.react-media-template/src/live-share-hooks/useSharedObjects.js +++ b/samples/javascript/21.react-media-template/src/live-share-hooks/useSharedObjects.js @@ -6,7 +6,7 @@ import { LiveShareClient, TestLiveShareHost } from "@microsoft/live-share"; import { LiveCanvas } from "@microsoft/live-share-canvas"; import { LiveMediaSession } from "@microsoft/live-share-media"; -import { SharedMap } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { useEffect, useRef, useState } from "react"; import { LiveEvent, LivePresence } from "@microsoft/live-share"; import { mediaList } from "../utils/media-list"; diff --git a/samples/javascript/21.react-media-template/src/live-share-hooks/useTakeControl.js b/samples/javascript/21.react-media-template/src/live-share-hooks/useTakeControl.js index 9594168f2..4eeaff337 100644 --- a/samples/javascript/21.react-media-template/src/live-share-hooks/useTakeControl.js +++ b/samples/javascript/21.react-media-template/src/live-share-hooks/useTakeControl.js @@ -1,7 +1,6 @@ import { useCallback, useEffect, useMemo, useState } from "react"; import { ITimestampProvider } from "@microsoft/live-share"; -// eslint-disable-next-line -import { SharedMap } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; /** * @param {boolean} localUserIsEligiblePresenter boolean that is true when local user is eligible presenter diff --git a/samples/javascript/22.react-agile-poker/package.json b/samples/javascript/22.react-agile-poker/package.json index 58fa46a6f..cb7bc5b55 100644 --- a/samples/javascript/22.react-agile-poker/package.json +++ b/samples/javascript/22.react-agile-poker/package.json @@ -10,7 +10,7 @@ "@fluentui/react-theme": "^9.1.5", "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -20,7 +20,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/javascript/22.react-agile-poker/src/live-share-hooks/useSharedObjects.js b/samples/javascript/22.react-agile-poker/src/live-share-hooks/useSharedObjects.js index 673f69c7a..3fb8879f9 100644 --- a/samples/javascript/22.react-agile-poker/src/live-share-hooks/useSharedObjects.js +++ b/samples/javascript/22.react-agile-poker/src/live-share-hooks/useSharedObjects.js @@ -11,7 +11,7 @@ import { TestLiveShareHost, } from "@microsoft/live-share"; import { LiveTimer } from "@microsoft/live-share"; -import { SharedMap } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { getDefaultUserStories } from "../constants/default-user-stories"; import { LiveShareHost } from "@microsoft/teams-js"; diff --git a/samples/javascript/23.react-live-canvas/package.json b/samples/javascript/23.react-live-canvas/package.json index e1af37fc7..53a0e6092 100644 --- a/samples/javascript/23.react-live-canvas/package.json +++ b/samples/javascript/23.react-live-canvas/package.json @@ -8,7 +8,7 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router": "^6.4.2", @@ -17,7 +17,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/01.dice-roller/package.json b/samples/typescript/01.dice-roller/package.json index 0667ba13b..dc4520521 100644 --- a/samples/typescript/01.dice-roller/package.json +++ b/samples/typescript/01.dice-roller/package.json @@ -20,10 +20,10 @@ "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/01.dice-roller/src/app.ts b/samples/typescript/01.dice-roller/src/app.ts index d7dbe505a..0d9c45952 100644 --- a/samples/typescript/01.dice-roller/src/app.ts +++ b/samples/typescript/01.dice-roller/src/app.ts @@ -14,7 +14,7 @@ import { renderMeetingStage } from "./renderMeetingStage"; import { renderMeetingSidePanel } from "./renderMeetingSidePanel"; import { renderTabConfig } from "./renderTabConfig"; import { renderError } from "./renderError"; -import { SharedMap } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { AppTheme, IPresenceData } from "./types-interfaces"; const searchParams = new URL(window.location.href).searchParams; diff --git a/samples/typescript/01.dice-roller/src/renderMeetingSidePanel.ts b/samples/typescript/01.dice-roller/src/renderMeetingSidePanel.ts index 8a09169bb..4ae6450ce 100644 --- a/samples/typescript/01.dice-roller/src/renderMeetingSidePanel.ts +++ b/samples/typescript/01.dice-roller/src/renderMeetingSidePanel.ts @@ -5,7 +5,8 @@ import { meeting } from "@microsoft/teams-js"; import { getRandomDiceValue, stylizeDiceElem } from "./utils"; -import { IFluidContainer, SharedMap } from "fluid-framework"; +import { IFluidContainer } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { AppTheme } from "./types-interfaces"; export async function renderMeetingSidePanel( diff --git a/samples/typescript/03.live-canvas-demo/package.json b/samples/typescript/03.live-canvas-demo/package.json index a7a9b5b35..7568dabec 100644 --- a/samples/typescript/03.live-canvas-demo/package.json +++ b/samples/typescript/03.live-canvas-demo/package.json @@ -20,10 +20,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/04.live-share-react/package.json b/samples/typescript/04.live-share-react/package.json index 330cb79a3..bda88a5b9 100644 --- a/samples/typescript/04.live-share-react/package.json +++ b/samples/typescript/04.live-share-react/package.json @@ -13,7 +13,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/04.live-share-react/src/pages/AzureAutoJoin.tsx b/samples/typescript/04.live-share-react/src/pages/AzureAutoJoin.tsx index 7ae1ebe72..d3bc23e92 100644 --- a/samples/typescript/04.live-share-react/src/pages/AzureAutoJoin.tsx +++ b/samples/typescript/04.live-share-react/src/pages/AzureAutoJoin.tsx @@ -1,6 +1,6 @@ -import { InsecureTokenProvider } from "@fluidframework/test-runtime-utils"; +import { InsecureTokenProvider } from "@fluidframework/test-runtime-utils/internal"; import { AzureProvider } from "@microsoft/live-share-react"; -import { SharedMap } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { ExampleSharedMap, ExampleSharedState, diff --git a/samples/typescript/05.dice-roller-turbo/package.json b/samples/typescript/05.dice-roller-turbo/package.json index e132506a4..c0c9b765a 100644 --- a/samples/typescript/05.dice-roller-turbo/package.json +++ b/samples/typescript/05.dice-roller-turbo/package.json @@ -20,10 +20,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-turbo": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/06.presence-avatars/package.json b/samples/typescript/06.presence-avatars/package.json index 71411886e..81cac41c0 100644 --- a/samples/typescript/06.presence-avatars/package.json +++ b/samples/typescript/06.presence-avatars/package.json @@ -13,7 +13,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/07.countdown-timer/package.json b/samples/typescript/07.countdown-timer/package.json index a789e8641..350590c08 100644 --- a/samples/typescript/07.countdown-timer/package.json +++ b/samples/typescript/07.countdown-timer/package.json @@ -13,7 +13,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/08.3d-model/package.json b/samples/typescript/08.3d-model/package.json index 702fdffbb..be935e98d 100644 --- a/samples/typescript/08.3d-model/package.json +++ b/samples/typescript/08.3d-model/package.json @@ -15,7 +15,7 @@ "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -29,7 +29,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/21.react-media-template/package.json b/samples/typescript/21.react-media-template/package.json index 1694e3475..1ee42ff99 100644 --- a/samples/typescript/21.react-media-template/package.json +++ b/samples/typescript/21.react-media-template/package.json @@ -12,7 +12,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.2.0.0", + "fluid-framework": "^2.0.0-rc.4.0.2", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -24,7 +24,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "@types/lodash": "^4.14.191", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", diff --git a/samples/typescript/21.react-media-template/src/live-share-hooks/usePlaylist.ts b/samples/typescript/21.react-media-template/src/live-share-hooks/usePlaylist.ts index 0c9ece484..5c9a29fc0 100644 --- a/samples/typescript/21.react-media-template/src/live-share-hooks/usePlaylist.ts +++ b/samples/typescript/21.react-media-template/src/live-share-hooks/usePlaylist.ts @@ -1,7 +1,7 @@ import { useEffect, useState, useCallback } from "react"; import { MediaItem, searchList } from "../utils/media-list"; import { debounce } from "lodash"; -import { SharedMap } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; /** * Hook for tracking video playlist diff --git a/samples/typescript/21.react-media-template/src/live-share-hooks/useSharedObjects.ts b/samples/typescript/21.react-media-template/src/live-share-hooks/useSharedObjects.ts index eff8dca0d..9aca629a7 100644 --- a/samples/typescript/21.react-media-template/src/live-share-hooks/useSharedObjects.ts +++ b/samples/typescript/21.react-media-template/src/live-share-hooks/useSharedObjects.ts @@ -12,7 +12,8 @@ import { } from "@microsoft/live-share"; import { LiveCanvas } from "@microsoft/live-share-canvas"; import { LiveMediaSession } from "@microsoft/live-share-media"; -import { IFluidContainer, SharedMap } from "fluid-framework"; +import { IFluidContainer } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { useEffect, useState, useRef } from "react"; import { mediaList } from "../utils/media-list"; import { LiveShareHost } from "@microsoft/teams-js"; diff --git a/samples/typescript/21.react-media-template/src/live-share-hooks/useTakeControl.ts b/samples/typescript/21.react-media-template/src/live-share-hooks/useTakeControl.ts index c36e5d8ac..ea4b6e3c8 100644 --- a/samples/typescript/21.react-media-template/src/live-share-hooks/useTakeControl.ts +++ b/samples/typescript/21.react-media-template/src/live-share-hooks/useTakeControl.ts @@ -1,6 +1,6 @@ import { useCallback, useEffect, useMemo, useState } from "react"; import { ITimestampProvider, LivePresenceUser } from "@microsoft/live-share"; -import { SharedMap } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { IUserData } from "./usePresence"; export const useTakeControl = ( diff --git a/samples/typescript/31.live-canvas-tests/package.json b/samples/typescript/31.live-canvas-tests/package.json index 0bca7c0c2..512567481 100644 --- a/samples/typescript/31.live-canvas-tests/package.json +++ b/samples/typescript/31.live-canvas-tests/package.json @@ -16,13 +16,13 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@fluidframework/azure-client": "^2.0.0-rc.2.0.0", + "@fluidframework/azure-client": "^2.0.0-rc.4.0.2", "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", - "fluid-framework": "^2.0.0-rc.2.0.0" + "fluid-framework": "^2.0.0-rc.4.0.2" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.2.0.0", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", "buffer": "^6.0.3", "concurrently": "^5.3.0", "start-server-and-test": "^2.0.0", From 40957e9795f2dc72190c81ce2f4e427c27e0d9f2 Mon Sep 17 00:00:00 2001 From: huntj88 Date: Wed, 29 May 2024 14:16:11 -0500 Subject: [PATCH 13/40] Merged main into mainv2 (#780) Co-authored-by: Ryan Bliss Co-authored-by: James Hunt --- package-lock.json | 241 +++++++++++ package.json | 1 + packages/live-share-acs/.nycrc.json | 11 + packages/live-share-acs/LICENSE | 90 ++++ packages/live-share-acs/README.md | 299 ++++++++++++++ packages/live-share-acs/package.json | 40 ++ .../src/ACSTeamsLiveShareHost.ts | 385 ++++++++++++++++++ packages/live-share-acs/src/index.ts | 1 + .../live-share-acs/src/internals/index.ts | 2 + .../src/internals/interfaces.ts | 96 +++++ .../src/internals/type-guards.ts | 95 +++++ packages/live-share-acs/tsconfig.build.json | 9 + packages/live-share-acs/tsconfig.json | 76 ++++ packages/live-share-acs/typedoc.json | 10 + packages/live-share/src/LiveFollowMode.ts | 18 +- 15 files changed, 1359 insertions(+), 15 deletions(-) create mode 100644 packages/live-share-acs/.nycrc.json create mode 100644 packages/live-share-acs/LICENSE create mode 100644 packages/live-share-acs/README.md create mode 100644 packages/live-share-acs/package.json create mode 100644 packages/live-share-acs/src/ACSTeamsLiveShareHost.ts create mode 100644 packages/live-share-acs/src/index.ts create mode 100644 packages/live-share-acs/src/internals/index.ts create mode 100644 packages/live-share-acs/src/internals/interfaces.ts create mode 100644 packages/live-share-acs/src/internals/type-guards.ts create mode 100644 packages/live-share-acs/tsconfig.build.json create mode 100644 packages/live-share-acs/tsconfig.json create mode 100644 packages/live-share-acs/typedoc.json diff --git a/package-lock.json b/package-lock.json index 22b2595db..e4818744b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "Microsoft", "workspaces": [ "packages/live-share", + "packages/live-share-acs", "packages/live-share-canvas", "packages/live-share-media", "packages/live-share-turbo", @@ -493,6 +494,200 @@ "node": ">=6.0.0" } }, + "node_modules/@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", + "dev": true, + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure/communication-calling": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@azure/communication-calling/-/communication-calling-1.24.1.tgz", + "integrity": "sha512-hjAazjrPU6GufexAaGOTBf9dOTM/8CNVRbzR1YusD1zhEdB8NE/xsCFcFemYOIv7ewPNKHIXVD0tmoG5mO4mjQ==", + "dev": true, + "dependencies": { + "@azure/communication-common": "^2.3.0", + "@azure/logger": "^1.0.3" + } + }, + "node_modules/@azure/communication-common": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@azure/communication-common/-/communication-common-2.3.1.tgz", + "integrity": "sha512-6ZQt20iMZbyckQn4m1TDwiDv3Fzyt1h4lnQ1szBBns2x3VQY9XHbnskPtvUdwK/HT+c/1PoUwof3toy1AIznbQ==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.3.0", + "@azure/core-rest-pipeline": "^1.3.2", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.0.0", + "events": "^3.0.0", + "jwt-decode": "^4.0.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/communication-common/node_modules/jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", + "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.0.tgz", + "integrity": "sha512-CeuTvsXxCUmEuxH5g/aceuSl6w2EugvNHKAtKKVdiX915EjJJxAwfzNNWZreNnbxHZ2fi0zaM6wwS23x2JVqSQ==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.9.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.2.tgz", + "integrity": "sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz", + "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.2.tgz", + "integrity": "sha512-l170uE7bsKpIU6B/giRc9i4NI0Mj+tANMMMxf7Zi/5cKzEqPayP7+X1WPrG7e+91JgY8N+7K7nF2WOi7iVhXvg==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", @@ -4410,6 +4605,10 @@ "resolved": "packages/live-share", "link": true }, + "node_modules/@microsoft/live-share-acs": { + "resolved": "packages/live-share-acs", + "link": true + }, "node_modules/@microsoft/live-share-canvas": { "resolved": "packages/live-share-canvas", "link": true @@ -15016,6 +15215,48 @@ "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" } }, + "packages/live-share-acs": { + "name": "@microsoft/live-share-acs", + "version": "2.0.0-internal.5", + "license": "SEE LICENSE IN LICENSE", + "devDependencies": { + "@azure/communication-calling": "^1.14.0", + "@microsoft/live-share": "2.0.0-internal.5", + "@types/assert": "^1.5.6", + "@types/mocha": "^10.0.1", + "@types/node": "^18.11.18", + "mocha": "^10.2.0", + "nyc": "^15.1.0", + "ts-mocha": "^10.0.0", + "typescript": "^4.6.4" + }, + "peerDependencies": { + "@azure/communication-calling": "^1.14.0", + "@microsoft/live-share": "2.0.0-internal.5" + } + }, + "packages/live-share-acs/node_modules/@types/node": { + "version": "18.19.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.31.tgz", + "integrity": "sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/live-share-acs/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "packages/live-share-canvas": { "name": "@microsoft/live-share-canvas", "version": "2.0.0-internal.5", diff --git a/package.json b/package.json index c4abf4ae6..7ecd33953 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "main": "index.js", "workspaces": [ "packages/live-share", + "packages/live-share-acs", "packages/live-share-canvas", "packages/live-share-media", "packages/live-share-turbo", diff --git a/packages/live-share-acs/.nycrc.json b/packages/live-share-acs/.nycrc.json new file mode 100644 index 000000000..cc236d58b --- /dev/null +++ b/packages/live-share-acs/.nycrc.json @@ -0,0 +1,11 @@ +{ + "cache": false, + "extension": [".ts"], + "check-coverage": true, + "include": ["src/**"], + "exclude": ["src/pps/**"], + "statements": 90, + "branches": 90, + "functions": 95, + "lines": 90 + } \ No newline at end of file diff --git a/packages/live-share-acs/LICENSE b/packages/live-share-acs/LICENSE new file mode 100644 index 000000000..59479a141 --- /dev/null +++ b/packages/live-share-acs/LICENSE @@ -0,0 +1,90 @@ +MICROSOFT SOFTWARE LICENSE TERMS + +MICROSOFT LIVE SHARE SDK +________________________________________ + +Copyright (c) Microsoft Corporation +All rights reserved + +These license terms are an agreement between you and Microsoft Corporation (or one of its affiliates). They apply to the software named above and any Microsoft services or software updates (except to the extent such services or updates are accompanied by new or additional terms, in which case those different terms apply prospectively and do not alter your or Microsoft’s rights relating to pre-updated software or services). IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. + +1. INSTALLATION AND USE RIGHTS. + a) General. You may install and use any number of copies of the software to develop and test your applications, solely for the purpose stated in 1(b) below and otherwise for your internal business purposes. + b) Purpose. The use of this license provided under these terms is specifically limited to developing applications that interact solely within the Microsoft Teams Ecosystem. You may distribute the software according to Section 3 of these terms. + c) Third Party Components. The software may include third party components with separate legal notices or governed by other agreements, as may be described in the ThirdPartyNotices file(s) accompanying the software. + d) Microsoft Terms of Use. Some features of the software provide access to, or rely on, online services. The use of those services (but not the software) is governed by separate terms. This includes the Microsoft APIs Terms of Use which can be found at https://docs.microsoft.com/legal/microsoft-apis/terms-of-use, the Microsoft Developer Agreement which can be found at https://learn.microsoft.com/legal/mdsa, and the Supplemental Terms of Use for Microsoft Azure which can be found at https://azure.microsoft.com/support/legal/preview-supplemental-terms. Please read them. The services may not be available in all regions. + +2. NO WARRANTIES. The software comes with no warranties as provided under Section 13. It may not operate correctly. We may change or discontinue the software at any time without notice. + +3. DISTRIBUTABLE CODE. The software contains code you are permitted to distribute (i.e. make available for third parties) in applications you develop, as described in this Section. + a) Distribution Rights. The code and test files are distributable if included with the software. + i. Third Party Distribution. You may permit distributors of your applications to copy and distribute any of this distributable code you elect to distribute with your applications. + b) Distribution Requirements. For any code you distribute, you must: + i. adhere to the Purpose stated in Section 1(b); and + ii. indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your applications, except to the extent that any claim is based solely on the unmodified distributable code. + c) Distribution Restrictions. You may not: + i. use Microsoft’s trademarks or trade dress in your application in any way that suggests your application comes from or is endorsed by Microsoft; or + ii. modify or distribute the source code of any distributable code so that any part of it becomes subject to any license that requires that the distributable code, any other part of the software, or any of Microsoft’s other intellectual property be disclosed or distributed in source code form, or that others have the right to modify it. + +4. SCOPE OF LICENSE. The software is licensed, not sold. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you will not (and have no right to): + a) remove, minimize, block, or modify any notices of Microsoft or its suppliers in the software;software; + b) use the software in any way that is against the law or to create or propagate malware; or + c) share, publish, distribute, or lease the software (except for any distributable code, subject to the terms above), provide the software as a stand-alone offering for others to use, or transfer the software or this agreement to any third party. + +5. Data Protection. There are also some features in the software that may enable you to collect data from users of your applications. If you use these features to enable data collection in your applications, you must comply with applicable law, including providing appropriate notices to and obtaining consent from users of your applications. You can learn more about data collection and use in the help documentation and the privacy statement at https://aka.ms/privacy. Your use of the software operates as your consent to these practices. + +6. CODE OF CONDUCT. By agreeing to these license terms, you’re agreeing that, when using the software, you will follow these rules: + a) Don’t do anything illegal. + b) Don’t engage in any activity that exploits, harms, or threatens to harm children. + c) Don’t send spam. Spam is unwanted or unsolicited bulk email, postings, contact requests, SMS (text messages), or instant messages. + d) Don’t publicly display or use the software to share inappropriate content or material (involving, for example, nudity, bestiality, pornography, offensive language, graphic violence, or criminal activity). + e) Don’t engage in activity that is fraudulent, false or misleading (e.g., asking for money under false pretenses, impersonating someone else, manipulating the software to increase play count, or affect rankings, ratings, or comments). + f) Don’t circumvent any restrictions on access to or availability of the software. + g) Don’t engage in activity that is harmful to you, the software, or others (e.g., transmitting viruses, stalking, posting terrorist content, communicating hate speech, or advocating violence against others). + h) Don’t infringe upon the rights of others (e.g., unauthorized sharing of copyrighted music or other copyrighted material, resale or other distribution of Bing maps, or photographs). + i) Don’t engage in activity that violates the privacy of others. + j) Don’t help others break these rules. + +7. EXPORT RESTRICTIONS. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information on export restrictions, visit https://aka.ms/exporting. + +8. SUPPORT SERVICES. Microsoft is not obligated under this agreement to provide any support services for the software. Any support provided is “as is”, “with all faults”, and without warranty of any kind. + +9. ENTIRE AGREEMENT. This agreement, terms referenced herein, and any other terms Microsoft may provide for supplements, updates, or third-party applications, is the entire agreement for the software. + +10. APPLICABLE LAW AND PLACE TO RESOLVE DISPUTES. If you acquired the software in the United States or Canada, the laws of the state or province where you live (or, if a business, where your principal place of business is located) govern the interpretation of this agreement, claims for its breach, and all other claims (including consumer protection, unfair competition, and tort claims), regardless of conflict of laws principles, except that the FAA governs everything related to arbitration. If you acquired the software in any other country, its laws apply, except that the FAA governs everything related to arbitration. If U.S. federal jurisdiction exists, you and Microsoft consent to exclusive jurisdiction and venue in the federal court in King County, Washington for all disputes heard in court (excluding arbitration). If not, you and Microsoft consent to exclusive jurisdiction and venue in the Superior Court of King County, Washington for all disputes heard in court (excluding arbitration). + +11. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes certain legal rights. You may have other rights, including consumer rights, under the laws of your state or country. Separate and apart from your relationship with Microsoft, you may also have rights with respect to the party from which you acquired the software. This agreement does not change those other rights if the laws of your state or country do not permit it to do so. For example, if you acquired the software in one of the below regions, or mandatory country law applies, then the following provisions apply to you: + a. Australia. You have statutory guarantees under the Australian Consumer Law and nothing in this agreement is intended to affect those rights. + b. Canada. If you acquired this software in Canada, you may stop receiving updates by turning off the automatic update feature, disconnecting your device from the Internet (if and when you re-connect to the Internet, however, the software will resume checking for and installing updates), or uninstalling the software. The product documentation, if any, may also specify how to turn off updates for your specific device or software. + c. Germany and Austria. + • Warranty. The properly licensed software will perform substantially as described in any Microsoft materials that accompany the software. However, Microsoft gives no contractual guarantee in relation to the licensed software. + • Limitation of Liability. In case of intentional conduct, gross negligence, claims based on the Product Liability Act, as well as, in case of death or personal or physical injury, Microsoft is liable according to the statutory law. + • Subject to the foregoing clause ii., Microsoft will only be liable for slight negligence if Microsoft is in breach of such material contractual obligations, the fulfillment of which facilitate the due performance of this agreement, the breach of which would endanger the purpose of this agreement and the compliance with which a party may constantly trust in (so-called "cardinal obligations"). In other cases of slight negligence, Microsoft will not be liable for slight negligence. + +12. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES, OR CONDITIONS. TO THE EXTENT PERMITTED UNDER APPLICABLE LAWS, MICROSOFT EXCLUDES ALL IMPLIED WARRANTIES, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + +13. DISCLAIMER. THIS SOFTWARE AND UNDERLYING SERVICES, ARE PROVIDED "AS-IS," "WITH ALL FAULTS," AND "AS AVAILABLE," AND ARE EXCLUDED FROM THE SERVICE LEVEL AGREEMENTS AND LIMITED WARRANTY. This software is not covered by customer support, and may be subject to reduced or different security, compliance and privacy commitments, as further explained in the Microsoft Privacy Statement, Microsoft Azure Trust Center, the Product Terms, the DPA, and any additional notices provided with the software. Where applicable, the following terms in the DPA do not apply to Previews: Processing of Personal Data; GDPR, Data Security. + +14. LIMITATION ON AND EXCLUSION OF DAMAGES. IF YOU HAVE ANY BASIS FOR RECOVERING DAMAGES DESPITE THE PRECEDING DISCLAIMER OF WARRANTY, YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT, OR INCIDENTAL DAMAGES. + + This limitation applies to (a) anything related to the software, services, content (including code) on third party Internet sites, or third party applications; and (b) claims for breach of contract, warranty, guarantee, or condition; strict liability, negligence, or other tort; or any other claim; in each case to the extent permitted by applicable law. + + It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your state, province, or country may not allow the exclusion or limitation of incidental, consequential, or other damages. + + Please note: As this software is distributed in Canada, some of the clauses in this agreement are provided below in French. + + Remarque: Ce logiciel étant distribué au Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. + + EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. + + LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. + + Cette limitation concerne: + + • tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers; et + + • les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. + + Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. + + EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. diff --git a/packages/live-share-acs/README.md b/packages/live-share-acs/README.md new file mode 100644 index 000000000..4cf2df986 --- /dev/null +++ b/packages/live-share-acs/README.md @@ -0,0 +1,299 @@ +# Microsoft Live Share ACS + +**Important:** Live Share for Azure Communication Services is currently in private developer preview. Request access [here](https://aka.ms/liveshareacspreview). + +Use [Azure Communication Services Teams interoperability](/azure/communication-services/concepts/teams-interop) in your web application to extend it to Microsoft Teams Live Share. This integration allows Azure Communication Service (ACS) users and Teams meeting users to join the same Live Share session for seamless collaboration. + +This package is an extension of Microsoft Live Share, and requires the `@microsoft/live-share` extension. You can find it on NPM [here](https://www.npmjs.com/package/@microsoft/live-share). + +You can find our API reference documentation at [aka.ms/livesharedocs](https://aka.ms/livesharedocs). + +## Installing + +To add the latest version of the SDK to your application using NPM: + +```bash +npm install @microsoft/live-share fluid-framework @fluidframework/azure-client --save +npm install @microsoft/live-share-acs @azure/communication-calling@next --save +npm install @microsoft/teams-js --save +``` + +or using [Yarn](https://yarnpkg.com/): + +```bash +yarn add @microsoft/live-share fluid-framework @fluidframework/azure-client +yarn add @microsoft/live-share-acs @azure/communication-calling@next +yarn add @microsoft/teams-js +``` + +## Building package + +After cloning the [GitHub repository](https://www.github.com/microsoft/live-share-sdk), navigate to the root folder and perform: + +```bash +npm install +npm run build +``` + +This will use npm workspaces to hoist and build all dependencies. + +## How to use this extension + +In this article, you'll learn how to integrate the `@microsoft/live-share-acs` package with the `LiveShareClient` to join a Live Share session for a Teams meeting. You'll also discover how to join the meeting's Live Share session through your Microsoft Teams meeting extension. Let's start! + +### Pre-requisites + +1. [Request access](https://aka.ms/liveshareacspreview) to the Live Share for Azure Communication Services private preview. +2. Understand the [Azure Communication Services Teams interoperability](/azure/communication-services/concepts/teams-interop) by reading the documentation. +3. Complete the [Live Share quick start guide](../teams-live-share-quick-start.md). + +#### Install the JavaScript dependencies + +First, install [@microsoft/live-share](https://github.com/microsoft/live-share-sdk) and its peer dependencies, including `fluid-framework` and `@fluidframework/azure-client`. Then, install the `@microsoft/live-share-acs` package and its peer dependency, the `@azure/communication-calling@next` package. If you're using Live Share in your tab application, install `@microsoft/teams-js` version 2.11.0 or newer. + +##### npm + +```bash +npm install @microsoft/live-share fluid-framework @fluidframework/azure-client --save +npm install @microsoft/live-share-acs @azure/communication-calling@next --save +npm install @microsoft/teams-js --save +``` + +##### yarn + +```bash +yarn add @microsoft/live-share fluid-framework @fluidframework/azure-client +yarn add @microsoft/live-share-acs @azure/communication-calling@next +yarn add @microsoft/teams-js +``` + +### Join a session + +When initializing `LiveShareClient`, use the `ILiveShareHost` property to connect the `LiveShareClient` class to a Live Share session. For example, the `TestLiveShareHost` class joins a session using a `localhost` test server. + +To have meeting participants join a Live Share session through your Azure Communication Services application, use the `ACSTeamsLiveShareHost` class from the `@microsoft/live-share-acs` package. For users joining the meeting through the Teams client, your tab application can connect to the session using the `LiveShareHost` class from the `@microsoft/teams-js` library. + +> [!NOTE] +> Live Share doesn't support AAD users joining through Azure Communication Services. AAD users must join a meeting through the Microsoft Teams client to join a Live Share session. + +Here's an example of how you can implement this in your application: + +**JavaScript** + +```javascript +import { LiveShareClient, LiveState } from "@microsoft/live-share"; +import { ACSTeamsLiveShareHost } from "@microsoft/live-share-acs"; +import { app, LiveShareHost } from "@microsoft/teams-js"; +import { CallClient } from "@azure/communication-calling"; +import { AzureCommunicationTokenCredential } from "@azure/communication-common"; + +async function joinSession(host) { + const client = new LiveShareClient(host); + const schema = { + initialObjects: { + liveState: LiveState, + }, + }; + const { container } = await client.joinContainer(schema); + + // ... ready to start app sync logic +} + +async function joinFromTeams() { + // Initialize teams-js + await app.initialize(); + // Create Teams LiveShareHost + const host = LiveShareHost.create(); + // Join the Live Share session + await joinSession(host); +} + +async function joinFromACS() { + // Initialize your ACS CallClient + const callClient = new CallClient(); + // Get a token credential & user ID from your server and create a token credential + const userACSToken = ""; + const userACSId = ""; + const tokenCredential = new AzureCommunicationTokenCredential(userACSToken); + // Create a call agent + const userDisplayName = " { + // In production, you likely want to refresh the token. + // Refer to the Azure Communication Services documentation for examples of this. + return Promise.resolve(userACSToken); + }, + }); + // Join the Live Share session + await joinSession(host); + + // ... other ACS call setup +} + +// First, we must know if your user is joining a session from ACS or Teams. +// A common pattern is deploying two versions of your app, such as teams.contoso.com and app.contoso.com or using environment variables +const IN_TEAMS = window.location.origin.includes("teams."); + +if (IN_TEAMS) { + joinFromTeams(); +} else { + joinFromACS(); +} +``` + +**TypeScript** + +```TypeScript +import { LiveShareClient, LiveState, ILiveShareHost } from "@microsoft/live-share"; +import { ACSTeamsLiveShareHost } from "@microsoft/live-share-acs"; +import { app, LiveShareHost } from "@microsoft/teams-js"; +import { CallClient } from "@azure/communication-calling"; +import { AzureCommunicationTokenCredential } from '@azure/communication-common'; + +async function joinSession(host: ILiveShareHost): Promise { + const client = new LiveShareClient(host); + const schema = { + initialObjects: { + liveState: LiveState, + }, + }; + const { container } = await client.joinContainer(schema); + + // ... ready to start app sync logic +} + +async function joinFromTeams(): Promise { + // Initialize teams-js + await app.initialize(); + // Create Teams LiveShareHost + const host = LiveShareHost.create(); + // Join the Live Share session + await joinSession(host); +} + +async function joinFromACS(): Promise { + // Initialize your ACS CallClient + const callClient = new CallClient(); + // Get a token credential & user ID from your server and create a token credential + const userACSToken = ""; + const userACSId = ""; + const tokenCredential = new AzureCommunicationTokenCredential(userACSToken); + // Create a call agent + const userDisplayName = " { + // In production, you likely want to refresh the token. + // Refer to the Azure Communication Services documentation for examples of this. + return Promise.resolve(userACSToken) + }, + }); + // ... other ACS call setup + + // Join the Live Share session + await joinSession(host); +} + +// First, we must know if your user is joining a session from ACS or Teams. +// A common pattern is deploying two versions of your app, such as teams.contoso.com and app.contoso.com or using environment variables +const IN_TEAMS = window.location.origin.includes("teams."); + +if (IN_TEAMS) { + joinFromTeams(); +} else { + joinFromACS(); +} +``` + +#### Long Meeting Join URL update + +In 2024, Microsoft Teams changed the meeting join URL format for calendar invites. The APIs this feature depends on relies on having a long meeting join URL; for now, short URLs will not work. + +Here is an example of a short join URL: `https://teams.microsoft.com/meet/${meetingId}?p=${joinPasscode}`. +Here is an example of a long join URL: `https://teams.microsoft.com/l/meetup-join/${threadId}/0?context=${encodedJSONContext}` + +If you only have access to the short URL for whatever reason, you must manually construct a join URL, like this: + +```TypeScript +const threadId = 'TEAMS_THREAD_ID'; // e.g., `19:meeting_{SOME_ID}@thread.v2`, may need to get from Graph +const tenantId = 'MEETING_ORGANIZER_TENANT_ID'; // e.g., tenant AAD identifier parsed from AAD token of meeting organizer +const organizerId = ''; // e.g., user's AAD identifier parsed from AAD token of meeting organizer +const context = { + Tid: tenantId, + Oid: organizerId, +}; +const encodedContext = encodeURIComponent(JSON.parse(context)); +const longJoinUrl = `https://teams.microsoft.com/l/meetup-join/${threadId}/0?context=${encodedContext}`; +``` + +### Why use Live Share with Azure Communication Services? + +Integrating Live Share into your app can enhance collaboration between your agents and customers, particularly if your business provides customer services. Here are a few examples of how `ACSTeamsLiveShareHost` can be implemented in your application: + +- Facilitate co-browsing of your website between your support agents and customers. +- Enable your retail agents and digital shoppers to co-shop on your e-commerce website. +- Provide onboarding assistance through your sales representatives for new customers. +- Allow co-watching of high-quality promotional videos during sales calls. + +## Code samples + +There is one code sample that is hosted in a separate GitHub repository. You can also learn more about Live Share using our other [samples](../../samples). + +| Sample name | Description | Javascript | +| ----------- | ------------------------------------------- | ------------------------------------------------------ | +| Teams ACS | Basic example showing how to use Teams ACS. | [View](https://github.com/ryanbliss/acs-cobrowse-demo) | + +## Package Compatibility + +The Live Share SDK contains dependencies for [@microsoft/teams-js](https://www.npmjs.com/package/@microsoft/teams-js) and [fluid-framework](https://www.npmjs.com/package/fluid-framework) packages among others. Both of these packages are sensitive to the package version your app any libraries use. You will likely run into issues if the package version your app uses doesn't match the version other libraries you depend on use. + +**It is critical that your app use the package dependencies listed in the table below.** Lookup the version of the `@microsoft/live-share` you're using and set any other dependencies in your package.json file to match: + +| @microsoft/live-share | @microsoft/teams-js | fluid-framework | @microsoft/live-share-\* | @fluidframework/azure-client | @microsoft/TeamsFx | @microsoft/TeamsFx-react | +| --------------------- | ------------------- | --------------- | ------------------------ | ---------------------------- | ------------------ | ------------------------ | +| ^1.0.0 | ^2.11.0 | ^1.2.3 | ^1.0.0 | ^1.0.0 | ^2.5.0 | ^2.5.0 | + +## Contributing + +There are several ways you can [contribute](../../CONTRIBUTING.md) to this project: + +- [Submit bugs](https://github.com/microsoft/live-share-sdk/issues) and help us verify fixes as they are checked in. +- Review the source code changes. +- Engage with other Live Share developers on [StackOverflow](https://stackoverflow.com/questions/tagged/live-share). +- [Contribute bug fixes](../../CONTRIBUTING.md). + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact with any additional questions or comments. + +## Reporting Security Issues + +Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) at . You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the [MSRC PGP](https://technet.microsoft.com/security/dn606155) key, can be found in the [Security TechCenter](https://technet.microsoft.com/security/default). + +Copyright (c) Microsoft Corporation. All rights reserved. + +Licensed under a special [Microsoft](./LICENSE) License. diff --git a/packages/live-share-acs/package.json b/packages/live-share-acs/package.json new file mode 100644 index 000000000..b94634a05 --- /dev/null +++ b/packages/live-share-acs/package.json @@ -0,0 +1,40 @@ +{ + "name": "@microsoft/live-share-acs", + "version": "2.0.0-internal.5", + "description": "Live Share integration package for Azure Communication Services.", + "author": "Microsoft", + "license": "SEE LICENSE IN LICENSE", + "main": "./bin/index.js", + "types": "./bin/index.d.ts", + "scripts": { + "clean": "npx shx rm -rf bin", + "build": "tsc -p tsconfig.build.json", + "test": "ts-mocha src/**/*.spec.ts --timeout 10000", + "test:debug": "ts-mocha src/**/*.spec.ts --inspect-brk", + "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test" + }, + "devDependencies": { + "@microsoft/live-share": "2.0.0-internal.5", + "@azure/communication-calling": "^1.14.0", + "@types/assert": "^1.5.6", + "@types/mocha": "^10.0.1", + "@types/node": "^18.11.18", + "mocha": "^10.2.0", + "nyc": "^15.1.0", + "ts-mocha": "^10.0.0", + "typescript": "^4.6.4" + }, + "peerDependencies": { + "@microsoft/live-share": "2.0.0-internal.5", + "@azure/communication-calling": "^1.14.0" + }, + "repository": { + "directory": "packages/live-share-acs", + "type": "git", + "url": "git+https://github.com/microsoft/live-share-sdk.git" + }, + "homepage": "https://aka.ms/teamsliveshare", + "bugs": { + "url": "https://github.com/microsoft/live-share-sdk/issues" + } +} diff --git a/packages/live-share-acs/src/ACSTeamsLiveShareHost.ts b/packages/live-share-acs/src/ACSTeamsLiveShareHost.ts new file mode 100644 index 000000000..64a3a402e --- /dev/null +++ b/packages/live-share-acs/src/ACSTeamsLiveShareHost.ts @@ -0,0 +1,385 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Microsoft Live Share SDK License. + */ + +import { + IClientInfo, + IFluidContainerInfo, + IFluidTenantInfo, + ILiveShareHost, + INtpTimeInfo, + UserMeetingRole, +} from "@microsoft/live-share"; +import { Call, ParticipantRole } from "@azure/communication-calling"; +import { + IFluidClientInfoInput, + IFluidGetContainerIdInput, + IFluidTenantInfoInput, + IFluidGetTokenInput, + IFluidSetContainerIdInput, + TeamsCollabContextType, + ILiveShareRequestBase, + isIFluidTenantInfoResponse, + isIFluidTokenResponse, + isIFluidContainerInfo, + isINtpTimeInfo, + isIGetClientInfoResponse, + isUserMeetingRoleResponse, +} from "./internals"; + +const LiveShareRoutePrefix = "livesync/v1/acs"; +const LiveShareBaseUrl = "https://teams.microsoft.com/api/platform"; +const GetNtpTimeRoute = "getNTPTime"; +const GetFluidTenantInfoRoute = "fluid/tenantInfo/get"; +const RegisterClientRolesRoute = "clientRoles/register"; +const FluidTokenGetRoute = "fluid/token/get"; +const FluidContainerGetRoute = "fluid/container/get"; +const FluidContainerSetRoute = "fluid/container/set"; +const ClientInfoGetRoute = "user/get"; + +/** + * Configuration options for initializing the ACSTeamsLiveShareHost class + */ +export interface ACSTeamsLiveShareHostOptions { + /** + * ACS local user ID + */ + userId: string; + /** + * ACS local user display name + */ + displayName?: string; + /** + * ACS Call + */ + call: Call; + /** + * Meeting join URL used to join a Microsoft Teams meeting. + */ + teamsMeetingJoinUrl: string; + /** + * A callback method to get the latest ACS Skype token. + */ + acsTokenProvider: () => Promise; +} + +/** + * Azure Communication Services (ACS) `ILiveShareHost` implementation for Teams interop. + * Intended for use with the `LiveShareClient` class. + * + * @remarks + * Used to join & support Live Share sessions joined through Teams meetings on ACS. + * Only is compatible with ACS Teams interop. Non-Teams ACS meetings are not supported. + */ +export class ACSTeamsLiveShareHost implements ILiveShareHost { + private constructor( + private readonly options: ACSTeamsLiveShareHostOptions + ) {} + + /** + * Create the Live Share host that is compatible with ACS Teams interop. + * + * @param options host configuration options + * @returns `ILiveShareHost` instance + */ + public static create( + options: ACSTeamsLiveShareHostOptions + ): ILiveShareHost { + return new ACSTeamsLiveShareHost(options); + } + + private get localUserRoles(): UserMeetingRole[] { + return this.participantRoleToUserMeetingRoles(this.options.call.role); + } + private get localClientInfo(): IClientInfo { + return { + userId: this.options.userId, + roles: this.localUserRoles, + displayName: this.options.displayName, + }; + } + private get remoteClients(): IClientInfo[] { + return this.options.call.remoteParticipants.map((participant) => { + return { + userId: + participant.identifier.kind === "microsoftTeamsUser" + ? participant.identifier.microsoftTeamsUserId + : "", + roles: this.participantRoleToUserMeetingRoles(participant.role), + displayName: participant.displayName, + }; + }); + } + private get clients(): IClientInfo[] { + return [this.localClientInfo, ...this.remoteClients]; + } + + /** + * Returns the Fluid service endpoint and tenant to use for the current session. + */ + public async getFluidTenantInfo(): Promise { + const request: IFluidTenantInfoInput = { + ...this.constructBaseRequest(), + expiresAt: 0, + }; + const token = await this.options.acsTokenProvider(); + const response = await fetch( + `${LiveShareBaseUrl}/${LiveShareRoutePrefix}/${GetFluidTenantInfoRoute}`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `SkypeToken ${token}`, + }, + body: JSON.stringify(request), + } + ); + + const data: unknown = await response.json(); + if (!isIFluidTenantInfoResponse(data)) { + throw new Error( + "ACSTeamsLiveShareHost.getFluidTenantInfo: invalid response" + ); + } + return data.broadcaster.frsTenantInfo; + } + + /** + * Returns the Fluid access token to use for the current session. + * @param containerId Optional. ID of the container being joined. This will be undefined when creating a new container. + */ + public async getFluidToken(containerId?: string): Promise { + const request: IFluidGetTokenInput = { + ...this.constructBaseRequest(), + containerId, + }; + const token = await this.options.acsTokenProvider(); + const response = await fetch( + `${LiveShareBaseUrl}/${LiveShareRoutePrefix}/${FluidTokenGetRoute}`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `SkypeToken ${token}`, + }, + body: JSON.stringify(request), + } + ); + const data: unknown = await response.json(); + if (!isIFluidTokenResponse(data)) { + throw new Error( + "ACSTeamsLiveShareHost.getFluidToken: invalid response from server" + ); + } + return data.token; + } + + /** + * Returns the container mapping information for the current session. + * + * @remarks + * Hosts are required to implement a container mapping service that stores the container ID for + * the current session. + */ + public async getFluidContainerId(): Promise { + const request: IFluidGetContainerIdInput = this.constructBaseRequest(); + const token = await this.options.acsTokenProvider(); + const response = await fetch( + `${LiveShareBaseUrl}/${LiveShareRoutePrefix}/${FluidContainerGetRoute}`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `SkypeToken ${token}`, + }, + body: JSON.stringify(request), + } + ); + const data: unknown = await response.json(); + if (!isIFluidContainerInfo(data)) { + throw new Error( + "ACSTeamsLiveShareHost.IFluidContainerInfo: invalid response from server" + ); + } + return data; + } + + /** + * Attempts to save the ID of the Fluid container created to the hosts mapping service. + * + * @remarks + * Hosts should return a `containerState` of "Added" if the mapping was successfully saved, + * otherwise a state of "Conflict" should be returned to indicate that another client has + * already saved a container ID for the current session. + * @param containerId Id of the Fluid container that was created. + * @returns Information indicating the success of mapping assignment. + */ + public async setFluidContainerId( + containerId: string + ): Promise { + const request: IFluidSetContainerIdInput = { + ...this.constructBaseRequest(), + containerId, + }; + const token = await this.options.acsTokenProvider(); + const response = await fetch( + `${LiveShareBaseUrl}/${LiveShareRoutePrefix}/${FluidContainerSetRoute}`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `SkypeToken ${token}`, + }, + body: JSON.stringify(request), + } + ); + const data: unknown = await response.json(); + if (!isIFluidContainerInfo(data)) { + throw new Error( + "ACSTeamsLiveShareHost.IFluidContainerInfo: invalid response from server" + ); + } + return data; + } + + /** + * Returns the global timestamp for the current session. + */ + public async getNtpTime(): Promise { + const token = await this.options.acsTokenProvider(); + const response = await fetch( + `${LiveShareBaseUrl}/${LiveShareRoutePrefix}/${GetNtpTimeRoute}`, + { + method: "GET", + headers: { + "Content-Type": "application/json", + Authorization: `SkypeToken ${token}`, + }, + } + ); + const data: unknown = await response.json(); + if (!isINtpTimeInfo(data)) { + throw new Error( + "ACSTeamsLiveShareHost.IFluidContainerInfo: invalid response from server" + ); + } + return data; + } + + /** + * Registers the local clients Fluid client ID with the hosts role verification service. + * + * @remarks + * Hosts should expect this to be called anytime the Fluid clients underlying socket connects + * or reconnects. + * @param clientId Unique ID assigned to the local Fluid client. + * @returns An array of meeting roles assigned to the local user. + */ + public async registerClientId( + clientId: string + ): Promise { + const request: IFluidClientInfoInput = { + ...this.constructBaseRequest(), + clientId, + }; + const token = await this.options.acsTokenProvider(); + const response = await fetch( + `${LiveShareBaseUrl}/${LiveShareRoutePrefix}/${RegisterClientRolesRoute}`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `SkypeToken ${token}`, + }, + body: JSON.stringify(request), + } + ); + const data: unknown = await response.json(); + if (!isUserMeetingRoleResponse(data)) { + throw new Error( + "ACSTeamsLiveShareHost.registerClientId: invalid response from server" + ); + } + return data.userRoles; + } + + /** + * Queries the hosts `IUserInfo` for a given client ID. + * @param clientId ID of the client to lookup. + * @returns `IUserInfo` for the queried client ID. + */ + public async getClientInfo( + clientId: string + ): Promise { + const request: IFluidClientInfoInput = { + ...this.constructBaseRequest(), + clientId, + }; + const token = await this.options.acsTokenProvider(); + const response = await fetch( + `${LiveShareBaseUrl}/${LiveShareRoutePrefix}/${ClientInfoGetRoute}`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `SkypeToken ${token}`, + }, + body: JSON.stringify(request), + } + ); + const data: unknown = await response.json(); + if (!isIGetClientInfoResponse(data)) { + throw new Error( + "ACSTeamsLiveShareHost.getClientInfo: invalid response from server" + ); + } + return this.clients.find( + (checkClient) => checkClient.userId === data.userId + ); + } + + /** + * @deprecated + * Queries the hosts role verification service for the roles associated with a given client ID. + * @param clientId ID of teh client to lookup. + * @returns An array of roles assigned to the queried client ID. + */ + public async getClientRoles( + clientId: string + ): Promise { + const userInfo = await this.getClientInfo(clientId); + return userInfo?.roles; + } + + private constructBaseRequest(): ILiveShareRequestBase { + const originUri = window.location.href; + return { + originUri, + teamsContextType: TeamsCollabContextType.MeetingJoinUrl, + teamsContext: { + meetingJoinUrl: this.options.teamsMeetingJoinUrl, + }, + }; + } + + private participantRoleToUserMeetingRoles( + role: ParticipantRole + ): UserMeetingRole[] { + switch (role) { + case "Co-organizer": + case "Organizer": + return [UserMeetingRole.organizer, UserMeetingRole.presenter]; + case "Presenter": { + return [UserMeetingRole.presenter]; + } + case "Consumer": + case "Attendee": + return [UserMeetingRole.attendee]; + case "Unknown": + default: { + return [UserMeetingRole.guest]; + } + } + } +} diff --git a/packages/live-share-acs/src/index.ts b/packages/live-share-acs/src/index.ts new file mode 100644 index 000000000..40ddff3c9 --- /dev/null +++ b/packages/live-share-acs/src/index.ts @@ -0,0 +1 @@ +export * from "./ACSTeamsLiveShareHost"; diff --git a/packages/live-share-acs/src/internals/index.ts b/packages/live-share-acs/src/internals/index.ts new file mode 100644 index 000000000..e2dd4d256 --- /dev/null +++ b/packages/live-share-acs/src/internals/index.ts @@ -0,0 +1,2 @@ +export * from "./interfaces"; +export * from "./type-guards"; diff --git a/packages/live-share-acs/src/internals/interfaces.ts b/packages/live-share-acs/src/internals/interfaces.ts new file mode 100644 index 000000000..b5c49ae91 --- /dev/null +++ b/packages/live-share-acs/src/internals/interfaces.ts @@ -0,0 +1,96 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Microsoft Live Share SDK License. + */ + +import { IFluidTenantInfo } from "@microsoft/live-share"; + +/** + * @hidden + */ +export interface IFluidTenantInfoInput { + appId?: string; + originUri: string; + teamsContextType: TeamsCollabContextType; + teamsContext: ITeamsContext; + expiresAt: number; +} + +/** + * @hidden + */ +export interface IFluidGetContainerIdInput extends ILiveShareRequestBase {} + +/** + * @hidden + */ +export interface ITeamsContext { + meetingJoinUrl?: string; +} + +/** + * @hidden + */ +export interface IFluidSetContainerIdInput extends ILiveShareRequestBase { + containerId: string; +} + +/** + * @hidden + */ +export interface IFluidClientInfoInput extends ILiveShareRequestBase { + clientId: string; +} + +/** + * @hidden + */ +export interface IFluidGetTokenInput { + appId?: string; + originUri: string; + teamsContextType: TeamsCollabContextType; + teamsContext: ITeamsContext; + containerId?: string; + // TODO: these are not used on server side // userId?: string; // userName?: string; +} + +/** + * @hidden + */ +export enum TeamsCollabContextType { + MeetingJoinUrl = 1, + GroupChatId, +} + +/** + * @hidden + */ +export interface ILiveShareRequestBase { + appId?: string; + originUri: string; + teamsContextType: TeamsCollabContextType; + teamsContext: ITeamsContext; +} + +/** + * @hidden + */ +export interface IFluidTenantInfoResponse { + broadcaster: { + frsTenantInfo: IFluidTenantInfo; + }; +} + +/** + * @hidden + */ +export interface IFluidTokenResponse { + token: string; +} + +/** + * @hidden + */ +export interface IGetClientInfoResponse { + userId: string; +} diff --git a/packages/live-share-acs/src/internals/type-guards.ts b/packages/live-share-acs/src/internals/type-guards.ts new file mode 100644 index 000000000..7e08b4ce5 --- /dev/null +++ b/packages/live-share-acs/src/internals/type-guards.ts @@ -0,0 +1,95 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Microsoft Live Share SDK License. + */ + +import { + IFluidContainerInfo, + INtpTimeInfo, + UserMeetingRole, +} from "@microsoft/live-share"; +import { + IFluidTenantInfoResponse, + IFluidTokenResponse, + IGetClientInfoResponse, +} from "./interfaces"; + +/** + * @hidden + */ +export function isIFluidTenantInfoResponse( + value: any +): value is IFluidTenantInfoResponse { + return ( + !!value && + typeof value.broadcaster === "object" && + typeof value.broadcaster.frsTenantInfo === "object" && + typeof value.broadcaster.frsTenantInfo.tenantId === "string" && + typeof value.broadcaster.frsTenantInfo.serviceEndpoint === "string" + ); +} + +/** + * @hidden + */ +export function isIFluidTokenResponse( + value: any +): value is IFluidTokenResponse { + return !!value && typeof value.token === "string"; +} + +/** + * @hidden + */ +export function isIFluidContainerInfo( + value: any +): value is IFluidContainerInfo { + return ( + !!value && + typeof value.containerState === "string" && + (value.containerId === undefined || + typeof value.containerId === "string") && + typeof value.shouldCreate === "boolean" && + typeof value.retryAfter === "number" + ); +} + +/** + * @hidden + */ +export function isINtpTimeInfo(value: any): value is INtpTimeInfo { + return ( + !!value && + typeof value.ntpTime === "string" && + typeof value.ntpTimeInUTC === "number" + ); +} + +/** + * @hidden + */ +export function isUserMeetingRoleResponse(value: any): value is { + userRoles: UserMeetingRole[]; +} { + return value && isUserMeetingRoleList(value.userRoles); +} + +/** + * @hidden + */ +export function isUserMeetingRoleList(value: any): value is UserMeetingRole[] { + const meetingRoleValues = Object.values(UserMeetingRole); + return ( + Array.isArray(value) && + value.every((value) => meetingRoleValues.includes(value)) + ); +} + +/** + * @hidden + */ +export function isIGetClientInfoResponse( + value: any +): value is IGetClientInfoResponse { + return !!value && typeof value.userId === "string"; +} diff --git a/packages/live-share-acs/tsconfig.build.json b/packages/live-share-acs/tsconfig.build.json new file mode 100644 index 000000000..9d8cab4a6 --- /dev/null +++ b/packages/live-share-acs/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ + }, + "exclude": [ + "test/**/*.ts" + ] + } \ No newline at end of file diff --git a/packages/live-share-acs/tsconfig.json b/packages/live-share-acs/tsconfig.json new file mode 100644 index 000000000..9d500ddde --- /dev/null +++ b/packages/live-share-acs/tsconfig.json @@ -0,0 +1,76 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + "lib": ["es2020","DOM"], /* Specify library files to be included in the compilation. */ + "allowJs": false, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./bin", /* Redirect output structure to the directory. */ + // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true, /* Skip type checking of declaration files. */ + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "exclude": ["build", "dist", "node_modules"], + "include": [ + "test/**/*.ts" + ], + "files": [ + "src/index.ts" + ] +} diff --git a/packages/live-share-acs/typedoc.json b/packages/live-share-acs/typedoc.json new file mode 100644 index 000000000..10851b2ed --- /dev/null +++ b/packages/live-share-acs/typedoc.json @@ -0,0 +1,10 @@ +{ + "entryPoints": ["./src/index.ts"], + "excludeExternals": true, + "excludePrivate": true, + "excludeInternal": true, + "name": "_microsoft_live_share_media", + "validation": { + "invalidLink": true + } +} diff --git a/packages/live-share/src/LiveFollowMode.ts b/packages/live-share/src/LiveFollowMode.ts index 6d22d88f0..bad95bca7 100644 --- a/packages/live-share/src/LiveFollowMode.ts +++ b/packages/live-share/src/LiveFollowMode.ts @@ -15,8 +15,6 @@ import { } from "./errors"; /** - * @beta - * * Events supported by `LiveFollowMode` object. */ export enum LiveFollowModeEvents { @@ -31,8 +29,6 @@ export enum LiveFollowModeEvents { } /** - * @beta - * * Event typings for `LiveFollowMode` class. * @template TData Type of data object to share with clients. */ @@ -57,8 +53,6 @@ export interface ILiveFollowModeEvents } /** - * @beta - * * The follow mode type. * * @remarks @@ -98,8 +92,6 @@ export enum FollowModeType { } /** - * @beta - * * Information about the state of the local user's follow mode. * * @remarks @@ -146,8 +138,6 @@ export interface IFollowModeState { } /** - * @beta - * * The presence data for a user's personal follow mode state. */ export interface IFollowModePresenceUserData { @@ -165,19 +155,17 @@ export interface IFollowModePresenceUserData { } /** - * @beta - * * Convenience type for a LivePresenceUser in LiveFollowMode */ export type FollowModePresenceUser = LivePresenceUser< IFollowModePresenceUserData >; -const presentingUserIdLiveStateKey = "<>"; -const livePresenceKey = "<>"; +const presentingUserIdLiveStateKey = + "@microsoft/live-share:LiveFollowMode:LiveState"; +const livePresenceKey = "@microsoft/live-share:LiveFollowMode:LivePresence"; /** - * @beta * * Live object that allows users to present and/or follow other users. * Provides a {@link state} value, which reflects the relevant value to reference (e.g., the presenting user's state value). From d605f1e717bef632f06465c86330bce4452309d0 Mon Sep 17 00:00:00 2001 From: James Hunt Date: Wed, 29 May 2024 16:08:44 -0500 Subject: [PATCH 14/40] update imports in tests --- .../src/test/LiveMediaSession_ManualActionHandler.spec.ts | 2 +- .../src/test/LiveMediaSession_Synchronizer.spec.ts | 2 +- packages/live-share/src/test/LiveEvent.spec.ts | 2 +- packages/live-share/src/test/LiveFollowMode.spec.ts | 2 +- packages/live-share/src/test/LivePresence.spec.ts | 2 +- packages/live-share/src/test/LiveState.spec.ts | 2 +- packages/live-share/src/test/LiveTimer.spec.ts | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts b/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts index 4654dd233..e2f5dd2b3 100644 --- a/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts +++ b/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts @@ -10,7 +10,7 @@ import { ITestObjectProvider, fluidEntryPoint, getContainerEntryPointBackCompat, -} from "@fluidframework/test-utils"; +} from "@fluidframework/test-utils/internal"; import { ITimestampProvider, LiveEventScope, diff --git a/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts b/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts index fc04d8a12..a58bd506e 100644 --- a/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts +++ b/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts @@ -14,7 +14,7 @@ import { ITestObjectProvider, fluidEntryPoint, getContainerEntryPointBackCompat, -} from "@fluidframework/test-utils"; +} from "@fluidframework/test-utils/internal"; import { ITimestampProvider, LocalTimestampProvider, diff --git a/packages/live-share/src/test/LiveEvent.spec.ts b/packages/live-share/src/test/LiveEvent.spec.ts index c8dfb1d05..04696d42d 100644 --- a/packages/live-share/src/test/LiveEvent.spec.ts +++ b/packages/live-share/src/test/LiveEvent.spec.ts @@ -8,7 +8,7 @@ import { ITestObjectProvider, fluidEntryPoint, getContainerEntryPointBackCompat, -} from "@fluidframework/test-utils"; +} from "@fluidframework/test-utils/internal"; import { LiveEvent } from "../LiveEvent"; import { Deferred } from "../internals"; import { MockTimestampProvider } from "./MockTimestampProvider"; diff --git a/packages/live-share/src/test/LiveFollowMode.spec.ts b/packages/live-share/src/test/LiveFollowMode.spec.ts index 1f743eedd..71751bc9f 100644 --- a/packages/live-share/src/test/LiveFollowMode.spec.ts +++ b/packages/live-share/src/test/LiveFollowMode.spec.ts @@ -8,7 +8,7 @@ import { ITestObjectProvider, fluidEntryPoint, getContainerEntryPointBackCompat, -} from "@fluidframework/test-utils"; +} from "@fluidframework/test-utils/internal"; import { FollowModeType, IFollowModePresenceUserData, diff --git a/packages/live-share/src/test/LivePresence.spec.ts b/packages/live-share/src/test/LivePresence.spec.ts index f71079a19..41e3a63bf 100644 --- a/packages/live-share/src/test/LivePresence.spec.ts +++ b/packages/live-share/src/test/LivePresence.spec.ts @@ -8,7 +8,7 @@ import { ITestObjectProvider, fluidEntryPoint, getContainerEntryPointBackCompat, -} from "@fluidframework/test-utils"; +} from "@fluidframework/test-utils/internal"; import { LivePresence } from "../LivePresence"; import { PresenceState } from "../LivePresenceUser"; import { waitForDelay } from "../internals"; diff --git a/packages/live-share/src/test/LiveState.spec.ts b/packages/live-share/src/test/LiveState.spec.ts index c6e88280e..4ef6ac1c8 100644 --- a/packages/live-share/src/test/LiveState.spec.ts +++ b/packages/live-share/src/test/LiveState.spec.ts @@ -8,7 +8,7 @@ import { ITestObjectProvider, fluidEntryPoint, getContainerEntryPointBackCompat, -} from "@fluidframework/test-utils"; +} from "@fluidframework/test-utils/internal"; import { LiveState } from "../LiveState"; import { Deferred } from "../internals"; import { getLiveDataObjectClass } from "../schema-injection-utils"; diff --git a/packages/live-share/src/test/LiveTimer.spec.ts b/packages/live-share/src/test/LiveTimer.spec.ts index a4d9a74f5..c5f55119d 100644 --- a/packages/live-share/src/test/LiveTimer.spec.ts +++ b/packages/live-share/src/test/LiveTimer.spec.ts @@ -8,7 +8,7 @@ import { ITestObjectProvider, fluidEntryPoint, getContainerEntryPointBackCompat, -} from "@fluidframework/test-utils"; +} from "@fluidframework/test-utils/internal"; import { LiveTimer } from "../LiveTimer"; import { Deferred, waitForDelay } from "../internals"; import { getLiveDataObjectClass } from "../schema-injection-utils"; From e2b33a7b5e5ff1a6543f5b42398ed2f10e1f98bb Mon Sep 17 00:00:00 2001 From: huntj88 Date: Tue, 25 Jun 2024 14:36:59 -0500 Subject: [PATCH 15/40] Integrating turbo into base live-share package, delete live-share-turbo package (#781) Co-authored-by: James Hunt Co-authored-by: Ryan Bliss --- .../workflows/live-share-test-packages.yaml | 4 - internal/test-utils/package.json | 48 +- internal/test-utils/src/compatUtils.ts | 2 +- package-lock.json | 6802 ++++++----------- package.json | 1 - packages/live-share-canvas/package.json | 2 +- .../live-share-canvas/src/core/LiveCanvas.ts | 22 +- packages/live-share-media/package.json | 6 +- .../live-share-media/src/LiveMediaSession.ts | 25 +- ...veMediaSession_ManualActionHandler.spec.ts | 6 +- .../LiveMediaSession_Synchronizer.spec.ts | 6 +- packages/live-share-react/README.md | 2 +- packages/live-share-react/package.json | 3 +- .../src/live-hooks/useLivePresence.ts | 2 +- .../src/providers/AzureProvider.tsx | 38 +- .../src/providers/LiveShareProvider.tsx | 20 +- .../src/shared-hooks/index.ts | 1 + .../src/shared-hooks/useDynamicDDS.ts | 10 +- .../shared-hooks/useSharedStateRegistry.ts | 64 +- .../src/shared-hooks/useSharedTree.ts | 56 + .../live-share-react/src/types/ActionTypes.ts | 6 +- .../live-share-react/src/types/ResultTypes.ts | 21 +- packages/live-share-turbo/.nycrc.json | 11 - packages/live-share-turbo/LICENSE | 87 - packages/live-share-turbo/README.md | 291 - packages/live-share-turbo/package.json | 51 - .../live-share-turbo/src/AzureTurboClient.ts | 136 - .../live-share-turbo/src/FluidTurboClient.ts | 165 - .../src/LiveShareTurboClient.ts | 104 - .../live-share-turbo/src/dds-objects/index.ts | 1 - packages/live-share-turbo/src/index.ts | 5 - .../src/interfaces/IFluidTurboClient.ts | 43 - .../live-share-turbo/src/interfaces/index.ts | 1 - .../src/internals/debounce.ts | 26 - .../live-share-turbo/src/internals/index.ts | 2 - .../live-share-turbo/src/internals/schema.ts | 18 - .../live-share-turbo/src/test/.mocharc.js | 12 - .../src/test/getContainerSchema.spec.ts | 65 - packages/live-share-turbo/tsconfig.build.json | 9 - packages/live-share-turbo/tsconfig.json | 76 - packages/live-share-turbo/typedoc.json | 10 - packages/live-share/package.json | 22 +- .../live-share/src/AzureLiveShareClient.ts | 143 + packages/live-share/src/LiveDataObject.ts | 3 +- packages/live-share/src/LiveEvent.ts | 26 +- packages/live-share/src/LiveEventScope.ts | 2 +- packages/live-share/src/LiveFollowMode.ts | 24 +- packages/live-share/src/LivePresence.ts | 25 +- packages/live-share/src/LiveShareClient.ts | 115 +- packages/live-share/src/LiveState.ts | 26 +- packages/live-share/src/LiveTimer.ts | 26 +- packages/live-share/src/errors.ts | 22 + packages/live-share/src/index.ts | 30 +- packages/live-share/src/interfaces.ts | 2 +- .../src/internals/BaseLiveShareClient.ts | 257 + .../src/internals}/DynamicObjectManager.ts | 53 +- .../{ => internals}/DynamicObjectRegistry.ts | 29 +- .../src/internals/LiveObjectManager.ts | 2 +- packages/live-share/src/internals/consts.ts | 7 + .../src/internals/fluid-duplicated.ts | 105 + packages/live-share/src/internals/index.ts | 2 + .../{ => internals}/schema-injection-utils.ts | 60 +- packages/live-share/src/internals/smuggle.ts | 54 + packages/live-share/src/internals/utils.ts | 16 +- .../src/test/AzureLiveShareClient.spec.ts} | 47 +- .../live-share/src/test/LiveEvent.spec.ts | 11 +- .../src/test/LiveFollowMode.spec.ts | 6 +- .../live-share/src/test/LivePresence.spec.ts | 10 +- .../src/test/LiveShareClient.spec.ts} | 52 +- .../live-share/src/test/LiveState.spec.ts | 6 +- .../live-share/src/test/LiveTimer.spec.ts | 6 +- .../src/test/MockRuntimeSignaler.ts | 6 +- .../javascript/01.dice-roller/package.json | 4 +- .../javascript/02.react-video/package.json | 4 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 4 +- .../05.dice-roller-turbo/package.json | 4 +- .../05.dice-roller-turbo/src/app.js | 9 +- .../21.react-media-template/package.json | 4 +- .../22.react-agile-poker/package.json | 4 +- .../23.react-live-canvas/package.json | 4 +- .../typescript/01.dice-roller/package.json | 4 +- .../03.live-canvas-demo/package.json | 4 +- .../04.live-share-react/package.json | 4 +- .../05.dice-roller-turbo/package.json | 4 +- .../05.dice-roller-turbo/src/app.ts | 13 +- .../06.presence-avatars/package.json | 4 +- .../07.countdown-timer/package.json | 4 +- samples/typescript/08.3d-model/package.json | 4 +- .../21.react-media-template/package.json | 4 +- .../src/pages/MeetingStage.tsx | 2 +- .../31.live-canvas-tests/package.json | 6 +- 92 files changed, 3632 insertions(+), 5917 deletions(-) create mode 100644 packages/live-share-react/src/shared-hooks/useSharedTree.ts delete mode 100644 packages/live-share-turbo/.nycrc.json delete mode 100644 packages/live-share-turbo/LICENSE delete mode 100644 packages/live-share-turbo/README.md delete mode 100644 packages/live-share-turbo/package.json delete mode 100644 packages/live-share-turbo/src/AzureTurboClient.ts delete mode 100644 packages/live-share-turbo/src/FluidTurboClient.ts delete mode 100644 packages/live-share-turbo/src/LiveShareTurboClient.ts delete mode 100644 packages/live-share-turbo/src/dds-objects/index.ts delete mode 100644 packages/live-share-turbo/src/index.ts delete mode 100644 packages/live-share-turbo/src/interfaces/IFluidTurboClient.ts delete mode 100644 packages/live-share-turbo/src/interfaces/index.ts delete mode 100644 packages/live-share-turbo/src/internals/debounce.ts delete mode 100644 packages/live-share-turbo/src/internals/index.ts delete mode 100644 packages/live-share-turbo/src/internals/schema.ts delete mode 100644 packages/live-share-turbo/src/test/.mocharc.js delete mode 100644 packages/live-share-turbo/src/test/getContainerSchema.spec.ts delete mode 100644 packages/live-share-turbo/tsconfig.build.json delete mode 100644 packages/live-share-turbo/tsconfig.json delete mode 100644 packages/live-share-turbo/typedoc.json create mode 100644 packages/live-share/src/AzureLiveShareClient.ts create mode 100644 packages/live-share/src/internals/BaseLiveShareClient.ts rename packages/{live-share-turbo/src/dds-objects => live-share/src/internals}/DynamicObjectManager.ts (80%) rename packages/live-share/src/{ => internals}/DynamicObjectRegistry.ts (77%) create mode 100644 packages/live-share/src/internals/fluid-duplicated.ts rename packages/live-share/src/{ => internals}/schema-injection-utils.ts (78%) create mode 100644 packages/live-share/src/internals/smuggle.ts rename packages/{live-share-turbo/src/test/AzureTurboClient.spec.ts => live-share/src/test/AzureLiveShareClient.spec.ts} (80%) rename packages/{live-share-turbo/src/test/LiveShareTurboClient.spec.ts => live-share/src/test/LiveShareClient.spec.ts} (78%) diff --git a/.github/workflows/live-share-test-packages.yaml b/.github/workflows/live-share-test-packages.yaml index 26016d173..64daaa5a4 100644 --- a/.github/workflows/live-share-test-packages.yaml +++ b/.github/workflows/live-share-test-packages.yaml @@ -35,7 +35,3 @@ jobs: - name: "test live-share-media" run: npm run test working-directory: packages/live-share-media - - - name: "test live-share-turbo" - run: npm run test - working-directory: packages/live-share-turbo diff --git a/internal/test-utils/package.json b/internal/test-utils/package.json index 0fa173275..c311894dc 100644 --- a/internal/test-utils/package.json +++ b/internal/test-utils/package.json @@ -24,32 +24,32 @@ "tsc": "tsc" }, "dependencies": { - "@fluid-experimental/attributor": "^2.0.0-rc.4.0.2", - "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.4.0.2", - "@fluidframework/agent-scheduler": "^2.0.0-rc.4.0.2", - "@fluidframework/aqueduct": "^2.0.0-rc.4.0.2", - "@fluidframework/cell": "^2.0.0-rc.4.0.2", - "@fluidframework/container-loader": "^2.0.0-rc.4.0.2", - "@fluidframework/container-runtime": "^2.0.0-rc.4.0.2", - "@fluidframework/core-interfaces": "^2.0.0-rc.4.0.2", - "@fluidframework/core-utils": "^2.0.0-rc.4.0.2", - "@fluidframework/counter": "^2.0.0-rc.4.0.2", - "@fluidframework/datastore-definitions": "^2.0.0-rc.4.0.2", - "@fluidframework/driver-definitions": "^2.0.0-rc.4.0.2", - "@fluidframework/local-driver": "^2.0.0-rc.4.0.2", - "@fluidframework/map": "^2.0.0-rc.4.0.2", - "@fluidframework/matrix": "^2.0.0-rc.4.0.2", - "@fluidframework/ordered-collection": "^2.0.0-rc.4.0.2", - "@fluidframework/register-collection": "^2.0.0-rc.4.0.2", - "@fluidframework/runtime-definitions": "^2.0.0-rc.4.0.2", - "@fluidframework/sequence": "^2.0.0-rc.4.0.2", - "@fluidframework/server-local-server": "^4.0.1", - "@fluidframework/telemetry-utils": "^2.0.0-rc.4.0.2", - "@fluidframework/test-driver-definitions": "^2.0.0-rc.2.0.7", - "@fluidframework/test-utils": "^2.0.0-rc.4.0.2" + "@fluid-experimental/attributor": "^2.0.0-rc.5.0.1", + "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.5.0.1", + "@fluidframework/agent-scheduler": "^2.0.0-rc.5.0.1", + "@fluidframework/aqueduct": "^2.0.0-rc.5.0.1", + "@fluidframework/cell": "^2.0.0-rc.5.0.1", + "@fluidframework/container-loader": "^2.0.0-rc.5.0.1", + "@fluidframework/container-runtime": "^2.0.0-rc.5.0.1", + "@fluidframework/core-interfaces": "^2.0.0-rc.5.0.1", + "@fluidframework/core-utils": "^2.0.0-rc.5.0.1", + "@fluidframework/counter": "^2.0.0-rc.5.0.1", + "@fluidframework/datastore-definitions": "^2.0.0-rc.5.0.1", + "@fluidframework/driver-definitions": "^2.0.0-rc.5.0.1", + "@fluidframework/local-driver": "^2.0.0-rc.5.0.1", + "@fluidframework/map": "^2.0.0-rc.5.0.1", + "@fluidframework/matrix": "^2.0.0-rc.5.0.1", + "@fluidframework/ordered-collection": "^2.0.0-rc.5.0.1", + "@fluidframework/register-collection": "^2.0.0-rc.5.0.1", + "@fluidframework/runtime-definitions": "^2.0.0-rc.5.0.1", + "@fluidframework/sequence": "^2.0.0-rc.5.0.1", + "@fluidframework/server-local-server": "^5.0.0", + "@fluidframework/telemetry-utils": "^2.0.0-rc.5.0.1", + "@fluidframework/test-driver-definitions": "^2.0.0-rc.2.0.8", + "@fluidframework/test-utils": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/eslint-config-fluid": "^3.5.0", + "@fluidframework/eslint-config-fluid": "^5.3.0", "@typescript-eslint/eslint-plugin": "^7.1.1", "eslint": "~8.56.0", "eslint-plugin-unused-imports": "^3.1.0", diff --git a/internal/test-utils/src/compatUtils.ts b/internal/test-utils/src/compatUtils.ts index 8283ca9ae..931095e12 100644 --- a/internal/test-utils/src/compatUtils.ts +++ b/internal/test-utils/src/compatUtils.ts @@ -11,7 +11,7 @@ import { import { IFluidDataStoreRuntime, IChannelFactory, -} from "@fluidframework/datastore-definitions"; +} from "@fluidframework/datastore-definitions/internal"; import { ISharedDirectory } from "@fluidframework/map/internal"; import { unreachableCase } from "@fluidframework/core-utils/internal"; import { diff --git a/package-lock.json b/package-lock.json index e4818744b..aa3a11148 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,6 @@ "packages/live-share-acs", "packages/live-share-canvas", "packages/live-share-media", - "packages/live-share-turbo", "packages/live-share-react", "internal/test-utils", "samples/javascript/*", @@ -37,32 +36,32 @@ "version": "2.0.0-internal.5", "license": "MIT", "dependencies": { - "@fluid-experimental/attributor": "^2.0.0-rc.4.0.2", - "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.4.0.2", - "@fluidframework/agent-scheduler": "^2.0.0-rc.4.0.2", - "@fluidframework/aqueduct": "^2.0.0-rc.4.0.2", - "@fluidframework/cell": "^2.0.0-rc.4.0.2", - "@fluidframework/container-loader": "^2.0.0-rc.4.0.2", - "@fluidframework/container-runtime": "^2.0.0-rc.4.0.2", - "@fluidframework/core-interfaces": "^2.0.0-rc.4.0.2", - "@fluidframework/core-utils": "^2.0.0-rc.4.0.2", - "@fluidframework/counter": "^2.0.0-rc.4.0.2", - "@fluidframework/datastore-definitions": "^2.0.0-rc.4.0.2", - "@fluidframework/driver-definitions": "^2.0.0-rc.4.0.2", - "@fluidframework/local-driver": "^2.0.0-rc.4.0.2", - "@fluidframework/map": "^2.0.0-rc.4.0.2", - "@fluidframework/matrix": "^2.0.0-rc.4.0.2", - "@fluidframework/ordered-collection": "^2.0.0-rc.4.0.2", - "@fluidframework/register-collection": "^2.0.0-rc.4.0.2", - "@fluidframework/runtime-definitions": "^2.0.0-rc.4.0.2", - "@fluidframework/sequence": "^2.0.0-rc.4.0.2", - "@fluidframework/server-local-server": "^4.0.1", - "@fluidframework/telemetry-utils": "^2.0.0-rc.4.0.2", - "@fluidframework/test-driver-definitions": "^2.0.0-rc.2.0.7", - "@fluidframework/test-utils": "^2.0.0-rc.4.0.2" + "@fluid-experimental/attributor": "^2.0.0-rc.5.0.1", + "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.5.0.1", + "@fluidframework/agent-scheduler": "^2.0.0-rc.5.0.1", + "@fluidframework/aqueduct": "^2.0.0-rc.5.0.1", + "@fluidframework/cell": "^2.0.0-rc.5.0.1", + "@fluidframework/container-loader": "^2.0.0-rc.5.0.1", + "@fluidframework/container-runtime": "^2.0.0-rc.5.0.1", + "@fluidframework/core-interfaces": "^2.0.0-rc.5.0.1", + "@fluidframework/core-utils": "^2.0.0-rc.5.0.1", + "@fluidframework/counter": "^2.0.0-rc.5.0.1", + "@fluidframework/datastore-definitions": "^2.0.0-rc.5.0.1", + "@fluidframework/driver-definitions": "^2.0.0-rc.5.0.1", + "@fluidframework/local-driver": "^2.0.0-rc.5.0.1", + "@fluidframework/map": "^2.0.0-rc.5.0.1", + "@fluidframework/matrix": "^2.0.0-rc.5.0.1", + "@fluidframework/ordered-collection": "^2.0.0-rc.5.0.1", + "@fluidframework/register-collection": "^2.0.0-rc.5.0.1", + "@fluidframework/runtime-definitions": "^2.0.0-rc.5.0.1", + "@fluidframework/sequence": "^2.0.0-rc.5.0.1", + "@fluidframework/server-local-server": "^5.0.0", + "@fluidframework/telemetry-utils": "^2.0.0-rc.5.0.1", + "@fluidframework/test-driver-definitions": "^2.0.0-rc.2.0.8", + "@fluidframework/test-utils": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/eslint-config-fluid": "^3.5.0", + "@fluidframework/eslint-config-fluid": "^5.3.0", "@typescript-eslint/eslint-plugin": "^7.1.1", "eslint": "~8.56.0", "eslint-plugin-unused-imports": "^3.1.0", @@ -73,35 +72,268 @@ "typescript": "~5.1.6" } }, + "internal/test-utils/node_modules/@fluidframework/eslint-config-fluid": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluid-internal/eslint-plugin-fluid": "^0.1.1", + "@microsoft/tsdoc": "^0.14.2", + "@rushstack/eslint-patch": "~1.4.0", + "@rushstack/eslint-plugin": "~0.13.0", + "@rushstack/eslint-plugin-security": "~0.7.0", + "@typescript-eslint/eslint-plugin": "~6.7.2", + "@typescript-eslint/parser": "~6.7.2", + "eslint-config-prettier": "~9.0.0", + "eslint-import-resolver-typescript": "~3.6.1", + "eslint-plugin-eslint-comments": "~3.2.0", + "eslint-plugin-import": "npm:eslint-plugin-i@~2.29.0", + "eslint-plugin-jsdoc": "~46.8.1", + "eslint-plugin-promise": "~6.1.1", + "eslint-plugin-react": "~7.33.2", + "eslint-plugin-react-hooks": "~4.6.0", + "eslint-plugin-tsdoc": "~0.2.17", + "eslint-plugin-unicorn": "~48.0.1", + "eslint-plugin-unused-imports": "~3.0.0" + } + }, + "internal/test-utils/node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.7.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/type-utils": "6.7.5", + "@typescript-eslint/utils": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "internal/test-utils/node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/parser": { + "version": "6.7.5", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "internal/test-utils/node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/scope-manager": { + "version": "6.7.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "internal/test-utils/node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/type-utils": { + "version": "6.7.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/utils": "6.7.5", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "internal/test-utils/node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/types": { + "version": "6.7.5", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "internal/test-utils/node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.7.5", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "internal/test-utils/node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/utils": { + "version": "6.7.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "internal/test-utils/node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.7.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "internal/test-utils/node_modules/@fluidframework/eslint-config-fluid/node_modules/eslint-config-prettier": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "internal/test-utils/node_modules/@fluidframework/eslint-config-fluid/node_modules/eslint-plugin-unused-imports": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^6.0.0", + "eslint": "^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, "internal/test-utils/node_modules/@fluidframework/test-driver-definitions": { - "version": "2.0.0-rc.2.0.7", - "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.2.0.7.tgz", - "integrity": "sha512-BuQ1MWaCkEgQ5S6uXXVA6rHrVpFHJtsbopJ5IMsr//vxZMDNxaVL/kXJAkWO7yyFjCdFZdvXdYO66pasHj59yw==", + "version": "2.0.0-rc.2.0.8", + "license": "MIT", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.7 <2.0.0-rc.2.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.7 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.8 <2.0.0-rc.2.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.8 <2.0.0-rc.2.1.0", "@fluidframework/protocol-definitions": "^3.2.0" } }, "internal/test-utils/node_modules/@fluidframework/test-driver-definitions/node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.2.0.7", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.2.0.7.tgz", - "integrity": "sha512-U0BvFzR5MopJRcsKL2HoqzlQCTC1ZC+9p5hTbhYblWY7IVp6dGgA50nCppsRO+vVRBkt7eDwyANuqPdTzAnZ5A==" + "version": "2.0.0-rc.2.0.8", + "license": "MIT" }, "internal/test-utils/node_modules/@fluidframework/test-driver-definitions/node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.2.0.7", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.2.0.7.tgz", - "integrity": "sha512-K6sNschQbiLmAusyBFEnelftdRxLk6hOYYVlxPixHbmrQxo8X3bKNZBLh09L/tOHxWTmqVtoiStFulTuzzWJ0w==", + "version": "2.0.0-rc.2.0.8", + "license": "MIT", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.7 <2.0.0-rc.2.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.8 <2.0.0-rc.2.1.0", "@fluidframework/protocol-definitions": "^3.2.0" } }, "internal/test-utils/node_modules/@typescript-eslint/eslint-plugin": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.1.tgz", - "integrity": "sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.5.1", "@typescript-eslint/scope-manager": "7.1.1", @@ -134,9 +366,8 @@ }, "internal/test-utils/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.1.tgz", - "integrity": "sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "7.1.1", "@typescript-eslint/utils": "7.1.1", @@ -161,9 +392,8 @@ }, "internal/test-utils/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.1.tgz", - "integrity": "sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", @@ -186,9 +416,8 @@ }, "internal/test-utils/node_modules/@typescript-eslint/parser": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.1.tgz", - "integrity": "sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==", "dev": true, + "license": "BSD-2-Clause", "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "7.1.1", @@ -215,9 +444,8 @@ }, "internal/test-utils/node_modules/@typescript-eslint/scope-manager": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz", - "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "7.1.1", "@typescript-eslint/visitor-keys": "7.1.1" @@ -232,9 +460,8 @@ }, "internal/test-utils/node_modules/@typescript-eslint/types": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz", - "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==", "dev": true, + "license": "MIT", "engines": { "node": "^16.0.0 || >=18.0.0" }, @@ -245,9 +472,8 @@ }, "internal/test-utils/node_modules/@typescript-eslint/typescript-estree": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz", - "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "7.1.1", "@typescript-eslint/visitor-keys": "7.1.1", @@ -273,9 +499,8 @@ }, "internal/test-utils/node_modules/@typescript-eslint/visitor-keys": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz", - "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "7.1.1", "eslint-visitor-keys": "^3.4.1" @@ -290,18 +515,16 @@ }, "internal/test-utils/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "internal/test-utils/node_modules/eslint-plugin-unused-imports": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.1.0.tgz", - "integrity": "sha512-9l1YFCzXKkw1qtAru1RWUtG2EVDZY0a0eChKXcL+EZ5jitG7qxdctu4RnvhOJHv4xfmUf7h+JJPINlVpGhZMrw==", "dev": true, + "license": "MIT", "dependencies": { "eslint-rule-composer": "^0.3.0" }, @@ -320,9 +543,8 @@ }, "internal/test-utils/node_modules/glob": { "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "minimatch": "^8.0.2", @@ -338,9 +560,8 @@ }, "internal/test-utils/node_modules/glob/node_modules/minimatch": { "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -353,9 +574,8 @@ }, "internal/test-utils/node_modules/minimatch": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -368,9 +588,8 @@ }, "internal/test-utils/node_modules/prettier": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -383,9 +602,8 @@ }, "internal/test-utils/node_modules/rimraf": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", - "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^9.2.0" }, @@ -399,93 +617,22 @@ "url": "https://github.com/sponsors/isaacs" } }, - "internal/test-version-utils": { - "name": "@fluid-private/test-version-utils", - "version": "2.0.0-rc.2.0.0", - "extraneous": true, - "license": "MIT", - "dependencies": { - "@fluid-experimental/attributor": "^2.0.0-rc.2.0.0", - "@fluid-experimental/sequence-deprecated": "^2.0.0-rc.2.0.0", - "@fluid-private/test-drivers": "^2.0.0-rc.2.0.0", - "@fluid-tools/version-tools": "^0.34.0", - "@fluidframework/agent-scheduler": "^2.0.0-rc.2.0.0", - "@fluidframework/aqueduct": "^2.0.0-rc.2.0.0", - "@fluidframework/cell": "^2.0.0-rc.2.0.0", - "@fluidframework/container-definitions": "^2.0.0-rc.2.0.0", - "@fluidframework/container-loader": "^2.0.0-rc.2.0.0", - "@fluidframework/container-runtime": "^2.0.0-rc.2.0.0", - "@fluidframework/core-interfaces": "^2.0.0-rc.2.0.0", - "@fluidframework/core-utils": "^2.0.0-rc.2.0.0", - "@fluidframework/counter": "^2.0.0-rc.2.0.0", - "@fluidframework/datastore-definitions": "^2.0.0-rc.2.0.0", - "@fluidframework/driver-definitions": "^2.0.0-rc.2.0.0", - "@fluidframework/driver-utils": "^2.0.0-rc.2.0.0", - "@fluidframework/map": "^2.0.0-rc.2.0.0", - "@fluidframework/matrix": "^2.0.0-rc.2.0.0", - "@fluidframework/ordered-collection": "^2.0.0-rc.2.0.0", - "@fluidframework/protocol-definitions": "^3.2.0-237840", - "@fluidframework/register-collection": "^2.0.0-rc.2.0.0", - "@fluidframework/runtime-definitions": "^2.0.0-rc.2.0.0", - "@fluidframework/sequence": "^2.0.0-rc.2.0.0", - "@fluidframework/telemetry-utils": "^2.0.0-rc.2.0.0", - "@fluidframework/test-driver-definitions": "^2.0.0-rc.2.0.0", - "@fluidframework/test-utils": "^2.0.0-rc.2.0.0", - "nconf": "^0.12.0", - "proper-lockfile": "^4.1.2", - "semver": "^7.5.3" - }, - "devDependencies": { - "@arethetypeswrong/cli": "^0.13.3", - "@fluid-tools/build-cli": "^0.34.0", - "@fluidframework/build-common": "^2.0.3", - "@fluidframework/build-tools": "^0.34.0", - "@fluidframework/eslint-config-fluid": "^3.5.0", - "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.0", - "@microsoft/api-extractor": "^7.39.1", - "@types/mocha": "^9.1.1", - "@types/nock": "^9.3.0", - "@types/node": "^18.19.0", - "@types/proper-lockfile": "^4.1.4", - "@types/semver": "^7.5.0", - "@types/uuid": "^9.0.2", - "c8": "^8.0.1", - "copyfiles": "^2.4.1", - "cross-env": "^7.0.3", - "eslint": "~8.50.0", - "mocha": "^10.2.0", - "mocha-json-output-reporter": "^2.0.1", - "mocha-multi-reporters": "^1.5.1", - "moment": "^2.21.0", - "nock": "^13.3.3", - "prettier": "~3.0.3", - "rimraf": "^4.4.0", - "ts-loader": "^9.3.0", - "typescript": "~5.1.6", - "uuid": "^9.0.0", - "webpack": "^5.82.0", - "webpack-cli": "^4.9.2" - } - }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/@adobe/css-tools": { "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", - "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==" + "license": "MIT" }, "node_modules/@ampproject/remapping": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -496,9 +643,8 @@ }, "node_modules/@azure/abort-controller": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", - "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.2.0" }, @@ -507,10 +653,9 @@ } }, "node_modules/@azure/communication-calling": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@azure/communication-calling/-/communication-calling-1.24.1.tgz", - "integrity": "sha512-hjAazjrPU6GufexAaGOTBf9dOTM/8CNVRbzR1YusD1zhEdB8NE/xsCFcFemYOIv7ewPNKHIXVD0tmoG5mO4mjQ==", + "version": "1.24.3", "dev": true, + "license": "Microsoft Software License Terms for the Azure Communications Services, Azure CPaaS, ACS Software Development Kit SDK, see LICENSE file", "dependencies": { "@azure/communication-common": "^2.3.0", "@azure/logger": "^1.0.3" @@ -518,9 +663,8 @@ }, "node_modules/@azure/communication-common": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@azure/communication-common/-/communication-common-2.3.1.tgz", - "integrity": "sha512-6ZQt20iMZbyckQn4m1TDwiDv3Fzyt1h4lnQ1szBBns2x3VQY9XHbnskPtvUdwK/HT+c/1PoUwof3toy1AIznbQ==", "dev": true, + "license": "MIT", "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.3.0", @@ -535,20 +679,10 @@ "node": ">=18.0.0" } }, - "node_modules/@azure/communication-common/node_modules/jwt-decode": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", - "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", - "dev": true, - "engines": { - "node": ">=18" - } - }, "node_modules/@azure/core-auth": { "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", - "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==", "dev": true, + "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-util": "^1.1.0", @@ -560,9 +694,8 @@ }, "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.6.2" }, @@ -572,9 +705,8 @@ }, "node_modules/@azure/core-rest-pipeline": { "version": "1.16.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.0.tgz", - "integrity": "sha512-CeuTvsXxCUmEuxH5g/aceuSl6w2EugvNHKAtKKVdiX915EjJJxAwfzNNWZreNnbxHZ2fi0zaM6wwS23x2JVqSQ==", "dev": true, + "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.4.0", @@ -591,9 +723,8 @@ }, "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.6.2" }, @@ -601,49 +732,10 @@ "node": ">=18.0.0" } }, - "node_modules/@azure/core-rest-pipeline/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@azure/core-rest-pipeline/node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@azure/core-rest-pipeline/node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/@azure/core-tracing": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.2.tgz", - "integrity": "sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.6.2" }, @@ -653,9 +745,8 @@ }, "node_modules/@azure/core-util": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz", - "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==", "dev": true, + "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.0.0", "tslib": "^2.6.2" @@ -666,9 +757,8 @@ }, "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.6.2" }, @@ -678,9 +768,8 @@ }, "node_modules/@azure/logger": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.2.tgz", - "integrity": "sha512-l170uE7bsKpIU6B/giRc9i4NI0Mj+tANMMMxf7Zi/5cKzEqPayP7+X1WPrG7e+91JgY8N+7K7nF2WOi7iVhXvg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.6.2" }, @@ -690,8 +779,7 @@ }, "node_modules/@babel/code-frame": { "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "license": "MIT", "dependencies": { "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" @@ -702,8 +790,7 @@ }, "node_modules/@babel/code-frame/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -713,8 +800,7 @@ }, "node_modules/@babel/code-frame/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -726,37 +812,32 @@ }, "node_modules/@babel/code-frame/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/code-frame/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "license": "MIT" }, "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/code-frame/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/code-frame/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -766,18 +847,16 @@ }, "node_modules/@babel/compat-data": { "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", - "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", @@ -805,18 +884,16 @@ }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", @@ -829,9 +906,8 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-validator-option": "^7.23.5", @@ -845,27 +921,24 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-environment-visitor": { "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -876,9 +949,8 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -888,9 +960,8 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.15" }, @@ -900,9 +971,8 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -919,18 +989,16 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -940,9 +1008,8 @@ }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -952,35 +1019,31 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", - "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.23.9", "@babel/traverse": "^7.23.9", @@ -992,8 +1055,7 @@ }, "node_modules/@babel/highlight": { "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -1005,8 +1067,7 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -1016,8 +1077,7 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1029,37 +1089,32 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "license": "MIT" }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -1069,9 +1124,8 @@ }, "node_modules/@babel/parser": { "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "dev": true, + "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -1081,9 +1135,8 @@ }, "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1096,9 +1149,8 @@ }, "node_modules/@babel/plugin-transform-react-jsx-source": { "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1111,8 +1163,7 @@ }, "node_modules/@babel/runtime": { "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", - "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1122,9 +1173,8 @@ }, "node_modules/@babel/template": { "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", - "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/parser": "^7.23.9", @@ -1136,9 +1186,8 @@ }, "node_modules/@babel/traverse": { "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", - "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/generator": "^7.23.6", @@ -1157,18 +1206,16 @@ }, "node_modules/@babel/traverse/node_modules/globals": { "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/types": { "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", - "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -1180,13 +1227,11 @@ }, "node_modules/@babylonjs/core": { "version": "6.43.0", - "resolved": "https://registry.npmjs.org/@babylonjs/core/-/core-6.43.0.tgz", - "integrity": "sha512-pLFvvtC26TeICUcF0YjuuQqvCahJwPlATXnJkvBzMWXXxUE0Y5rI8L28iScu2WKy975605KdccJI5VL2NG7sUQ==" + "license": "Apache-2.0" }, "node_modules/@babylonjs/gui": { "version": "6.43.0", - "resolved": "https://registry.npmjs.org/@babylonjs/gui/-/gui-6.43.0.tgz", - "integrity": "sha512-iYsB7uyC40w0QkFGcPw8jAzE26jsgTFvWHTVKPSZxjQ5cG2RQEeK3aD8l+GvWauSc2qPB0wMOsvkAtusdy1g7g==", + "license": "Apache-2.0", "peer": true, "peerDependencies": { "@babylonjs/core": "^6.0.0" @@ -1194,8 +1239,7 @@ }, "node_modules/@babylonjs/loaders": { "version": "6.43.0", - "resolved": "https://registry.npmjs.org/@babylonjs/loaders/-/loaders-6.43.0.tgz", - "integrity": "sha512-+cgw4NDchjc/5dZYGzOEhJU+9++ygYlA+ChybE5yvF+yUDWZ7fGXnEXMFImXeFELjk5RRK1NS3H3YvPe7A+Rug==", + "license": "Apache-2.0", "peerDependencies": { "@babylonjs/core": "^6.0.0", "babylonjs-gltf2interface": "^6.0.0" @@ -1203,14 +1247,12 @@ }, "node_modules/@emotion/hash": { "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + "license": "MIT" }, "node_modules/@es-joy/jsdoccomment": { "version": "0.40.1", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.40.1.tgz", - "integrity": "sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==", "dev": true, + "license": "MIT", "dependencies": { "comment-parser": "1.4.0", "esquery": "^1.5.0", @@ -1220,62 +1262,13 @@ "node": ">=16" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1284,400 +1277,100 @@ "node": ">=12" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], + "node_modules/@eslint/js": { + "version": "8.56.0", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@floating-ui/core": { + "version": "1.6.0", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.1" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@floating-ui/devtools": { + "version": "0.2.1", + "peerDependencies": { + "@floating-ui/dom": ">=1.5.4" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@floating-ui/dom": { + "version": "1.6.3", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "license": "MIT" + }, + "node_modules/@fluentui/keyboard-keys": { + "version": "9.0.7", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.1" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", - "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", - "dependencies": { - "@floating-ui/utils": "^0.2.1" - } - }, - "node_modules/@floating-ui/devtools": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/devtools/-/devtools-0.2.1.tgz", - "integrity": "sha512-8PHJLbD6VhBh+LJ1uty/Bz30qs02NXCE5u8WpOhSewlYXUWl03GNXknr9AS2yaAWJEQaY27x7eByJs44gODBcw==", - "peerDependencies": { - "@floating-ui/dom": ">=1.5.4" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", - "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", - "dependencies": { - "@floating-ui/core": "^1.0.0", - "@floating-ui/utils": "^0.2.0" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" - }, - "node_modules/@fluentui/keyboard-keys": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-keys/-/keyboard-keys-9.0.7.tgz", - "integrity": "sha512-vaQ+lOveQTdoXJYqDQXWb30udSfTVcIuKk1rV0X0eGAgcHeSDeP1HxMy+OgHOQZH3OiBH4ZYeWxb+tmfiDiygQ==", - "dependencies": { - "@swc/helpers": "^0.5.1" - } - }, - "node_modules/@fluentui/priority-overflow": { - "version": "9.1.11", - "resolved": "https://registry.npmjs.org/@fluentui/priority-overflow/-/priority-overflow-9.1.11.tgz", - "integrity": "sha512-sdrpavvKX2kepQ1d6IaI3ObLq5SAQBPRHPGx2+wiMWL7cEx9vGGM0fmeicl3soqqmM5uwCmWnZk9QZv9XOY98w==", - "dependencies": { - "@swc/helpers": "^0.5.1" + "node_modules/@fluentui/priority-overflow": { + "version": "9.1.11", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.1" } }, "node_modules/@fluentui/react-accordion": { "version": "9.3.41", - "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.3.41.tgz", - "integrity": "sha512-0EHoxdVm1HTX1MCk6xrYAfBHVek9PM9aoHsPzblp3CBvrEbFDnsOzTH/9lVKhUD8EZ066aHRCP1LL8WMCVbpsg==", + "license": "MIT", "dependencies": { "@fluentui/react-aria": "^9.8.2", "@fluentui/react-context-selector": "^9.1.51", @@ -1700,8 +1393,7 @@ }, "node_modules/@fluentui/react-alert": { "version": "9.0.0-beta.109", - "resolved": "https://registry.npmjs.org/@fluentui/react-alert/-/react-alert-9.0.0-beta.109.tgz", - "integrity": "sha512-Cy+ZIukM0E/JEjMHGwZJd0t/SnN/o8hvofogedzKkPedFzhT1Enb5gQp9kZZKPHu/aY7CIHdeDN/V4bPvECh/w==", + "license": "MIT", "dependencies": { "@fluentui/react-avatar": "^9.6.14", "@fluentui/react-button": "^9.3.68", @@ -1722,8 +1414,7 @@ }, "node_modules/@fluentui/react-aria": { "version": "9.8.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.8.2.tgz", - "integrity": "sha512-5zjbbhAQcAvBBpdZZ+IwKhy9faEbj3bW/29ZRectl1sQ/Xu1MTbkC01uq6jgSEYClsyj23RzZv8QlkAMw+h9DA==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -1741,8 +1432,7 @@ }, "node_modules/@fluentui/react-avatar": { "version": "9.6.14", - "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.6.14.tgz", - "integrity": "sha512-7Dw08ZKsGc/95OnuK4X3UyofE/+PVoQMijv04M2+CE5L7NVpQJ34Au0NUdOp0Hk994iZTMZVjrPHPvofMj4f+w==", + "license": "MIT", "dependencies": { "@fluentui/react-badge": "^9.2.24", "@fluentui/react-context-selector": "^9.1.51", @@ -1767,8 +1457,7 @@ }, "node_modules/@fluentui/react-badge": { "version": "9.2.24", - "resolved": "https://registry.npmjs.org/@fluentui/react-badge/-/react-badge-9.2.24.tgz", - "integrity": "sha512-ThGVHf5wO8xpf/JbYSEMK0tGoRqprMDcx+jD7NK5lxjqv4oOxRGSFYfG5GYf4qJZZKbBc2hTOy/BHpts6WBtzw==", + "license": "MIT", "dependencies": { "@fluentui/react-icons": "^2.0.224", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -1787,8 +1476,7 @@ }, "node_modules/@fluentui/react-breadcrumb": { "version": "9.0.14", - "resolved": "https://registry.npmjs.org/@fluentui/react-breadcrumb/-/react-breadcrumb-9.0.14.tgz", - "integrity": "sha512-4/+GfSfABwXVHYE8ovQRA9q8llUo0Us2YRKl/xD70oqCVGCMwwXkRX3nEYq54eNcduJ9dn+NrCyp/xc84/F4BA==", + "license": "MIT", "dependencies": { "@fluentui/react-aria": "^9.8.2", "@fluentui/react-button": "^9.3.68", @@ -1811,8 +1499,7 @@ }, "node_modules/@fluentui/react-button": { "version": "9.3.68", - "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.3.68.tgz", - "integrity": "sha512-jUY/SGXmaUw6R4lo+QVLly7s5cecc6/oJkRtiujdlB1WIWtI7H90X7Lm0IjnOEfS5TGaQ9wglZeXlsj3SKYL4g==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-aria": "^9.8.2", @@ -1834,8 +1521,7 @@ }, "node_modules/@fluentui/react-card": { "version": "9.0.67", - "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.0.67.tgz", - "integrity": "sha512-guTFd0BZIot2WufOCjIl0wP1l/tCJAjPHOR0BGqQaONT4NSQYw++a6pyUaq+OccWbFBKOl6hWrZhET+SAGuxJw==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -1854,8 +1540,7 @@ }, "node_modules/@fluentui/react-checkbox": { "version": "9.2.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.2.12.tgz", - "integrity": "sha512-LW+D6tWCWjR2KMLs0Hi2eIEsNzdWIYwG7tc/GVhk2Wux9fFngGPigmpLlmbKtFy4t8IugdTHyujxk7em0oXjBg==", + "license": "MIT", "dependencies": { "@fluentui/react-field": "^9.1.53", "@fluentui/react-icons": "^2.0.224", @@ -1877,8 +1562,7 @@ }, "node_modules/@fluentui/react-combobox": { "version": "9.7.5", - "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.7.5.tgz", - "integrity": "sha512-lTbBD0bC1MWot2n3HL/HWhxxXGlol/3tmq6OVXkAdh4hPjUeFOhNiDuG2HJ2FiW7IBpwcpDhrH3Rfemu8c8hKg==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-context-selector": "^9.1.51", @@ -1904,8 +1588,7 @@ }, "node_modules/@fluentui/react-components": { "version": "9.46.4", - "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.46.4.tgz", - "integrity": "sha512-NSJsPaOKOzcbyn4v+AkSsNMoTvAv+9cmi6UuvTy070Vd2NXQQ3UOHSNHUH1RF0Y0bhPNSXrSqRP1lefyCU05qA==", + "license": "MIT", "dependencies": { "@fluentui/react-accordion": "^9.3.41", "@fluentui/react-alert": "9.0.0-beta.109", @@ -1970,8 +1653,7 @@ }, "node_modules/@fluentui/react-context-selector": { "version": "9.1.51", - "resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.1.51.tgz", - "integrity": "sha512-AzRC2XH7Ra39CQiGzV8xdfeVGIDqz6s7IjcBtL4HpA7G1g4pzfe2W9QbXOOr8iDwryCdMVbO+QP/sak+vMAcFw==", + "license": "MIT", "dependencies": { "@fluentui/react-utilities": "^9.18.0", "@swc/helpers": "^0.5.1" @@ -1986,8 +1668,7 @@ }, "node_modules/@fluentui/react-dialog": { "version": "9.9.10", - "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.9.10.tgz", - "integrity": "sha512-fauPfcxhnuHPnaCI2mLtkxeyQvxWS8ux2fvr61ODQdqUzEmKZdDEXuBpRyuVxBWs+ZX4IBqSQu6KmDjZdcMZsg==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-aria": "^9.8.2", @@ -2012,8 +1693,7 @@ }, "node_modules/@fluentui/react-divider": { "version": "9.2.60", - "resolved": "https://registry.npmjs.org/@fluentui/react-divider/-/react-divider-9.2.60.tgz", - "integrity": "sha512-TdFxSnSAK2SGzfzKsg/6Yfl+UxtirJpXY6B/ibHogLjLqsKm+RnVB8nyO5wd5RUoAQofWkQAAArTEl6UkJf1Kw==", + "license": "MIT", "dependencies": { "@fluentui/react-jsx-runtime": "^9.0.29", "@fluentui/react-shared-contexts": "^9.14.0", @@ -2031,8 +1711,7 @@ }, "node_modules/@fluentui/react-drawer": { "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.1.4.tgz", - "integrity": "sha512-yXMPeyqKiLa3A0H1XRS9RtWGRAq4J2mpVdmY495EzezBQuU/G3bJPIMYSBKzHdYvrJQl6DM+k8F4iA0d2ekUAQ==", + "license": "MIT", "dependencies": { "@fluentui/react-dialog": "^9.9.10", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -2053,8 +1732,7 @@ }, "node_modules/@fluentui/react-field": { "version": "9.1.53", - "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.1.53.tgz", - "integrity": "sha512-u3zd2EjYZIMtCwEMAdb9wLODZWpfpWGWwgBKZMcZ3CpLm68TTcpkjqzUjg60l5aiyPvT8wThEUEHaeJBe0EgEg==", + "license": "MIT", "dependencies": { "@fluentui/react-context-selector": "^9.1.51", "@fluentui/react-icons": "^2.0.224", @@ -2074,8 +1752,7 @@ }, "node_modules/@fluentui/react-icons": { "version": "2.0.227", - "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.227.tgz", - "integrity": "sha512-KcuzBJvf1LL1YW7XBg7Y4RoCpFMUU2br9BPqwN5gZDKALHQF9RdHPtwdGTzxKsHacOTpHnNDQrbDW+NvxiEMVQ==", + "license": "MIT", "dependencies": { "@griffel/react": "^1.0.0", "tslib": "^2.1.0" @@ -2086,8 +1763,7 @@ }, "node_modules/@fluentui/react-image": { "version": "9.1.57", - "resolved": "https://registry.npmjs.org/@fluentui/react-image/-/react-image-9.1.57.tgz", - "integrity": "sha512-dB0/NFvYChztwmEnEK5XjCtC5BjhI5zA/kUsdxXXnXyT5SnRsOz4qLIU3z6RN7E2ZXvmtWEgwtzSy6UsmKuICw==", + "license": "MIT", "dependencies": { "@fluentui/react-jsx-runtime": "^9.0.29", "@fluentui/react-shared-contexts": "^9.14.0", @@ -2105,8 +1781,7 @@ }, "node_modules/@fluentui/react-infobutton": { "version": "9.0.0-beta.93", - "resolved": "https://registry.npmjs.org/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.93.tgz", - "integrity": "sha512-tlE/M5p//lMpHGhXL9LRq5diEuw+rBtmy53QvM3r6NPevRl525MlxVZOMfTBh1Q+GXOS7kdvjCzlLxyXPVcA9w==", + "license": "MIT", "dependencies": { "@fluentui/react-icons": "^2.0.224", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -2127,8 +1802,7 @@ }, "node_modules/@fluentui/react-infolabel": { "version": "9.0.21", - "resolved": "https://registry.npmjs.org/@fluentui/react-infolabel/-/react-infolabel-9.0.21.tgz", - "integrity": "sha512-NIQWHFu0/dw5Ow4YTGmoqVmcevcxkbizx+M6ez2m58U0zTP7S+weOgmNcm74eBeP0A9rPnKkqQkSYWzzQcL8iQ==", + "license": "MIT", "dependencies": { "@fluentui/react-icons": "^2.0.224", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -2149,8 +1823,7 @@ }, "node_modules/@fluentui/react-input": { "version": "9.4.63", - "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.4.63.tgz", - "integrity": "sha512-mj54J3w4RUxFEVntU6XKfKM2n5z0A619OplNHBK/C/boWL3vL1llNcWMAbcpB3EqsjeaOR/+MhPVrMwAh4+nPg==", + "license": "MIT", "dependencies": { "@fluentui/react-field": "^9.1.53", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -2169,8 +1842,7 @@ }, "node_modules/@fluentui/react-jsx-runtime": { "version": "9.0.29", - "resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.0.29.tgz", - "integrity": "sha512-C+jurF0i0qaioKOFzpbC3DGER+W/QOW1v0qgEJemu2R2ldSbwgCBVagFysfjxAfnONz4zaDPTMRj58PwyEnBIQ==", + "license": "MIT", "dependencies": { "@fluentui/react-utilities": "^9.18.0", "@swc/helpers": "^0.5.1", @@ -2183,8 +1855,7 @@ }, "node_modules/@fluentui/react-label": { "version": "9.1.61", - "resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.1.61.tgz", - "integrity": "sha512-VTiZ2Y9Nipmsq4YL3qjhZeyRMkj2nKHMOWrvifkG85ss62+PpWUDC8BBQKqbI0vLiFVYImMezCeQUX3qSYqgoA==", + "license": "MIT", "dependencies": { "@fluentui/react-jsx-runtime": "^9.0.29", "@fluentui/react-shared-contexts": "^9.14.0", @@ -2202,8 +1873,7 @@ }, "node_modules/@fluentui/react-link": { "version": "9.2.10", - "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.2.10.tgz", - "integrity": "sha512-jOmib6CIv8BUUHn8Y/P+ikR1OoQHrk0IdNat7ygCdCNGtCjc3y+yzuNwsin7uYfftdkXBzBX7ZC9fmY4U9Eq4Q==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -2223,8 +1893,7 @@ }, "node_modules/@fluentui/react-menu": { "version": "9.12.50", - "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.12.50.tgz", - "integrity": "sha512-sFxygmIi+V6xjrzaMiGuXx0EpvABHjjrLLd9Zi/dDlCCTP3zWRVBdfTlmWXi1QVh96JUBXP7e8qDD7h+ExY9OA==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-aria": "^9.8.2", @@ -2250,8 +1919,7 @@ }, "node_modules/@fluentui/react-message-bar": { "version": "9.0.19", - "resolved": "https://registry.npmjs.org/@fluentui/react-message-bar/-/react-message-bar-9.0.19.tgz", - "integrity": "sha512-aqR38fYfNRLUPgU3+6aBwkLVSs6UWRFe9a+wqElyJsmkU+rADXC5tWPdcn3YT0wg3kWzNmATtWlTtIcH+K4RMw==", + "license": "MIT", "dependencies": { "@fluentui/react-button": "^9.3.68", "@fluentui/react-icons": "^2.0.224", @@ -2272,8 +1940,7 @@ }, "node_modules/@fluentui/react-motion-preview": { "version": "0.5.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-motion-preview/-/react-motion-preview-0.5.12.tgz", - "integrity": "sha512-mZ5Ys4ASWyrDAD1XKZI4rQtmEPLvnYp8Bv59ebINJcdeNJSETSq1TThwIDyfoimO4Kaw/092ydOJyL98dGXA1w==", + "license": "MIT", "dependencies": { "@fluentui/react-jsx-runtime": "^9.0.29", "@fluentui/react-shared-contexts": "^9.14.0", @@ -2291,8 +1958,7 @@ }, "node_modules/@fluentui/react-overflow": { "version": "9.1.10", - "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.1.10.tgz", - "integrity": "sha512-llvTkxT63c8vBGo/ihivMMqCth9BYf63VTZgx01Sj+v+ABxnDlZfh8D8vJjijghwL0X3MeG24CYci4FHLdDfjg==", + "license": "MIT", "dependencies": { "@fluentui/priority-overflow": "^9.1.11", "@fluentui/react-context-selector": "^9.1.51", @@ -2311,8 +1977,7 @@ }, "node_modules/@fluentui/react-persona": { "version": "9.2.73", - "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.2.73.tgz", - "integrity": "sha512-XgVQ5t33LvWNh6zaXScouns3dGRq/cm4z9dwt8MaJbjDAixt95uME6DCqeZghwQIrTD3L2+6iHu0NfEr5YGoSg==", + "license": "MIT", "dependencies": { "@fluentui/react-avatar": "^9.6.14", "@fluentui/react-badge": "^9.2.24", @@ -2332,8 +1997,7 @@ }, "node_modules/@fluentui/react-popover": { "version": "9.8.38", - "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.8.38.tgz", - "integrity": "sha512-MOEesK3AEVUGRmOuDDHsSvrxe6ksuRWOwjaKkOEiLiQ8uyy26pAHZKREkQXBXFVIB8/f9FC0rbrDeTq7j8mk8A==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-aria": "^9.8.2", @@ -2358,8 +2022,7 @@ }, "node_modules/@fluentui/react-portal": { "version": "9.4.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.4.13.tgz", - "integrity": "sha512-pAEz2GReuN13XVhsOP9YkbGIYZF6qWcOYpt9emAHBWNclPT5XLTBx+GrmOyInp1KTetLF7sRkIflyHprxwB0hA==", + "license": "MIT", "dependencies": { "@fluentui/react-shared-contexts": "^9.14.0", "@fluentui/react-tabster": "^9.19.0", @@ -2377,8 +2040,7 @@ }, "node_modules/@fluentui/react-positioning": { "version": "9.13.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.13.3.tgz", - "integrity": "sha512-zOzgz190Bpk6d3Xq5Q9mhkhlDe7CVqD0vHpTUm/v4JhGMl94v5YXuUgOYG6QpZQrqnDtIlFJBqfYJGVS5YhaPw==", + "license": "MIT", "dependencies": { "@floating-ui/devtools": "0.2.1", "@floating-ui/dom": "^1.2.0", @@ -2397,8 +2059,7 @@ }, "node_modules/@fluentui/react-progress": { "version": "9.1.63", - "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.1.63.tgz", - "integrity": "sha512-dsUbahuDIvCYKJPGVZmz5S5aZjEAWcax1cDF/t51YGhfYCaKhqKeaw70z/5dgQpn3+Tvs1aYnlf4WudT7ThAxQ==", + "license": "MIT", "dependencies": { "@fluentui/react-field": "^9.1.53", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -2417,8 +2078,7 @@ }, "node_modules/@fluentui/react-provider": { "version": "9.13.11", - "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.13.11.tgz", - "integrity": "sha512-hGlOVquqMhGgseYEIvUliO3rvV6RmZrmHC5XFMvIgTK9WqtA1by1PPWCmgD50YsCFSFT+DNzgvDvJmbQd+j27A==", + "license": "MIT", "dependencies": { "@fluentui/react-icons": "^2.0.224", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -2439,8 +2099,7 @@ }, "node_modules/@fluentui/react-radio": { "version": "9.2.7", - "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.2.7.tgz", - "integrity": "sha512-8qS6ZbkoesqnPpCUv4mfTVH7xb+2ab6FUmIf+ck+eKCrdsLkETIbAxiRwOF1cMBIeqU47ji7T7aIbuPLsjmTBQ==", + "license": "MIT", "dependencies": { "@fluentui/react-field": "^9.1.53", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -2462,8 +2121,7 @@ }, "node_modules/@fluentui/react-select": { "version": "9.1.63", - "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.1.63.tgz", - "integrity": "sha512-6IEUpitDaPuOpxBidKQsgwFfs0ppluKzC3ONAaCVVr3rV6iMkN47t28GHFjJnEHfeYXn6mzfs9vFJTijyhrc/A==", + "license": "MIT", "dependencies": { "@fluentui/react-field": "^9.1.53", "@fluentui/react-icons": "^2.0.224", @@ -2483,8 +2141,7 @@ }, "node_modules/@fluentui/react-shared-contexts": { "version": "9.14.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-shared-contexts/-/react-shared-contexts-9.14.0.tgz", - "integrity": "sha512-P9yhg31WYfB1W66/gD3+qVCLBsyIEcOzQvKVaIQvd9UhF67lNW4kMXUB6YVOk5PV0Og4hXnkH/vuHl7YMD9RHw==", + "license": "MIT", "dependencies": { "@fluentui/react-theme": "^9.1.16", "@swc/helpers": "^0.5.1" @@ -2496,8 +2153,7 @@ }, "node_modules/@fluentui/react-skeleton": { "version": "9.0.51", - "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.0.51.tgz", - "integrity": "sha512-2HBRXEjAMjiEhT+cotqxuCeRh67ZgXTPgIXvZpzgk2hEsxTcWKBfpVv2dSQpnE4boxmpt8Jg4KlzqtMYV0+T+Q==", + "license": "MIT", "dependencies": { "@fluentui/react-field": "^9.1.53", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -2516,8 +2172,7 @@ }, "node_modules/@fluentui/react-slider": { "version": "9.1.69", - "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.1.69.tgz", - "integrity": "sha512-vPDbvATWxtdsWB6nEyZ3WoZV9C0VDeUVlq582HlnomMcTPgCUxKFCpeE3lemR4LwY51WDbouOUFQFG0vJ9c/ow==", + "license": "MIT", "dependencies": { "@fluentui/react-field": "^9.1.53", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -2537,8 +2192,7 @@ }, "node_modules/@fluentui/react-spinbutton": { "version": "9.2.63", - "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.2.63.tgz", - "integrity": "sha512-/7LnVtaYAz7rDtyqEMgMRftWg7IOEw/9rLFldzBCbUpn1A4/VuzQD2W8QAdpTutpEoIw5ripA3GEAsLYkJBEDA==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-field": "^9.1.53", @@ -2559,8 +2213,7 @@ }, "node_modules/@fluentui/react-spinner": { "version": "9.3.41", - "resolved": "https://registry.npmjs.org/@fluentui/react-spinner/-/react-spinner-9.3.41.tgz", - "integrity": "sha512-8ojZ+S34p+eLBMsy22zYcZIWibQ1xz44bFaqziV79kuThHe0960W18lOj2PXmGsAhiFVSAEZYwx5Hm+h027qEg==", + "license": "MIT", "dependencies": { "@fluentui/react-jsx-runtime": "^9.0.29", "@fluentui/react-label": "^9.1.61", @@ -2579,8 +2232,7 @@ }, "node_modules/@fluentui/react-switch": { "version": "9.1.69", - "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.1.69.tgz", - "integrity": "sha512-N7ZHTjcyHYHO7qd2lqd3tW5uCurN5VbKuvq+IUvzOW5VjDHyNWxNfTmg6kRigL39wTrP0ymiiYWn4bl3kOFY2g==", + "license": "MIT", "dependencies": { "@fluentui/react-field": "^9.1.53", "@fluentui/react-icons": "^2.0.224", @@ -2602,8 +2254,7 @@ }, "node_modules/@fluentui/react-table": { "version": "9.11.10", - "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.11.10.tgz", - "integrity": "sha512-wWTQV9wqm3diGSpwIIsS4DddjBMf/MTXo5V39WU+NpcpNy2kyAJzcaXBWY5xv6eYbfEuTM1/n0xYp9RIWo7AsA==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-aria": "^9.8.2", @@ -2629,8 +2280,7 @@ }, "node_modules/@fluentui/react-tabs": { "version": "9.4.9", - "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.4.9.tgz", - "integrity": "sha512-ZBHwHnuhU6C8r497Z820A3l/bZyj18yy6I4FRCjBD4yxJle+/b2ut9jLyXBhP1PKazZo6/qyDW74R8t7gYnpvQ==", + "license": "MIT", "dependencies": { "@fluentui/react-context-selector": "^9.1.51", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -2651,8 +2301,7 @@ }, "node_modules/@fluentui/react-tabster": { "version": "9.19.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.19.0.tgz", - "integrity": "sha512-gHbOHHRLgZ65hW0317ksgM8tDGEy9oahA9iVDnwCv6dKIjR120PzTMHio0XgezRwD2HjHE4/2MLZvNTKLVhXzA==", + "license": "MIT", "dependencies": { "@fluentui/react-shared-contexts": "^9.14.0", "@fluentui/react-theme": "^9.1.16", @@ -2671,8 +2320,7 @@ }, "node_modules/@fluentui/react-tags": { "version": "9.0.27", - "resolved": "https://registry.npmjs.org/@fluentui/react-tags/-/react-tags-9.0.27.tgz", - "integrity": "sha512-WfPZz21D7fGpl2x4akzOfJsgDQFn1Byyx46u8nFWZLovX1j2OA3yJXMTOgqFp+/NAMw1t+2lZvcNxZHbtjC/SA==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-aria": "^9.8.2", @@ -2695,8 +2343,7 @@ }, "node_modules/@fluentui/react-text": { "version": "9.4.9", - "resolved": "https://registry.npmjs.org/@fluentui/react-text/-/react-text-9.4.9.tgz", - "integrity": "sha512-vEUnZf4Yj4JJpmMmObXJ7SWVsX10dcEMEola9+UuuNyi7jV6hODdeU6gzAbuOli0lqBTfUcyPlCKOxRyGURMAw==", + "license": "MIT", "dependencies": { "@fluentui/react-jsx-runtime": "^9.0.29", "@fluentui/react-shared-contexts": "^9.14.0", @@ -2714,8 +2361,7 @@ }, "node_modules/@fluentui/react-textarea": { "version": "9.3.63", - "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.3.63.tgz", - "integrity": "sha512-MZBhuQzLh9S2gLitM+Szjd8zdb0uUfIxxjqdHrDgJ49xLhYlo3I/4vX4LM4UQmuESVJn5gnK2I+BXX7LXwOjZw==", + "license": "MIT", "dependencies": { "@fluentui/react-field": "^9.1.53", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -2734,8 +2380,7 @@ }, "node_modules/@fluentui/react-theme": { "version": "9.1.16", - "resolved": "https://registry.npmjs.org/@fluentui/react-theme/-/react-theme-9.1.16.tgz", - "integrity": "sha512-QK2dGE5aQXN1UGdiEmGKpYGP3tHXIchLvFf8DEEOWnF4XBc9SiEPNFYkvLMJjHxZmDz4D670rsOPe0r5jFDEKQ==", + "license": "MIT", "dependencies": { "@fluentui/tokens": "1.0.0-alpha.13", "@swc/helpers": "^0.5.1" @@ -2743,8 +2388,7 @@ }, "node_modules/@fluentui/react-toast": { "version": "9.3.30", - "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.3.30.tgz", - "integrity": "sha512-TW5UAWgJuUwkcFM5hYDU8qE42A69BmSJP8WeOckEYGrrnEoPQ2HLObf9ReLHtGBE6NOP55na9rBJAk/FLglK/Q==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-aria": "^9.8.2", @@ -2768,8 +2412,7 @@ }, "node_modules/@fluentui/react-toolbar": { "version": "9.1.70", - "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.1.70.tgz", - "integrity": "sha512-P1sa7EiedS1AK1PFpo9dLoeuO3XIbmx+UHaOiWZNmWzt88exRHqEGpiSjklFhrYnEKRa8eouerNmKoOOTPaWfA==", + "license": "MIT", "dependencies": { "@fluentui/react-button": "^9.3.68", "@fluentui/react-context-selector": "^9.1.51", @@ -2792,8 +2435,7 @@ }, "node_modules/@fluentui/react-tooltip": { "version": "9.4.16", - "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.4.16.tgz", - "integrity": "sha512-eGc2SjbnrN/PVuB1cxPMNytRJxHwdBBvdN9mHB8z4SDrf+EPDGue2oq8EnwNLaIXaww9RFRD0RzrusAkEnk/ow==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-jsx-runtime": "^9.0.29", @@ -2815,8 +2457,7 @@ }, "node_modules/@fluentui/react-tree": { "version": "9.4.30", - "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.4.30.tgz", - "integrity": "sha512-KR35Nge0gfHOZIgkA6KFiGkj2fi+QZoq1rHHbXtCWNQvJEJ0iQd8/GiEawMxO/VEP+MAXNdUE5QdMnjRdJOQWA==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-aria": "^9.8.2", @@ -2843,8 +2484,7 @@ }, "node_modules/@fluentui/react-utilities": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.18.0.tgz", - "integrity": "sha512-PuuTKm/HReDdLwhpMiEC9SxaCe2NtIL8Ed+kVGBDzqEeVjJylCJWHy4tyOJCJ/+yz1Xyj6thiXr2k8Q5X+m7eg==", + "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.7", "@fluentui/react-shared-contexts": "^9.14.0", @@ -2857,8 +2497,7 @@ }, "node_modules/@fluentui/react-virtualizer": { "version": "9.0.0-alpha.68", - "resolved": "https://registry.npmjs.org/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.68.tgz", - "integrity": "sha512-01sTPBW1W1FyaJwb1JlV7wyCBBLo+y9NQzPET3LQDJSQ7py1XEd7RL6XPMa/IJ+XbeR8hEPhHEHdtehylliMVw==", + "license": "MIT", "dependencies": { "@fluentui/react-jsx-runtime": "^9.0.29", "@fluentui/react-shared-contexts": "^9.14.0", @@ -2875,379 +2514,77 @@ }, "node_modules/@fluentui/tokens": { "version": "1.0.0-alpha.13", - "resolved": "https://registry.npmjs.org/@fluentui/tokens/-/tokens-1.0.0-alpha.13.tgz", - "integrity": "sha512-IzYysTTBkAH7tQZxYKpzhxYnTJkvwXhjhTOpmERgnqTFifHTP8/vaQjJAAm7dI/9zlDx1oN+y/I+KzL9bDLHZQ==", + "license": "MIT", "dependencies": { "@swc/helpers": "^0.5.1" } }, "node_modules/@fluid-experimental/attributor": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluid-experimental/attributor/-/attributor-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-u0HCCzzwY4m63pIzCn/fc6GznUqc8CQjfNy44yQwmDFpT1PTYJ6pfi850K3Vma3OcWVGX2HwUSE8Yh3mi9Dzvg==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluid-experimental/attributor/-/attributor-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-qt+8it+NxaAyrnFNUVUH7Y8lR0csFIBpFW+D2HAQAUNRKx3yHSsl+rZq/IiWhWYHztR6NuCKK37u1NgnGP1uJA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "lz4js": "^0.2.0" } }, "node_modules/@fluid-experimental/sequence-deprecated": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluid-experimental/sequence-deprecated/-/sequence-deprecated-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-9hV+4fTu/ROFh3YQmkjrbuA01uQl0BBx2uw0h+33M1sEZT+lODVo4jGRRU3hoX8O+7dUb33Z5X2P8AbuIJEPzw==", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluid-experimental/sequence-deprecated/-/sequence-deprecated-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-uiXKA16v+S5ieOILj7hkzoRAFxPWOjrSDLMr5cTUtAMASEkSBLtmNRNIEPhZO3frM5zZjEY4EMsexJqRbHg64g==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/sequence": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/sequence": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, "node_modules/@fluid-internal/client-utils": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluid-internal/client-utils/-/client-utils-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-ddj9HNMeOf8SvHCLlIDKsn8YeE4Eirj03KcLFQOZekUyHYpSZKqr8uneD/fTxfi16HoFZqBId+WUT3dqniXDsw==", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluid-internal/client-utils/-/client-utils-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-lfOhEbaomW+jF025nCOGjF/+3sy+xROLEoMcJo7ZV5ehKdpuSUbbDFbNLwAm9MNdncA9r7i8OhEzxSio1ilVhg==", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "@types/events_pkg": "npm:@types/events@^3.0.0", "base64-js": "^1.5.1", "buffer": "^6.0.3", "events_pkg": "npm:events@^3.1.0", - "lodash": "^4.17.21", "sha.js": "^2.4.11" } }, - "node_modules/@fluid-internal/test-driver-definitions": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluid-internal/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-xyhaghjHD4kJKO86jAuKWT2rEE71VpQiJIkcbvA3kDTuwCi08IajyCn/LT9apC85P4tIPTO7mOKsmC9Suypw1w==", + "node_modules/@fluid-internal/eslint-plugin-fluid": { + "version": "0.1.1", + "dev": true, + "license": "MIT", "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" - } - }, - "node_modules/@fluidframework/agent-scheduler": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/agent-scheduler/-/agent-scheduler-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-50HcBq3xWEVZUlnUdPK4bqoLZrOfjsEz6V08Uzn+/F3ng/hkSVfFJWqE3YOHNoHqtJxkMN+NuwBtY3oYqeOn6w==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/map": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/register-collection": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "uuid": "^9.0.0" - } - }, - "node_modules/@fluidframework/aqueduct": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/aqueduct/-/aqueduct-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-d2ePMYdZEGmIXHCwqx1VaMkgW+HVWrnovf2L+ZeSXoeY4XJWVndDMTJX3062PfFClF3ly7c4ytaHcJAdA0e1Qw==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/map": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/request-handler": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/synthesize": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" - } - }, - "node_modules/@fluidframework/azure-client": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/azure-client/-/azure-client-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-XdzDc0QAgp3kRtaFvIR1KgGbSmymKvwp4aQnHwQMtdJzbRDY1zsW5F1PStwOZeBZW+GeiQloEMUZpHpRQczodA==", - "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-loader": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/fluid-static": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/map": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/routerlicious-driver": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "axios": "^1.6.2" + "@microsoft/tsdoc": "^0.14.2", + "@typescript-eslint/parser": "^6.7.2", + "ts-morph": "^20.0.0" } }, - "node_modules/@fluidframework/cell": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/cell/-/cell-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-sUeoTvw9yR4KO8lBlv2XrSxbpy8aw4Ep+MHegTYvP4kz0qip2i1o2mSda2dsSOTwHjZGpl7VHJY0Zue+0vdhNQ==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" - } - }, - "node_modules/@fluidframework/common-definitions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@fluidframework/common-definitions/-/common-definitions-1.1.0.tgz", - "integrity": "sha512-WQYtG9tkx2j7i1JSXPvwLnQsqCOZAghMj0aGciqjZVNppUly/XBpAjb4V6FEUCEjxCScPKhyE+1rhV1ep52NgA==" - }, - "node_modules/@fluidframework/common-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@fluidframework/common-utils/-/common-utils-3.1.0.tgz", - "integrity": "sha512-KpBQqpZKAHCKFMoxtAdrgqL1nIJhT7r2IRGmS3Rm5CMTLsegQ8ifX5lFvd6IbjeWmvLz1qLsY3eS5HBYqy9CVQ==", - "dependencies": { - "@fluidframework/common-definitions": "^1.1.0", - "@types/events": "^3.0.0", - "base64-js": "^1.5.1", - "buffer": "^6.0.3", - "events": "^3.1.0", - "lodash": "^4.17.21", - "sha.js": "^2.4.11" - } - }, - "node_modules/@fluidframework/container-definitions": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-GOprVPX9n095CBqb/pa4XxDklO0Rbl3kVUn/uilanznOUKceZpsYj4BWUnw8QAzq6WSjAcCncIybomU3KuHgpQ==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" - } - }, - "node_modules/@fluidframework/container-loader": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/container-loader/-/container-loader-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-o9fEESWGAgyV2bWyVp6oGUv3gTTHTb/dxThYuhGM0ZtG7ZsaSI/ax7GbynJhHrtaiCreL2IiI//EmZQhiA6u5A==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-base": "^4.0.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@ungap/structured-clone": "^1.2.0", - "debug": "^4.3.4", - "double-ended-queue": "^2.1.0-0", - "uuid": "^9.0.0" - } - }, - "node_modules/@fluidframework/container-runtime": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-XfhzQiPUk8sWU2XjgnRqk2XGRSOlfuZeugXzfhCjw+co6i5aNW9KUdLxWAlOBhx+9Wr0x5/LAc5nsyNFCi9EYA==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@tylerbu/sorted-btree-es6": "^1.8.0", - "double-ended-queue": "^2.1.0-0", - "lz4js": "^0.2.0", - "uuid": "^9.0.0" - } - }, - "node_modules/@fluidframework/container-runtime-definitions": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-uFDGs7CLj4rOfx6/QxrOqe74dfzWLO83RQ0LXhdD3/bDjMQ3DATXDR9NDU6jFp8k8IlrkaP6ROycfrLFDvHk1w==", - "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" - } - }, - "node_modules/@fluidframework/core-interfaces": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-mk83sfAlrTFAwJygUMA6PoVUPDTeJ0QADw3LdBOBE410qTa+7dJbNv75twfNOc5Pe/fYLuNSF1al13AsZB/5ug==" - }, - "node_modules/@fluidframework/core-utils": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/core-utils/-/core-utils-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-OEaTxEDPBMBZDvFu9MwbtDdt/IOE5j96ihH6QJMBmSIJDuxt6zDbKi1kPLavy8DZx25C3zuTdWcN4hEUSnvzyg==" - }, - "node_modules/@fluidframework/counter": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/counter/-/counter-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-xshKZpgbvBl9Q277gTdYsquIsYk4sesbhxQMZZKNGeicuTP169aCuNYokUXcHgtgb/zF2dI2MzOinbCD+DULog==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" - } - }, - "node_modules/@fluidframework/datastore": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-EnayWfai97Q1E2mJMGfuW76fOddTyl1uiiTKjh3HOItGGOSAVpTC7FNP268loID3SJ5Vf7rVfh3KIFNP+TIytA==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "uuid": "^9.0.0" - } - }, - "node_modules/@fluidframework/datastore-definitions": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-e28oAWa1ZR5QqPAR00AZYK3wIAa5/EAMgrbaTEklBeLpA4BBUdDlusAWjwmnWr6g9it9F5aJsMUbkOE7oEeM9w==", - "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" - } - }, - "node_modules/@fluidframework/driver-base": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-BOXwIfoqQKdP5fSHkYlKabocqE5sVJSPSnMq8Al5K7sUcO0KpXP0gYwUNeffmq52cyMUmpC/7zxcLlWOXfIoQw==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" - } - }, - "node_modules/@fluidframework/driver-definitions": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-txvf15Ks+RkQqk1k0J+YOPnzxUlFO9YC+8q8auhb3cBdwzF4FOn8/S2PPggk6S2KllQUfMviJ3nrlAtT52xmSw==", - "dependencies": { - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" - } - }, - "node_modules/@fluidframework/driver-utils": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-e+1kdrHF256T+UY6XxhdVTb56Q8DfNQvEBiYs0Khwc2VKoXcOEWmUUV2uskcm7A486e/OQ+795Lo/y8RJXZLlg==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/gitresources": "^4.0.0", - "@fluidframework/protocol-base": "^4.0.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "axios": "^1.6.2", - "lz4js": "^0.2.0", - "uuid": "^9.0.0" - } - }, - "node_modules/@fluidframework/eslint-config-fluid": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@fluidframework/eslint-config-fluid/-/eslint-config-fluid-3.5.0.tgz", - "integrity": "sha512-lpvCjZ56QlaSD+v75blAIYXExeK8U54xcT4UuhzTno+6kbaJg4AIB2xedelFGeSON96uUpTauHX4cvuF5/VoNw==", + "node_modules/@fluid-internal/eslint-plugin-fluid/node_modules/@typescript-eslint/parser": { + "version": "6.21.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@microsoft/tsdoc": "^0.14.2", - "@rushstack/eslint-patch": "~1.4.0", - "@rushstack/eslint-plugin": "~0.13.0", - "@rushstack/eslint-plugin-security": "~0.7.0", - "@typescript-eslint/eslint-plugin": "~6.7.2", - "@typescript-eslint/parser": "~6.7.2", - "eslint-config-prettier": "~9.0.0", - "eslint-import-resolver-typescript": "~3.6.1", - "eslint-plugin-eslint-comments": "~3.2.0", - "eslint-plugin-import": "npm:eslint-plugin-i@~2.29.0", - "eslint-plugin-jsdoc": "~46.8.1", - "eslint-plugin-promise": "~6.1.1", - "eslint-plugin-react": "~7.33.2", - "eslint-plugin-react-hooks": "~4.6.0", - "eslint-plugin-tsdoc": "~0.2.17", - "eslint-plugin-unicorn": "~48.0.1", - "eslint-plugin-unused-imports": "~3.0.0", - "ts-morph": "^20.0.0" - } - }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/@ts-morph/common": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.21.0.tgz", - "integrity": "sha512-ES110Mmne5Vi4ypUKrtVQfXFDtCsDXiUiGxF6ILVlE90dDD4fdpC1LSjydl/ml7xJWKSDZwUYD2zkOePMSrPBA==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.12", - "minimatch": "^7.4.3", - "mkdirp": "^2.1.6", - "path-browserify": "^1.0.1" - } - }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz", - "integrity": "sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.7.5", - "@typescript-eslint/type-utils": "6.7.5", - "@typescript-eslint/utils": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3257,7 +2594,6 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { @@ -3266,17 +2602,13 @@ } } }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/parser": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz", - "integrity": "sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==", + "node_modules/@fluid-internal/eslint-plugin-fluid/node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "6.7.5", - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/typescript-estree": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", - "debug": "^4.3.4" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3284,25 +2616,12 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/scope-manager": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz", - "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==", + "node_modules/@fluid-internal/eslint-plugin-fluid/node_modules/@typescript-eslint/types": { + "version": "6.21.0", "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5" - }, + "license": "MIT", "engines": { "node": "^16.0.0 || >=18.0.0" }, @@ -3311,15 +2630,18 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/type-utils": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz", - "integrity": "sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==", + "node_modules/@fluid-internal/eslint-plugin-fluid/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/typescript-estree": "6.7.5", - "@typescript-eslint/utils": "6.7.5", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, "engines": { @@ -3329,20 +2651,20 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/types": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz", - "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==", + "node_modules/@fluid-internal/eslint-plugin-fluid/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, "engines": { "node": "^16.0.0 || >=18.0.0" }, @@ -3351,260 +2673,377 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz", - "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==", + "node_modules/@fluid-internal/eslint-plugin-fluid/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "balanced-match": "^1.0.0" } }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/utils": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz", - "integrity": "sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==", + "node_modules/@fluid-internal/eslint-plugin-fluid/node_modules/minimatch": { + "version": "9.0.3", "dev": true, + "license": "ISC", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.7.5", - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/typescript-estree": "6.7.5", - "semver": "^7.5.4" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz", - "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==", - "dev": true, + "node_modules/@fluid-internal/test-driver-definitions": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluid-internal/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-49g+P7cubLGIet+sM9JYimf6ZArWZOiXbRQcytd9uZKp43rZA4zytwZzwoOP9T1TUQOYY9szwLNJDfmLNuAdJQ==", "dependencies": { - "@typescript-eslint/types": "6.7.5", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, + "node_modules/@fluidframework/agent-scheduler": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/agent-scheduler/-/agent-scheduler-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-HwfltKZzE/Ojx/9cdm1/QgN21od5mjnk2hd0rZCskSfMxTkr0Cgcw6JV7hAR3W18okN8Vba/HBl9zXunyoN8pg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/map": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/register-collection": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "uuid": "^9.0.0" + } + }, + "node_modules/@fluidframework/aqueduct": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/aqueduct/-/aqueduct-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-/xgRkQ9Z8OI/T3dW5p3pJUbC44YzoxHpECujioBbDWWNCqFOLKnChTmJ07cCsw9Br5x4M9/+rxRjFRHPou9grQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/map": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/request-handler": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/synthesize": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" + } + }, + "node_modules/@fluidframework/azure-client": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/azure-client/-/azure-client-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-rc4DuVSndXf2/DdO++HZbDaEK6LOFsSbQNpE3a0AGFXZ9tS+MZaMKrWxNCfHs+SefFyLUPklQ3ZoYyrfTkfJEA==", + "dependencies": { + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/fluid-static": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/map": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "axios": "^1.6.2" + } + }, + "node_modules/@fluidframework/cell": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/cell/-/cell-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-SPKxqUUQbWE5BVhMOARN2uaWlAKyh/9xYUMpq12e7WqH6nhZ5bk5QJqa1I3u3VzSBUDc6bPYOIcNzvrLAE03hg==", "dependencies": { - "balanced-match": "^1.0.0" + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/code-block-writer": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-12.0.0.tgz", - "integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==", - "dev": true + "node_modules/@fluidframework/common-definitions": { + "version": "1.1.0", + "license": "MIT" }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "node_modules/@fluidframework/common-utils": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@fluidframework/common-definitions": "^1.1.0", + "@types/events": "^3.0.0", + "base64-js": "^1.5.1", + "buffer": "^6.0.3", + "events": "^3.1.0", + "lodash": "^4.17.21", + "sha.js": "^2.4.11" } }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/eslint-plugin-unused-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.0.0.tgz", - "integrity": "sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==", - "dev": true, + "node_modules/@fluidframework/container-definitions": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-422iGjkpoSbz47ZJ/t3wX09lOJNmd8pI9WqyPNok2HPRE9UVsu1YMT6HZU6MmnZt5YueYah0ROu9UdXsog9Smg==", "dependencies": { - "eslint-rule-composer": "^0.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0", - "eslint": "^8.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - } + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", - "dev": true, + "node_modules/@fluidframework/container-loader": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/container-loader/-/container-loader-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-KGyeL2rx5Wu0ftLKBMGGEWyGHhDmwXEO6+8wHTdbsBM4qj7pPqJwyeWLbjli2BpBtxSkpIwRmuZX4iyZ+vSLCA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@types/events_pkg": "npm:@types/events@^3.0.0", + "@ungap/structured-clone": "^1.2.0", + "debug": "^4.3.4", + "double-ended-queue": "^2.1.0-0", + "events_pkg": "npm:events@^3.1.0", + "uuid": "^9.0.0" + } + }, + "node_modules/@fluidframework/container-runtime": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-KQMHtbxKEq6AFIpwJNzN8XJCDwUdj1CaSOFiFRvhNYrVoMZejsilnZe31tF0dSNPTA4swc67N3EqN2NEHXLJLA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@tylerbu/sorted-btree-es6": "^1.8.0", + "double-ended-queue": "^2.1.0-0", + "lz4js": "^0.2.0", + "uuid": "^9.0.0" + } + }, + "node_modules/@fluidframework/container-runtime-definitions": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-QNx3uT8dlfOWv2TxFHOVcHo2mCg5WMVuwXIWkwh+O6D4rGnElHKLei7pR+PyuR/r2252hRzp1QbMZ8Hjl8FJ5Q==", + "dependencies": { + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" + } + }, + "node_modules/@fluidframework/core-interfaces": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-9oXAS5df0+n0XkrPHJpeCqGt/o+C2Ac02kqlxOZJck2p+Rse5GL+oTZfATssjlufX/wrBIIVCpRxnpfb5iXb3w==" + }, + "node_modules/@fluidframework/core-utils": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/core-utils/-/core-utils-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-XWYNQPI6GJPi6kW2535lzUv+wHVxxlvJqJee4eolM8Yrlxk84V9j7HaWzqUo+i5+V2bfc+VH5znetkeTj388Qg==" + }, + "node_modules/@fluidframework/counter": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/counter/-/counter-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-Z60k9RAji0PZff824MckgAWhQNFoM4OiIvCzVKjWo6gK1P2p+U/4OFVgmSRBRx6zbx5tbbssGnLJFeI6QpAQJA==", + "dependencies": { + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" + } + }, + "node_modules/@fluidframework/datastore": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-/TEGXpTpct15wkCFj5mkKfyDNNsBjlL5GJGcrMulnm0m9YAiGLf7hvNeXZjt4LAaR67qWjrJ+uMRGAcf4nOqHg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "uuid": "^9.0.0" + } + }, + "node_modules/@fluidframework/datastore-definitions": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-xQlQRJzRY1jNFkGvxzgqEV6qkGwjnKOqopHrPcXlKYpo++hUzldtVMWrJSK3Q5Zxibl3d+dMnC76WFG+BzULng==", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/mkdirp": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", - "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", - "dev": true, - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node_modules/@fluidframework/driver-base": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-N+KsAmmc2VcQBbdkSCfoWnKCMUGay/HXXCuUEh8fbhLqAfPxZcz6wVNGMUoIjwBXRtDQigtHAXzV/QreWqS0RA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, - "node_modules/@fluidframework/eslint-config-fluid/node_modules/ts-morph": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-20.0.0.tgz", - "integrity": "sha512-JVmEJy2Wow5n/84I3igthL9sudQ8qzjh/6i4tmYCm6IqYyKFlNbJZi7oBdjyqcWSWYRu3CtL0xbT6fS03ESZIg==", - "dev": true, + "node_modules/@fluidframework/driver-definitions": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-azQO/9JUwMo8Qr7fk1qeBdoA8ap92lKzRLzjBphcJioFJaewFgjwobh0p6f0a37Bn/TnVucTEh2RD7ovHTkcnw==", "dependencies": { - "@ts-morph/common": "~0.21.0", - "code-block-writer": "^12.0.0" + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" + } + }, + "node_modules/@fluidframework/driver-utils": { + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-7RdhsuYc6Mi4EjUdVRhsq7/V+kw/FBc8fKBoOjEMUuqo7r1T/WTjatNZQ6Yygi+1qJZq2/uqTu+B1/2fwQjR+w==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "axios": "^1.6.2", + "lz4js": "^0.2.0", + "uuid": "^9.0.0" } }, "node_modules/@fluidframework/fluid-static": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/fluid-static/-/fluid-static-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-at41hTupQKbEoiGUHmfoDgoVXWj67MOFwrWtyF9/Ieoxics88JdWNL1SKrytyy/MRwGJU+6rmSXo/IlZPqN34w==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/aqueduct": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-loader": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/request-handler": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/fluid-static/-/fluid-static-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-yLjSgX4UBjSsQVftUAf6lHd3V/ey5ovmtN1v/CcaSCY+5NnG3qijt6Irlj8qgh20Q820wDQ5Xnf0y2Bi5rRXKA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/aqueduct": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/request-handler": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, "node_modules/@fluidframework/gitresources": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/gitresources/-/gitresources-4.0.1.tgz", - "integrity": "sha512-NFH051hDmiGiw3YUKU3LbhBmeTyh19PElOJYsNzJLcKtBUrBcZ9xQQDfLDclQ7WT5ilwKr6I2EQElg+zeePkew==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/gitresources/-/gitresources-5.0.0.tgz", + "integrity": "sha512-nfam1KT+EUqFCENHcxrU9VwUfbhUC83UcLuOsdLpn9I7VuClL+w8KMWosoYauZraO9gDhTo2kCErjgQji5GzGA==" }, "node_modules/@fluidframework/id-compressor": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/id-compressor/-/id-compressor-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-CKi1BQZwq1aCikAULU2ksVmP58fNlBwso7bDiKyKeLgoNIDJm+cOKfREGnM07G78hCrOymJ26h3dKF+1aEbh2A==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/id-compressor/-/id-compressor-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-/we/znzok4gj6uGG5Za6enL6Z/74WzQk68rlDUxP9HhPT8xXmYsrEerll545bz+v7WVhUOhwugkF5wkIiARvFw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "@tylerbu/sorted-btree-es6": "^1.8.0", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/local-driver": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/local-driver/-/local-driver-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-N6kwtjC13d0EK6Gt9JJfJ6D1/Y6UjH6hVP1/oHtLuRKNKsEeBASTQutd4V2QZBraZ4BNvNH/67zBTktbuQEmFQ==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-base": "^4.0.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/routerlicious-driver": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/server-local-server": "^4.0.0", - "@fluidframework/server-services-client": "^4.0.0", - "@fluidframework/server-services-core": "^4.0.0", - "@fluidframework/server-test-utils": "^4.0.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/local-driver/-/local-driver-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-56KyA/9JYT3lOz51UtHnWXPF3j2yo9N8BiaaSpW7Td5XqfxtswGy/H/A8S5SSNm+lfjGpvZyE6CBpWPXj4ULBQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/protocol-base": "^5.0.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/server-local-server": "^5.0.0", + "@fluidframework/server-services-client": "^5.0.0", + "@fluidframework/server-services-core": "^5.0.0", + "@fluidframework/server-test-utils": "^5.0.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "jsrsasign": "^11.0.0", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/map": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-HDmWdUDTugVcHbtAmKbiTLT+I6045zL6qdlSFl9wN0QyyGJwGOxo3Wx/8GvixDjU1vjYWlZ7OPyckIMV4TgMdg==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-Tuho6T2x88Ecx1eZzmm+fahqLXUipD4VO2zQOk3LSr2F+q9ZE6piv4pZ2Lh7XbDGmoasSyiJgPh97upp1x5b6A==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "path-browserify": "^1.0.1" } }, "node_modules/@fluidframework/matrix": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/matrix/-/matrix-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-OfAPhtR8spabUEse+dZvTpYq80acjYmIYQzUDH+PrX/4+uu0y1TfBsPd6ONkw49ADdz3HPrEEy3xjiqAt5wpcw==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/matrix/-/matrix-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-ypejli4kODQiXSC/z4l//9RXTMZgNdvG583r5N2akpTpm11+bSDlfOe5VfmET89Bb7jxPI4TtibxmlHTIAijwQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "@tiny-calc/nano": "0.0.0-alpha.5", "double-ended-queue": "^2.1.0-0", "tslib": "^1.10.0" @@ -3612,31 +3051,29 @@ }, "node_modules/@fluidframework/matrix/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "license": "0BSD" }, "node_modules/@fluidframework/merge-tree": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-+I2THRxfG2f7egQTy5lJFjE7OniN37MiT2UcY5JNqF0pih8FoKgIJS/m0xD3KrXtUxIl8jHaT16OFbptZrcgyQ==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-reVAAi2RcqCp3wT1GzktRz7Q+tz5oSVjerbPPIYPsTHBYIszmSKi6Pqy+BLClOUW/pwsj3fxL64ROsUGffK/OQ==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, "node_modules/@fluidframework/mocha-test-setup": { "version": "2.0.0-rc.1.0.9", - "resolved": "https://registry.npmjs.org/@fluidframework/mocha-test-setup/-/mocha-test-setup-2.0.0-rc.1.0.9.tgz", - "integrity": "sha512-yng+1zA+9q6LEhAC9HvAIxYajeo+HAKCYZoPc5Ggpn3R2mBStogyBsDE1T2J/KiJxHsqrdaZXFWxX2gEi8FdzA==", "dev": true, + "license": "MIT", "dependencies": { "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.9 <2.0.0-rc.1.1.0", "@fluidframework/test-driver-definitions": ">=2.0.0-rc.1.0.9 <2.0.0-rc.1.1.0", @@ -3646,86 +3083,81 @@ }, "node_modules/@fluidframework/mocha-test-setup/node_modules/@fluidframework/core-interfaces": { "version": "2.0.0-rc.1.0.9", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.1.0.9.tgz", - "integrity": "sha512-o7J+UNzfSU7ImQmT96TK27UJ6o2LB1sKBWxyaAsl5FMicBESIX6669yXE/jggBXoDZndUZfISBXRukDjhiQy0w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@fluidframework/ordered-collection": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/ordered-collection/-/ordered-collection-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-ddBFnqgxmOWiCG5npcTQdx7CqweQMfMqCUn/iLE2DZGU4eER+zzBsYB2j3ZZvw7KB2Qcxfo9dIX8UCjPdZmLmg==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/ordered-collection/-/ordered-collection-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-4CzF7BlydQgC2NkRlMp2CvVKTxoVVcRxJPwKV1Ny7JyNd1QF49DgbRN8R6x/RDYmSwHt5UWcagsoEZerP3znqw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/protocol-base": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/protocol-base/-/protocol-base-4.0.1.tgz", - "integrity": "sha512-bbnWAfcpTVuHqHZEd/LbuIUztvF8G+ifH7Av4O03G/09zDnFA1VS83n3fl1rkvssXQAYUOIbYZZJ27UvxuQ35w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/protocol-base/-/protocol-base-5.0.0.tgz", + "integrity": "sha512-q5qQt269nUYQERwX5lntfEXVv7jbxFmGAZC1z1I5hZmkvSC6PJGF6GzXAtP43/eq0+hCftxmIT0jus+kLL/K4w==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~4.0.1", + "@fluidframework/gitresources": "~5.0.0", "@fluidframework/protocol-definitions": "^3.2.0", - "events": "^3.1.0" + "events_pkg": "npm:events@^3.1.0" } }, "node_modules/@fluidframework/protocol-definitions": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@fluidframework/protocol-definitions/-/protocol-definitions-3.2.0.tgz", - "integrity": "sha512-xgcyMN4uF6dAp2/XYFSHvGFITIV7JbVt3itA+T0c71/lZjq/HU/a/ClPIxfl9AEN0RbtuR/1n5LP4FXSV9j0hA==" + "license": "MIT" }, "node_modules/@fluidframework/register-collection": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/register-collection/-/register-collection-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-K7FMaqRGIb0+xP/CsxfxF506lPd5Zn3g8U8F7EE0SBS9uvCR5l1NjySvKriWooiFCQ2UHMrP/U+kRaVRLk1Cjg==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/register-collection/-/register-collection-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-fk3onWLB4XTZdW3sfQkSm7dtz1UB3ono3xWL3rcQ2UU/ib0OajmSye1U+bdKN2EhYnDHAyzjMwpBU/dIPEPpFw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, "node_modules/@fluidframework/request-handler": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/request-handler/-/request-handler-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-cjKKUYLFok9UZFvOltZFIwl/0g6/mKAtAgXUnZqBn9PbV89JmeIGDyrSgoXgfCQEosll6S+VaWF6QqEeso0O3w==", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/request-handler/-/request-handler-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-hUoh54Mhx1CyV1speyxzFi1bV3YOVwMz483Pm6j1DRNsiGSG1sjcFoauh4reLXAiOGOI3UQ57y8Qybo749H6fw==", "dependencies": { - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, "node_modules/@fluidframework/routerlicious-driver": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/routerlicious-driver/-/routerlicious-driver-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-svHpFVm0WZcyXSa4Tq9Lv1i8PJF7YDMV1WmWOzP2g8lqBpz3kRblHKCvhzd+6NY+2R/2eqp/mvTcBAZ0wFeT1A==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/gitresources": "^4.0.0", - "@fluidframework/protocol-base": "^4.0.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/server-services-client": "^4.0.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/routerlicious-driver/-/routerlicious-driver-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-QaVbsCuNwY3LMmcL9Vzm53qGSQu6va0Mgj/27TyCX4T+3zRnWp+B9d/6oO0tGjY89wdvzZYTOPTvC1Gbhd/FJA==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/server-services-client": "^5.0.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "cross-fetch": "^3.1.5", "json-stringify-safe": "5.0.1", "socket.io-client": "^4.7.3", @@ -3733,67 +3165,66 @@ } }, "node_modules/@fluidframework/runtime-definitions": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-zEZiIDG005QRPSXYywhjqJgEtpoc8p231R579peoJc4PmH2ZwagB+j+t0tw3PHbZSYhk/SL/uOPmZ9jGB9M9Og==", - "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0" + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-hB3vrKDZiCYyeHdUO4RlNoEF293TnWm5kc+5//i6OZaNOt9Pxvjh47KVBIN7i9sIhifjbqz6z1szj0EEvT5E5Q==", + "dependencies": { + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, "node_modules/@fluidframework/runtime-utils": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-YV/Uf8R186fAkjdgyvc3KP7dOl8Zf+rtlgcd2lyA4ah6Tako6Hi6nmhHDJmbujA9q8mXCFpatIWdmqyTjVlDpw==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-8kI5N9yBNgSFGG5EAAbcjeQe/gdXe32kjd7OzTqIbAMley/uBEvQkMIowKpTq/MUuA4/4+2IRnSvROYy7KSDFg==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, "node_modules/@fluidframework/sequence": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-gmbCWOOZpSgyqADfIL38SGviV8hGVrflaUpW3v3/mZ6NNZW+qEWMS25OWTh1d8np5UvH1LFZFK9+HmHSgciBUw==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/merge-tree": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-Gd+JwPuoAIGFfiKaOiXHJdlzjMM57gyCWIx7kf9cr9L1WwqrpkiY+sW/gVUhpXMjrZMye1ZtUJzmemFvEd0vag==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/merge-tree": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "double-ended-queue": "^2.1.0-0", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/server-lambdas": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas/-/server-lambdas-4.0.1.tgz", - "integrity": "sha512-09uZV04PIufyiIgUALrKLH0lW5JruHBZXm40oTHDOjtyO4V842qmpeZp/qrtZ5xxZAR/PfArsI0HpqRV1XZTKQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas/-/server-lambdas-5.0.0.tgz", + "integrity": "sha512-t0ouLtYi2y5DBYbp+WT4mIGXTSYK/1Yz+cb0prOtAUxYqsn+TAG/hr2DE8OyzHdL0RHZp/y2KX7X1jZhPxxGDg==", "dependencies": { - "@fluidframework/common-definitions": "^1.1.0", "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~4.0.1", - "@fluidframework/protocol-base": "~4.0.1", + "@fluidframework/gitresources": "~5.0.0", + "@fluidframework/protocol-base": "~5.0.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/server-lambdas-driver": "~4.0.1", - "@fluidframework/server-services-client": "~4.0.1", - "@fluidframework/server-services-core": "~4.0.1", - "@fluidframework/server-services-telemetry": "~4.0.1", + "@fluidframework/server-lambdas-driver": "~5.0.0", + "@fluidframework/server-services-client": "~5.0.0", + "@fluidframework/server-services-core": "~5.0.0", + "@fluidframework/server-services-telemetry": "~5.0.0", "@types/semver": "^7.5.0", "assert": "^2.0.0", "async": "^3.2.2", @@ -3810,14 +3241,14 @@ } }, "node_modules/@fluidframework/server-lambdas-driver": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas-driver/-/server-lambdas-driver-4.0.1.tgz", - "integrity": "sha512-sgNwuqSfvCvbHPc3GEagZIBCdEm79xr9IULIKrb/AcFdRuLnnH+pEWANW7SxhUhij+EKHrF6js4JkVozkkrjiw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-lambdas-driver/-/server-lambdas-driver-5.0.0.tgz", + "integrity": "sha512-tnMxsxKr2zajQ64Ew7zcTKclK2Rkp7cqK4ghiuYkzhdbt7ZxIMVmkSW3B5/DXDSxVoi4VR6q1BA6cMnGJMcwsw==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/server-services-client": "~4.0.1", - "@fluidframework/server-services-core": "~4.0.1", - "@fluidframework/server-services-telemetry": "~4.0.1", + "@fluidframework/server-services-client": "~5.0.0", + "@fluidframework/server-services-core": "~5.0.0", + "@fluidframework/server-services-telemetry": "~5.0.0", "assert": "^2.0.0", "async": "^3.2.2", "events": "^3.1.0", @@ -3827,36 +3258,36 @@ } }, "node_modules/@fluidframework/server-local-server": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/server-local-server/-/server-local-server-4.0.1.tgz", - "integrity": "sha512-zVpOa5cYOE9eWLxwNKr/pZeXbMfa6X8mBQHuxC9ZjOJdw4w/PDWxmemD48uusLn80JPIW1Km6GtTwRwz278oLw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-local-server/-/server-local-server-5.0.0.tgz", + "integrity": "sha512-v+IBLojcZm1azQhiSEPCt3A2/xByiqDQ7/0gdkFenGrnEvnJ/9r/vv6ON0vAWFqDXov1Nu6kwEGA1bXIZTeHQw==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/server-lambdas": "~4.0.1", - "@fluidframework/server-memory-orderer": "~4.0.1", - "@fluidframework/server-services-client": "~4.0.1", - "@fluidframework/server-services-core": "~4.0.1", - "@fluidframework/server-services-telemetry": "~4.0.1", - "@fluidframework/server-test-utils": "~4.0.1", + "@fluidframework/server-lambdas": "~5.0.0", + "@fluidframework/server-memory-orderer": "~5.0.0", + "@fluidframework/server-services-client": "~5.0.0", + "@fluidframework/server-services-core": "~5.0.0", + "@fluidframework/server-services-telemetry": "~5.0.0", + "@fluidframework/server-test-utils": "~5.0.0", "debug": "^4.3.4", - "events": "^3.1.0", + "events_pkg": "npm:events@^3.1.0", "jsrsasign": "^11.0.0", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/server-memory-orderer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/server-memory-orderer/-/server-memory-orderer-4.0.1.tgz", - "integrity": "sha512-NwLAKtbVXd+8OuEjO2G/qzAaXvPQCPIUGsBja2jSTMqlKmKWspW5p0GOgFWxoQfSj1DcuhqoDmh2EGXAGu5AJQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-memory-orderer/-/server-memory-orderer-5.0.0.tgz", + "integrity": "sha512-S5G2TwHXlewGkZ3jAtUKr/vpku0LPvhApktOVtAidIGHlKJP0kjLiom/KZihKZT5h2KqIhFBy56JgkXPFYkNeQ==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/protocol-base": "~4.0.1", + "@fluidframework/protocol-base": "~5.0.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/server-lambdas": "~4.0.1", - "@fluidframework/server-services-client": "~4.0.1", - "@fluidframework/server-services-core": "~4.0.1", - "@fluidframework/server-services-telemetry": "~4.0.1", + "@fluidframework/server-lambdas": "~5.0.0", + "@fluidframework/server-services-client": "~5.0.0", + "@fluidframework/server-services-core": "~5.0.0", + "@fluidframework/server-services-telemetry": "~5.0.0", "@types/debug": "^4.1.5", "@types/double-ended-queue": "^2.1.0", "@types/lodash": "^4.14.118", @@ -3873,17 +3304,17 @@ } }, "node_modules/@fluidframework/server-memory-orderer/node_modules/@types/node": { - "version": "18.19.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", - "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "version": "18.19.38", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.38.tgz", + "integrity": "sha512-SApYXUF7si4JJ+lO2o6X60OPOnA6wPpbiB09GMCkQ+JAwpa9hxUVG8p7GzA08TKQn5OhzK57rj1wFj+185YsGg==", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@fluidframework/server-memory-orderer/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, @@ -3901,13 +3332,13 @@ } }, "node_modules/@fluidframework/server-services-client": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-client/-/server-services-client-4.0.1.tgz", - "integrity": "sha512-iYbDBwfddWtq0WGQfHI807yR2anpKyY5IwJ4zh0nHbML+H/xjhdPoAMaF08r6aRFpKPtra0QSjvGHJnJneEOXA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-client/-/server-services-client-5.0.0.tgz", + "integrity": "sha512-Cijcy/WUL4U20XAVmN3tDMCYmjmwAmAl6drXBYzN6QvnwMN4PsNjwgsZdEHN+2D7wEs4o/Wb+g9DNv+Lu5EmLg==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~4.0.1", - "@fluidframework/protocol-base": "~4.0.1", + "@fluidframework/gitresources": "~5.0.0", + "@fluidframework/protocol-base": "~5.0.0", "@fluidframework/protocol-definitions": "^3.2.0", "axios": "^1.6.2", "crc-32": "1.2.0", @@ -3920,15 +3351,15 @@ } }, "node_modules/@fluidframework/server-services-core": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-core/-/server-services-core-4.0.1.tgz", - "integrity": "sha512-QV42CYmJsqBWXTJADsBxbzSAC8masjN094gbcM0xTogblI4a2KU8cOsq/7sNAnNDMSMotMPIN7lCIgz1ccxhSw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-core/-/server-services-core-5.0.0.tgz", + "integrity": "sha512-ztrGdRStwlfBFVsm+kChu6VuI764O4TbEEE1RX4gXpLlOsUVZfgYfeUiysdk5Zh7svDKT9n5LdE6VdjLvwb7IA==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~4.0.1", + "@fluidframework/gitresources": "~5.0.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/server-services-client": "~4.0.1", - "@fluidframework/server-services-telemetry": "~4.0.1", + "@fluidframework/server-services-client": "~5.0.0", + "@fluidframework/server-services-telemetry": "~5.0.0", "@types/nconf": "^0.10.2", "@types/node": "^18.17.1", "debug": "^4.3.4", @@ -3937,17 +3368,17 @@ } }, "node_modules/@fluidframework/server-services-core/node_modules/@types/node": { - "version": "18.19.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", - "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "version": "18.19.38", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.38.tgz", + "integrity": "sha512-SApYXUF7si4JJ+lO2o6X60OPOnA6wPpbiB09GMCkQ+JAwpa9hxUVG8p7GzA08TKQn5OhzK57rj1wFj+185YsGg==", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@fluidframework/server-services-telemetry": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/server-services-telemetry/-/server-services-telemetry-4.0.1.tgz", - "integrity": "sha512-he3phtBMUoZ96UiB/R2Iv26qqMeU21KjYu/RdE39otE56a80Y+5gaDDIVOaDgmsHBIwQBgXwwucG7k5BtbsN0Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-telemetry/-/server-services-telemetry-5.0.0.tgz", + "integrity": "sha512-lWymor6/GVgZpjtBOEUzCmjNJoro/oK2MKoT0MFgg70bhTgWKAOLRAkJZgq8GLGPCHW7ntZ/D+ve763kPu27CQ==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", "json-stringify-safe": "^5.0.1", @@ -3957,70 +3388,72 @@ } }, "node_modules/@fluidframework/server-test-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@fluidframework/server-test-utils/-/server-test-utils-4.0.1.tgz", - "integrity": "sha512-UnZpuJYHEQisKPoh4q35SmYYvqobHkUHRjnAGsJkhoPV6Hlk8bqjlsbXkPD21NSqPE0crGLq9QU9SH+cStEHzQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@fluidframework/server-test-utils/-/server-test-utils-5.0.0.tgz", + "integrity": "sha512-FOZ1Faw6x8VALUZh/nY6zKCfpgbPK/ylpKf/uQ2oOV9sxGNQfo5NXyHlQP1b78wfx2OYyHY5njtvYl7i9tz/zg==", "dependencies": { "@fluidframework/common-utils": "^3.1.0", - "@fluidframework/gitresources": "~4.0.1", - "@fluidframework/protocol-base": "~4.0.1", + "@fluidframework/gitresources": "~5.0.0", + "@fluidframework/protocol-base": "~5.0.0", "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/server-services-client": "~4.0.1", - "@fluidframework/server-services-core": "~4.0.1", - "@fluidframework/server-services-telemetry": "~4.0.1", + "@fluidframework/server-services-client": "~5.0.0", + "@fluidframework/server-services-core": "~5.0.0", + "@fluidframework/server-services-telemetry": "~5.0.0", + "@types/ioredis-mock": "^8.2.1", "assert": "^2.0.0", "debug": "^4.3.4", "events": "^3.1.0", + "ioredis": "^5.2.3", + "ioredis-mock": "^8.2.3", "lodash": "^4.17.21", "string-hash": "^1.1.3", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/shared-object-base": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-vg1aE/egNt9M4LoCBVx6Iu/JctxpiiyeIrrNbuCXp8dWDjzgq7UoniGz50r2NZZsoSjp/dxGHU3xDqERp3Hreg==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-suhl395tTPUaR3CPeXCh5T+NEq9QiVRWiGVDOUqLKFV7krzggg7epFUIyIOozmBHmnBi9Umc1gU7VO4qCFxs/A==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/synthesize": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/synthesize/-/synthesize-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-5B0KlTTZYQT0eQf8JMHWpq16+/djZIPBP9D7sk+kR8UTbk8izsuJR5ATez/CtjojP/DnL8cuPR/Boc3ox5JwsQ==", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/synthesize/-/synthesize-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-Ydw0awHxPOrLcx9DbX7HsfJHfKbd6Ga/ZG8ucKGbyI+IKNIZbavoE1CP6WbK/V/Pdgw7Kk3YkkEA5zaMA4m3Bw==", "dependencies": { - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, "node_modules/@fluidframework/telemetry-utils": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-DbJYgfWk+cgRkx0Ibrv9GeIW0AL8QylgXxhNz8uveY2wbFyA4nwqU6du80CdDQqU15Vhfa0v99AlZF2xF/hsAQ==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-5kJb29wCxHq3tQ7PmF3ZU0/MGofbvQiJjspRmawHAEznKlqW9qpJypAo9NUwUizL6oBiqYPIpmVvHlmLHJNi0A==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "debug": "^4.3.4", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/test-driver-definitions": { "version": "2.0.0-rc.1.0.9", - "resolved": "https://registry.npmjs.org/@fluidframework/test-driver-definitions/-/test-driver-definitions-2.0.0-rc.1.0.9.tgz", - "integrity": "sha512-7IGZDKA5241iHorW/QhLLvJOw6a6eKSv+G6nZWiejk08qvdpqcW7tFgPtdvXDoe28Or5Z+p2p3/c8D4qilDqag==", "dev": true, + "license": "MIT", "dependencies": { "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.9 <2.0.0-rc.1.1.0", "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.9 <2.0.0-rc.1.1.0", @@ -4030,68 +3463,64 @@ }, "node_modules/@fluidframework/test-driver-definitions/node_modules/@fluidframework/core-interfaces": { "version": "2.0.0-rc.1.0.9", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.0.0-rc.1.0.9.tgz", - "integrity": "sha512-o7J+UNzfSU7ImQmT96TK27UJ6o2LB1sKBWxyaAsl5FMicBESIX6669yXE/jggBXoDZndUZfISBXRukDjhiQy0w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@fluidframework/test-driver-definitions/node_modules/@fluidframework/driver-definitions": { "version": "2.0.0-rc.1.0.9", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.0.0-rc.1.0.9.tgz", - "integrity": "sha512-kefQ7jZQWxloRymUaZN5dqHx2CPnNVxAZS9H6wYitVstK4TN2KiCKGRm3kTXGyy2zGrF1L115+b9C8pH/8O6Ww==", "dev": true, + "license": "MIT", "dependencies": { "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.9 <2.0.0-rc.1.1.0", "@fluidframework/protocol-definitions": "^3.1.0" } }, "node_modules/@fluidframework/test-runtime-utils": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/test-runtime-utils/-/test-runtime-utils-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-2wkiWwuIA7NyODGKD/Q0j80Et+ga0HUZQrQ7IvtUV/gQSlfHL9r1HKg9WBpY/Mz5R4ZvguErSvvtdCLFznM1Kg==", - "dev": true, - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/routerlicious-driver": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/test-runtime-utils/-/test-runtime-utils-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-UQYzmWcbsr89dZ93jevvHPzVyct/dWqVUJqUivtQGSCRwN+iBnZXouy7AUu6r4BnLXiJsrGSn9Rg29Kmb2aQlQ==", + "dev": true, + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "jsrsasign": "^11.0.0", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/test-utils": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/test-utils/-/test-utils-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-DEIu5G884sUMek8DiTVAxvrSpBO7iWxssn7CoZVuFG5NeOQsvRdLdGxaWYl98B/hVzzrlL5rwjuImfuoJjYnsw==", - "dependencies": { - "@fluid-internal/test-driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/aqueduct": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-loader": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/local-driver": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/map": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/request-handler": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/routerlicious-driver": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/test-utils/-/test-utils-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-IV/wYRfaEbutZFE/Y8lDd+wa23nhZPaxDFjdSxldbejJd9vrq5bNQFuA/ynTVdXCz6ctZV8DtrAsHFflJj+NZw==", + "dependencies": { + "@fluid-internal/test-driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/aqueduct": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/local-driver": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/map": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/request-handler": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/routerlicious-driver": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "best-random": "^1.0.0", "debug": "^4.3.4", "mocha": "^10.2.0", @@ -4099,21 +3528,21 @@ } }, "node_modules/@fluidframework/tree": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/@fluidframework/tree/-/tree-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-ISow2rijoRIbwn+q73ATvszazyoPsBvW3ITjfG1as93VhjqT/sNxHFL1UBH6yDSL/LlW1tbxqQ8ApQgakEfsew==", - "dependencies": { - "@fluid-internal/client-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-runtime": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-interfaces": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/core-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/datastore-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/id-compressor": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/protocol-definitions": "^3.2.0", - "@fluidframework/runtime-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/runtime-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/shared-object-base": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/telemetry-utils": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/@fluidframework/tree/-/tree-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-SiDJwakgNeOUxaaDVjKS+9d9RhHyuxmOWlosRIg2DX4Wzal1Noh4X1vz/8PRGqD74BOGrETc2r4qn82APExYSw==", + "dependencies": { + "@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-runtime": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/datastore-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/id-compressor": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/runtime-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/telemetry-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", "@sinclair/typebox": "^0.32.29", "@tylerbu/sorted-btree-es6": "^1.8.0", "@ungap/structured-clone": "^1.2.0", @@ -4122,8 +3551,7 @@ }, "node_modules/@griffel/core": { "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.15.2.tgz", - "integrity": "sha512-RlsIXoSS3gaYykUgxFpwKAs/DV9cRUKp3CW1kt3iPAtsDTWn/o+8bT1jvBws/tMM2GBu/Uc0EkaIzUPqD7uA+Q==", + "license": "MIT", "dependencies": { "@emotion/hash": "^0.9.0", "@griffel/style-types": "^1.0.3", @@ -4135,8 +3563,7 @@ }, "node_modules/@griffel/react": { "version": "1.5.20", - "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.20.tgz", - "integrity": "sha512-1P2yaPctENFSCwyPIYXBmgpNH68c0lc/jwSzPij1QATHDK1AASKuSeq6hW108I67RKjhRyHCcALshdZ3GcQXSg==", + "license": "MIT", "dependencies": { "@griffel/core": "^1.15.2", "tslib": "^2.1.0" @@ -4147,32 +3574,28 @@ }, "node_modules/@griffel/style-types": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@griffel/style-types/-/style-types-1.0.3.tgz", - "integrity": "sha512-AzbbYV/EobNIBtfMtyu2edFin895gjVxtu1nsRhTETUAIb0/LCZoue3Jd/kFLuPwe95rv5WRUBiQpVwJsrrFcw==", + "license": "MIT", "dependencies": { "csstype": "^3.1.3" } }, "node_modules/@hapi/hoek": { "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@hapi/topo": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" } }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", "debug": "^4.3.1", @@ -4184,9 +3607,8 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -4197,15 +3619,23 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@ioredis/as-callback": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@ioredis/as-callback/-/as-callback-3.0.0.tgz", + "integrity": "sha512-Kqv1rZ3WbgOrS+hgzJ5xG5WQuhvzzSTRYvNeyPMLOAM78MHSnuKI20JeJGbpuAt//LCuP0vsexZcorqW7kWhJg==" + }, + "node_modules/@ioredis/commands": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", + "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -4219,18 +3649,16 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -4241,9 +3669,8 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4254,9 +3681,8 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -4266,9 +3692,8 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -4281,9 +3706,8 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -4293,33 +3717,29 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/environment": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/fake-timers": "^27.5.1", "@jest/types": "^27.5.1", @@ -4332,9 +3752,8 @@ }, "node_modules/@jest/environment/node_modules/@jest/types": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -4348,17 +3767,15 @@ }, "node_modules/@jest/environment/node_modules/@types/yargs": { "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@jest/expect-utils": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" }, @@ -4368,9 +3785,8 @@ }, "node_modules/@jest/fake-timers": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@sinonjs/fake-timers": "^8.0.1", @@ -4385,9 +3801,8 @@ }, "node_modules/@jest/fake-timers/node_modules/@jest/types": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -4401,18 +3816,16 @@ }, "node_modules/@jest/fake-timers/node_modules/@types/yargs": { "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@jest/fake-timers/node_modules/jest-message-util": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.5.1", @@ -4430,9 +3843,8 @@ }, "node_modules/@jest/fake-timers/node_modules/jest-util": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*", @@ -4447,8 +3859,7 @@ }, "node_modules/@jest/schemas": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -4458,13 +3869,11 @@ }, "node_modules/@jest/schemas/node_modules/@sinclair/typebox": { "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + "license": "MIT" }, "node_modules/@jest/types": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -4479,9 +3888,8 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -4493,27 +3901,24 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -4522,15 +3927,13 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", - "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -4538,8 +3941,7 @@ }, "node_modules/@juggle/resize-observer": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", - "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==" + "license": "Apache-2.0" }, "node_modules/@live-share-private/test-utils": { "resolved": "internal/test-utils", @@ -4621,29 +4023,22 @@ "resolved": "packages/live-share-react", "link": true }, - "node_modules/@microsoft/live-share-turbo": { - "resolved": "packages/live-share-turbo", - "link": true - }, "node_modules/@microsoft/teams-js": { "version": "2.20.0", - "resolved": "https://registry.npmjs.org/@microsoft/teams-js/-/teams-js-2.20.0.tgz", - "integrity": "sha512-bvVNYJIuD+G0rWVXWXDpdPZoEXZ79lOloJx0LKAMNtVKxR0EY6p9wP+GJhkIFaptuTPm4V4uwzqpWIiMHAU0UQ==", + "license": "MIT", "dependencies": { "debug": "^4.3.3" } }, "node_modules/@microsoft/tsdoc": { "version": "0.14.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", - "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@microsoft/tsdoc-config": { "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", - "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", "dev": true, + "license": "MIT", "dependencies": { "@microsoft/tsdoc": "0.14.2", "ajv": "~6.12.6", @@ -4653,9 +4048,8 @@ }, "node_modules/@microsoft/tsdoc-config/node_modules/resolve": { "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.1.0", "path-parse": "^1.0.6" @@ -4666,9 +4060,8 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -4679,18 +4072,16 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -4701,9 +4092,8 @@ }, "node_modules/@puppeteer/browsers": { "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz", - "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "debug": "4.3.4", "extract-zip": "2.0.1", @@ -4730,9 +4120,8 @@ }, "node_modules/@puppeteer/browsers/node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -4744,24 +4133,21 @@ }, "node_modules/@puppeteer/browsers/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@puppeteer/browsers/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@puppeteer/browsers/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4773,9 +4159,8 @@ }, "node_modules/@puppeteer/browsers/node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4790,18 +4175,16 @@ }, "node_modules/@puppeteer/browsers/node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/@puppeteer/browsers/node_modules/yargs": { "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -4817,32 +4200,28 @@ }, "node_modules/@puppeteer/browsers/node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/@remix-run/router": { "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.0.tgz", - "integrity": "sha512-HOil5aFtme37dVQTB6M34G95kPM3MMuqSmIRVCC52eKV+Y/tGSqw9P3rWhlAx6A+mz+MoX+XxsGsNJbaI5qCgQ==", + "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/@rushstack/eslint-patch": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.4.0.tgz", - "integrity": "sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@rushstack/eslint-plugin": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-plugin/-/eslint-plugin-0.13.1.tgz", - "integrity": "sha512-qQ6iPCm8SFuY+bpcSv5hlYtdwDHcFlE6wlpUHa0ywG9tGVBYM5But8S4qVRFq1iejAuFX+ubNUOyFJHvxpox+A==", "dev": true, + "license": "MIT", "dependencies": { "@rushstack/tree-pattern": "0.3.1", "@typescript-eslint/experimental-utils": "~5.59.2" @@ -4853,9 +4232,8 @@ }, "node_modules/@rushstack/eslint-plugin-security": { "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-plugin-security/-/eslint-plugin-security-0.7.1.tgz", - "integrity": "sha512-84N42tlONhcbXdlk5Rkb+/pVxPnH+ojX8XwtFoecCRV88/4Ii7eGEyJPb73lOpHaE3NJxLzLVIeixKYQmdjImA==", "dev": true, + "license": "MIT", "dependencies": { "@rushstack/tree-pattern": "0.3.1", "@typescript-eslint/experimental-utils": "~5.59.2" @@ -4866,50 +4244,44 @@ }, "node_modules/@rushstack/tree-pattern": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@rushstack/tree-pattern/-/tree-pattern-0.3.1.tgz", - "integrity": "sha512-2yn4qTkXZTByQffL3ymS6viYuyZk3YnJT49bopGBlm9Thtyfa7iuFUV6tt+09YIRO1sjmSWILf4dPj6+Dr5YVA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@sideway/address": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" } }, "node_modules/@sideway/formula": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@sinclair/typebox": { - "version": "0.32.30", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.32.30.tgz", - "integrity": "sha512-IYK1H0k2sHVB2GjzBK2DXBErhex45GoLuPdgn8lNw5t0+5elIuhpixOMPobFyq6kE0AGIBa4+76Ph4enco0q2Q==" + "version": "0.32.33", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.32.33.tgz", + "integrity": "sha512-jM50BfkKA0fwfj0uRRO6asfNfbU0oZipJIb/bL2+BUH/THjuEf2BMiqBOvKfBji5Z9t59NboZQGNfKZbdV50Iw==" }, "node_modules/@sinonjs/commons": { "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^1.7.0" } @@ -4921,16 +4293,14 @@ }, "node_modules/@swc/helpers": { "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", - "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@testing-library/dom": { "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", - "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", + "license": "MIT", "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", @@ -4948,8 +4318,7 @@ }, "node_modules/@testing-library/jest-dom": { "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", - "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.0.1", "@babel/runtime": "^7.9.2", @@ -4969,8 +4338,7 @@ }, "node_modules/@testing-library/jest-dom/node_modules/chalk": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4981,8 +4349,7 @@ }, "node_modules/@testing-library/react": { "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", - "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^8.5.0", @@ -4998,8 +4365,7 @@ }, "node_modules/@testing-library/react/node_modules/@testing-library/dom": { "version": "8.20.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", - "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -5016,8 +4382,7 @@ }, "node_modules/@testing-library/user-event": { "version": "14.5.2", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", - "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "license": "MIT", "engines": { "node": ">=12", "npm": ">=6" @@ -5028,46 +4393,77 @@ }, "node_modules/@tiny-calc/nano": { "version": "0.0.0-alpha.5", - "resolved": "https://registry.npmjs.org/@tiny-calc/nano/-/nano-0.0.0-alpha.5.tgz", - "integrity": "sha512-Hs37tz9ZtvK21/5s4tjt5RBa/PFHKYS0AzvdxiXuSd3+AKQN2ygxw7uwD9j0DIG9qONddg1vIASO77JIGyZzyw==" + "license": "MIT" }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@ts-morph/common": { + "version": "0.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.12", + "minimatch": "^7.4.3", + "mkdirp": "^2.1.6", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "7.4.6", "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">= 10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true + "node_modules/@ts-morph/common/node_modules/mkdirp": { + "version": "2.1.6", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/@tylerbu/sorted-btree-es6": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@tylerbu/sorted-btree-es6/-/sorted-btree-es6-1.8.0.tgz", - "integrity": "sha512-qkwgE0G5OGn7F+1fMkFZLwyjc99xCy4kmQ8p7N0Jj540HD6xU0jTPjcqELogH4f5YGMPXLqd8sQ7uOYC0QRBeg==" + "license": "MIT" }, "node_modules/@types/aria-query": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" + "license": "MIT" }, "node_modules/@types/assert": { "version": "1.5.10", - "resolved": "https://registry.npmjs.org/@types/assert/-/assert-1.5.10.tgz", - "integrity": "sha512-qEO+AUgYab7GVbeDDgUNCU3o0aZUoIMpNAe+w5LDbRxfxQX7vQAdDgwj1AroX+i8KaV56FWg0srXlSZROnsrIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/babylonjs": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/babylonjs/-/babylonjs-2.4.1.tgz", - "integrity": "sha512-vt6db2PxisxsnLvL5holHLV9vMJzELAhFq54syX/tKncTmjeraQSR1W20j9/KYLEpAFU18u76rK8utb8JlUrtQ==", - "deprecated": "This is a stub types definition for BabylonJS (http://www.babylonjs.com/). BabylonJS provides its own type definitions, so you don't need @types/babylonjs installed!", "dev": true, + "license": "MIT", "dependencies": { "babylonjs": "*" } @@ -5087,9 +4483,8 @@ }, "node_modules/@types/eslint": { "version": "8.56.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.2.tgz", - "integrity": "sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/estree": "*", @@ -5098,9 +4493,8 @@ }, "node_modules/@types/eslint-scope": { "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/eslint": "*", @@ -5109,47 +4503,49 @@ }, "node_modules/@types/estree": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@types/events": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz", - "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==" + "license": "MIT" }, "node_modules/@types/events_pkg": { "name": "@types/events", "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz", - "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==" + "license": "MIT" + }, + "node_modules/@types/ioredis-mock": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/@types/ioredis-mock/-/ioredis-mock-8.2.5.tgz", + "integrity": "sha512-cZyuwC9LGtg7s5G9/w6rpy3IOZ6F/hFR0pQlWYZESMo1xQUYbDpa6haqB4grTePjsGzcB/YLBFCjqRunK5wieg==", + "dependencies": { + "@types/node": "*", + "ioredis": ">=5" + } }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" + "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { "version": "29.5.12", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", - "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -5157,8 +4553,7 @@ }, "node_modules/@types/jest/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -5168,8 +4563,7 @@ }, "node_modules/@types/jest/node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -5181,32 +4575,27 @@ }, "node_modules/@types/jest/node_modules/react-is": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/@types/lodash": { "version": "4.14.202", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" + "license": "MIT" }, "node_modules/@types/mocha": { "version": "10.0.6", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", - "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/ms": { "version": "0.7.34", @@ -5220,27 +4609,23 @@ }, "node_modules/@types/node": { "version": "20.12.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", - "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/prop-types": { "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" + "license": "MIT" }, "node_modules/@types/react": { "version": "18.2.55", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.55.tgz", - "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==", + "license": "MIT", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -5249,40 +4634,34 @@ }, "node_modules/@types/react-dom": { "version": "18.2.19", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", - "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", + "license": "MIT", "dependencies": { "@types/react": "*" } }, "node_modules/@types/scheduler": { "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + "license": "MIT" }, "node_modules/@types/semver": { "version": "7.5.7", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz", - "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==" + "license": "MIT" }, "node_modules/@types/stack-utils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" + "license": "MIT" }, "node_modules/@types/testing-library__jest-dom": { "version": "5.14.9", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", - "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "license": "MIT", "dependencies": { "@types/jest": "*" } }, "node_modules/@types/uuid": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/ws": { "version": "6.0.4", @@ -5294,22 +4673,19 @@ }, "node_modules/@types/yargs": { "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + "license": "MIT" }, "node_modules/@types/yauzl": { "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@types/node": "*" @@ -5317,9 +4693,8 @@ }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.62.0", @@ -5351,9 +4726,8 @@ }, "node_modules/@typescript-eslint/experimental-utils": { "version": "5.59.11", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.59.11.tgz", - "integrity": "sha512-GkQGV0UF/V5Ra7gZMBmiD1WrYUFOJNvCZs+XQnUyJoxmqfWMXVNyB2NVCPRKefoQcpvTv9UpJyfCvsJFs8NzzQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "5.59.11" }, @@ -5370,9 +4744,8 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { "version": "5.59.11", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.11.tgz", - "integrity": "sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.59.11", "@typescript-eslint/visitor-keys": "5.59.11" @@ -5387,9 +4760,8 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { "version": "5.59.11", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.11.tgz", - "integrity": "sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -5400,9 +4772,8 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { "version": "5.59.11", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.11.tgz", - "integrity": "sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.59.11", "@typescript-eslint/visitor-keys": "5.59.11", @@ -5427,9 +4798,8 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils": { "version": "5.59.11", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.11.tgz", - "integrity": "sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", @@ -5453,9 +4823,8 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { "version": "5.59.11", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.11.tgz", - "integrity": "sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.59.11", "eslint-visitor-keys": "^3.3.0" @@ -5470,9 +4839,8 @@ }, "node_modules/@typescript-eslint/parser": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -5497,9 +4865,8 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0" @@ -5514,9 +4881,8 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "5.62.0", "@typescript-eslint/utils": "5.62.0", @@ -5541,9 +4907,8 @@ }, "node_modules/@typescript-eslint/types": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -5554,9 +4919,8 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -5581,9 +4945,8 @@ }, "node_modules/@typescript-eslint/utils": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", @@ -5607,9 +4970,8 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" @@ -5624,14 +4986,12 @@ }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + "license": "ISC" }, "node_modules/@vitejs/plugin-react": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz", - "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.20.12", "@babel/plugin-transform-react-jsx-self": "^7.18.6", @@ -5648,9 +5008,8 @@ }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", @@ -5659,30 +5018,26 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", @@ -5692,16 +5047,14 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", @@ -5712,9 +5065,8 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" @@ -5722,9 +5074,8 @@ }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, + "license": "Apache-2.0", "peer": true, "dependencies": { "@xtuc/long": "4.2.2" @@ -5732,16 +5083,14 @@ }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", @@ -5756,9 +5105,8 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", @@ -5770,9 +5118,8 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", @@ -5783,9 +5130,8 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", @@ -5798,9 +5144,8 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", @@ -5809,30 +5154,20 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true, + "license": "BSD-3-Clause", "peer": true }, "node_modules/@xtuc/long": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true, + "license": "Apache-2.0", "peer": true }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true - }, "node_modules/acorn": { "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -5840,21 +5175,10 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, "node_modules/acorn-import-assertions": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, + "license": "MIT", "peer": true, "peerDependencies": { "acorn": "^8" @@ -5862,27 +5186,16 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -5892,9 +5205,8 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -5905,9 +5217,8 @@ }, "node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5921,9 +5232,8 @@ }, "node_modules/ajv-formats": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -5938,9 +5248,8 @@ }, "node_modules/ajv-formats/node_modules/ajv": { "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -5954,15 +5263,13 @@ }, "node_modules/ajv-formats/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ajv-keywords": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peer": true, "peerDependencies": { "ajv": "^6.9.1" @@ -5970,30 +5277,26 @@ }, "node_modules/ansi-colors": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-sequence-parser": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", - "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6006,8 +5309,7 @@ }, "node_modules/anymatch": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -6018,9 +5320,8 @@ }, "node_modules/append-transform": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, + "license": "MIT", "dependencies": { "default-require-extensions": "^3.0.0" }, @@ -6030,51 +5331,44 @@ }, "node_modules/archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/are-docs-informative": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/arg": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "license": "Python-2.0" }, "node_modules/aria-query": { "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "license": "Apache-2.0", "dependencies": { "deep-equal": "^2.0.5" } }, "node_modules/arr-union": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/array-buffer-byte-length": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -6088,9 +5382,8 @@ }, "node_modules/array-includes": { "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -6107,18 +5400,16 @@ }, "node_modules/array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/array.prototype.flat": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -6134,9 +5425,8 @@ }, "node_modules/array.prototype.flatmap": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -6152,9 +5442,8 @@ }, "node_modules/array.prototype.tosorted": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", - "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -6165,9 +5454,8 @@ }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -6187,9 +5475,8 @@ }, "node_modules/arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6208,9 +5495,8 @@ }, "node_modules/ast-types": { "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.1" }, @@ -6225,22 +5511,19 @@ }, "node_modules/asynciterator.prototype": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" } }, "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "license": "MIT" }, "node_modules/available-typed-arrays": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", - "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6250,8 +5533,7 @@ }, "node_modules/axios": { "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.4", "form-data": "^4.0.0", @@ -6260,15 +5542,13 @@ }, "node_modules/b4a": { "version": "1.6.6", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", - "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/babel-loader": { "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, + "license": "MIT", "dependencies": { "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" @@ -6283,33 +5563,27 @@ }, "node_modules/babylonjs": { "version": "6.43.0", - "resolved": "https://registry.npmjs.org/babylonjs/-/babylonjs-6.43.0.tgz", - "integrity": "sha512-dcT6GE4cHq0xXrDYeQKQLXOPvqZ0lSmS/QROQkEjf/vLKwNJTgdpLl7BQyDyjxdqe7cBeiBlfKBwYPM+PT50gQ==", "dev": true, - "hasInstallScript": true + "hasInstallScript": true, + "license": "Apache-2.0" }, "node_modules/babylonjs-gltf2interface": { "version": "6.43.0", - "resolved": "https://registry.npmjs.org/babylonjs-gltf2interface/-/babylonjs-gltf2interface-6.43.0.tgz", - "integrity": "sha512-+orCb4giE41Ysl8d2ZOeYCRBsT6FnmDwkW9+sHcEACUEpdtFeTShZ+ckucDAB/Ia2e3ah9F2hADbGA/8TfFngg==", + "license": "Apache-2.0", "peer": true }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "license": "MIT" }, "node_modules/bare-events": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.0.tgz", - "integrity": "sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==", "dev": true, + "license": "Apache-2.0", "optional": true }, "node_modules/base64-js": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -6323,41 +5597,37 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/basic-ftp": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.4.tgz", - "integrity": "sha512-8PzkB0arJFV4jJWSGOYR+OEic6aeKMu/osRhBULN6RY0ykby6LKhbmuQ5ublvaas5BOwboah5D87nrHyuh8PPA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/best-random": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/best-random/-/best-random-1.0.3.tgz", - "integrity": "sha512-zrncs76CBFyhE7KVsq85lsc/TT5PUfGTS8arh2aJZcIzQU+WdGNwWYwFsn+w/nuedk04efQdqMy8g5C5pw4shQ==" + "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/bluebird": { "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6365,8 +5635,7 @@ }, "node_modules/braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -6376,13 +5645,10 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + "license": "ISC" }, "node_modules/browserslist": { "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -6398,6 +5664,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001587", "electron-to-chromium": "^1.4.668", @@ -6413,8 +5680,6 @@ }, "node_modules/buffer": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -6429,6 +5694,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -6436,24 +5702,21 @@ }, "node_modules/buffer-crc32": { "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/builtin-modules": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -6463,9 +5726,8 @@ }, "node_modules/caching-transform": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, + "license": "MIT", "dependencies": { "hasha": "^5.0.0", "make-dir": "^3.0.0", @@ -6478,8 +5740,7 @@ }, "node_modules/call-bind": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -6496,26 +5757,22 @@ }, "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { "version": "1.0.30001587", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz", - "integrity": "sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==", "dev": true, "funding": [ { @@ -6530,12 +5787,12 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6549,23 +5806,21 @@ }, "node_modules/check-more-types": { "version": "2.24.0", - "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/chokidar": { "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -6584,8 +5839,7 @@ }, "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -6595,9 +5849,8 @@ }, "node_modules/chrome-trace-event": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=6.0" @@ -6605,9 +5858,8 @@ }, "node_modules/chromium-bidi": { "version": "0.4.16", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", - "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "mitt": "3.0.0" }, @@ -6617,23 +5869,21 @@ }, "node_modules/ci-info": { "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/clean-regexp": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", - "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -6643,27 +5893,24 @@ }, "node_modules/clean-regexp/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cliui": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^3.1.0", "strip-ansi": "^5.2.0", @@ -6672,18 +5919,16 @@ }, "node_modules/cliui/node_modules/ansi-regex": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cliui/node_modules/strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -6693,9 +5938,8 @@ }, "node_modules/clone-deep": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", - "integrity": "sha512-we+NuQo2DHhSl+DP6jlUiAhyAjBQrYnpOk15rN6c6JSPScjiCLh8IbSU+VTcph6YS3o7mASE8a0+gbZ7ChLpgg==", "dev": true, + "license": "MIT", "dependencies": { "for-own": "^0.1.3", "is-plain-object": "^2.0.1", @@ -6707,10 +5951,22 @@ "node": ">=0.10.0" } }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/code-block-writer": { + "version": "12.0.0", + "dev": true, + "license": "MIT" + }, "node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6720,13 +5976,11 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -6736,45 +5990,39 @@ }, "node_modules/commander": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/comment-parser": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.0.tgz", - "integrity": "sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.0.0" } }, "node_modules/common-path-prefix": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concurrently": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", - "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^2.4.2", "date-fns": "^2.0.1", @@ -6795,9 +6043,8 @@ }, "node_modules/concurrently/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -6807,9 +6054,8 @@ }, "node_modules/concurrently/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -6821,9 +6067,8 @@ }, "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -6833,42 +6078,37 @@ }, "node_modules/concurrently/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/concurrently/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concurrently/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/concurrently/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/concurrently/node_modules/supports-color": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -6878,15 +6118,13 @@ }, "node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cosmiconfig": { "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", "dev": true, + "license": "MIT", "dependencies": { "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -6902,8 +6140,7 @@ }, "node_modules/crc-32": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "license": "Apache-2.0", "dependencies": { "exit-on-epipe": "~1.0.1", "printj": "~1.1.0" @@ -6925,9 +6162,8 @@ }, "node_modules/cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -6939,31 +6175,16 @@ }, "node_modules/css.escape": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" - }, - "node_modules/cssstyle": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", - "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", - "dev": true, - "dependencies": { - "rrweb-cssom": "^0.6.0" - }, - "engines": { - "node": ">=14" - } + "license": "MIT" }, "node_modules/csstype": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "license": "MIT" }, "node_modules/cwd": { "version": "0.10.0", - "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", - "integrity": "sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==", "dev": true, + "license": "MIT", "dependencies": { "find-pkg": "^0.1.2", "fs-exists-sync": "^0.1.0" @@ -6974,66 +6195,16 @@ }, "node_modules/data-uri-to-buffer": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } }, - "node_modules/data-urls": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", - "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/data-urls/node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", - "dev": true, - "dependencies": { - "punycode": "^2.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/data-urls/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", - "dev": true, - "dependencies": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=14" - } - }, "node_modules/date-fns": { "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.21.0" }, @@ -7047,8 +6218,7 @@ }, "node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -7063,23 +6233,15 @@ }, "node_modules/decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, "node_modules/deep-equal": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", - "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.5", @@ -7109,15 +6271,13 @@ }, "node_modules/deep-is": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/default-require-extensions": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", - "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", "dev": true, + "license": "MIT", "dependencies": { "strip-bom": "^4.0.0" }, @@ -7130,8 +6290,7 @@ }, "node_modules/define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -7146,8 +6305,7 @@ }, "node_modules/define-properties": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -7162,9 +6320,8 @@ }, "node_modules/degenerator": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", - "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", "dev": true, + "license": "MIT", "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", @@ -7176,39 +6333,42 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { "node": ">=0.4.0" } }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" + } + }, "node_modules/devtools-protocol": { "version": "0.0.1147663", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz", - "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/diff": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/diff-sequences": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -7218,9 +6378,8 @@ }, "node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -7230,45 +6389,20 @@ }, "node_modules/dom-accessibility-api": { "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" + "license": "MIT" }, "node_modules/dom-helpers": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" } }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/dotenv": { "version": "16.4.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.4.tgz", - "integrity": "sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -7278,9 +6412,8 @@ }, "node_modules/dotenv-cli": { "version": "7.3.0", - "resolved": "https://registry.npmjs.org/dotenv-cli/-/dotenv-cli-7.3.0.tgz", - "integrity": "sha512-314CA4TyK34YEJ6ntBf80eUY+t1XaFLyem1k9P0sX1gn30qThZ5qZr/ZwE318gEnzyYP9yj9HJk6SqwE0upkfw==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "dotenv": "^16.3.0", @@ -7293,40 +6426,34 @@ }, "node_modules/dotenv-expand": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", - "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" } }, "node_modules/double-ended-queue": { "version": "2.1.0-0", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "integrity": "sha512-+BNfZ+deCo8hMNpDqDnvT+c0XpJ5cUa6mqYq89bho2Ifze4URTqRkcwR399hWoTrTkbZ/XJYDgP6rc7pRgffEQ==" + "license": "MIT" }, "node_modules/duplexer": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { "version": "1.4.673", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz", - "integrity": "sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/encoding": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -7335,35 +6462,34 @@ }, "node_modules/end-of-stream": { "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/engine.io-client": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", - "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", - "ws": "~8.11.0", + "ws": "~8.17.1", "xmlhttprequest-ssl": "~2.0.0" } }, "node_modules/engine.io-client/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -7384,9 +6510,8 @@ }, "node_modules/enhanced-resolve": { "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -7395,32 +6520,18 @@ "node": ">=10.13.0" } }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/error-ex": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { "version": "1.22.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", - "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -7473,8 +6584,7 @@ }, "node_modules/es-define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -7484,16 +6594,14 @@ }, "node_modules/es-errors": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-get-iterator": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -7511,9 +6619,8 @@ }, "node_modules/es-iterator-helpers": { "version": "1.0.17", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz", - "integrity": "sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==", "dev": true, + "license": "MIT", "dependencies": { "asynciterator.prototype": "^1.0.0", "call-bind": "^1.0.7", @@ -7537,16 +6644,14 @@ }, "node_modules/es-module-lexer": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/es-set-tostringtag": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.2", "has-tostringtag": "^1.0.0", @@ -7558,18 +6663,16 @@ }, "node_modules/es-shim-unscopables": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -7584,16 +6687,14 @@ }, "node_modules/es6-error": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esbuild": { "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -7627,16 +6728,14 @@ }, "node_modules/escalade": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -7646,9 +6745,8 @@ }, "node_modules/escodegen": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -7667,9 +6765,8 @@ }, "node_modules/eslint": { "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -7722,9 +6819,8 @@ }, "node_modules/eslint-config-prettier": { "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -7734,9 +6830,8 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -7745,18 +6840,16 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-import-resolver-node/node_modules/resolve": { "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -7771,9 +6864,8 @@ }, "node_modules/eslint-import-resolver-typescript": { "version": "3.6.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", - "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", "dev": true, + "license": "ISC", "dependencies": { "debug": "^4.3.4", "enhanced-resolve": "^5.12.0", @@ -7796,9 +6888,8 @@ }, "node_modules/eslint-module-utils": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -7813,18 +6904,16 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-eslint-comments": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", - "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5", "ignore": "^5.0.5" @@ -7841,9 +6930,8 @@ }, "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -7851,9 +6939,8 @@ "node_modules/eslint-plugin-import": { "name": "eslint-plugin-i", "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-i/-/eslint-plugin-i-2.29.1.tgz", - "integrity": "sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4", "doctrine": "^3.0.0", @@ -7876,9 +6963,8 @@ }, "node_modules/eslint-plugin-jsdoc": { "version": "46.8.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.8.2.tgz", - "integrity": "sha512-5TSnD018f3tUJNne4s4gDWQflbsgOycIKEUBoCLn6XtBMgNHxQFmV8vVxUtiPxAQq8lrX85OaSG/2gnctxw9uQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@es-joy/jsdoccomment": "~0.40.1", "are-docs-informative": "^0.0.2", @@ -7899,9 +6985,8 @@ }, "node_modules/eslint-plugin-prettier": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0" }, @@ -7920,9 +7005,8 @@ }, "node_modules/eslint-plugin-promise": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", "dev": true, + "license": "ISC", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -7932,9 +7016,8 @@ }, "node_modules/eslint-plugin-react": { "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flatmap": "^1.3.1", @@ -7962,9 +7045,8 @@ }, "node_modules/eslint-plugin-react-hooks": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7974,9 +7056,8 @@ }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -7986,18 +7067,16 @@ }, "node_modules/eslint-plugin-react/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-tsdoc": { "version": "0.2.17", - "resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.17.tgz", - "integrity": "sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==", "dev": true, + "license": "MIT", "dependencies": { "@microsoft/tsdoc": "0.14.2", "@microsoft/tsdoc-config": "0.16.2" @@ -8005,9 +7084,8 @@ }, "node_modules/eslint-plugin-unicorn": { "version": "48.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-48.0.1.tgz", - "integrity": "sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.22.5", "@eslint-community/eslint-utils": "^4.4.0", @@ -8037,9 +7115,8 @@ }, "node_modules/eslint-plugin-unicorn/node_modules/jsesc": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -8049,18 +7126,16 @@ }, "node_modules/eslint-rule-composer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", - "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -8071,18 +7146,16 @@ }, "node_modules/eslint-scope/node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -8092,9 +7165,8 @@ }, "node_modules/eslint/node_modules/eslint-scope": { "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -8108,9 +7180,8 @@ }, "node_modules/espree": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -8125,9 +7196,8 @@ }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -8138,9 +7208,8 @@ }, "node_modules/esquery": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -8150,9 +7219,8 @@ }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -8162,27 +7230,24 @@ }, "node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esutils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/event-stream": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", "dev": true, + "license": "MIT", "dependencies": { "duplexer": "~0.1.1", "from": "~0", @@ -8195,8 +7260,7 @@ }, "node_modules/events": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -8204,17 +7268,15 @@ "node_modules/events_pkg": { "name": "events", "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", "engines": { "node": ">=0.8.x" } }, "node_modules/execa": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -8235,9 +7297,8 @@ }, "node_modules/execa/node_modules/get-stream": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -8247,8 +7308,6 @@ }, "node_modules/exit": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -8256,17 +7315,15 @@ }, "node_modules/exit-on-epipe": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "license": "Apache-2.0", "engines": { "node": ">=0.8" } }, "node_modules/expand-tilde": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==", "dev": true, + "license": "MIT", "dependencies": { "os-homedir": "^1.0.1" }, @@ -8276,8 +7333,7 @@ }, "node_modules/expect": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", "jest-get-type": "^29.6.3", @@ -8291,15 +7347,13 @@ }, "node_modules/expect-puppeteer": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/expect-puppeteer/-/expect-puppeteer-6.1.1.tgz", - "integrity": "sha512-cnQF96qdoEcOD63j5NQMc0RtW9WRMW/WHKXEKsuDQ2tszhVH3qC7zkXXS4D0LTt9qCB3DEExioqylsQXvqPrUw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/extract-zip": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -8317,27 +7371,23 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-fifo": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -8351,9 +7401,8 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -8363,39 +7412,52 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fd-slicer": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, + "license": "MIT", "dependencies": { "pend": "~1.2.0" } }, + "node_modules/fengari": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/fengari/-/fengari-0.1.4.tgz", + "integrity": "sha512-6ujqUuiIYmcgkGz8MGAdERU57EIluGGPSUgGPTsco657EHa+srq0S3/YUl/r9kx1+D+d4rGfYObd+m8K22gB1g==", + "dependencies": { + "readline-sync": "^1.4.9", + "sprintf-js": "^1.1.1", + "tmp": "^0.0.33" + } + }, + "node_modules/fengari-interop": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fengari-interop/-/fengari-interop-0.1.3.tgz", + "integrity": "sha512-EtZ+oTu3kEwVJnoymFPBVLIbQcCoy9uWCVnMA6h3M/RqHkUBsLYp29+RRHf9rKr6GwjubWREU1O7RretFIXjHw==", + "peerDependencies": { + "fengari": "^0.1.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -8405,8 +7467,7 @@ }, "node_modules/fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -8416,9 +7477,8 @@ }, "node_modules/find-cache-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, + "license": "MIT", "dependencies": { "common-path-prefix": "^3.0.0", "pkg-dir": "^7.0.0" @@ -8432,9 +7492,8 @@ }, "node_modules/find-file-up": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", - "integrity": "sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==", "dev": true, + "license": "MIT", "dependencies": { "fs-exists-sync": "^0.1.0", "resolve-dir": "^0.1.0" @@ -8445,9 +7504,8 @@ }, "node_modules/find-pkg": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", - "integrity": "sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==", "dev": true, + "license": "MIT", "dependencies": { "find-file-up": "^0.1.2" }, @@ -8457,9 +7515,8 @@ }, "node_modules/find-process": { "version": "1.4.7", - "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.7.tgz", - "integrity": "sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "commander": "^5.1.0", @@ -8471,8 +7528,7 @@ }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -8486,17 +7542,15 @@ }, "node_modules/flat": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/flat-cache": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -8508,9 +7562,8 @@ }, "node_modules/flat-cache/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -8523,34 +7576,34 @@ }, "node_modules/flatted": { "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fluid-framework": { - "version": "2.0.0-rc.4.0.2", - "resolved": "https://registry.npmjs.org/fluid-framework/-/fluid-framework-2.0.0-rc.4.0.2.tgz", - "integrity": "sha512-Cukij46svhsApr2ylP/aTM9CBPPL0lyCjf6p7Tth9lyakyfJqzTc+zvd8ZaFjDjR4o2WnT+ZFmWElaVFt6z6Pg==", + "version": "2.0.0-rc.5.0.1", + "resolved": "https://registry.npmjs.org/fluid-framework/-/fluid-framework-2.0.0-rc.5.0.1.tgz", + "integrity": "sha512-UjrochjZQA0Z3VVIVQH8q0d2nR/79kggDWM4vdnp1gpq7kcgtfhoz33T4vqS1tNDLSpSLywlSTSqY5AP4+6wUA==", "dependencies": { - "@fluidframework/container-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/container-loader": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/driver-definitions": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/fluid-static": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/map": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/sequence": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0", - "@fluidframework/tree": ">=2.0.0-rc.4.0.2 <2.0.0-rc.4.1.0" + "@fluidframework/container-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/container-loader": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/fluid-static": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/map": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/sequence": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/shared-object-base": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0", + "@fluidframework/tree": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0" } }, "node_modules/follow-redirects": { "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -8562,26 +7615,23 @@ }, "node_modules/for-each": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", "dev": true, + "license": "MIT", "dependencies": { "for-in": "^1.0.1" }, @@ -8591,9 +7641,8 @@ }, "node_modules/foreground-child": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^3.0.2" @@ -8604,8 +7653,7 @@ }, "node_modules/form-data": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -8617,14 +7665,11 @@ }, "node_modules/from": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fromentries": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true, "funding": [ { @@ -8639,22 +7684,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/fs-exists-sync": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/fs-extra": { "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -8666,14 +7710,11 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -8684,17 +7725,15 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/function.prototype.name": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -8710,33 +7749,29 @@ }, "node_modules/functions-have-names": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -8753,18 +7788,16 @@ }, "node_modules/get-package-type": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.0.0" } }, "node_modules/get-stream": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -8777,9 +7810,8 @@ }, "node_modules/get-symbol-description": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -8794,9 +7826,8 @@ }, "node_modules/get-tsconfig": { "version": "4.7.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", - "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", "dev": true, + "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -8806,9 +7837,8 @@ }, "node_modules/get-uri": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", - "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", "dev": true, + "license": "MIT", "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", @@ -8821,9 +7851,8 @@ }, "node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8841,9 +7870,8 @@ }, "node_modules/glob-parent": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -8853,16 +7881,14 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, + "license": "BSD-2-Clause", "peer": true }, "node_modules/global-modules": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==", "dev": true, + "license": "MIT", "dependencies": { "global-prefix": "^0.1.4", "is-windows": "^0.2.0" @@ -8873,9 +7899,8 @@ }, "node_modules/global-prefix": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==", "dev": true, + "license": "MIT", "dependencies": { "homedir-polyfill": "^1.0.0", "ini": "^1.3.4", @@ -8888,9 +7913,8 @@ }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -8900,9 +7924,8 @@ }, "node_modules/globals": { "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -8915,9 +7938,8 @@ }, "node_modules/globalthis": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.3" }, @@ -8930,9 +7952,8 @@ }, "node_modules/globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -8950,8 +7971,7 @@ }, "node_modules/gopd": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -8961,35 +7981,30 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/has-bigints": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -8999,8 +8014,7 @@ }, "node_modules/has-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9010,8 +8024,7 @@ }, "node_modules/has-symbols": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9021,8 +8034,7 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -9035,9 +8047,8 @@ }, "node_modules/hasha": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, + "license": "MIT", "dependencies": { "is-stream": "^2.0.0", "type-fest": "^0.8.0" @@ -9051,17 +8062,15 @@ }, "node_modules/hasha/node_modules/type-fest": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/hasown": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -9071,17 +8080,15 @@ }, "node_modules/he": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", "bin": { "he": "bin/he" } }, "node_modules/homedir-polyfill": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, + "license": "MIT", "dependencies": { "parse-passwd": "^1.0.0" }, @@ -9091,33 +8098,18 @@ }, "node_modules/hosted-git-info": { "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "dev": true, - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } + "license": "ISC" }, "node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-proxy-agent": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -9128,9 +8120,8 @@ }, "node_modules/https-proxy-agent": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -9141,18 +8132,17 @@ }, "node_modules/human-signals": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "devOptional": true, + "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -9162,8 +8152,6 @@ }, "node_modules/ieee754": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -9177,22 +8165,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/import-fresh": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -9206,25 +8193,22 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -9232,19 +8216,16 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/internal-slot": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -9254,11 +8235,52 @@ "node": ">= 0.4" } }, + "node_modules/ioredis": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.1.tgz", + "integrity": "sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==", + "dependencies": { + "@ioredis/commands": "^1.1.1", + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.4", + "denque": "^2.1.0", + "lodash.defaults": "^4.2.0", + "lodash.isarguments": "^3.1.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ioredis" + } + }, + "node_modules/ioredis-mock": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ioredis-mock/-/ioredis-mock-8.9.0.tgz", + "integrity": "sha512-yIglcCkI1lvhwJVoMsR51fotZVsPsSk07ecTCgRTRlicG0Vq3lke6aAaHklyjmRNRsdYAgswqC2A0bPtQK4LSw==", + "dependencies": { + "@ioredis/as-callback": "^3.0.0", + "@ioredis/commands": "^1.2.0", + "fengari": "^0.1.4", + "fengari-interop": "^0.1.3", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12.22" + }, + "peerDependencies": { + "@types/ioredis-mock": "^8", + "ioredis": "^5" + } + }, "node_modules/ip-address": { "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dev": true, + "license": "MIT", "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -9269,8 +8291,7 @@ }, "node_modules/is-arguments": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -9284,8 +8305,7 @@ }, "node_modules/is-array-buffer": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -9299,15 +8319,13 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-async-function": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -9320,8 +8338,7 @@ }, "node_modules/is-bigint": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -9331,8 +8348,7 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -9342,8 +8358,7 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -9357,15 +8372,13 @@ }, "node_modules/is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-builtin-module": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", "dev": true, + "license": "MIT", "dependencies": { "builtin-modules": "^3.3.0" }, @@ -9378,8 +8391,7 @@ }, "node_modules/is-callable": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9389,9 +8401,8 @@ }, "node_modules/is-core-module": { "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -9401,8 +8412,7 @@ }, "node_modules/is-date-object": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -9415,26 +8425,23 @@ }, "node_modules/is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-finalizationregistry": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -9444,17 +8451,15 @@ }, "node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/is-generator-function": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -9467,8 +8472,7 @@ }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -9478,8 +8482,7 @@ }, "node_modules/is-map": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9501,9 +8504,8 @@ }, "node_modules/is-negative-zero": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9513,16 +8515,14 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -9535,26 +8535,23 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-obj": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -9562,16 +8559,9 @@ "node": ">=0.10.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, "node_modules/is-regex": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -9585,16 +8575,14 @@ }, "node_modules/is-set": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -9604,9 +8592,8 @@ }, "node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -9616,8 +8603,7 @@ }, "node_modules/is-string": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -9630,8 +8616,7 @@ }, "node_modules/is-symbol": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -9644,8 +8629,7 @@ }, "node_modules/is-typed-array": { "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.14" }, @@ -9658,14 +8642,12 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -9675,17 +8657,15 @@ }, "node_modules/is-weakmap": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakref": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -9695,8 +8675,7 @@ }, "node_modules/is-weakset": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -9707,47 +8686,41 @@ }, "node_modules/is-windows": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/isarray": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-hook": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "append-transform": "^2.0.0" }, @@ -9757,9 +8730,8 @@ }, "node_modules/istanbul-lib-instrument": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", @@ -9772,18 +8744,16 @@ }, "node_modules/istanbul-lib-instrument/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/istanbul-lib-processinfo": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", - "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", "dev": true, + "license": "ISC", "dependencies": { "archy": "^1.0.0", "cross-spawn": "^7.0.3", @@ -9798,9 +8768,8 @@ }, "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -9813,18 +8782,16 @@ }, "node_modules/istanbul-lib-processinfo/node_modules/uuid": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/istanbul-lib-report": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -9836,9 +8803,8 @@ }, "node_modules/istanbul-lib-report/node_modules/make-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -9851,9 +8817,8 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -9865,9 +8830,8 @@ }, "node_modules/istanbul-reports": { "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -9878,9 +8842,8 @@ }, "node_modules/iterator.prototype": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "get-intrinsic": "^1.2.1", @@ -9891,9 +8854,8 @@ }, "node_modules/jest-dev-server": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-6.2.0.tgz", - "integrity": "sha512-ZWh8CuvxwjhYfvw4tGeftziqIvw/26R6AG3OTgNTQeXul8aZz48RQjDpnlDwnWX53jxJJl9fcigqIdSU5lYZuw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.2", "cwd": "^0.10.0", @@ -9906,8 +8868,7 @@ }, "node_modules/jest-diff": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", @@ -9920,8 +8881,7 @@ }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -9931,8 +8891,7 @@ }, "node_modules/jest-diff/node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -9944,14 +8903,12 @@ }, "node_modules/jest-diff/node_modules/react-is": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "license": "MIT" }, "node_modules/jest-environment-node": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/fake-timers": "^27.5.1", @@ -9966,9 +8923,8 @@ }, "node_modules/jest-environment-node/node_modules/@jest/types": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -9982,18 +8938,16 @@ }, "node_modules/jest-environment-node/node_modules/@types/yargs": { "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/jest-environment-node/node_modules/jest-util": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*", @@ -10008,9 +8962,8 @@ }, "node_modules/jest-environment-puppeteer": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jest-environment-puppeteer/-/jest-environment-puppeteer-6.2.0.tgz", - "integrity": "sha512-a/oSu6dO9D+XoDDe3ZY/0Sk79Jl2FcJl7Q0D+3x22l1eWNOYe4ikXnPGhtmNZ3mJIpuAVIX6LytA8EraOk/aqQ==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.2", "cwd": "^0.10.0", @@ -10021,16 +8974,14 @@ }, "node_modules/jest-get-type": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.7.0", @@ -10043,8 +8994,7 @@ }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -10054,8 +9004,7 @@ }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -10067,13 +9016,11 @@ }, "node_modules/jest-matcher-utils/node_modules/react-is": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "license": "MIT" }, "node_modules/jest-message-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", @@ -10091,8 +9038,7 @@ }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -10102,8 +9048,7 @@ }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -10115,14 +9060,12 @@ }, "node_modules/jest-message-util/node_modules/react-is": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "license": "MIT" }, "node_modules/jest-mock": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*" @@ -10133,9 +9076,8 @@ }, "node_modules/jest-mock/node_modules/@jest/types": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -10149,18 +9091,16 @@ }, "node_modules/jest-mock/node_modules/@types/yargs": { "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/jest-puppeteer": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jest-puppeteer/-/jest-puppeteer-6.2.0.tgz", - "integrity": "sha512-4Ynkgcf9FkHlTNEpdsojGLb3KtsToWqjO6SCigxb9Qj3HzIqhzJzNbDJ/XhiciNDpqDe6KHW9sZ6fjHphNLr6g==", "dev": true, + "license": "MIT", "dependencies": { "expect-puppeteer": "^6.1.1", "jest-environment-puppeteer": "^6.2.0" @@ -10171,8 +9111,7 @@ }, "node_modules/jest-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -10187,9 +9126,8 @@ }, "node_modules/jest-worker": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/node": "*", @@ -10202,9 +9140,8 @@ }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -10218,15 +9155,13 @@ }, "node_modules/jju": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/joi": { "version": "17.12.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.1.tgz", - "integrity": "sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", @@ -10237,13 +9172,11 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -10253,151 +9186,21 @@ }, "node_modules/jsbn": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true - }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", - "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/jsdom": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-21.1.2.tgz", - "integrity": "sha512-sCpFmK2jv+1sjff4u7fzft+pUh2KSUbUrEHYHyfSIbGTIcmnjyp83qg6qLwdJ/I3LpTXx33ACxeRL7Lsyc6lGQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.2", - "acorn-globals": "^7.0.0", - "cssstyle": "^3.0.0", - "data-urls": "^4.0.0", - "decimal.js": "^10.4.3", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.4", - "parse5": "^7.1.2", - "rrweb-cssom": "^0.6.0", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.1", - "ws": "^8.13.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom-global": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz", - "integrity": "sha512-t1KMcBkz/pT5JrvcJbpUR2u/w1kO9jXctaaGJ0vZDzwFnIvGWw9IDSRciT83kIs8Bnw4qpOl8bQK08V01YgMPg==", - "dev": true, - "peerDependencies": { - "jsdom": ">=10.0.0" - } - }, - "node_modules/jsdom/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/jsdom/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jsdom/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jsdom/node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", - "dev": true, - "dependencies": { - "punycode": "^2.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/jsdom/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } + "dev": true, + "license": "MIT" }, - "node_modules/jsdom/node_modules/whatwg-url": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.0.0", "dev": true, - "dependencies": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - }, + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=12.0.0" } }, "node_modules/jsesc": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -10407,44 +9210,37 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + "license": "ISC" }, "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -10454,15 +9250,13 @@ }, "node_modules/jsonc-parser": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", - "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsonfile": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -10472,17 +9266,15 @@ }, "node_modules/jsrsasign": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-11.1.0.tgz", - "integrity": "sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==", + "license": "MIT", "funding": { "url": "https://github.com/kjur/jsrsasign#donations" } }, "node_modules/jsx-ast-utils": { "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", @@ -10495,31 +9287,27 @@ }, "node_modules/jwt-decode": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", - "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/keyborg": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/keyborg/-/keyborg-2.5.0.tgz", - "integrity": "sha512-nb4Ji1suqWqj6VXb61Jrs4ab/UWgtGph4wDch2NIZDfLBUObmLcZE0aiDjZY49ghtu03fvwxDNvS9ZB0XMz6/g==" + "license": "MIT" }, "node_modules/keyv": { "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } }, "node_modules/kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -10529,36 +9317,32 @@ }, "node_modules/kleur": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/lazy-ass": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", "dev": true, + "license": "MIT", "engines": { "node": "> 0.8" } }, "node_modules/lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -10569,9 +9353,8 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/live-canvas-tests": { "resolved": "samples/typescript/31.live-canvas-tests", @@ -10579,9 +9362,8 @@ }, "node_modules/loader-runner": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=6.11.5" @@ -10589,8 +9371,7 @@ }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -10603,25 +9384,31 @@ }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "license": "MIT" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" }, "node_modules/lodash.flattendeep": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" }, "node_modules/lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -10635,8 +9422,7 @@ }, "node_modules/loose-envify": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -10646,37 +9432,32 @@ }, "node_modules/lru-cache": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/lunr": { "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lz-string": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "license": "MIT", "bin": { "lz-string": "bin/bin.js" } }, "node_modules/lz4js": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/lz4js/-/lz4js-0.2.0.tgz", - "integrity": "sha512-gY2Ia9Lm7Ep8qMiuGRhvUq0Q7qUereeldZPP1PMEJxPtEWHJLqw9pgX68oHajBH0nzJK4MaZEA/YNV3jT8u8Bg==" + "license": "ISC" }, "node_modules/magic-string": { "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.13" }, @@ -10686,9 +9467,8 @@ }, "node_modules/make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -10701,30 +9481,25 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/make-error": { "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/map-stream": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", "dev": true }, "node_modules/marked": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "dev": true, + "license": "MIT", "bin": { "marked": "bin/marked.js" }, @@ -10734,9 +9509,8 @@ }, "node_modules/merge-deep": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz", - "integrity": "sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==", "dev": true, + "license": "MIT", "dependencies": { "arr-union": "^3.1.0", "clone-deep": "^0.2.4", @@ -10748,23 +9522,20 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "license": "MIT", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -10775,16 +9546,14 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -10794,26 +9563,23 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/min-indent": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10823,33 +9589,29 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/mitt": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", - "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mixin-object": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==", "dev": true, + "license": "MIT", "dependencies": { "for-in": "^0.1.3", "is-extendable": "^0.1.1" @@ -10860,18 +9622,16 @@ }, "node_modules/mixin-object/node_modules/for-in": { "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/mkdirp": { "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -10881,14 +9641,12 @@ }, "node_modules/mkdirp-classic": { "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mocha": { "version": "10.3.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", - "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", + "license": "MIT", "dependencies": { "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", @@ -10921,9 +9679,8 @@ }, "node_modules/mocha-json-output-reporter": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mocha-json-output-reporter/-/mocha-json-output-reporter-2.1.0.tgz", - "integrity": "sha512-FF2BItlMo8nK9+SgN/WAD01ue7G+qI1Po0U3JCZXQiiyTJ5OV3KcT1mSoZKirjYP73JFZznaaPC6Mp052PF3Vw==", "dev": true, + "license": "MIT", "peerDependencies": { "mocha": "^10.0.0", "moment": "^2.21.0" @@ -10931,9 +9688,8 @@ }, "node_modules/mocha-multi-reporters": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/mocha-multi-reporters/-/mocha-multi-reporters-1.5.1.tgz", - "integrity": "sha512-Yb4QJOaGLIcmB0VY7Wif5AjvLMUFAdV57D2TWEva1Y0kU/3LjKpeRVmlMIfuO1SVbauve459kgtIizADqxMWPg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.1", "lodash": "^4.17.15" @@ -10947,16 +9703,14 @@ }, "node_modules/mocha/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/mocha/node_modules/cliui": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -10965,13 +9719,11 @@ }, "node_modules/mocha/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "license": "MIT" }, "node_modules/mocha/node_modules/glob": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10988,16 +9740,14 @@ }, "node_modules/mocha/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/mocha/node_modules/minimatch": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -11007,13 +9757,11 @@ }, "node_modules/mocha/node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "license": "MIT" }, "node_modules/mocha/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -11025,8 +9773,7 @@ }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -11039,8 +9786,7 @@ }, "node_modules/mocha/node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -11055,16 +9801,14 @@ }, "node_modules/mocha/node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -11080,17 +9824,15 @@ }, "node_modules/mocha/node_modules/yargs-parser": { "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/moment": { "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": "*" @@ -11098,13 +9840,10 @@ }, "node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -11112,6 +9851,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -11121,15 +9861,13 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/natural-compare-lite": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nconf": { "version": "0.12.1", @@ -11240,24 +9978,21 @@ }, "node_modules/neo-async": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/netmask": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/node-fetch": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -11275,9 +10010,8 @@ }, "node_modules/node-preload": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", "dev": true, + "license": "MIT", "dependencies": { "process-on-spawn": "^1.0.0" }, @@ -11287,15 +10021,13 @@ }, "node_modules/node-releases": { "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/normalize-package-data": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -11305,9 +10037,8 @@ }, "node_modules/normalize-package-data/node_modules/resolve": { "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -11322,26 +10053,23 @@ }, "node_modules/normalize-package-data/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -11349,17 +10077,10 @@ "node": ">=8" } }, - "node_modules/nwsapi": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", - "dev": true - }, "node_modules/nyc": { "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", @@ -11398,9 +10119,8 @@ }, "node_modules/nyc/node_modules/cliui": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -11409,21 +10129,18 @@ }, "node_modules/nyc/node_modules/convert-source-map": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nyc/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nyc/node_modules/find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -11438,9 +10155,8 @@ }, "node_modules/nyc/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -11451,18 +10167,16 @@ }, "node_modules/nyc/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/nyc/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -11472,9 +10186,8 @@ }, "node_modules/nyc/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -11487,9 +10200,8 @@ }, "node_modules/nyc/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -11499,9 +10211,8 @@ }, "node_modules/nyc/node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -11511,18 +10222,16 @@ }, "node_modules/nyc/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/nyc/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -11535,9 +10244,8 @@ }, "node_modules/nyc/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -11549,9 +10257,8 @@ }, "node_modules/nyc/node_modules/wrap-ansi": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -11563,9 +10270,8 @@ }, "node_modules/nyc/node_modules/yargs": { "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -11585,9 +10291,8 @@ }, "node_modules/nyc/node_modules/yargs-parser": { "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -11598,24 +10303,21 @@ }, "node_modules/object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-is": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -11629,16 +10331,14 @@ }, "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -11654,9 +10354,8 @@ }, "node_modules/object.entries": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -11668,9 +10367,8 @@ }, "node_modules/object.fromentries": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -11685,9 +10383,8 @@ }, "node_modules/object.hasown": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.2.0", "es-abstract": "^1.22.1" @@ -11698,9 +10395,8 @@ }, "node_modules/object.values": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -11715,17 +10411,15 @@ }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -11738,9 +10432,8 @@ }, "node_modules/optionator": { "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, + "license": "MIT", "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -11755,17 +10448,23 @@ }, "node_modules/os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "engines": { "node": ">=0.10.0" } }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -11778,8 +10477,7 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -11792,9 +10490,8 @@ }, "node_modules/p-map": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -11804,18 +10501,16 @@ }, "node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pac-proxy-agent": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", - "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.0.2", @@ -11832,9 +10527,8 @@ }, "node_modules/pac-resolver": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", - "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "dev": true, + "license": "MIT", "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" @@ -11845,9 +10539,8 @@ }, "node_modules/package-hash": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "dev": true, + "license": "ISC", "dependencies": { "graceful-fs": "^4.1.15", "hasha": "^5.0.0", @@ -11860,9 +10553,8 @@ }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -11872,9 +10564,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -11890,67 +10581,48 @@ }, "node_modules/parse-passwd": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/path-browserify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + "license": "MIT" }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -11964,56 +10636,52 @@ }, "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, + "license": "ISC", "engines": { "node": "14 || >=16.14" } }, "node_modules/path-scurry/node_modules/minipass": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/pause-stream": { "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", "dev": true, + "license": [ + "MIT", + "Apache2" + ], "dependencies": { "through": "~2.3" } }, "node_modules/pend": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/picocolors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -12023,18 +10691,16 @@ }, "node_modules/pify": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/pkg-dir": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^6.3.0" }, @@ -12047,9 +10713,8 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -12063,9 +10728,8 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^6.0.0" }, @@ -12078,9 +10742,8 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -12093,9 +10756,8 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^4.0.0" }, @@ -12108,18 +10770,16 @@ }, "node_modules/pkg-dir/node_modules/path-exists": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/pkg-dir/node_modules/yocto-queue": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.20" }, @@ -12129,17 +10789,14 @@ }, "node_modules/pluralize": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/postcss": { "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "dev": true, "funding": [ { @@ -12155,6 +10812,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", @@ -12166,18 +10824,16 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -12190,9 +10846,8 @@ }, "node_modules/prettier-linter-helpers": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, + "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -12202,8 +10857,7 @@ }, "node_modules/pretty-format": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -12215,8 +10869,7 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -12226,8 +10879,7 @@ }, "node_modules/printj": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "license": "Apache-2.0", "bin": { "printj": "bin/printj.njs" }, @@ -12237,9 +10889,8 @@ }, "node_modules/process-on-spawn": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", "dev": true, + "license": "MIT", "dependencies": { "fromentries": "^1.2.0" }, @@ -12249,18 +10900,16 @@ }, "node_modules/progress": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/prompts": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -12271,8 +10920,7 @@ }, "node_modules/prop-types": { "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -12281,14 +10929,12 @@ }, "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "license": "MIT" }, "node_modules/proxy-agent": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", - "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", @@ -12305,23 +10951,20 @@ }, "node_modules/proxy-agent/node_modules/lru-cache": { "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/proxy-from-env": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "license": "MIT" }, "node_modules/ps-tree": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", - "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", "dev": true, + "license": "MIT", "dependencies": { "event-stream": "=3.3.4" }, @@ -12332,17 +10975,10 @@ "node": ">= 0.10" } }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, "node_modules/pump": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -12350,20 +10986,17 @@ }, "node_modules/punycode": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/puppeteer": { "version": "20.9.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.9.0.tgz", - "integrity": "sha512-kAglT4VZ9fWEGg3oLc4/de+JcONuEJhlh3J6f5R1TLkrY/EHHIHxWXDOzXvaxQCtedmyVXBwg8M+P8YCO/wZjw==", - "deprecated": "< 21.5.0 is no longer supported", "dev": true, "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "1.4.6", "cosmiconfig": "8.2.0", @@ -12375,9 +11008,8 @@ }, "node_modules/puppeteer-core": { "version": "20.9.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz", - "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "1.4.6", "chromium-bidi": "0.4.16", @@ -12400,17 +11032,15 @@ }, "node_modules/puppeteer-core/node_modules/cross-fetch": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", - "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", "dev": true, + "license": "MIT", "dependencies": { "node-fetch": "^2.6.12" } }, "node_modules/qs": { "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -12421,16 +11051,8 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -12445,26 +11067,24 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/queue-tick": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/react": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" }, @@ -12474,8 +11094,7 @@ }, "node_modules/react-babylonjs": { "version": "3.1.27", - "resolved": "https://registry.npmjs.org/react-babylonjs/-/react-babylonjs-3.1.27.tgz", - "integrity": "sha512-eh5nOKoiwINUpS0vBRKYs+fGcK9ckBgB5VVml7mFvUv+nAu5znwpFE8knx0AiihA4UyoZnldYOjlOsgaHZwitw==", + "license": "MIT", "dependencies": { "react-reconciler": "^0.27.0" }, @@ -12496,8 +11115,7 @@ }, "node_modules/react-colorful": { "version": "5.6.1", - "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", - "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", + "license": "MIT", "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" @@ -12505,8 +11123,7 @@ }, "node_modules/react-dom": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" @@ -12517,16 +11134,14 @@ }, "node_modules/react-dom/node_modules/scheduler": { "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/react-is": { "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "license": "MIT" }, "node_modules/react-media-template-ts": { "resolved": "samples/typescript/21.react-media-template", @@ -12534,8 +11149,7 @@ }, "node_modules/react-reconciler": { "version": "0.27.0", - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.27.0.tgz", - "integrity": "sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.21.0" @@ -12549,25 +11163,22 @@ }, "node_modules/react-reconciler/node_modules/scheduler": { "version": "0.21.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", - "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/react-refresh": { "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-router": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.0.tgz", - "integrity": "sha512-q2yemJeg6gw/YixRlRnVx6IRJWZD6fonnfZhN1JIOhV2iJCPeRNSH3V1ISwHf+JWcESzLC3BOLD1T07tmO5dmg==", + "license": "MIT", "dependencies": { "@remix-run/router": "1.15.0" }, @@ -12580,8 +11191,7 @@ }, "node_modules/react-router-dom": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.0.tgz", - "integrity": "sha512-z2w+M4tH5wlcLmH3BMMOMdrtrJ9T3oJJNsAlBJbwk+8Syxd5WFJ7J5dxMEW0/GEXD1BBis4uXRrNIz3mORr0ag==", + "license": "MIT", "dependencies": { "@remix-run/router": "1.15.0", "react-router": "6.22.0" @@ -12596,8 +11206,7 @@ }, "node_modules/react-transition-group": { "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -12615,9 +11224,8 @@ }, "node_modules/read-pkg": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==", "dev": true, + "license": "MIT", "dependencies": { "normalize-package-data": "^2.3.2", "parse-json": "^4.0.0", @@ -12629,9 +11237,8 @@ }, "node_modules/read-pkg-up": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -12646,9 +11253,8 @@ }, "node_modules/read-pkg-up/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -12659,9 +11265,8 @@ }, "node_modules/read-pkg-up/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -12671,9 +11276,8 @@ }, "node_modules/read-pkg-up/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -12686,9 +11290,8 @@ }, "node_modules/read-pkg-up/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -12698,9 +11301,8 @@ }, "node_modules/read-pkg-up/node_modules/read-pkg": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, + "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -12713,27 +11315,24 @@ }, "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/read-pkg/node_modules/parse-json": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, + "license": "MIT", "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -12744,8 +11343,7 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -12753,10 +11351,17 @@ "node": ">=8.10.0" } }, + "node_modules/readline-sync": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", + "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/redent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "license": "MIT", "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -12765,11 +11370,29 @@ "node": ">=8" } }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", - "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -12788,22 +11411,19 @@ }, "node_modules/regenerator-runtime": { "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + "license": "MIT" }, "node_modules/regexp-tree": { "version": "0.1.27", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", - "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true, + "license": "MIT", "bin": { "regexp-tree": "bin/regexp-tree" } }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", @@ -12819,9 +11439,8 @@ }, "node_modules/regjsparser": { "version": "0.10.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", - "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, @@ -12831,8 +11450,6 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -12840,9 +11457,8 @@ }, "node_modules/release-zalgo": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", "dev": true, + "license": "ISC", "dependencies": { "es6-error": "^4.0.1" }, @@ -12852,38 +11468,28 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "node_modules/require-main-filename": { + "version": "2.0.0", + "dev": true, + "license": "ISC" }, "node_modules/resolve": { "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -12898,9 +11504,8 @@ }, "node_modules/resolve-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==", "dev": true, + "license": "MIT", "dependencies": { "expand-tilde": "^1.2.2", "global-modules": "^0.2.3" @@ -12911,27 +11516,24 @@ }, "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, "node_modules/reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -12939,9 +11541,8 @@ }, "node_modules/rimraf": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -12951,9 +11552,8 @@ }, "node_modules/rollup": { "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -12965,24 +11565,15 @@ "fsevents": "~2.3.2" } }, - "node_modules/rrweb-cssom": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", - "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", - "dev": true - }, "node_modules/rtl-css-js": { "version": "1.16.1", - "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz", - "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2" } }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -12998,15 +11589,15 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/rxjs": { "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -13016,15 +11607,13 @@ }, "node_modules/rxjs/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/safe-array-concat": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", - "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "get-intrinsic": "^1.2.2", @@ -13040,8 +11629,6 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -13055,13 +11642,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safe-regex-test": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -13076,26 +11663,13 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "devOptional": true - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/scheduler": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "license": "MIT", "peer": true, "dependencies": { "loose-envify": "^1.1.0", @@ -13104,9 +11678,8 @@ }, "node_modules/schema-utils": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -13123,9 +11696,8 @@ }, "node_modules/schema-utils/node_modules/ajv": { "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -13139,9 +11711,8 @@ }, "node_modules/schema-utils/node_modules/ajv-keywords": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -13151,9 +11722,8 @@ }, "node_modules/schema-utils/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/secure-keys": { "version": "1.0.0", @@ -13162,8 +11732,7 @@ }, "node_modules/semver": { "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -13176,8 +11745,7 @@ }, "node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13187,8 +11755,7 @@ }, "node_modules/semver/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "license": "ISC" }, "node_modules/serialize-error": { "version": "8.1.0", @@ -13206,22 +11773,19 @@ }, "node_modules/serialize-javascript": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/set-function-length": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "license": "MIT", "dependencies": { "define-data-property": "^1.1.2", "es-errors": "^1.3.0", @@ -13236,8 +11800,7 @@ }, "node_modules/set-function-name": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", @@ -13249,8 +11812,7 @@ }, "node_modules/sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "license": "(MIT AND BSD-3-Clause)", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -13261,9 +11823,8 @@ }, "node_modules/shallow-clone": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw==", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.1", "kind-of": "^2.0.1", @@ -13276,9 +11837,8 @@ }, "node_modules/shallow-clone/node_modules/kind-of": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg==", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.0.2" }, @@ -13288,18 +11848,16 @@ }, "node_modules/shallow-clone/node_modules/lazy-cache": { "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -13309,18 +11867,16 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/shiki": { "version": "0.14.7", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", - "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-sequence-parser": "^1.1.0", "jsonc-parser": "^3.2.0", @@ -13330,8 +11886,7 @@ }, "node_modules/side-channel": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", - "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -13347,34 +11902,29 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/sillyname": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/sillyname/-/sillyname-0.1.0.tgz", - "integrity": "sha512-GWA0Zont13ov+cMNw4T7nU4SCyW8jdhD3vjA5+qs8jr+09sCPxOf+FPS5zE0c9pYlCwD+NU/CiMimY462lgG9g==" + "license": "MIT" }, "node_modules/sisteransi": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/smart-buffer": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -13408,9 +11958,8 @@ }, "node_modules/socks": { "version": "2.7.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.3.tgz", - "integrity": "sha512-vfuYK48HXCTFD03G/1/zkIls3Ebr2YNa4qU9gHDZdblHLiqhJrJGkY3+0Nx0JpN9qBhJbVObc1CNciT1bIZJxw==", "dev": true, + "license": "MIT", "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -13422,9 +11971,8 @@ }, "node_modules/socks-proxy-agent": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", - "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", @@ -13436,27 +11984,24 @@ }, "node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-js": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -13464,15 +12009,13 @@ }, "node_modules/spawn-command": { "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/spawn-wrap": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^2.0.0", "is-windows": "^1.0.2", @@ -13487,18 +12030,16 @@ }, "node_modules/spawn-wrap/node_modules/is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/spawn-wrap/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -13511,9 +12052,8 @@ }, "node_modules/spawnd": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/spawnd/-/spawnd-6.2.0.tgz", - "integrity": "sha512-qX/I4lQy4KgVEcNle0kuc4FxFWHISzBhZW1YemPfwmrmQjyZmfTK/OhBKkhrD2ooAaFZEm1maEBLE6/6enwt+g==", "dev": true, + "license": "MIT", "dependencies": { "exit": "^0.1.2", "signal-exit": "^3.0.7", @@ -13522,9 +12062,8 @@ }, "node_modules/spdx-correct": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -13532,15 +12071,13 @@ }, "node_modules/spdx-exceptions": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -13548,15 +12085,13 @@ }, "node_modules/spdx-license-ids": { "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/split": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", "dev": true, + "license": "MIT", "dependencies": { "through": "2" }, @@ -13566,14 +12101,11 @@ }, "node_modules/sprintf-js": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true + "license": "BSD-3-Clause" }, "node_modules/stack-utils": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -13583,17 +12115,20 @@ }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" + }, "node_modules/start-server-and-test": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-2.0.3.tgz", - "integrity": "sha512-QsVObjfjFZKJE6CS6bSKNwWZCKBG6975/jKRPPGFfFh+yOQglSeGXiNWjzgQNXdphcBI9nXbyso9tPfX4YAUhg==", "dev": true, + "license": "MIT", "dependencies": { "arg": "^5.0.2", "bluebird": "3.7.2", @@ -13615,18 +12150,16 @@ }, "node_modules/start-server-and-test/node_modules/rxjs": { "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/start-server-and-test/node_modules/wait-on": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", - "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", "dev": true, + "license": "MIT", "dependencies": { "axios": "^1.6.1", "joi": "^17.11.0", @@ -13643,8 +12176,7 @@ }, "node_modules/stop-iteration-iterator": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "license": "MIT", "dependencies": { "internal-slot": "^1.0.4" }, @@ -13654,18 +12186,16 @@ }, "node_modules/stream-combiner": { "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", "dev": true, + "license": "MIT", "dependencies": { "duplexer": "~0.1.1" } }, "node_modules/streamx": { "version": "2.15.8", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.8.tgz", - "integrity": "sha512-6pwMeMY/SuISiRsuS8TeIrAzyFbG5gGPHFQsYjUr/pbBadaL1PCWmzKw+CHZSwainfvcF6Si6cVLq4XTEwswFQ==", "dev": true, + "license": "MIT", "dependencies": { "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" @@ -13681,9 +12211,8 @@ }, "node_modules/string-width": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -13695,18 +12224,16 @@ }, "node_modules/string-width/node_modules/ansi-regex": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/string-width/node_modules/strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -13716,9 +12243,8 @@ }, "node_modules/string.prototype.matchall": { "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -13736,9 +12262,8 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -13753,9 +12278,8 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -13767,9 +12291,8 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -13781,8 +12304,7 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13792,26 +12314,23 @@ }, "node_modules/strip-bom": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/strip-indent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "license": "MIT", "dependencies": { "min-indent": "^1.0.0" }, @@ -13821,8 +12340,7 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -13832,13 +12350,11 @@ }, "node_modules/stylis": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", - "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==" + "license": "MIT" }, "node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13848,9 +12364,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -13858,16 +12373,9 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, "node_modules/tabster": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/tabster/-/tabster-6.0.1.tgz", - "integrity": "sha512-cNVYkJmQZ76IvdW7laCuUns9XcAGzscmDkZ0T4JY3huCRsacidBNOa7MJu2+ocW7UKR8xOxeER6OdBsmX1l5XQ==", + "license": "MIT", "dependencies": { "keyborg": "2.5.0", "tslib": "^2.3.1" @@ -13875,18 +12383,16 @@ }, "node_modules/tapable": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tar-fs": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dev": true, + "license": "MIT", "dependencies": { "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", @@ -13895,9 +12401,8 @@ }, "node_modules/tar-stream": { "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, + "license": "MIT", "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", @@ -13906,9 +12411,8 @@ }, "node_modules/terser": { "version": "5.27.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.1.tgz", - "integrity": "sha512-29wAr6UU/oQpnTw5HoadwjUZnFQXGdOfj0LjZ4sVxzqwHh/QVkvr7m8y9WoR4iN3FRitVduTc6KdjcW38Npsug==", "dev": true, + "license": "BSD-2-Clause", "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -13925,9 +12429,8 @@ }, "node_modules/terser-webpack-plugin": { "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", @@ -13960,9 +12463,8 @@ }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -13979,9 +12481,8 @@ }, "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "peer": true, "dependencies": { "randombytes": "^2.1.0" @@ -13989,16 +12490,14 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/test-exclude": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -14010,29 +12509,36 @@ }, "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } }, "node_modules/to-fast-properties": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -14040,49 +12546,22 @@ "node": ">=8.0" } }, - "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/tr46": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "license": "MIT" }, "node_modules/tree-kill": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, + "license": "MIT", "bin": { "tree-kill": "cli.js" } }, "node_modules/ts-api-utils": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", - "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -14092,9 +12571,8 @@ }, "node_modules/ts-mocha": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", - "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==", "dev": true, + "license": "MIT", "dependencies": { "ts-node": "7.0.1" }, @@ -14111,11 +12589,19 @@ "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X" } }, + "node_modules/ts-morph": { + "version": "20.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.21.0", + "code-block-writer": "^12.0.0" + } + }, "node_modules/ts-node": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", "dev": true, + "license": "MIT", "dependencies": { "arrify": "^1.0.0", "buffer-from": "^1.1.0", @@ -14135,18 +12621,16 @@ }, "node_modules/ts-node/node_modules/diff": { "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/tsconfig-paths": { "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@types/json5": "^0.0.29", @@ -14157,9 +12641,8 @@ }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "minimist": "^1.2.0" @@ -14170,9 +12653,8 @@ }, "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=4" @@ -14180,14 +12662,12 @@ }, "node_modules/tslib": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -14200,15 +12680,13 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -14218,17 +12696,15 @@ }, "node_modules/type-detect": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -14238,9 +12714,8 @@ }, "node_modules/typed-array-buffer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", - "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -14252,9 +12727,8 @@ }, "node_modules/typed-array-byte-length": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -14270,9 +12744,8 @@ }, "node_modules/typed-array-byte-offset": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -14289,9 +12762,8 @@ }, "node_modules/typed-array-length": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -14303,18 +12775,16 @@ }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, + "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typedoc": { "version": "0.24.8", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.8.tgz", - "integrity": "sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "lunr": "^2.3.9", "marked": "^4.3.0", @@ -14333,18 +12803,16 @@ }, "node_modules/typedoc/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/typedoc/node_modules/minimatch": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -14357,9 +12825,8 @@ }, "node_modules/typescript": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -14370,9 +12837,8 @@ }, "node_modules/unbox-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -14385,9 +12851,8 @@ }, "node_modules/unbzip2-stream": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, + "license": "MIT", "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" @@ -14395,8 +12860,6 @@ }, "node_modules/unbzip2-stream/node_modules/buffer": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -14412,6 +12875,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -14419,22 +12883,18 @@ }, "node_modules/undici-types": { "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "license": "MIT" }, "node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/update-browserslist-db": { "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -14450,6 +12910,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -14463,41 +12924,27 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/url": { "version": "0.11.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", - "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "license": "MIT", "dependencies": { "punycode": "^1.4.1", "qs": "^6.11.2" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/url/node_modules/punycode": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + "license": "MIT" }, "node_modules/use-disposable": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/use-disposable/-/use-disposable-1.0.2.tgz", - "integrity": "sha512-UMaXVlV77dWOu4GqAFNjRzHzowYKUKbJBQfCexvahrYeIz4OkUYUjna4Tjjdf92NH8Nm8J7wEfFRgTIwYjO5jg==", + "license": "MIT", "peerDependencies": { "@types/react": ">=16.8.0 <19.0.0", "@types/react-dom": ">=16.8.0 <19.0.0", @@ -14507,8 +12954,7 @@ }, "node_modules/use-resize-observer": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-9.1.0.tgz", - "integrity": "sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==", + "license": "MIT", "dependencies": { "@juggle/resize-observer": "^3.3.1" }, @@ -14531,21 +12977,19 @@ }, "node_modules/uuid": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/validate-npm-package-license": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -14553,9 +12997,8 @@ }, "node_modules/vite": { "version": "4.5.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", - "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", @@ -14608,33 +13051,18 @@ }, "node_modules/vscode-oniguruma": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/vscode-textmate": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true - }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", "dev": true, - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } + "license": "MIT" }, "node_modules/wait-on": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", - "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", "dev": true, + "license": "MIT", "dependencies": { "axios": "^0.25.0", "joi": "^17.6.0", @@ -14651,27 +13079,24 @@ }, "node_modules/wait-on/node_modules/axios": { "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", "dev": true, + "license": "MIT", "dependencies": { "follow-redirects": "^1.14.7" } }, "node_modules/wait-on/node_modules/rxjs": { "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/watchpack": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -14683,19 +13108,16 @@ }, "node_modules/web-vitals": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.2.tgz", - "integrity": "sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==" + "license": "Apache-2.0" }, "node_modules/webidl-conversions": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "license": "BSD-2-Clause" }, "node_modules/webpack": { "version": "5.90.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.2.tgz", - "integrity": "sha512-ziXu8ABGr0InCMEYFnHrYweinHK2PWrMqnwdHk2oK3rRhv/1B+2FnfwYv5oD+RrknK/Pp/Hmyvu+eAsaMYhzCw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -14741,9 +13163,8 @@ }, "node_modules/webpack-sources": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=10.13.0" @@ -14751,9 +13172,8 @@ }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -14768,31 +13188,9 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/whatwg-url": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -14800,9 +13198,8 @@ }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -14815,8 +13212,7 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -14830,9 +13226,8 @@ }, "node_modules/which-builtin-type": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", "dev": true, + "license": "MIT", "dependencies": { "function.prototype.name": "^1.1.5", "has-tostringtag": "^1.0.0", @@ -14856,8 +13251,7 @@ }, "node_modules/which-collection": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "license": "MIT", "dependencies": { "is-map": "^2.0.1", "is-set": "^2.0.1", @@ -14870,14 +13264,12 @@ }, "node_modules/which-module": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/which-typed-array": { "version": "1.1.14", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", - "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.6", "call-bind": "^1.0.5", @@ -14894,14 +13286,12 @@ }, "node_modules/workerpool": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" + "license": "Apache-2.0" }, "node_modules/wrap-ansi": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.0", "string-width": "^3.0.0", @@ -14913,18 +13303,16 @@ }, "node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -14934,24 +13322,21 @@ }, "node_modules/wrap-ansi/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -14961,14 +13346,12 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -14978,9 +13361,8 @@ }, "node_modules/ws": { "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -14997,21 +13379,6 @@ } } }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "node_modules/xmlhttprequest-ssl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", @@ -15022,21 +13389,18 @@ }, "node_modules/y18n": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yallist": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yargs": { "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^5.0.0", "find-up": "^3.0.0", @@ -15052,9 +13416,8 @@ }, "node_modules/yargs-parser": { "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -15062,8 +13425,7 @@ }, "node_modules/yargs-unparser": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "license": "MIT", "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -15076,8 +13438,7 @@ }, "node_modules/yargs-unparser/node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -15087,8 +13448,7 @@ }, "node_modules/yargs-unparser/node_modules/decamelize": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -15098,9 +13458,8 @@ }, "node_modules/yargs/node_modules/find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -15110,9 +13469,8 @@ }, "node_modules/yargs/node_modules/locate-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -15123,9 +13481,8 @@ }, "node_modules/yargs/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -15138,9 +13495,8 @@ }, "node_modules/yargs/node_modules/p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -15150,18 +13506,16 @@ }, "node_modules/yargs/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/yauzl": { "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, + "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -15169,17 +13523,15 @@ }, "node_modules/yn": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -15192,20 +13544,21 @@ "version": "2.0.0-internal.5", "license": "SEE LICENSE IN LICENSE", "dependencies": { + "@fluidframework/register-collection": "^2.0.0-rc || ^2.0.0-internal", "uuid": "^9.0.0" }, "devDependencies": { - "@fluid-internal/client-utils": "^2.0.0-rc.4.0.2", - "@fluidframework/azure-client": "^2.0.0-rc.4.0.2", + "@fluid-internal/client-utils": "^2.0.0-rc.5.0.1", + "@fluidframework/azure-client": "^2.0.0-rc.5.0.1", "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.9", - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", - "@fluidframework/test-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", + "@fluidframework/test-utils": "^2.0.0-rc.5.0.1", "@live-share-private/test-utils": "^2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", @@ -15236,19 +13589,17 @@ } }, "packages/live-share-acs/node_modules/@types/node": { - "version": "18.19.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.31.tgz", - "integrity": "sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==", + "version": "18.19.33", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, "packages/live-share-acs/node_modules/typescript": { "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -15266,7 +13617,7 @@ "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", @@ -15283,14 +13634,14 @@ "license": "SEE LICENSE IN LICENSE", "devDependencies": { "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.9", - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", - "@fluidframework/test-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", + "@fluidframework/test-utils": "^2.0.0-rc.5.0.1", "@live-share-private/test-utils": "^2.0.0-internal.2", "@microsoft/live-share": "2.0.0-internal.5", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", @@ -15306,7 +13657,6 @@ "version": "2.0.0-internal.5", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@microsoft/live-share-turbo": "2.0.0-internal.5", "url": "^0.11.0", "uuid": "^9.0.0" }, @@ -15319,7 +13669,7 @@ "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", "babel-loader": "^9.1.2", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "typescript": "^5.0.4" }, "peerDependencies": { @@ -15331,33 +13681,8 @@ "react-dom": "^16.8.0 || ^17 || ^18" } }, - "packages/live-share-turbo": { - "name": "@microsoft/live-share-turbo", - "version": "2.0.0-internal.5", - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@fluidframework/register-collection": "^2.0.0-rc.4.0.2" - }, - "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", - "@microsoft/live-share": "2.0.0-internal.5", - "@types/assert": "^1.5.6", - "@types/mocha": "^10.0.1", - "@types/node": "^20.2.3", - "@types/uuid": "9.0.1", - "fluid-framework": "^2.0.0-rc.4.0.2", - "jsdom": "^21.1.0", - "jsdom-global": "^3.0.2", - "mocha": "^10.2.0", - "nyc": "^15.1.0", - "start-server-and-test": "^2.0.0", - "ts-mocha": "^10.0.0", - "typescript": "^5.0.4" - }, - "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.5", - "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" - } + "packages/live-share-turbo": { + "extraneous": true }, "samples/javascript/01.dice-roller": { "name": "@microsoft/01.dice-roller", @@ -15367,10 +13692,10 @@ "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15393,7 +13718,7 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -15404,7 +13729,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", @@ -15423,9 +13748,8 @@ }, "samples/javascript/02.react-video/node_modules/chalk": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -15442,10 +13766,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15467,7 +13791,7 @@ "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15479,7 +13803,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15504,10 +13828,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-turbo": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15515,6 +13839,18 @@ "vite": "^4.0.4" } }, + "samples/javascript/05.dice-roller-turbo/node_modules/@microsoft/live-share-turbo": { + "version": "2.0.0-internal.5", + "resolved": "https://registry.npmjs.org/@microsoft/live-share-turbo/-/live-share-turbo-2.0.0-internal.5.tgz", + "integrity": "sha512-6kGKKEv5MGazhIICBeaAgJTps7h02Eu+wnRQvuFcTSRqseS7WGN7+hwBgNvg2/6WwfW0DznMGQ8m4Jay9tKkqQ==", + "dependencies": { + "@fluidframework/register-collection": "^2.0.0-rc.2.0.0" + }, + "peerDependencies": { + "@microsoft/live-share": "2.0.0-internal.5", + "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" + } + }, "samples/javascript/21.react-media-template": { "name": "@microsoft/21.react-media-template", "version": "0.4.0", @@ -15528,7 +13864,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15540,7 +13876,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15567,7 +13903,7 @@ "@fluentui/react-theme": "^9.1.5", "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -15577,7 +13913,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15601,7 +13937,7 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router": "^6.4.2", @@ -15610,7 +13946,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15633,10 +13969,10 @@ "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15653,10 +13989,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15678,7 +14014,7 @@ "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15690,7 +14026,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15715,10 +14051,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-turbo": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", @@ -15726,6 +14062,18 @@ "vite": "^4.0.4" } }, + "samples/typescript/05.dice-roller-turbo/node_modules/@microsoft/live-share-turbo": { + "version": "2.0.0-internal.5", + "resolved": "https://registry.npmjs.org/@microsoft/live-share-turbo/-/live-share-turbo-2.0.0-internal.5.tgz", + "integrity": "sha512-6kGKKEv5MGazhIICBeaAgJTps7h02Eu+wnRQvuFcTSRqseS7WGN7+hwBgNvg2/6WwfW0DznMGQ8m4Jay9tKkqQ==", + "dependencies": { + "@fluidframework/register-collection": "^2.0.0-rc.2.0.0" + }, + "peerDependencies": { + "@microsoft/live-share": "2.0.0-internal.5", + "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" + } + }, "samples/typescript/06.presence-avatars": { "name": "@microsoft/06.presence-avatars", "version": "0.4.0", @@ -15740,7 +14088,7 @@ "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15752,7 +14100,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15782,7 +14130,7 @@ "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15794,7 +14142,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15826,7 +14174,7 @@ "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15840,7 +14188,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15870,7 +14218,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -15882,7 +14230,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -15903,62 +14251,13 @@ "vite": "^4.0.4" } }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "samples/typescript/21.react-media-template/node_modules/@esbuild/darwin-arm64": { "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -15967,300 +14266,11 @@ "node": ">=12" } }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "samples/typescript/21.react-media-template/node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "samples/typescript/21.react-media-template/node_modules/esbuild": { "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -16298,13 +14308,13 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@fluidframework/azure-client": "^2.0.0-rc.4.0.2", + "@fluidframework/azure-client": "^2.0.0-rc.5.0.1", "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "buffer": "^6.0.3", "concurrently": "^5.3.0", "start-server-and-test": "^2.0.0", diff --git a/package.json b/package.json index 7ecd33953..4dd1b07a4 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,6 @@ "packages/live-share-acs", "packages/live-share-canvas", "packages/live-share-media", - "packages/live-share-turbo", "packages/live-share-react", "internal/test-utils", "samples/javascript/*", diff --git a/packages/live-share-canvas/package.json b/packages/live-share-canvas/package.json index 5c06f7b15..6339430f7 100644 --- a/packages/live-share-canvas/package.json +++ b/packages/live-share-canvas/package.json @@ -18,7 +18,7 @@ "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", diff --git a/packages/live-share-canvas/src/core/LiveCanvas.ts b/packages/live-share-canvas/src/core/LiveCanvas.ts index aab5decbf..f2867686b 100644 --- a/packages/live-share-canvas/src/core/LiveCanvas.ts +++ b/packages/live-share-canvas/src/core/LiveCanvas.ts @@ -3,7 +3,10 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; +import { + DataObjectFactory, + createDataObjectKind, +} from "@fluidframework/aqueduct/internal"; import { IFluidHandle } from "@fluidframework/core-interfaces"; import { IValueChanged, SharedMap } from "@fluidframework/map/internal"; import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions"; @@ -49,6 +52,7 @@ import { IPointerMoveEvent, InputProvider, } from "../input"; +import { SharedObjectKind } from "fluid-framework"; enum InkingEventNames { pointerMove = "PointerMove", @@ -370,7 +374,7 @@ class BuiltInLiveCursor extends LiveCursor { /** * Enables live and collaborative inking. */ -export class LiveCanvas extends LiveDataObject { +export class LiveCanvasClass extends LiveDataObject { private _logger?: LiveTelemetryLogger; private static readonly dryInkMapKey = "dryInk"; @@ -403,8 +407,8 @@ export class LiveCanvas extends LiveDataObject { * The object's Fluid type factory. */ public static readonly factory = new DataObjectFactory( - LiveCanvas.TypeName, - LiveCanvas, + LiveCanvasClass.TypeName, + LiveCanvasClass, [], {} ); @@ -1027,7 +1031,15 @@ function isClearEvent(value: any): boolean { ); } +export type LiveCanvas = LiveCanvasClass; + +// eslint-disable-next-line no-redeclare +export const LiveCanvas = (() => { + const kind = createDataObjectKind(LiveCanvasClass); + return kind as typeof kind & SharedObjectKind; +})(); + /** - * Register `LiveCanvas` as an available `LoadableObjectClass` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. + * Register `LiveCanvas` as an available `SharedObjectKind` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. */ DynamicObjectRegistry.registerObjectClass(LiveCanvas, LiveCanvas.TypeName); diff --git a/packages/live-share-media/package.json b/packages/live-share-media/package.json index f846e878b..d36693967 100644 --- a/packages/live-share-media/package.json +++ b/packages/live-share-media/package.json @@ -17,13 +17,13 @@ "devDependencies": { "@microsoft/live-share": "2.0.0-internal.5", "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.9", - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", - "@fluidframework/test-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", + "@fluidframework/test-utils": "^2.0.0-rc.5.0.1", "@live-share-private/test-utils": "^2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", diff --git a/packages/live-share-media/src/LiveMediaSession.ts b/packages/live-share-media/src/LiveMediaSession.ts index 571811e59..90826d7a5 100644 --- a/packages/live-share-media/src/LiveMediaSession.ts +++ b/packages/live-share-media/src/LiveMediaSession.ts @@ -3,7 +3,10 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; +import { + DataObjectFactory, + createDataObjectKind, +} from "@fluidframework/aqueduct/internal"; import { DynamicObjectRegistry, LiveDataObject, @@ -27,11 +30,12 @@ import { import { MediaSessionActionThrottler } from "./MediaSessionActionThrottler"; import { RepeatedActionThrottler } from "./RepeatedActionThrottler"; import { IMediaPlayer } from "./IMediaPlayer"; +import { SharedObjectKind } from "fluid-framework"; /** * Live fluid object that synchronizes media playback across multiple clients. */ -export class LiveMediaSession extends LiveDataObject { +export class LiveMediaSessionClass extends LiveDataObject { private _actionThrottler: MediaSessionActionThrottler = new RepeatedActionThrottler(); private _logger?: LiveTelemetryLogger; @@ -56,8 +60,8 @@ export class LiveMediaSession extends LiveDataObject { * The objects fluid type factory. */ public static readonly factory = new DataObjectFactory( - LiveMediaSession.TypeName, - LiveMediaSession, + LiveMediaSessionClass.TypeName, + LiveMediaSessionClass, [], {} ); @@ -341,7 +345,18 @@ export class LiveMediaSession extends LiveDataObject { } /** - * Register `LiveMediaSession` as an available `LoadableObjectClass` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. + * Live fluid object that synchronizes media playback across multiple clients. + */ +export type LiveMediaSession = LiveMediaSessionClass; + +// eslint-disable-next-line no-redeclare +export const LiveMediaSession = (() => { + const kind = createDataObjectKind(LiveMediaSessionClass); + return kind as typeof kind & SharedObjectKind; +})(); + +/** + * Register `LiveMediaSession` as an available `SharedObjectKind` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. */ DynamicObjectRegistry.registerObjectClass( LiveMediaSession, diff --git a/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts b/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts index e2f5dd2b3..5c4140eed 100644 --- a/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts +++ b/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts @@ -19,7 +19,7 @@ import { UserMeetingRole, } from "@microsoft/live-share"; import { TestLiveShareHost } from "@microsoft/live-share"; -import { getLiveDataObjectClass } from "@microsoft/live-share"; +import { getLiveDataObjectKind } from "@microsoft/live-share"; import { waitForDelay } from "@microsoft/live-share/src/internals"; import { MockLiveShareRuntime } from "@microsoft/live-share/src/test/MockLiveShareRuntime"; import { @@ -48,11 +48,11 @@ async function getObjects( timestampProvider ); - let ObjectProxy1: any = getLiveDataObjectClass( + let ObjectProxy1: any = getLiveDataObjectKind( TestLiveMediaSession, liveRuntime1 ); - let ObjectProxy2: any = getLiveDataObjectClass( + let ObjectProxy2: any = getLiveDataObjectKind( TestLiveMediaSession, liveRuntime2 ); diff --git a/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts b/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts index a58bd506e..d84817cbd 100644 --- a/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts +++ b/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts @@ -21,7 +21,7 @@ import { UserMeetingRole, } from "@microsoft/live-share"; import { TestLiveShareHost } from "@microsoft/live-share"; -import { getLiveDataObjectClass } from "@microsoft/live-share"; +import { getLiveDataObjectKind } from "@microsoft/live-share"; import { waitForDelay } from "@microsoft/live-share/src/internals"; import { MockLiveShareRuntime } from "@microsoft/live-share/src/test/MockLiveShareRuntime"; import { isErrorLike } from "@microsoft/live-share/bin/internals"; @@ -58,11 +58,11 @@ async function getObjects( timestampProvider ); - let ObjectProxy1: any = getLiveDataObjectClass( + let ObjectProxy1: any = getLiveDataObjectKind( TestLiveMediaSession, liveRuntime1 ); - let ObjectProxy2: any = getLiveDataObjectClass( + let ObjectProxy2: any = getLiveDataObjectKind( TestLiveMediaSession, liveRuntime2 ); diff --git a/packages/live-share-react/README.md b/packages/live-share-react/README.md index 0207aba07..d3f68e738 100644 --- a/packages/live-share-react/README.md +++ b/packages/live-share-react/README.md @@ -477,7 +477,7 @@ export const ExampleTaskManager = () => { ### Custom Fluid object hooks -If you want to dynamically load a custom Fluid object in your app, use the `useDynamicDDS` to create a custom hook. This is the same hook that Live Share React uses internally within our custom hooks, such as `useLiveEvent`. If you made a custom data object or are using one of Fluid's experimental data structures, you also must register your Fluid `LoadableObjectClass` with `DynamicObjectRegistry.registerObjectClass` to `@microsoft/live-share`, if it is not already. +If you want to dynamically load a custom Fluid object in your app, use the `useDynamicDDS` to create a custom hook. This is the same hook that Live Share React uses internally within our custom hooks, such as `useLiveEvent`. If you made a custom data object or are using one of Fluid's experimental data structures, you also must register your Fluid `SharedObjectKind` with `DynamicObjectRegistry.registerObjectClass` to `@microsoft/live-share`, if it is not already. Implementations may vary for each dynamic object & hook. We will try and update this package periodically with new packages released by Fluid Framework and Live Share, as they are published. diff --git a/packages/live-share-react/package.json b/packages/live-share-react/package.json index c783a41f7..c0c298e4d 100644 --- a/packages/live-share-react/package.json +++ b/packages/live-share-react/package.json @@ -12,7 +12,6 @@ "typecheck": "tsc" }, "dependencies": { - "@microsoft/live-share-turbo": "2.0.0-internal.5", "url": "^0.11.0", "uuid": "^9.0.0" }, @@ -25,7 +24,7 @@ "@types/react-dom": "^18.0.0", "@types/uuid": "^9.0.1", "babel-loader": "^9.1.2", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "typescript": "^5.0.4" }, "peerDependencies": { diff --git a/packages/live-share-react/src/live-hooks/useLivePresence.ts b/packages/live-share-react/src/live-hooks/useLivePresence.ts index a2bfb552e..4a95aca96 100644 --- a/packages/live-share-react/src/live-hooks/useLivePresence.ts +++ b/packages/live-share-react/src/live-hooks/useLivePresence.ts @@ -55,7 +55,7 @@ export function useLivePresence( */ const { dds: livePresence } = useDynamicDDS>( uniqueKey, - LivePresence + LivePresence ); /** diff --git a/packages/live-share-react/src/providers/AzureProvider.tsx b/packages/live-share-react/src/providers/AzureProvider.tsx index 4c55e3ef0..901a3edc4 100644 --- a/packages/live-share-react/src/providers/AzureProvider.tsx +++ b/packages/live-share-react/src/providers/AzureProvider.tsx @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { IFluidContainer, LoadableObjectClassRecord } from "fluid-framework"; +import { ContainerSchema, IFluidContainer } from "fluid-framework"; import React from "react"; import { AzureClientProps, @@ -15,9 +15,9 @@ import { useSharedStateRegistry, } from "../shared-hooks"; import { - AzureTurboClient, - IFluidTurboClient, -} from "@microsoft/live-share-turbo"; + BaseLiveShareClient, + AzureLiveShareClient, +} from "@microsoft/live-share"; /** * React Context provider values for `` and ``. @@ -29,7 +29,7 @@ export interface IFluidContext extends ISharedStateRegistryResponse { /** * The Fluid Turbo client used for connecting to the Fluid container. */ - clientRef: React.MutableRefObject; + clientRef: React.MutableRefObject; /** * Stateful Fluid container. */ @@ -54,7 +54,7 @@ export interface IFluidContext extends ISharedStateRegistryResponse { */ getContainer: ( containerId: string, - initialObjects?: LoadableObjectClassRecord + fluidContainerSchema?: ContainerSchema ) => Promise; /** * React callback function to create and connect to a new Fluid container. @@ -67,7 +67,7 @@ export interface IFluidContext extends ISharedStateRegistryResponse { * @returns promise that returns a results object once complete (e.g., container, services, etc.) */ createContainer: ( - initialObjects?: LoadableObjectClassRecord, + fluidContainerSchema?: ContainerSchema, onInitializeContainer?: (container: IFluidContainer) => void ) => Promise; } @@ -125,9 +125,9 @@ export interface IAzureProviderProps { */ createOnLoad?: boolean; /** - * The initial object schema to use when {@link joinOnLoad} or {@link createOnLoad} is true. + * The initial schema to use when {@link joinOnLoad} or {@link createOnLoad} is true. */ - initialObjects?: LoadableObjectClassRecord; + fluidContainerSchema?: ContainerSchema; /** * Flag to control whether or not to connect to an existing container on first mount. * @@ -142,8 +142,8 @@ export interface IAzureProviderProps { */ export const AzureProvider: React.FC = (props) => { const startedRef = React.useRef(false); - const clientRef = React.useRef( - new AzureTurboClient(props.clientOptions) + const clientRef = React.useRef( + new AzureLiveShareClient(props.clientOptions) ); const [results, setResults] = React.useState< IAzureContainerResults | undefined @@ -158,14 +158,14 @@ export const AzureProvider: React.FC = (props) => { const getContainer = React.useCallback( async ( containerId: string, - initialObjects?: LoadableObjectClassRecord + fluidContainerSchema?: ContainerSchema ): Promise => { return new Promise(async (resolve, reject) => { try { const results: IAzureContainerResults = await clientRef.current.getContainer( containerId, - initialObjects + fluidContainerSchema ); setResults(results); resolve(results); @@ -185,13 +185,15 @@ export const AzureProvider: React.FC = (props) => { */ const createContainer = React.useCallback( async ( - initialObjects?: LoadableObjectClassRecord, + fluidContainerSchema?: ContainerSchema, onInitializeContainer?: (container: IFluidContainer) => void ): Promise => { return new Promise(async (resolve, reject) => { try { const results: IAzureContainerResults = - await clientRef.current.createContainer(initialObjects); + await clientRef.current.createContainer( + fluidContainerSchema + ); if (onInitializeContainer) { onInitializeContainer(results.container); } @@ -225,16 +227,16 @@ export const AzureProvider: React.FC = (props) => { return; startedRef.current = true; if (props.containerId && props.joinOnLoad) { - getContainer(props.containerId, props.initialObjects); + getContainer(props.containerId, props.fluidContainerSchema); } else if (!props.containerId && props.createOnLoad) { - createContainer(props.initialObjects); + createContainer(props.fluidContainerSchema); } }, [ results?.container?.connectionState, props.containerId, props.createOnLoad, props.joinOnLoad, - props.initialObjects, + props.fluidContainerSchema, getContainer, createContainer, ]); diff --git a/packages/live-share-react/src/providers/LiveShareProvider.tsx b/packages/live-share-react/src/providers/LiveShareProvider.tsx index fb918f3cf..d4f5be769 100644 --- a/packages/live-share-react/src/providers/LiveShareProvider.tsx +++ b/packages/live-share-react/src/providers/LiveShareProvider.tsx @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { IFluidContainer, LoadableObjectClassRecord } from "fluid-framework"; +import { ContainerSchema, IFluidContainer } from "fluid-framework"; import React from "react"; import { useSharedStateRegistry } from "../shared-hooks"; import { @@ -11,9 +11,9 @@ import { ILiveShareHost, ILiveShareJoinResults, ITimestampProvider, + LiveShareClient, } from "@microsoft/live-share"; import { FluidContext, useFluidObjectsContext } from "./AzureProvider"; -import { LiveShareTurboClient } from "@microsoft/live-share-turbo"; import { isITeamsJsSdkError } from "../internal"; /** @@ -52,7 +52,7 @@ export interface ILiveShareContext { * @returns Promise with `ILiveShareJoinResults`, which includes the Fluid container */ join: ( - initialObjects?: LoadableObjectClassRecord, + fluidContainerSchema?: ContainerSchema, onInitializeContainer?: (container: IFluidContainer) => void ) => Promise; } @@ -103,9 +103,9 @@ export interface ILiveShareProviderProps { */ host: ILiveShareHost; /** - * The initial object schema to use when {@link joinOnLoad} is true. + * The schema to use when {@link joinOnLoad} is true. */ - initialObjects?: LoadableObjectClassRecord; + fluidContainerSchema?: ContainerSchema; /** * Optional. Flag to determine whether to join Fluid container on load. */ @@ -118,7 +118,7 @@ export interface ILiveShareProviderProps { export const LiveShareProvider: React.FC = (props) => { const startedRef = React.useRef(false); const clientRef = React.useRef( - new LiveShareTurboClient(props.host, props.clientOptions) + new LiveShareClient(props.host, props.clientOptions) ); const [results, setResults] = React.useState< ILiveShareJoinResults | undefined @@ -132,12 +132,12 @@ export const LiveShareProvider: React.FC = (props) => { */ const join = React.useCallback( async ( - initialObjects?: LoadableObjectClassRecord, + fluidContainerSchema?: ContainerSchema, onInitializeContainer?: (container: IFluidContainer) => void ): Promise => { startedRef.current = true; const results = await clientRef.current.join( - initialObjects, + fluidContainerSchema, onInitializeContainer ); setResults(results); @@ -155,7 +155,7 @@ export const LiveShareProvider: React.FC = (props) => { // We are not doing this here for backwards compatibility. View the README for more information. if (results !== undefined || startedRef.current || !props.joinOnLoad) return; - join(props.initialObjects).catch((error) => { + join(props.fluidContainerSchema).catch((error) => { console.error(error); if (error instanceof Error) { setJoinError(error); @@ -178,7 +178,7 @@ export const LiveShareProvider: React.FC = (props) => { ); } }); - }, [results, props.joinOnLoad, props.initialObjects, join]); + }, [results, props.joinOnLoad, props.fluidContainerSchema, join]); return ( ` or ``. * - * @template T Type of Fluid LoadableObjectClass type to load. Must conform to IFluidLoadable interface. + * @template T Type of Fluid SharedObjectKind type to load. Must conform to IFluidLoadable interface. * @param uniqueKey uniqueKey value for the data object - * @param loadableObjectClass Fluid LoadableObjectClass to create/load. + * @param objectKind Fluid SharedObjectKind to create/load. * @param onFirstInitialize Optional. Callback function for when the DDS is first loaded * @returns the DDS object, which is of type T when loaded and undefined while loading */ @@ -24,7 +24,7 @@ export function useDynamicDDS< T extends IFluidLoadable = FluidObject & IFluidLoadable >( uniqueKey: string, - loadableObjectClass: LoadableObjectClass, + objectClass: SharedObjectKind, onFirstInitialize?: (dds: T) => void ): { dds: T | undefined; @@ -51,7 +51,7 @@ export function useDynamicDDS< try { const dds = await clientRef.current.getDDS( uniqueKey, - loadableObjectClass, + objectClass, onFirstInitialize ); if (mounted) { diff --git a/packages/live-share-react/src/shared-hooks/useSharedStateRegistry.ts b/packages/live-share-react/src/shared-hooks/useSharedStateRegistry.ts index b68e16126..42beb9ab6 100644 --- a/packages/live-share-react/src/shared-hooks/useSharedStateRegistry.ts +++ b/packages/live-share-react/src/shared-hooks/useSharedStateRegistry.ts @@ -3,7 +3,11 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { IValueChanged, SharedMap } from "fluid-framework/legacy"; +import { + IFluidContainer, + IValueChanged, + SharedMap, +} from "fluid-framework/legacy"; import React from "react"; import { DeleteSharedStateAction, @@ -13,6 +17,12 @@ import { UnregisterSharedSetStateAction, UpdateSharedStateAction, } from "../types"; +import { + getRootDataObject, + getRootDirectory, + TurboDirectory, + TurboStateMap, +} from "@microsoft/live-share"; /** * Response for the {@link useSharedStateRegistry} hook. @@ -52,6 +62,8 @@ export const useSharedStateRegistry = ( Map> >(new Map()); + const stateMap = useStateMap(results?.container); + /** * @see ISharedStateRegistryResponse.registerSharedSetStateAction */ @@ -76,14 +88,12 @@ export const useSharedStateRegistry = ( ); } // Set initial values, if known - const stateMap = results?.container.initialObjects - .TURBO_STATE_MAP as SharedMap | undefined; const initialValue = stateMap?.get(uniqueKey); if (initialValue) { setLocalStateAction(initialValue); } }, - [results] + [stateMap] ); /** @@ -105,13 +115,10 @@ export const useSharedStateRegistry = ( */ const updateSharedState: UpdateSharedStateAction = React.useCallback( (uniqueKey: string, value: any) => { - if (!results) return; - const { container } = results; - const stateMap = container.initialObjects - .TURBO_STATE_MAP as SharedMap; - stateMap.set(uniqueKey, value); + if (!stateMap) return; + stateMap?.set(uniqueKey, value); }, - [results] + [stateMap] ); /** @@ -119,25 +126,20 @@ export const useSharedStateRegistry = ( */ const deleteSharedState: DeleteSharedStateAction = React.useCallback( (uniqueKey: string) => { - if (!results) return; - const { container } = results; + if (!stateMap) return; let actionsMap = registeredSharedSetStateActionMapRef.current.get(uniqueKey); actionsMap?.clear(); - const stateMap = container.initialObjects - .TURBO_STATE_MAP as SharedMap; stateMap.delete(uniqueKey); }, - [results] + [stateMap] ); React.useEffect(() => { - if (!results) return; - const { container } = results; - const stateMap = container.initialObjects.TURBO_STATE_MAP as SharedMap; + if (!stateMap) return; const valueChangedListener = (changed: IValueChanged): void => { if (registeredSharedSetStateActionMapRef.current.has(changed.key)) { - const value = stateMap.get(changed.key); + const value = stateMap?.get(changed.key); const actionMap = registeredSharedSetStateActionMapRef.current.get( changed.key @@ -157,9 +159,9 @@ export const useSharedStateRegistry = ( }); }); return () => { - stateMap.off("valueChanged", valueChangedListener); + stateMap?.off("valueChanged", valueChangedListener); }; - }, [results]); + }, [stateMap]); return { registerSharedSetStateAction, @@ -168,3 +170,23 @@ export const useSharedStateRegistry = ( deleteSharedState, }; }; + +const useStateMap = (container: IFluidContainer | undefined) => { + const [stateMap, setStateMap] = React.useState(); + React.useEffect(() => { + if (!container) { + return; + } + const rootDataObject = getRootDataObject(container); + const rootDirectory = getRootDirectory(rootDataObject); + const turboDir = rootDirectory.getSubDirectory(TurboDirectory); + turboDir + ?.get(TurboStateMap) + .get() + .then((state: SharedMap) => { + setStateMap(state); + }); + }, [container]); + + return stateMap; +}; diff --git a/packages/live-share-react/src/shared-hooks/useSharedTree.ts b/packages/live-share-react/src/shared-hooks/useSharedTree.ts new file mode 100644 index 000000000..b3b049275 --- /dev/null +++ b/packages/live-share-react/src/shared-hooks/useSharedTree.ts @@ -0,0 +1,56 @@ +import { + ImplicitFieldSchema, + TreeViewConfiguration, + SharedTree, + TreeView, + ITree, + InsertableTreeFieldFromImplicitField, +} from "fluid-framework"; +import { IUseSharedTreeResults } from "../types"; +import { useDynamicDDS } from "../shared-hooks"; +import React from "react"; + +export function useSharedTree( + uniqueKey: string, + treeViewConfiguration: TreeViewConfiguration, + initialData: InsertableTreeFieldFromImplicitField +): IUseSharedTreeResults { + const [treeView, setTreeView] = React.useState>(); + const onFirstInitialize = React.useCallback( + (newDDS: ITree): void => { + // Create a `treeView` with the provided `treeViewConfiguration` + const _treeView = newDDS.viewWith(treeViewConfiguration); + if (_treeView.compatibility.canInitialize) { + // Set initial data + _treeView.initialize(initialData); + } + // `onFirstInitialize` is only called for the user that created the tree, but we need this object for all clients. + // Dispose, since we will call `sharedTree.viewWith` in a `useEffect` down below and set it to state. + _treeView.dispose(); + }, + [treeViewConfiguration, initialData] + ); + /** + * User facing: dynamically load the `SharedTree` DDS for the given unique key. + */ + const { dds: sharedTree } = useDynamicDDS( + uniqueKey, + SharedTree, + onFirstInitialize + ); + + /** + * Sets the tree view + */ + React.useEffect(() => { + if (!sharedTree) return; + // Create a `treeView` with the provided `treeViewConfiguration` + const _treeView = sharedTree.viewWith(treeViewConfiguration); + setTreeView(_treeView); + }, [sharedTree, treeViewConfiguration]); + + return { + treeView, + sharedTree, + }; +} diff --git a/packages/live-share-react/src/types/ActionTypes.ts b/packages/live-share-react/src/types/ActionTypes.ts index d3bf6451c..c05a601d7 100644 --- a/packages/live-share-react/src/types/ActionTypes.ts +++ b/packages/live-share-react/src/types/ActionTypes.ts @@ -5,8 +5,8 @@ import React from "react"; import { IFluidLoadable } from "@fluidframework/core-interfaces"; -import { LoadableObjectClass } from "fluid-framework"; import { ITimerConfig, ILiveEvent, PresenceState } from "@microsoft/live-share"; +import { SharedObjectKind } from "fluid-framework"; // React actions @@ -25,12 +25,12 @@ export type SetLocalStateAction = React.Dispatch>; /** * Callback for UnregisterDDSSetStateAction. - * (uniqueKey: string, componentId: string, objectClass: LoadableObjectClass, setLocalStateAction: SetLocalStateAction, onDidFirstInitialize?: (dds: T) => void) => void + * (uniqueKey: string, componentId: string, objectClass: SharedObjectKind, setLocalStateAction: SetLocalStateAction, onDidFirstInitialize?: (dds: T) => void) => void */ export type RegisterDDSSetStateAction = ( uniqueKey: string, componentId: string, - objectClass: LoadableObjectClass, + objectClass: SharedObjectKind, setLocalStateAction: SetLocalStateAction, onDidFirstInitialize?: (dds: T) => void ) => void; diff --git a/packages/live-share-react/src/types/ResultTypes.ts b/packages/live-share-react/src/types/ResultTypes.ts index 4a034c48d..a5947db4e 100644 --- a/packages/live-share-react/src/types/ResultTypes.ts +++ b/packages/live-share-react/src/types/ResultTypes.ts @@ -20,7 +20,12 @@ import { ExtendedMediaMetadata, MediaPlayerSynchronizer, } from "@microsoft/live-share-media"; -import { IFluidContainer } from "fluid-framework"; +import { + IFluidContainer, + ITree, + ImplicitFieldSchema, + TreeView, +} from "fluid-framework"; import { SharedMap } from "fluid-framework/legacy"; import { IReceiveLiveEvent } from "../interfaces"; import { @@ -71,6 +76,20 @@ export interface IUseSharedMapResults { sharedMap: SharedMap | undefined; } +/** + * Return type of `useSharedMap` hook. + */ +export interface IUseSharedTreeResults { + /** + * The Fluid `TreeView`. + */ + treeView: TreeView | undefined; + /** + * The Fluid `SharedTree` object, should you want to use it directly. + */ + sharedTree: ITree | undefined; +} + /** * Return type of `useLiveEvent` hook. */ diff --git a/packages/live-share-turbo/.nycrc.json b/packages/live-share-turbo/.nycrc.json deleted file mode 100644 index cc236d58b..000000000 --- a/packages/live-share-turbo/.nycrc.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "cache": false, - "extension": [".ts"], - "check-coverage": true, - "include": ["src/**"], - "exclude": ["src/pps/**"], - "statements": 90, - "branches": 90, - "functions": 95, - "lines": 90 - } \ No newline at end of file diff --git a/packages/live-share-turbo/LICENSE b/packages/live-share-turbo/LICENSE deleted file mode 100644 index 55955318b..000000000 --- a/packages/live-share-turbo/LICENSE +++ /dev/null @@ -1,87 +0,0 @@ -MICROSOFT SOFTWARE LICENSE TERMS - -MICROSOFT LIVE SHARE SDK – PRE-RELEASE VERSION -________________________________________ - -These license terms are an agreement between you and Microsoft Corporation (or one of its affiliates). They apply to the software named above and any Microsoft services or software updates (except to the extent such services or updates are accompanied by new or additional terms, in which case those different terms apply prospectively and do not alter your or Microsoft’s rights relating to pre-updated software or services). IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. - -1. INSTALLATION AND USE RIGHTS. - a) General. You may install and use any number of copies of the software to develop and test your applications, solely for the purpose stated in 1(b) below and otherwise for your internal business purposes. - b) Purpose. The use of this license provided under these terms is specifically limited to developing applications that interact solely within the Microsoft Teams Ecosystem. You may distribute the software according to Section 3 of these terms. - c) Third Party Components. The software may include third party components with separate legal notices or governed by other agreements, as may be described in the ThirdPartyNotices file(s) accompanying the software. - d) Microsoft Terms of Use. Some features of the software provide access to, or rely on, online services. The use of those services (but not the software) is governed by separate terms. This includes the Microsoft APIs Terms of Use which can be found at https://docs.microsoft.com/en-us/legal/microsoft-apis/terms-of-use and the Supplemental Terms of Use for Microsoft Azure which can be found at https://azure.microsoft.com/en-us/support/legal/preview-supplemental-terms. Please read them. The services may not be available in all regions. - -2. PRE-RELEASE SOFTWARE. The software is a pre-release version, and comes with no warranties as provided under Section 13. It may not operate correctly. We may change or discontinue the software at any time without notice. We may also choose not to make this software generally commercially available. It may be different from the commercially released version. - -3. DISTRIBUTABLE CODE. The software contains code you are permitted to distribute (i.e. make available for third parties) in applications you develop, as described in this Section. - a) Distribution Rights. The code and test files are distributable if included with the software. - i. Third Party Distribution. You may permit distributors of your applications to copy and distribute any of this distributable code you elect to distribute with your applications. - b) Distribution Requirements. For any code you distribute, you must: - i. adhere to the Purpose stated in Section 1(b); and - ii. indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your applications, except to the extent that any claim is based solely on the unmodified distributable code. - c) Distribution Restrictions. You may not: - i. use Microsoft’s trademarks or trade dress in your application in any way that suggests your application comes from or is endorsed by Microsoft; or - ii. modify or distribute the source code of any distributable code so that any part of it becomes subject to any license that requires that the distributable code, any other part of the software, or any of Microsoft’s other intellectual property be disclosed or distributed in source code form, or that others have the right to modify it. - -4. SCOPE OF LICENSE. The software is licensed, not sold. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you will not (and have no right to): - a) remove, minimize, block, or modify any notices of Microsoft or its suppliers in the software;software; - b) use the software in any way that is against the law or to create or propagate malware; or - c) share, publish, distribute, or lease the software (except for any distributable code, subject to the terms above), provide the software as a stand-alone offering for others to use, or transfer the software or this agreement to any third party. - -5. Data Protection. There are also some features in the software that may enable you to collect data from users of your applications. If you use these features to enable data collection in your applications, you must comply with applicable law, including providing appropriate notices to and obtaining consent from users of your applications. You can learn more about data collection and use in the help documentation and the privacy statement at https://aka.ms/privacy. Your use of the software operates as your consent to these practices. - -6. CODE OF CONDUCT. By agreeing to these license terms, you’re agreeing that, when using the software, you will follow these rules: - a) Don’t do anything illegal. - b) Don’t engage in any activity that exploits, harms, or threatens to harm children. - c) Don’t send spam. Spam is unwanted or unsolicited bulk email, postings, contact requests, SMS (text messages), or instant messages. - d) Don’t publicly display or use the software to share inappropriate content or material (involving, for example, nudity, bestiality, pornography, offensive language, graphic violence, or criminal activity). - e) Don’t engage in activity that is fraudulent, false or misleading (e.g., asking for money under false pretenses, impersonating someone else, manipulating the software to increase play count, or affect rankings, ratings, or comments). - f) Don’t circumvent any restrictions on access to or availability of the software. - g) Don’t engage in activity that is harmful to you, the software, or others (e.g., transmitting viruses, stalking, posting terrorist content, communicating hate speech, or advocating violence against others). - h) Don’t infringe upon the rights of others (e.g., unauthorized sharing of copyrighted music or other copyrighted material, resale or other distribution of Bing maps, or photographs). - i) Don’t engage in activity that violates the privacy of others. - j) Don’t help others break these rules. - -7. EXPORT RESTRICTIONS. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information on export restrictions, visit https://aka.ms/exporting. - -8. SUPPORT SERVICES. Microsoft is not obligated under this agreement to provide any support services for the software. Any support provided is “as is”, “with all faults”, and without warranty of any kind. - -9. ENTIRE AGREEMENT. This agreement, terms referenced herein, and any other terms Microsoft may provide for supplements, updates, or third-party applications, is the entire agreement for the software. - -10. APPLICABLE LAW AND PLACE TO RESOLVE DISPUTES. If you acquired the software in the United States or Canada, the laws of the state or province where you live (or, if a business, where your principal place of business is located) govern the interpretation of this agreement, claims for its breach, and all other claims (including consumer protection, unfair competition, and tort claims), regardless of conflict of laws principles, except that the FAA governs everything related to arbitration. If you acquired the software in any other country, its laws apply, except that the FAA governs everything related to arbitration. If U.S. federal jurisdiction exists, you and Microsoft consent to exclusive jurisdiction and venue in the federal court in King County, Washington for all disputes heard in court (excluding arbitration). If not, you and Microsoft consent to exclusive jurisdiction and venue in the Superior Court of King County, Washington for all disputes heard in court (excluding arbitration). - -11. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes certain legal rights. You may have other rights, including consumer rights, under the laws of your state or country. Separate and apart from your relationship with Microsoft, you may also have rights with respect to the party from which you acquired the software. This agreement does not change those other rights if the laws of your state or country do not permit it to do so. For example, if you acquired the software in one of the below regions, or mandatory country law applies, then the following provisions apply to you: - a. Australia. You have statutory guarantees under the Australian Consumer Law and nothing in this agreement is intended to affect those rights. - b. Canada. If you acquired this software in Canada, you may stop receiving updates by turning off the automatic update feature, disconnecting your device from the Internet (if and when you re-connect to the Internet, however, the software will resume checking for and installing updates), or uninstalling the software. The product documentation, if any, may also specify how to turn off updates for your specific device or software. - c. Germany and Austria. - • Warranty. The properly licensed software will perform substantially as described in any Microsoft materials that accompany the software. However, Microsoft gives no contractual guarantee in relation to the licensed software. - • Limitation of Liability. In case of intentional conduct, gross negligence, claims based on the Product Liability Act, as well as, in case of death or personal or physical injury, Microsoft is liable according to the statutory law. - • Subject to the foregoing clause ii., Microsoft will only be liable for slight negligence if Microsoft is in breach of such material contractual obligations, the fulfillment of which facilitate the due performance of this agreement, the breach of which would endanger the purpose of this agreement and the compliance with which a party may constantly trust in (so-called "cardinal obligations"). In other cases of slight negligence, Microsoft will not be liable for slight negligence. - -12. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES, OR CONDITIONS. TO THE EXTENT PERMITTED UNDER APPLICABLE LAWS, MICROSOFT EXCLUDES ALL IMPLIED WARRANTIES, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. - -13. PRE-RELEASE DISCLAIMER. AS A PRE-RELEASE VERSION, THIS SOFTWARE AND UNDERLYING SERVICES, ARE PROVIDED "AS-IS," "WITH ALL FAULTS," AND "AS AVAILABLE," AND ARE EXCLUDED FROM THE SERVICE LEVEL AGREEMENTS AND LIMITED WARRANTY. Pre-release versions may not be covered by customer support, and may be subject to reduced or different security, compliance and privacy commitments, as further explained in the Microsoft Privacy Statement, Microsoft Azure Trust Center, the Product Terms, the DPA, and any additional notices provided with the software. Where applicable, the following terms in the DPA do not apply to Previews: Processing of Personal Data; GDPR, Data Security. - -14. LIMITATION ON AND EXCLUSION OF DAMAGES. IF YOU HAVE ANY BASIS FOR RECOVERING DAMAGES DESPITE THE PRECEDING DISCLAIMER OF WARRANTY, YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT, OR INCIDENTAL DAMAGES. - - This limitation applies to (a) anything related to the software, services, content (including code) on third party Internet sites, or third party applications; and (b) claims for breach of contract, warranty, guarantee, or condition; strict liability, negligence, or other tort; or any other claim; in each case to the extent permitted by applicable law. - - It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your state, province, or country may not allow the exclusion or limitation of incidental, consequential, or other damages. - - Please note: As this software is distributed in Canada, some of the clauses in this agreement are provided below in French. - - Remarque: Ce logiciel étant distribué au Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. - - EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. - - LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. - - Cette limitation concerne: - - • tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers; et - - • les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. - - Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. - - EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. \ No newline at end of file diff --git a/packages/live-share-turbo/README.md b/packages/live-share-turbo/README.md deleted file mode 100644 index 757eab67a..000000000 --- a/packages/live-share-turbo/README.md +++ /dev/null @@ -1,291 +0,0 @@ -# Microsoft Live Share Turbo - -**DISCLAIMER:** This package is in preview and experimental. We are not yet committed to maintaining this package and may make breaking changes at any time. We may decide to move some or all of these features into the main `live-share` package at a future date. Read this package's [license](./LICENSE) for more information. - -Easily create collaborative apps, powered by [Fluid Framework](https://fluidframework.com/). This package is an experimental, alternative approach to building Fluid & Live Share applications that attempts to make it simpler to use dynamic distributed-data structures. One of the main benefits of Fluid is the efficient, hierarchal, and ultra-fast remote synchronized application state. Vanilla Fluid is highly customizable, allowing you to nest references to DDS objects within other ones. This is powerful but can be cumbersome to work with. By taking a more opinionated stance, Live Share Turbo makes it easy to leverage dynamic objects more easily than ever before. - -In traditional Fluid applications, you must define your Fluid container schema up front. In this package, you load data objects on the fly by simply providing a unique identifier for your object. If a data object matching that identifier exists already exists, the SDK will use that one; otherwise, a new one will be created on your behalf. Fluid Framework's `ConsensusRegisterCollection` object is used to ensure that only one user will create the DDS for each unique identifier. - -Here is a simple example of how to get started: - -```javascript -import { LiveShareHost } from "@microsoft/teams-js"; -import { LiveShareTurboClient } from "@microsoft/live-share-turbo"; -import { SharedMap } from "fluid-framework"; - -// Initialize the LiveShareTurboClient and join the session -const host = LiveShareHost.create(); -const client = new LiveShareTurboClient(host); -await client.join(); -// Setup collaborative objects (e.g., SharedMap) as needed during your application's runtime -const sharedMap = await client.getDDS( - "UNIQUE-KEY", - SharedMap, - (sharedMap) => { - // Use this optional callback to set initial values for the data object - sharedMap.set("foo", "bar"); - } -); -sharedMap.on("valueChanged", (changed, local) => { - const value = sharedMap.get(changed.key); - // Update your app to reflect the most recent state -}); -``` - -If you use React, we recommend using the specially optimized [Live Share React package](../live-share-react/README.md). - -You can find our API reference documentation at [aka.ms/livesharedocs](https://aka.ms/livesharedocs). - -## Installing - -To add the latest version of the SDK to your application using NPM: - -```bash -npm install fluid-framework @fluidframework/azure-client @microsoft/live-share @microsoft/live-share-turbo --save -``` - -or using [Yarn](https://yarnpkg.com/): - -```bash -yarn add fluid-framework @fluidframework/azure-client @microsoft/live-share @microsoft/live-share-turbo --save -``` - -## Building the extension - -After cloning the [GitHub repository](https://www.github.com/microsoft/live-share-sdk), navigate to the root folder and perform: - -```bash -npm install -npm run build -``` - -This will use npm workspaces to hoist and build all dependencies. - -## Introduction - -There are two clients that you may use depending on your scenario: `LiveShareTurboClient` for Live Share, and `AzureTurboClient` for Azure Fluid Relay. These are used for connecting to Fluid sessions, and are structured differently than the more traditional `LiveShareClient` and `AzureClient` respectively. These clients expose a `.getDDS` function, which under the hood uses `DynamicObjectManager` to dynamically get or create a given DDS. It also exposes a default `SharedMap` called `stateMap`, which you can use in your application to track basic app state. - -### How this package compares against vanilla Fluid / Live Share - -Normally with Fluid you must define the DDS objects you want to use up front in the `ContainerSchema`. This can feel rigid and makes it harder to add new features over time. With Live Share Turbo, you don't need to do that -- though you can -- because it abstracts out some of the more powerful but verbose aspects of Fluid. - -The following example shows how you might build a synchronized counter using vanilla Fluid Framework: - -```javascript -import { SharedMap } from "fluid-framework"; -import { LiveShareClient } from "@microsoft/live-share"; -import { LiveShareHost } from "@microsoft/teams-js"; - -// Initialize LiveShareClient -const host = LiveShareHost.create(); -const client = new LiveShareClient(host); -// Define your schema and join the container -const schema = { - initialObjects: { - countMap: SharedMap, - }, -} -let count = 0; -async function onFirstInitializeContainer(container) { - // Set initial value in sharedMap when container is first initialized - container.initialObjects.countMap.set("count", count); -} -const { container } = await client.joinContainer(schema, onFirstInitializeContainer); -const { countMap } = container.initialObjects; -// Listen for changes to the count and get the initial value -countMap.on("valueChanged", () => { - count = countMap.get("count"); -}) -count = countMap.get("count"); -// Button handler to increment count -document.getElementById("my-button").onclick = () => { - countMap.set("count", count + 1); -} -``` - -This works fine in many situations, but assumes that your `initialObjects` will not change after shipping your app in production. It also assumes that all collaborative objects exist at the time your container is created. Fortunately, Fluid supports something called `dynamicObjectTypes`, which allow you to create new objects on the fly and store references to them within a `SharedMap`, `SharedDirectory`, or `SharedTree`. - -Here is a code snippet showing how you might make the above example more scalable using dynamic objects in vanilla Fluid Framework: - -```javascript -import { SharedMap } from "fluid-framework"; -import { LiveShareClient } from "@microsoft/live-share"; -import { LiveShareHost } from "@microsoft/teams-js"; - -// Initialize LiveShareClient -const host = LiveShareHost.create(); -const client = new LiveShareClient(host); -// Define your schema and join the container -const schema = { - initialObjects: { - sharedMap: SharedMap - }, - dynamicObjectTypes: [SharedMap] -} -async function onFirstInitializeContainer(container) { - // Set initial value for dynamic countMap into sharedMap - const newCountMap = await container.create(SharedMap); - container.initialObjects.sharedMap.set("countMap", newCountMap.handle); - // Set initial count value - newCountMap.set("count", 0); -}; -const { container } = await client.joinContainer(schema, onFirstInitializeContainer); -// Define callback for setting up dynamic countMap -let countMap; -let count = 0; -async function setupCountMap() { - if (countMap) { - // if we already have a countMap set, we dispose the object - countMap.dispose(); - } - const countMapHandle = countMap.get("countMap"); - if (!countMapHandle) return; - countMap = await countMapHandle.get(); - // Listen for changes to the count - countMap.on("valueChanged", () => { - count = countMap.get("count"); - }); - // Get initial count value - count = countMap.get("count"); -} -// Listen for changes to countMap handle in sharedMap and get initial value -const { sharedMap } = container.initialObjects; -sharedMap.on("valueChanged", async (changed) => { - if (changed.key === "countMap") { - setupCountMap(); - } -}); -setupCountMap(); -// Button handler to increment count -document.getElementById("my-button").onclick = () => { - if (countMap) { - countMap.set("count", count + 1); - } -} -``` - -The above sample shows why Fluid is so powerful, albeit slightly complicated. The ability to have nested DDS objects in your code allows you to build robust collaborative apps that scale over time. Live Share Turbo leverages the power of dynamic objects with less code. It also makes using `initialObjects` optional. - -Here is a simple example showing how you could achieve the same behavior as above using Live Share Turbo: - -```javascript -import { LiveShareHost } from "@microsoft/live-share"; -import { LiveShareTurboClient } from "@microsoft/live-share-turbo"; -import { SharedMap } from "fluid-framework"; - -// Join the Fluid session -const host = LiveShareHost.create(); -const client = LiveShareTurboClient(host); -await client.join(); -// Get/create a TurboSharedMap instance that corresponds to a given unique identifier -const countMap = await client.getDDS("countMap", SharedMap, (initialMap) => { - // Callback to setup initial values when the DDS is first created - initialMap.set("count", 0); -}); -// Listen for changes to the count and get the initial value -let count; -countMap.on("valueChanged", () => { - count = countMap.get("count"); -}); -count = countMap.get("count"); -// Button handler to increment count -document.getElementById("my-button").onclick = () => { - countMap.set("count", count + 1); -}; -``` - -### Avoiding data loss - -In some circumstances while using this application -- particularly in cases of high latency while using Fluid's `Shared*` objects -- data loss is possible if multiple users attempt to create new data objects for the same key in short periods of time. This is mitigated by using `ConsensusRegisterCollection` to ensure that only one user is responsible for creating each DDS, but this will require more testing before we can have 100% confidence that data loss is not possible. - -To minimize this risk, you can also use the `initialObjects` prop when first creating a Fluid container and use identifiers for objects in a list. This has similar constraints as regular Fluid -- such as migrating schemas after first creating the container -- but is useful in scenarios where up-front data loss is unacceptable. Here is an example of how to do this in your application: - -```javascript -import { LiveShareHost } from "@microsoft/teams-js"; -import { LiveShareTurboClient } from "@microsoft/live-share-turbo"; -import { SharedMap } from "fluid-framework"; -import { v4 as uuid } from "uuid"; - -// Join the Fluid session -const host = LiveShareHost.create(); -const client = LiveShareTurboClient(host); -const initialObjects = { - taskBoardMap: SharedMap, -}; -await client.join(initialObjects); -// Listen for changes to the task boards and get the initial value -const taskBoardMap = await client.getDDS("taskBoardMap", SharedMap); -let taskBoards; -taskBoardMap.on("valueChanged", () => { - // Update UI with available task boards - taskBoards = taskBoardMap.entries(); -}); -taskBoards = taskBoardMap.entries(); - -// Button click handler for creating a new task board -document.getElementById("create-task-board").onclick = async () => { - // Dynamically create a new task list map - const id = uuid(); - const taskListMap = await client.getDDS(`taskListMap-${id}`, SharedMap); - // Insert the new task board object into the taskBoardMap - taskBoardMap.set(id, { - name: "New list" - }); - // TODO: Open the task list UI for the newly taskListMap -}; -``` - -**Note**: Depending on your scenario, this package might not be a good fit for your application. While many apps work great with this system, we recommend testing thoroughly before committing this package to production. - -### Accessing the Fluid container - -If you want to access the Fluid container or audience used by `LiveShareTurboClient` or `AzureTurboClient`, such as to create a Fluid object the "traditional" Fluid way, you can easily access it through the following API: - -```javascript -import { LiveShareHost } from "@microsoft/teams-js"; -import { LiveShareTurboClient } from "@microsoft/live-share-turbo"; - -const host = LiveShareHost.create(); -const client = LiveShareTurboClient(host); -// Option 1: get from join -const { container, audience } = await client.join(); -// Option 2: use client results -if (client.results) { - const { container, audience } = client.results; -} -``` - -## Code samples - -| Sample name | Description | Javascript | -| ----------------- | ----------------------------------------------------------------------- | ----------------------------------------------------- | -| Dice Roller Turbo | Enable all connected clients to roll several dice and view the result. | [View](../../samples/javascript/05.dice-roller-turbo) | - -## Package Compatibility - -The Live Share SDK contains dependencies for [@microsoft/teams-js](https://www.npmjs.com/package/@microsoft/teams-js) and [fluid-framework](https://www.npmjs.com/package/fluid-framework) packages among others. Both of these packages are sensitive to the package version your app any libraries use. You will likely run into issues if the package version your app uses doesn't match the version other libraries you depend on use. - -**It is critical that your app use the package dependencies listed in the table below.** Lookup the version of the `@microsoft/live-share` you're using and set any other dependencies in your package.json file to match: - -| @microsoft/live-share | @microsoft/teams-js | fluid-framework | @microsoft/live-share-\* | @fluidframework/azure-client | @microsoft/TeamsFx | @microsoft/TeamsFx-react | -| --------------------- | -------------------- | --------------- | -------------------------- | ---------------------------- | ------------------------------- | ------------------------------- | -| ^1.0.0 | ^2.11.0 | ^1.2.3 | ^1.0.0 | ^1.0.0 | ^2.5.0 | ^2.5.0 | - -## Contributing - -There are several ways you can [contribute](../../CONTRIBUTING.md) to this project: - -- [Submit bugs](https://github.com/microsoft/live-share-sdk/issues) and help us verify fixes as they are checked in. -- Review the source code changes. -- Engage with other Live Share developers on [StackOverflow](https://stackoverflow.com/questions/tagged/live-share). -- [Contribute bug fixes](../../CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact with any additional questions or comments. - -## Reporting Security Issues - -Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) at . You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the [MSRC PGP](https://technet.microsoft.com/security/dn606155) key, can be found in the [Security TechCenter](https://technet.microsoft.com/security/default). - -Copyright (c) Microsoft Corporation. All rights reserved. - -Licensed under a special [Microsoft](./LICENSE) License. diff --git a/packages/live-share-turbo/package.json b/packages/live-share-turbo/package.json deleted file mode 100644 index 6f2727f63..000000000 --- a/packages/live-share-turbo/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "@microsoft/live-share-turbo", - "version": "2.0.0-internal.5", - "description": "Alternative & lightweight way to build collaborative apps using Microsoft's Fluid Framework & Live Share.", - "author": "Microsoft", - "license": "SEE LICENSE IN LICENSE", - "main": "./bin/index.js", - "types": "./bin/index.d.ts", - "scripts": { - "clean": "npx shx rm -rf bin", - "build": "tsc -p tsconfig.build.json", - "test": "start-server-and-test start:server 7070 test:local-main", - "test:debug": "start-server-and-test start:server 7070 test:local-debug", - "start:server": "npx tinylicious@latest > tinylicious.log 2>&1", - "test:local-main": "ts-mocha --config ./src/test/.mocharc.js src/**/*.spec.ts --timeout 10000 -r jsdom-global/register", - "test:local-debug": "ts-mocha --config ./src/test/.mocharc.js src/**/*.spec.ts --inspect-brk -r jsdom-global/register", - "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test" - }, - "dependencies": { - "@fluidframework/register-collection": "^2.0.0-rc.4.0.2" - }, - "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", - "@microsoft/live-share": "2.0.0-internal.5", - "@types/assert": "^1.5.6", - "@types/mocha": "^10.0.1", - "@types/node": "^20.2.3", - "@types/uuid": "9.0.1", - "fluid-framework": "^2.0.0-rc.4.0.2", - "jsdom-global": "^3.0.2", - "jsdom": "^21.1.0", - "mocha": "^10.2.0", - "nyc": "^15.1.0", - "start-server-and-test": "^2.0.0", - "ts-mocha": "^10.0.0", - "typescript": "^5.0.4" - }, - "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.5", - "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" - }, - "repository": { - "directory": "packages/live-share-turbo", - "type": "git", - "url": "https://github.com/microsoft/live-share-sdk" - }, - "homepage": "https://aka.ms/teamsliveshare", - "bugs": { - "url": "https://github.com/microsoft/live-share-sdk/issues" - } -} diff --git a/packages/live-share-turbo/src/AzureTurboClient.ts b/packages/live-share-turbo/src/AzureTurboClient.ts deleted file mode 100644 index 7cbf810bf..000000000 --- a/packages/live-share-turbo/src/AzureTurboClient.ts +++ /dev/null @@ -1,136 +0,0 @@ -/*! - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Microsoft Live Share SDK License. - */ - -import { - ContainerSchema, - IFluidContainer, - LoadableObjectClassRecord, -} from "fluid-framework"; -import { - AzureClient, - AzureClientProps, - AzureContainerServices, -} from "@fluidframework/azure-client"; -import { - AzureLiveShareHost, - ILiveShareHost, - LiveShareRuntime, - getLiveContainerSchema, -} from "@microsoft/live-share"; -import { FluidTurboClient } from "./FluidTurboClient"; - -/** - * The `FluidTurboClient` implementation for the `AzureClient`. - * @see FluidTurboClient - */ -export class AzureTurboClient extends FluidTurboClient { - private _host: ILiveShareHost; - private _client: AzureClient; - private _results: - | { - container: IFluidContainer; - services: AzureContainerServices; - } - | undefined; - private _runtime: LiveShareRuntime; - - /** - * Creates a new client instance using configuration parameters. - * @param props - Properties for initializing a new AzureClient instance - */ - constructor( - props: AzureClientProps, - host: ILiveShareHost = AzureLiveShareHost.create(true) - ) { - super(); - this._client = new AzureClient(props); - this._host = host; - this._runtime = new LiveShareRuntime(this._host); - } - - /** - * Get the Fluid join container results - */ - public override get results(): - | { - container: IFluidContainer; - services: AzureContainerServices; - } - | undefined { - return this._results; - } - - /** - * Setting for whether `LiveDataObject` instances using `LiveObjectSynchronizer` can send background updates. - * Default value is `true`. - * - * @remarks - * This is useful for scenarios where there are a large number of participants in a session, since service performance degrades as more socket connections are opened. - * Intended for use when a small number of users are intended to be "in control", such as the `LiveFollowMode` class's `startPresenting()` feature. - * Set to true when the user is eligible to send background updates (e.g., "in control"), or false when that user is not in control. - * This setting will not prevent the local user from explicitly changing the state of objects using `LiveObjectSynchronizer`, such as `.set()` in `LiveState`. - * Impacts background updates of `LiveState`, `LivePresence`, `LiveTimer`, and `LiveFollowMode`. - */ - public get canSendBackgroundUpdates(): boolean { - return this._runtime.canSendBackgroundUpdates; - } - - public set canSendBackgroundUpdates(value: boolean) { - this._runtime.canSendBackgroundUpdates = value; - } - - /** - * Creates a new detached container instance in the Azure Fluid Relay. - * @param initialObjects Optional. Fluid ContainerSchema initialObjects. - * @param host Optional. ILiveShareHost implementation to use when using Live Share DDS's. - * @returns New detached container instance along with associated services. - */ - public async createContainer( - initialObjects?: LoadableObjectClassRecord - ): Promise<{ - container: IFluidContainer; - services: AzureContainerServices; - }> { - const schema = this.getInjectedContainerSchema(initialObjects); - this._results = await this._client.createContainer(schema); - if (this._host instanceof AzureLiveShareHost) { - this._host.setAudience(this._results.services.audience); - } - await this._runtime.start(); - return this._results; - } - - /** - * Accesses the existing container given its unique ID in the Azure Fluid Relay. - * @param id - Unique ID of the container in Azure Fluid Relay. - * @param initialObjects Optional. Fluid ContainerSchema initialObjects. - * @param host Optional. ILiveShareHost implementation to use when using Live Share DDS's. - * @returns Existing container instance along with associated services. - */ - public async getContainer( - id: string, - initialObjects?: LoadableObjectClassRecord - ): Promise<{ - container: IFluidContainer; - services: AzureContainerServices; - }> { - const schema = this.getInjectedContainerSchema(initialObjects); - this._results = await this._client.getContainer(id, schema); - if (this._host instanceof AzureLiveShareHost) { - this._host.setAudience(this._results.services.audience); - } - await this._runtime.start(); - return this._results; - } - - private getInjectedContainerSchema( - initialObjects?: LoadableObjectClassRecord - ): ContainerSchema { - return getLiveContainerSchema( - this.getContainerSchema(initialObjects), - this._runtime - ); - } -} diff --git a/packages/live-share-turbo/src/FluidTurboClient.ts b/packages/live-share-turbo/src/FluidTurboClient.ts deleted file mode 100644 index 856cff1a9..000000000 --- a/packages/live-share-turbo/src/FluidTurboClient.ts +++ /dev/null @@ -1,165 +0,0 @@ -/*! - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Microsoft Live Share SDK License. - */ - -import { - IFluidContainer, - LoadableObjectClass, - LoadableObjectClassRecord, -} from "fluid-framework"; -import { SharedMap } from "fluid-framework/legacy"; -import { AzureContainerServices } from "@fluidframework/azure-client"; -import { IFluidLoadable, FluidObject } from "@fluidframework/core-interfaces"; -import { IFluidTurboClient } from "./interfaces/IFluidTurboClient"; -import { DynamicObjectManager } from "./dds-objects"; -import { DynamicObjectRegistry } from "@microsoft/live-share"; -import { BASE_CONTAINER_SCHEMA } from "./internals"; - -/** - * Base class for building Fluid Turbo clients. - * @remarks - * Unlike other Fluid clients, the turbo client wraps functionality regularly exposed through an `IFluidContainer`. This is due to the more opinionated - * nature of this package than vanilla Fluid Framework, where developers do not define a full `ContainerSchema` themselves and objects are loaded dynamically. - */ -export abstract class FluidTurboClient implements IFluidTurboClient { - private _awaitConnectedPromise?: Promise; - - /** - * Get the Fluid join container results - */ - public abstract get results(): - | { - container: IFluidContainer; - services: AzureContainerServices; - } - | undefined; - - /** - * @see IFluidTurboClient.stateMap - */ - public get stateMap(): SharedMap | undefined { - if (this.results) { - return this.results.container.initialObjects - .TURBO_STATE_MAP as SharedMap; - } - return undefined; - } - - /** - * Setting for whether `LiveDataObject` instances using `LiveObjectSynchronizer` can send background updates. - * Default value is `true`. - * - * @remarks - * This is useful for scenarios where there are a large number of participants in a session, since service performance degrades as more socket connections are opened. - * Intended for use when a small number of users are intended to be "in control", such as the `LiveFollowMode` class's `startPresenting()` feature. - * There should always be at least one user in the session that has `canSendBackgroundUpdates` set to true. - * Set to true when the user is eligible to send background updates (e.g., "in control"), or false when that user is not in control. - * This setting will not prevent the local user from explicitly changing the state of objects using `LiveObjectSynchronizer`, such as `.set()` in `LiveState`. - * Impacts background updates of `LiveState`, `LivePresence`, `LiveTimer`, and `LiveFollowMode`. - */ - public abstract get canSendBackgroundUpdates(): boolean; - - public abstract set canSendBackgroundUpdates(value: boolean); - - private get dynamicObjects(): DynamicObjectManager | undefined { - if (this.results) { - return this.results.container.initialObjects - .TURBO_DYNAMIC_OBJECTS as DynamicObjectManager; - } - return undefined; - } - - /** - * @see IFluidTurboClient.getDDS - */ - public async getDDS< - T extends IFluidLoadable = FluidObject & IFluidLoadable - >( - objectKey: string, - objectClass: LoadableObjectClass, - onDidFirstInitialize?: (dds: T) => void - ): Promise { - // The uniqueKey key makes the developer provided uniqueKey never conflict across different DDS objects - if (!this.results) { - throw new Error( - "FluidTurboClient getDDS: cannot call until successful get/create/join FluidContainer" - ); - } - if (!this.dynamicObjects) { - throw new Error( - "FluidTurboClient: getDDS must have valid dynamicObjects DynamicObjectManager" - ); - } - await this.waitUntilConnected(); - const initialDDS = this.results.container.initialObjects[objectKey] as - | T - | undefined; - if (initialDDS !== undefined) { - return initialDDS; - } - // TODO: investigate fixes - // Fluid v2.0.0 removed "name" from their interfaces... - // This likely causes problems for non Live Share DDSs (which have static name fields) - const className = (objectClass as any).name ?? "unknown"; - const uniqueKey = `<${className}>:${objectKey}`; - const response = await this.dynamicObjects.getDDS( - uniqueKey, - objectClass, - this.results.container - ); - if (response.created) { - onDidFirstInitialize?.(response.dds); - } - return response.dds; - } - - /** - * Get the container schema to use within a `FluidTurboClient` container. - * - * @param initialObjects Optional. Initial objects to add to the schema - * @returns a `ContainerSchema` record to use in a Fluid container - */ - protected getContainerSchema(initialObjects?: LoadableObjectClassRecord) { - return { - initialObjects: { - ...BASE_CONTAINER_SCHEMA.initialObjects, - ...initialObjects, - }, - // Get the static registry of LoadableObjectClass types. - dynamicObjectTypes: [ - ...DynamicObjectRegistry.dynamicLoadableObjects.values(), - ], - }; - } - - private async waitUntilConnected(): Promise { - if (this._awaitConnectedPromise) { - return this._awaitConnectedPromise; - } - this._awaitConnectedPromise = new Promise((resolve, reject) => { - if (!this.results?.container) { - reject( - new Error( - "FluidTurboClient awaitConnected: cannot load DDS without a Fluid container" - ) - ); - this._awaitConnectedPromise = undefined; - } else { - const onConnected = () => { - this.results?.container.off("connected", onConnected); - resolve(); - }; - // Wait until connected event to ensure we have the latest document - // and don't accidentally override a dds handle recently created - // by another client - if (this.results.container.connectionState === 2) { - resolve(); - } else { - this.results.container.on("connected", onConnected); - } - } - }); - return this._awaitConnectedPromise; - } -} diff --git a/packages/live-share-turbo/src/LiveShareTurboClient.ts b/packages/live-share-turbo/src/LiveShareTurboClient.ts deleted file mode 100644 index 36b59c24e..000000000 --- a/packages/live-share-turbo/src/LiveShareTurboClient.ts +++ /dev/null @@ -1,104 +0,0 @@ -/*! - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Microsoft Live Share SDK License. - */ - -import { IFluidContainer, LoadableObjectClassRecord } from "fluid-framework"; -import { - LiveShareClient, - ILiveShareClientOptions, - ILiveShareHost, - ILiveShareJoinResults, -} from "@microsoft/live-share"; -import { FluidTurboClient } from "./FluidTurboClient"; - -/** - * The `FluidTurboClient` implementation for the `LiveShareClient`. - * @see FluidTurboClient - */ -export class LiveShareTurboClient extends FluidTurboClient { - private _client: LiveShareClient; - private _results: ILiveShareJoinResults | undefined; - - /** - * Creates a new `LiveShareTurbo` instance. - * @param host Host for the current Live Share session. - * @param options Optional. Configuration options for the client. - */ - constructor(host: ILiveShareHost, options?: ILiveShareClientOptions) { - super(); - this._client = new LiveShareClient(host, options); - } - - /** - * If true the client is configured to use a local test server. - */ - public get isTesting(): boolean { - return this._client.isTesting; - } - - /** - * Number of times the client should attempt to get the ID of the container to join for the - * current context. - */ - public get maxContainerLookupTries(): number { - return this._client.maxContainerLookupTries; - } - - /** - * Set number of times the client should attempt to get the ID of the container to join for the - * current context. - */ - public set maxContainerLookupTries(value: number) { - this._client.maxContainerLookupTries = value; - } - - /** - * Get the Fluid join container results - */ - public override get results(): ILiveShareJoinResults | undefined { - return this._results; - } - - /** - * Setting for whether `LiveDataObject` instances using `LiveObjectSynchronizer` can send background updates. - * Default value is `true`. - * - * @remarks - * This is useful for scenarios where there are a large number of participants in a session, since service performance degrades as more socket connections are opened. - * Intended for use when a small number of users are intended to be "in control", such as the `LiveFollowMode` class's `startPresenting()` feature. - * Set to true when the user is eligible to send background updates (e.g., "in control"), or false when that user is not in control. - * This setting will not prevent the local user from explicitly changing the state of objects using `LiveObjectSynchronizer`, such as `.set()` in `LiveState`. - * Impacts background updates of `LiveState`, `LivePresence`, `LiveTimer`, and `LiveFollowMode`. - */ - public get canSendBackgroundUpdates(): boolean { - return this._client.canSendBackgroundUpdates; - } - - public set canSendBackgroundUpdates(value: boolean) { - this._client.canSendBackgroundUpdates = value; - } - - /** - * Connects to the fluid container for the current teams context. - * - * @remarks - * The first client joining the container will create the container resulting in the - * `onContainerFirstCreated` callback being called. This callback can be used to set the initial - * state of of the containers object prior to the container being attached. - * @param initialObjects Optional. Fluid ContainerSchema initialObjects. - * @param onContainerFirstCreated Optional. Callback that's called when the container is first created. - * @returns The fluid `container` and `services` objects to use along with a `created` flag that if true means the container had to be created. - */ - public async join( - initialObjects?: LoadableObjectClassRecord, - onContainerFirstCreated?: (container: IFluidContainer) => void - ): Promise { - const schema = this.getContainerSchema(initialObjects); - this._results = await this._client.joinContainer( - schema, - onContainerFirstCreated - ); - return this._results; - } -} diff --git a/packages/live-share-turbo/src/dds-objects/index.ts b/packages/live-share-turbo/src/dds-objects/index.ts deleted file mode 100644 index 1fadc3971..000000000 --- a/packages/live-share-turbo/src/dds-objects/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./DynamicObjectManager"; diff --git a/packages/live-share-turbo/src/index.ts b/packages/live-share-turbo/src/index.ts deleted file mode 100644 index fb806023a..000000000 --- a/packages/live-share-turbo/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from "./AzureTurboClient"; -export * from "./LiveShareTurboClient"; -export * from "./FluidTurboClient"; -export * from "./dds-objects"; -export * from "./interfaces"; diff --git a/packages/live-share-turbo/src/interfaces/IFluidTurboClient.ts b/packages/live-share-turbo/src/interfaces/IFluidTurboClient.ts deleted file mode 100644 index f3e67c9ab..000000000 --- a/packages/live-share-turbo/src/interfaces/IFluidTurboClient.ts +++ /dev/null @@ -1,43 +0,0 @@ -/*! - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Microsoft Live Share SDK License. - */ - -import { LoadableObjectClass } from "fluid-framework"; -import { SharedMap } from "fluid-framework/legacy"; -import { IFluidLoadable, FluidObject } from "@fluidframework/core-interfaces"; - -export interface IFluidTurboClient { - /** - * Default SharedMap included in all clients for the purposes of tracking simple app state - */ - get stateMap(): SharedMap | undefined; - /** - * Setting for whether `LiveDataObject` instances using `LiveObjectSynchronizer` can send background updates. - * Default value is `true`. - * - * @remarks - * This is useful for scenarios where there are a large number of participants in a session, since service performance degrades as more socket connections are opened. - * Intended for use when a small number of users are intended to be "in control", such as the `LiveFollowMode` class's `startPresenting()` feature. - * There should always be at least one user in the session that has `canSendBackgroundUpdates` set to true. - * Set to true when the user is eligible to send background updates (e.g., "in control"), or false when that user is not in control. - * This setting will not prevent the local user from explicitly changing the state of objects using `LiveObjectSynchronizer`, such as `.set()` in `LiveState`. - * Impacts background updates of `LiveState`, `LivePresence`, `LiveTimer`, and `LiveFollowMode`. - */ - get canSendBackgroundUpdates(): boolean; - set canSendBackgroundUpdates(value: boolean); - /** - * Callback to load a Fluid DDS for a given key. If the object does not already exist, a new one will be created. - * - * @template T Type of Fluid object to load. - * @param objectKey unique key for the Fluid DDS you'd like to load - * @param objectClass Fluid LoadableObjectClass you'd like to load of type T - * @param onDidFirstInitialize Optional. Callback that is used when the object was initially created. - * @returns DDS object corresponding to `objectKey` - */ - getDDS & IFluidLoadable>( - objectKey: string, - objectClass: LoadableObjectClass, - onDidFirstInitialize?: (dds: T) => void - ): Promise; -} diff --git a/packages/live-share-turbo/src/interfaces/index.ts b/packages/live-share-turbo/src/interfaces/index.ts deleted file mode 100644 index 1b6e69f4e..000000000 --- a/packages/live-share-turbo/src/interfaces/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./IFluidTurboClient"; diff --git a/packages/live-share-turbo/src/internals/debounce.ts b/packages/live-share-turbo/src/internals/debounce.ts deleted file mode 100644 index 4db2cc7a7..000000000 --- a/packages/live-share-turbo/src/internals/debounce.ts +++ /dev/null @@ -1,26 +0,0 @@ -/*! - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Microsoft Live Share SDK License. - */ - -export function debounce( - fn: (...args: any[]) => R, - ms: number -): [(...args: any[]) => Promise, () => void] { - let timer: any; - - const debouncedFunc = (...args: any[]): Promise => - new Promise((resolve) => { - if (timer) { - clearTimeout(timer); - } - - timer = setTimeout(() => { - resolve(fn(args)); - }, ms); - }); - - const teardown = () => timer && clearTimeout(timer); - - return [debouncedFunc, teardown]; -} diff --git a/packages/live-share-turbo/src/internals/index.ts b/packages/live-share-turbo/src/internals/index.ts deleted file mode 100644 index af9b24abf..000000000 --- a/packages/live-share-turbo/src/internals/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./schema"; -export * from "./debounce"; diff --git a/packages/live-share-turbo/src/internals/schema.ts b/packages/live-share-turbo/src/internals/schema.ts deleted file mode 100644 index 85038235d..000000000 --- a/packages/live-share-turbo/src/internals/schema.ts +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Microsoft Live Share SDK License. - */ - -import { ContainerSchema } from "fluid-framework"; -import { SharedMap } from "fluid-framework/legacy"; -import { DynamicObjectManager } from "../dds-objects"; - -/** - * @hidden - */ -export const BASE_CONTAINER_SCHEMA: ContainerSchema = { - initialObjects: { - TURBO_STATE_MAP: SharedMap, - TURBO_DYNAMIC_OBJECTS: DynamicObjectManager, - }, -}; diff --git a/packages/live-share-turbo/src/test/.mocharc.js b/packages/live-share-turbo/src/test/.mocharc.js deleted file mode 100644 index 28b840eb9..000000000 --- a/packages/live-share-turbo/src/test/.mocharc.js +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * Copyright (c) Microsoft Corporation and contributors. All rights reserved. - * Licensed under the Microsoft Live Share SDK License. - */ - -'use strict'; - -const packageDir = `${__dirname}/../..`; - -const getFluidTestMochaConfig = require("@fluidframework/mocha-test-setup/mocharc-common.js"); -const config = getFluidTestMochaConfig(packageDir); -module.exports = config; diff --git a/packages/live-share-turbo/src/test/getContainerSchema.spec.ts b/packages/live-share-turbo/src/test/getContainerSchema.spec.ts deleted file mode 100644 index 052edf69a..000000000 --- a/packages/live-share-turbo/src/test/getContainerSchema.spec.ts +++ /dev/null @@ -1,65 +0,0 @@ -/*! - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Microsoft Live Share SDK License. - */ - -import { LiveEvent, TestLiveShareHost } from "@microsoft/live-share"; -import { strict as assert } from "assert"; -import { LoadableObjectClassRecord, SharedMap } from "fluid-framework"; -import { LiveShareTurboClient } from "../LiveShareTurboClient"; -import { SharedString } from "@fluidframework/sequence"; - -class TestLiveShareTurboClient extends LiveShareTurboClient { - // exposes protected method as public - public getContainerSchema(initialObjects?: LoadableObjectClassRecord) { - return super.getContainerSchema(initialObjects); - } -} - -describe("getContainerSpec", () => { - it("Container schema should have expected initialObjects with no additional initialObjects defined", () => { - const testLiveShareTurboClient = new TestLiveShareTurboClient( - TestLiveShareHost.create() - ); - const schema1 = testLiveShareTurboClient.getContainerSchema(); - assert( - schema1.initialObjects.TURBO_STATE_MAP !== undefined, - "TURBO_STATE_MAP is undefined" - ); - assert( - schema1.initialObjects.TURBO_DYNAMIC_OBJECTS !== undefined, - "TURBO_DYNAMIC_OBJECTS is undefined" - ); - }); - - it("Container schema should have expected initialObjects with no additional initialObjects defined", () => { - const testLiveShareTurboClient = new TestLiveShareTurboClient( - TestLiveShareHost.create() - ); - const schema1 = testLiveShareTurboClient.getContainerSchema({ - testMap1: SharedMap, - sharedString1: SharedString, - sharedEvent1: LiveEvent, - }); - assert( - schema1.initialObjects.TURBO_STATE_MAP !== undefined, - "TURBO_STATE_MAP is undefined" - ); - assert( - schema1.initialObjects.TURBO_DYNAMIC_OBJECTS !== undefined, - "TURBO_DYNAMIC_OBJECTS is undefined" - ); - assert( - schema1.initialObjects.testMap1 !== undefined, - "testMap1 is undefined" - ); - assert( - schema1.initialObjects.sharedString1 !== undefined, - "sharedString1 is undefined" - ); - assert( - schema1.initialObjects.sharedEvent1 !== undefined, - "sharedEvent1 is undefined" - ); - }); -}); diff --git a/packages/live-share-turbo/tsconfig.build.json b/packages/live-share-turbo/tsconfig.build.json deleted file mode 100644 index 9d8cab4a6..000000000 --- a/packages/live-share-turbo/tsconfig.build.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - }, - "exclude": [ - "test/**/*.ts" - ] - } \ No newline at end of file diff --git a/packages/live-share-turbo/tsconfig.json b/packages/live-share-turbo/tsconfig.json deleted file mode 100644 index 258994400..000000000 --- a/packages/live-share-turbo/tsconfig.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - "lib": ["es2020","DOM"], /* Specify library files to be included in the compilation. */ - "allowJs": false, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./bin", /* Redirect output structure to the directory. */ - // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ - }, - "exclude": ["build", "dist", "node_modules"], - "include": [ - "test/**/*.ts" - ], - "files": [ - "src/index.ts" - ] -} diff --git a/packages/live-share-turbo/typedoc.json b/packages/live-share-turbo/typedoc.json deleted file mode 100644 index 3facbaf81..000000000 --- a/packages/live-share-turbo/typedoc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "entryPoints": ["./src/index.ts"], - "excludeExternals": true, - "excludePrivate": true, - "excludeInternal": true, - "name": "_microsoft_live_share_turbo", - "validation": { - "invalidLink": true - } -} diff --git a/packages/live-share/package.json b/packages/live-share/package.json index 95919e0dd..8262b9380 100644 --- a/packages/live-share/package.json +++ b/packages/live-share/package.json @@ -9,26 +9,32 @@ "scripts": { "clean": "npx shx rm -rf bin", "build": "tsc -p tsconfig.build.json", - "test": "ts-mocha --config ./src/test/.mocharc.js src --recursive --extension .spec.ts --timeout 10000", + "test": "start-server-and-test test:client:start:server 7070 test:run", + "test:run": "ts-mocha --config ./src/test/.mocharc.js src --recursive --extension .spec.ts --timeout 10000", "test:debug": "ts-mocha --config ./src/test/.mocharc.js src --recursive --extension .spec.ts --inspect-brk", "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test", - "test:race": "node test-for-race-conditions.js" + "test:race": "node test-for-race-conditions.js", + "test:client:start:server": "npx tinylicious@latest > tinylicious.log 2>&1" }, + "scriptsComments": { + "test": "does additional local server setup that LiveShareClient.spec.ts and AzureLiveShareClient.spec.ts need, then runs all tests with test:run" + }, "dependencies": { - "uuid": "^9.0.0" + "uuid": "^9.0.0", + "@fluidframework/register-collection": "^2.0.0-rc || ^2.0.0-internal" }, "devDependencies": { - "@fluid-internal/client-utils": "^2.0.0-rc.4.0.2", - "@fluidframework/azure-client": "^2.0.0-rc.4.0.2", + "@fluid-internal/client-utils": "^2.0.0-rc.5.0.1", + "@fluidframework/azure-client": "^2.0.0-rc.5.0.1", "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.9", - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", - "@fluidframework/test-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", + "@fluidframework/test-utils": "^2.0.0-rc.5.0.1", "@live-share-private/test-utils": "^2.0.0-internal.2", "@types/assert": "^1.5.6", "@types/mocha": "^10.0.1", "@types/node": "^20.2.3", "@types/uuid": "9.0.1", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", diff --git a/packages/live-share/src/AzureLiveShareClient.ts b/packages/live-share/src/AzureLiveShareClient.ts new file mode 100644 index 000000000..0dd1ef3a1 --- /dev/null +++ b/packages/live-share/src/AzureLiveShareClient.ts @@ -0,0 +1,143 @@ +/*! + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Microsoft Live Share SDK License. + */ + +import { ContainerSchema, IFluidContainer } from "fluid-framework"; +import { AzureClient, AzureClientProps } from "@fluidframework/azure-client"; +import { AzureContainerServices } from "@fluidframework/azure-client/internal"; +import { BaseLiveShareClient } from "./internals/BaseLiveShareClient"; +import { ILiveShareHost } from "./interfaces"; +import { AzureLiveShareHost } from "./AzureLiveShareHost"; +import { LiveShareRuntime } from "./LiveShareRuntime"; +import { getLiveContainerSchema } from "./internals/schema-injection-utils"; +import { LiveShareClient } from "./LiveShareClient"; +import { LiveDataObject } from "./LiveDataObject"; +import { FluidCompatibilityMode } from "./internals/consts"; + +/** + * The `AzureLiveShareClient` implementation `BaseLiveShareClient`. + * @see BaseLiveShareClient + * + * @remarks + * You may choose to use this instead of {@link LiveShareClient} if you are using a custom Azure Fluid Relay instance. + * {@link LiveShareClient} does support custom Azure Fluid Relay connections, but only allows joining a container via {@link LiveShareClient.join}. + * Use {@link AzureLiveShareClient.getContainer} and {@link AzureLiveShareClient.createContainer} for more fine-grained control of connecting to containers. + * This ensures you can still use {@link LiveDataObject} DDS's, and useful Live Share features like {@link BaseLiveShareClient.getDDS}. + */ +export class AzureLiveShareClient extends BaseLiveShareClient { + private _host: ILiveShareHost; + private _client: AzureClient; + private _results: + | { + container: IFluidContainer; + services: AzureContainerServices; + } + | undefined; + + /** + * @hidden + */ + protected getDDSErrorJoinFunctionText: string = + "getContainer or createContainer"; + + /** + * Creates a new client instance using configuration parameters. + * @param props - Properties for initializing a new AzureClient instance + * @param host Optional. ILiveShareHost implementation to use when using Live Share DDS's. + */ + constructor( + props: AzureClientProps, + host: ILiveShareHost = AzureLiveShareHost.create(true) + ) { + super(new LiveShareRuntime(host)); + this._client = new AzureClient(props); + this._host = host; + } + + /** + * See {@link BaseLiveShareClient.results} for more information. + */ + public get results(): + | { + container: IFluidContainer; + services: AzureContainerServices; + } + | undefined { + return this._results; + } + + /** + * Creates a new detached container instance in the Azure Fluid Relay. + * + * @remarks + * Internally uses `AzureClient.createContainer`. + * See the docs for `AzureClient.createContainer` for more information. + * {@link https://fluidframework.com/docs/api/v2/azure-client/azureclient-class#createcontainer-method} + * + * @param initialObjects Optional. Fluid ContainerSchema initialObjects. + * @returns New detached container instance along with associated services. + */ + public async createContainer( + fluidContainerSchema?: ContainerSchema + ): Promise<{ + container: IFluidContainer; + services: AzureContainerServices; + }> { + const schema = this.getInjectedContainerSchema(fluidContainerSchema); + this._results = await this._client.createContainer( + schema, + FluidCompatibilityMode + ); + if (this._host instanceof AzureLiveShareHost) { + this._host.setAudience(this._results.services.audience); + } + + await this.addTurboFolder(this._results.container); + + await this._runtime.start(); + return this._results; + } + + /** + * Accesses the existing container given its unique ID in the Azure Fluid Relay. + * + * @remarks + * Internally uses `AzureClient.getContainer`. + * See the docs for `AzureClient.getContainer` for more information. + * {@link https://fluidframework.com/docs/api/v2/azure-client/azureclient-class#getcontainer-method} + * + * @param id - Unique ID of the container in Azure Fluid Relay. + * @param initialObjects Optional. Fluid ContainerSchema initialObjects. + * @param host Optional. ILiveShareHost implementation to use when using Live Share DDS's. + * @returns Existing container instance along with associated services. + */ + public async getContainer( + id: string, + fluidContainerSchema?: ContainerSchema + ): Promise<{ + container: IFluidContainer; + services: AzureContainerServices; + }> { + const schema = this.getInjectedContainerSchema(fluidContainerSchema); + this._results = await this._client.getContainer( + id, + schema, + FluidCompatibilityMode + ); + if (this._host instanceof AzureLiveShareHost) { + this._host.setAudience(this._results.services.audience); + } + await this._runtime.start(); + return this._results; + } + + private getInjectedContainerSchema( + fluidContainerSchema?: ContainerSchema + ): ContainerSchema { + return getLiveContainerSchema( + this.getContainerSchema(fluidContainerSchema), + this._runtime + ); + } +} diff --git a/packages/live-share/src/LiveDataObject.ts b/packages/live-share/src/LiveDataObject.ts index 66eb2f443..8ef6e2141 100644 --- a/packages/live-share/src/LiveDataObject.ts +++ b/packages/live-share/src/LiveDataObject.ts @@ -10,7 +10,8 @@ import { LiveDataObjectInitializeState, UserMeetingRole, } from "./interfaces"; -import { LiveShareReportIssueLink, waitUntilConnected } from "./internals"; +import { LiveShareReportIssueLink } from "./internals/consts"; +import { waitUntilConnected } from "./internals/utils"; /** * Extends Fluid's DataObject class. Intended for use with Live Share custom DDS's that rely on a `ILiveShareHost`. diff --git a/packages/live-share/src/LiveEvent.ts b/packages/live-share/src/LiveEvent.ts index a323ba754..9af6a53ff 100644 --- a/packages/live-share/src/LiveEvent.ts +++ b/packages/live-share/src/LiveEvent.ts @@ -3,8 +3,11 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; -import { IEvent } from "@fluidframework/common-definitions"; +import { + DataObjectFactory, + createDataObjectKind, +} from "@fluidframework/aqueduct/internal"; +import { IEvent } from "@fluidframework/core-interfaces"; import { UserMeetingRole, IClientTimestamp, @@ -13,7 +16,7 @@ import { } from "./interfaces"; import { LiveEventScope } from "./LiveEventScope"; import { LiveEventTarget } from "./LiveEventTarget"; -import { DynamicObjectRegistry } from "./DynamicObjectRegistry"; +import { DynamicObjectRegistry } from "./internals/DynamicObjectRegistry"; import { LiveDataObject } from "./LiveDataObject"; import { cloneValue } from "./internals"; import { @@ -21,6 +24,7 @@ import { LiveDataObjectNotInitializedError, UnexpectedError, } from "./errors"; +import { SharedObjectKind } from "fluid-framework"; /** * Events supported by `LiveEvent` object. @@ -68,7 +72,7 @@ export interface ILiveEventEvents extends IEvent { * `LiveEvents`. Use something like the `LiveState` class when syncing state. * @template TEvent Type of event to broadcast. */ -export class LiveEvent extends LiveDataObject<{ +export class LiveEventClass extends LiveDataObject<{ Events: ILiveEventEvents; }> { private _eventTarget?: LiveEventTarget; @@ -82,8 +86,8 @@ export class LiveEvent extends LiveDataObject<{ * The objects fluid type factory. */ public static readonly factory = new DataObjectFactory( - LiveEvent.TypeName, - LiveEvent, + LiveEventClass.TypeName, + LiveEventClass, [], {} ); @@ -221,7 +225,15 @@ export class LiveEvent extends LiveDataObject<{ } } +export type LiveEvent = LiveEventClass; + +// eslint-disable-next-line no-redeclare +export const LiveEvent = (() => { + const kind = createDataObjectKind(LiveEventClass); + return kind as typeof kind & SharedObjectKind; +})(); + /** - * Register `LiveEvent` as an available `LoadableObjectClass` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. + * Register `LiveEvent` as an available `SharedObjectKind` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. */ DynamicObjectRegistry.registerObjectClass(LiveEvent, LiveEvent.TypeName); diff --git a/packages/live-share/src/LiveEventScope.ts b/packages/live-share/src/LiveEventScope.ts index 00e12f4ee..c7beef7d6 100644 --- a/packages/live-share/src/LiveEventScope.ts +++ b/packages/live-share/src/LiveEventScope.ts @@ -8,7 +8,7 @@ import { ITelemetryBaseLogger, } from "@fluidframework/core-interfaces"; import { TypedEventEmitter } from "@fluid-internal/client-utils"; -import { IInboundSignalMessage } from "@fluidframework/runtime-definitions"; +import { IInboundSignalMessage } from "@fluidframework/runtime-definitions/internal"; import { ILiveEvent, UserMeetingRole } from "./interfaces"; import { LiveShareRuntime } from "./LiveShareRuntime"; import { isILiveEvent, waitUntilConnected } from "./internals"; diff --git a/packages/live-share/src/LiveFollowMode.ts b/packages/live-share/src/LiveFollowMode.ts index bad95bca7..4ab75825f 100644 --- a/packages/live-share/src/LiveFollowMode.ts +++ b/packages/live-share/src/LiveFollowMode.ts @@ -1,18 +1,22 @@ import { LiveDataObject } from "./LiveDataObject"; import { LiveState } from "./LiveState"; import { ILivePresenceEvents, LivePresence } from "./LivePresence"; -import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; +import { + DataObjectFactory, + createDataObjectKind, +} from "@fluidframework/aqueduct/internal"; import { IFluidHandle } from "@fluidframework/core-interfaces"; import { assert } from "@fluidframework/core-utils/internal"; import { LiveDataObjectInitializeState, UserMeetingRole } from "./interfaces"; import { LiveTelemetryLogger } from "./LiveTelemetryLogger"; import { LivePresenceUser, PresenceState } from "./LivePresenceUser"; -import { DynamicObjectRegistry } from "./DynamicObjectRegistry"; +import { DynamicObjectRegistry } from "./internals/DynamicObjectRegistry"; import { LiveDataObjectInitializeNotNeededError, LiveDataObjectNotInitializedError, UnexpectedError, } from "./errors"; +import { SharedObjectKind } from "fluid-framework"; /** * Events supported by `LiveFollowMode` object. @@ -172,7 +176,7 @@ const livePresenceKey = "@microsoft/live-share:LiveFollowMode:LivePresence"; * * @template TData Type of data value to share with clients for each user (e.g., the user's camera position in a 3D scene). */ -export class LiveFollowMode extends LiveDataObject<{ +export class LiveFollowModeClass extends LiveDataObject<{ Events: ILiveFollowModeEvents; }> { private _logger?: LiveTelemetryLogger; @@ -203,8 +207,8 @@ export class LiveFollowMode extends LiveDataObject<{ * The objects fluid type factory. */ public static readonly factory = new DataObjectFactory( - LiveFollowMode.TypeName, - LiveFollowMode, + LiveFollowModeClass.TypeName, + LiveFollowModeClass, [], {}, new Map>([ @@ -732,8 +736,16 @@ export class LiveFollowMode extends LiveDataObject<{ } } +export type LiveFollowMode = LiveFollowModeClass; + +// eslint-disable-next-line no-redeclare +export const LiveFollowMode = (() => { + const kind = createDataObjectKind(LiveFollowModeClass); + return kind as typeof kind & SharedObjectKind; +})(); + /** - * Register `LiveFollowMode` as an available `LoadableObjectClass` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. + * Register `LiveFollowMode` as an available `SharedObjectKind` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. */ DynamicObjectRegistry.registerObjectClass( LiveFollowMode, diff --git a/packages/live-share/src/LivePresence.ts b/packages/live-share/src/LivePresence.ts index 9902bb061..721982090 100644 --- a/packages/live-share/src/LivePresence.ts +++ b/packages/live-share/src/LivePresence.ts @@ -3,7 +3,10 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; +import { + DataObjectFactory, + createDataObjectKind, +} from "@fluidframework/aqueduct/internal"; import { IEvent } from "@fluidframework/common-definitions"; import { LivePresenceUser, @@ -20,13 +23,14 @@ import { UnexpectedError, } from "./errors"; import { TimeInterval } from "./TimeInterval"; -import { DynamicObjectRegistry } from "./DynamicObjectRegistry"; +import { DynamicObjectRegistry } from "./internals/DynamicObjectRegistry"; import { IClientInfo, LiveDataObjectInitializeState, UserMeetingRole, } from "./interfaces"; import { LiveDataObject } from "./LiveDataObject"; +import { SharedObjectKind } from "fluid-framework"; /** * Events supported by `LivePresence` object. @@ -66,7 +70,7 @@ export interface ILivePresenceEvents * Live fluid object that synchronizes presence information for the user with other clients. * @template TData Type of data object to share with clients. */ -export class LivePresence< +export class LivePresenceClass< TData extends object = object > extends LiveDataObject<{ Events: ILivePresenceEvents; @@ -88,8 +92,8 @@ export class LivePresence< * The objects fluid type factory. */ public static readonly factory = new DataObjectFactory( - LivePresence.TypeName, - LivePresence, + LivePresenceClass.TypeName, + LivePresenceClass, [], {} ); @@ -471,7 +475,16 @@ export class LivePresence< } } +export type LivePresence = + LivePresenceClass; + +// eslint-disable-next-line no-redeclare +export const LivePresence = (() => { + const kind = createDataObjectKind(LivePresenceClass); + return kind as typeof kind & SharedObjectKind>; +})(); + /** - * Register `LivePresence` as an available `LoadableObjectClass` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. + * Register `LivePresence` as an available `SharedObjectKind` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. */ DynamicObjectRegistry.registerObjectClass(LivePresence, LivePresence.TypeName); diff --git a/packages/live-share/src/LiveShareClient.ts b/packages/live-share/src/LiveShareClient.ts index 6340f98f6..239f904f9 100644 --- a/packages/live-share/src/LiveShareClient.ts +++ b/packages/live-share/src/LiveShareClient.ts @@ -3,7 +3,8 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { LiveShareTokenProvider, getInsecureTokenProvider } from "./internals"; +import { getInsecureTokenProvider, waitForDelay } from "./internals/utils"; +import { LiveShareTokenProvider } from "./internals/LiveShareTokenProvider"; import { AzureClient, AzureContainerServices, @@ -19,10 +20,13 @@ import { IRoleVerifier, ILiveShareJoinResults, } from "./interfaces"; +import { BaseLiveShareClient } from "./internals/BaseLiveShareClient"; import { LocalTimestampProvider } from "./LocalTimestampProvider"; import { TestLiveShareHost } from "./TestLiveShareHost"; import { LiveShareRuntime } from "./LiveShareRuntime"; -import { getLiveContainerSchema } from "./schema-injection-utils"; +import { getLiveContainerSchema } from "./internals/schema-injection-utils"; +import { ExpectedError, UnexpectedError } from "./errors"; +import { FluidCompatibilityMode } from "./internals"; /** * @hidden @@ -86,15 +90,19 @@ export interface ILiveShareClientOptions { /** * Client used to connect to fluid containers within a Microsoft Teams context. */ -export class LiveShareClient { +export class LiveShareClient extends BaseLiveShareClient { private _host: ILiveShareHost = TestLiveShareHost.create( undefined, undefined ); private readonly _options: ILiveShareClientOptions; - private readonly _runtime: LiveShareRuntime; private _results: ILiveShareJoinResults | undefined; + /** + * @hidden + */ + protected getDDSErrorJoinFunctionText: string = "join"; + /** * Creates a new `LiveShareClient` instance. * @param host Host for the current Live Share session. @@ -102,16 +110,19 @@ export class LiveShareClient { */ constructor(host: ILiveShareHost, options?: ILiveShareClientOptions) { // Validate host passed in - if (!host) { - throw new Error( - `LiveShareClient: prop \`host\` is \`${host}\` when it is expected to be a non-optional value of type \`ILiveShareHost\`. Please ensure \`host\` is defined before initializing \`LiveShareClient\`.` - ); - } - if (typeof host.getFluidTenantInfo != "function") { - throw new Error( - `LiveShareClient: \`host.getFluidTenantInfo\` is of type \`${typeof host.getFluidTenantInfo}\` when it is expected to be a type of \`function\`. For more information, review the \`ILiveShareHost\` interface.` - ); - } + ExpectedError.assert( + !!host, + "LiveShareClient:constructor", + `prop \`host\` is \`${host}\` when it is expected to be a non-optional value of type \`ILiveShareHost\`.`, + "Please ensure `host` is defined before initializing `LiveShareClient`." + ); + ExpectedError.assert( + typeof host.getFluidTenantInfo === "function", + "LiveShareClient:constructor", + `\`host.getFluidTenantInfo\` is of type \`${typeof host.getFluidTenantInfo}\` when it is expected to be a type of \`function\`.`, + "For more information, review the `ILiveShareHost` interface." + ); + super(new LiveShareRuntime(host, options, true)); this._host = host; // Save options this._options = { @@ -123,6 +134,15 @@ export class LiveShareClient { this._runtime = new LiveShareRuntime(this._host, this._options, true); } + /** + * @remarks + * Includes additional information, such as whether the local user created the container. + * See {@link BaseLiveShareClient.results} for more information. + */ + public get results(): ILiveShareJoinResults | undefined { + return this._results; + } + /** * If true the client is configured to use a local test server. */ @@ -137,27 +157,17 @@ export class LiveShareClient { public maxContainerLookupTries = 3; /** - * Setting for whether `LiveDataObject` instances using `LiveObjectSynchronizer` can send background updates. - * Default value is `true`. - * - * @remarks - * This is useful for scenarios where there are a large number of participants in a session, since service performance degrades as more socket connections are opened. - * Intended for use when a small number of users are intended to be "in control", such as the `LiveFollowMode` class's `startPresenting()` feature. - * There should always be at least one user in the session that has `canSendBackgroundUpdates` set to true. - * Set to true when the user is eligible to send background updates (e.g., "in control"), or false when that user is not in control. - * This setting will not prevent the local user from explicitly changing the state of objects using `LiveObjectSynchronizer`, such as `.set()` in `LiveState`. - * Impacts background updates of `LiveState`, `LivePresence`, `LiveTimer`, and `LiveFollowMode`. + * @deprecated Use {@link LiveShareClient.join} instead. */ - public get canSendBackgroundUpdates(): boolean { - return this._runtime.canSendBackgroundUpdates; - } - - public set canSendBackgroundUpdates(value: boolean) { - this._runtime.canSendBackgroundUpdates = value; + public async joinContainer( + fluidContainerSchema?: ContainerSchema, + onContainerFirstCreated?: (container: IFluidContainer) => void + ): Promise { + return this.join(fluidContainerSchema, onContainerFirstCreated); } /** - * Connects to the fluid container for the current teams context. + * Connects to the Fluid container for the relevant context (e.g., a Teams meeting). * * @remarks * The first client joining the container will create the container resulting in the @@ -167,8 +177,8 @@ export class LiveShareClient { * @param onContainerFirstCreated Optional. Callback that's called when the container is first created. * @returns the results of join container. */ - public async joinContainer( - fluidContainerSchema: ContainerSchema, + public async join( + fluidContainerSchema?: ContainerSchema, onContainerFirstCreated?: (container: IFluidContainer) => void ): Promise { performance.mark(`TeamsSync: join container`); @@ -178,7 +188,7 @@ export class LiveShareClient { // Apply runtime to ContainerSchema const schema = getLiveContainerSchema( - fluidContainerSchema, + this.getContainerSchema(fluidContainerSchema), this._runtime ); @@ -194,15 +204,14 @@ export class LiveShareClient { let endpoint: string | undefined = frsTenantInfo.serviceEndpoint; if (!endpoint) { - if (serviceEndpointMap.has(frsTenantInfo.serviceEndpoint)) { - endpoint = serviceEndpointMap.get( - frsTenantInfo.serviceEndpoint - ); - } else { - throw new Error( - `LiveShareClient:joinContainer - unable to find fluid endpoint for: ${frsTenantInfo.serviceEndpoint}` - ); - } + UnexpectedError.assert( + serviceEndpointMap.has(frsTenantInfo.serviceEndpoint), + "LiveShareClient:joinContainer", + `unable to find fluid endpoint for: ${frsTenantInfo.serviceEndpoint}` + ); + endpoint = serviceEndpointMap.get( + frsTenantInfo.serviceEndpoint + ); } // Is this a local config? @@ -281,14 +290,15 @@ export class LiveShareClient { created: false, ...(await client.getContainer( containerInfo.containerId, - fluidContainerSchema + fluidContainerSchema, + FluidCompatibilityMode )), }; } else if ( tries < this.maxContainerLookupTries && containerInfo.retryAfter > 0 ) { - await this.wait(containerInfo.retryAfter); + await waitForDelay(containerInfo.retryAfter); return await this.getOrCreateContainer( client, fluidContainerSchema, @@ -314,8 +324,12 @@ export class LiveShareClient { }> { // Create and initialize container const { container, services } = await client.createContainer( - fluidContainerSchema + fluidContainerSchema, + FluidCompatibilityMode ); + + await this.addTurboFolder(container); + if (onInitializeContainer) { onInitializeContainer(container); } @@ -336,19 +350,14 @@ export class LiveShareClient { created: false, ...(await client.getContainer( containerInfo.containerId!, - fluidContainerSchema + fluidContainerSchema, + FluidCompatibilityMode )), }; } else { return { container, services, created: true }; } } - - private wait(delay: number): Promise { - return new Promise((resolve) => { - setTimeout(() => resolve(), delay); - }); - } } function getIsTestClient( diff --git a/packages/live-share/src/LiveState.ts b/packages/live-share/src/LiveState.ts index 752a8d099..2a1f92ebd 100644 --- a/packages/live-share/src/LiveState.ts +++ b/packages/live-share/src/LiveState.ts @@ -3,9 +3,12 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; +import { + DataObjectFactory, + createDataObjectKind, +} from "@fluidframework/aqueduct/internal"; import { assert } from "@fluidframework/core-utils/internal"; -import { IEvent } from "@fluidframework/common-definitions"; +import { IEvent } from "@fluidframework/core-interfaces"; import { ILiveEvent, LiveDataObjectInitializeState, @@ -20,8 +23,9 @@ import { import { LiveTelemetryLogger } from "./LiveTelemetryLogger"; import { LiveEvent } from "./LiveEvent"; import { LiveObjectSynchronizer } from "./LiveObjectSynchronizer"; -import { DynamicObjectRegistry } from "./DynamicObjectRegistry"; +import { DynamicObjectRegistry } from "./internals/DynamicObjectRegistry"; import { LiveDataObject } from "./LiveDataObject"; +import { SharedObjectKind } from "fluid-framework"; /** * Events supported by [LiveState` object. @@ -67,7 +71,7 @@ export interface ILiveStateEvents extends IEvent { * changes. * @template TState Optional data object that's synchronized with the state. */ -export class LiveState extends LiveDataObject<{ +export class LiveStateClass extends LiveDataObject<{ Events: ILiveStateEvents; }> { private _logger?: LiveTelemetryLogger; @@ -84,8 +88,8 @@ export class LiveState extends LiveDataObject<{ * The objects fluid type factory. */ public static readonly factory = new DataObjectFactory( - LiveState.TypeName, - LiveState, + LiveStateClass.TypeName, + LiveStateClass, [], {} ); @@ -276,7 +280,15 @@ export class LiveState extends LiveDataObject<{ } } +export type LiveState = LiveStateClass; + +// eslint-disable-next-line no-redeclare +export const LiveState = (() => { + const kind = createDataObjectKind(LiveStateClass); + return kind as typeof kind & SharedObjectKind; +})(); + /** - * Register `LiveState` as an available `LoadableObjectClass` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. + * Register `LiveState` as an available `SharedObjectKind` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. */ DynamicObjectRegistry.registerObjectClass(LiveState, LiveState.TypeName); diff --git a/packages/live-share/src/LiveTimer.ts b/packages/live-share/src/LiveTimer.ts index e38c5bff0..5062805ea 100644 --- a/packages/live-share/src/LiveTimer.ts +++ b/packages/live-share/src/LiveTimer.ts @@ -3,7 +3,10 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; +import { + DataObjectFactory, + createDataObjectKind, +} from "@fluidframework/aqueduct/internal"; import { LiveObjectSynchronizer } from "./LiveObjectSynchronizer"; import { IClientTimestamp, @@ -11,15 +14,16 @@ import { LiveDataObjectInitializeState, UserMeetingRole, } from "./interfaces"; -import { IEvent } from "@fluidframework/common-definitions"; +import { IEvent } from "@fluidframework/core-interfaces"; import { LiveEvent } from "./LiveEvent"; -import { DynamicObjectRegistry } from "./DynamicObjectRegistry"; +import { DynamicObjectRegistry } from "./internals/DynamicObjectRegistry"; import { LiveDataObject } from "./LiveDataObject"; import { LiveDataObjectInitializeNotNeededError, LiveDataObjectNotInitializedError, UnexpectedError, } from "./errors"; +import { SharedObjectKind } from "fluid-framework"; export interface ITimerConfigData { /** @@ -100,7 +104,7 @@ export interface ILiveTimerEvents extends IEvent { (event: "onTick", listener: (milliRemaining: number) => void): any; } -export class LiveTimer extends LiveDataObject<{ +export class LiveTimerClass extends LiveDataObject<{ Events: ILiveTimerEvents; }> { private _currentConfig: ITimerConfigEvent = { @@ -125,8 +129,8 @@ export class LiveTimer extends LiveDataObject<{ * The objects fluid type factory. */ public static readonly factory = new DataObjectFactory( - LiveTimer.TypeName, - LiveTimer, + LiveTimerClass.TypeName, + LiveTimerClass, [], {} ); @@ -464,7 +468,15 @@ export class LiveTimer extends LiveDataObject<{ } } +export type LiveTimer = LiveTimerClass; + +// eslint-disable-next-line no-redeclare +export const LiveTimer = (() => { + const kind = createDataObjectKind(LiveTimerClass); + return kind as typeof kind & SharedObjectKind; +})(); + /** - * Register `LiveTimer` as an available `LoadableObjectClass` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. + * Register `LiveTimer` as an available `SharedObjectKind` for use in packages that support dynamic object loading, such as `@microsoft/live-share-turbo`. */ DynamicObjectRegistry.registerObjectClass(LiveTimer, LiveTimer.TypeName); diff --git a/packages/live-share/src/errors.ts b/packages/live-share/src/errors.ts index 146193829..6da07284f 100644 --- a/packages/live-share/src/errors.ts +++ b/packages/live-share/src/errors.ts @@ -76,3 +76,25 @@ export class LiveDataObjectInitializeNotNeededError extends Error { ); } } + +/** + * @hidden + * Use for generic expected errors. Use to get standard formatting of errors. + */ +export class ExpectedError extends Error { + constructor(prefix: string, message: string, helpText: string) { + super( + `${prefix} - ${message}.\n${helpText}\nIf you think you received this error by mistake, report an issue at ${LiveShareReportIssueLink}.` + ); + } + + static assert( + condition: boolean, + prefix: string, + message: string, + helpText: string + ): asserts condition { + if (condition) return; + throw new ExpectedError(prefix, message, helpText); + } +} diff --git a/packages/live-share/src/index.ts b/packages/live-share/src/index.ts index bc527f7f4..21347f8a4 100644 --- a/packages/live-share/src/index.ts +++ b/packages/live-share/src/index.ts @@ -3,17 +3,15 @@ * Licensed under the Microsoft Live Share SDK License. */ -export * from "./DynamicObjectRegistry"; +export * from "./AzureLiveShareClient"; +export * from "./AzureLiveShareHost"; +export * from "./errors"; export * from "./HostTimestampProvider"; export * from "./interfaces"; export * from "./LiveEvent"; -export * from "./LiveEventScope"; -export * from "./LiveEventSource"; -export * from "./LiveEventTarget"; -export * from "./LiveEventTimer"; +export * from "./LiveFollowMode"; export * from "./LivePresence"; export * from "./LivePresenceUser"; -export * from "./LiveFollowMode"; export * from "./LiveShareClient"; export * from "./LiveState"; export * from "./LiveTelemetryLogger"; @@ -22,9 +20,21 @@ export * from "./LocalTimestampProvider"; export * from "./TestLiveShareHost"; export * from "./TimeInterval"; export * from "./TimestampProvider"; -export * from "./schema-injection-utils"; + +export * from "./LiveEventTimer"; // TODO: Delete LiveEventTime.ts + +// TODO: our package structure is such that things that need to be exposed at all for other live share libs +// are in the root of the directory even if they are "internal". move some to internal again? +export * from "./internals/BaseLiveShareClient"; +export * from "./internals/DynamicObjectRegistry"; +export * from "./internals/DynamicObjectManager"; +export * from "./internals/schema-injection-utils"; +export * from "./internals/smuggle"; + +// TODO: move to internal export * from "./LiveDataObject"; -export * from "./LiveShareRuntime"; -export * from "./AzureLiveShareHost"; +export * from "./LiveEventScope"; +export * from "./LiveEventSource"; +export * from "./LiveEventTarget"; export * from "./LiveObjectSynchronizer"; -export * from "./errors"; +export * from "./LiveShareRuntime"; diff --git a/packages/live-share/src/interfaces.ts b/packages/live-share/src/interfaces.ts index 00b3f0046..f6b9686af 100644 --- a/packages/live-share/src/interfaces.ts +++ b/packages/live-share/src/interfaces.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { IInboundSignalMessage } from "@fluidframework/runtime-definitions"; +import { IInboundSignalMessage } from "@fluidframework/runtime-definitions/internal"; import { AzureContainerServices } from "@fluidframework/azure-client"; import { IFluidContainer } from "fluid-framework"; diff --git a/packages/live-share/src/internals/BaseLiveShareClient.ts b/packages/live-share/src/internals/BaseLiveShareClient.ts new file mode 100644 index 000000000..9105e6bd1 --- /dev/null +++ b/packages/live-share/src/internals/BaseLiveShareClient.ts @@ -0,0 +1,257 @@ +/*! + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Microsoft Live Share SDK License. + */ + +import { + ContainerSchema, + FluidObject, + IFluidContainer, + SharedObjectKind, +} from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; +import { AzureContainerServices } from "@fluidframework/azure-client/internal"; +import { IFluidLoadable } from "@fluidframework/core-interfaces"; +import { DynamicObjectRegistry } from "./DynamicObjectRegistry"; +import { DynamicObjectManager } from "./DynamicObjectManager"; +import { LiveShareRuntime } from "../LiveShareRuntime"; +import { + getRootDataObject, + getContainerRuntime, + getRootDirectory, + TurboDirectory, + TurboDynamicObjects, + TurboStateMap, +} from "./smuggle"; +import { isErrorLike } from "./type-guards"; +import { getFactoryName } from "./fluid-duplicated"; +import { ExpectedError } from "../errors"; + +/** + * Base class for building Fluid Turbo clients. + * @remarks + * Unlike other Fluid clients, the turbo client wraps functionality regularly exposed through an `IFluidContainer`. This is due to the more opinionated + * nature of this package than vanilla Fluid Framework, where developers do not define a full `ContainerSchema` themselves and objects are loaded dynamically. + */ +export abstract class BaseLiveShareClient { + private _awaitConnectedPromise?: Promise; + protected _runtime: LiveShareRuntime; + private _turboStateMap?: SharedMap; + private _turboDynamicObjects?: DynamicObjectManager; + + /** + * Constructor to create a new BaseLiveShareClient instance. + * + * @param runtime Live Share runtime instance + */ + protected constructor(runtime: LiveShareRuntime) { + this._runtime = runtime; + } + + /** + * Get the Fluid join container results. + * Includes Fluid container and Azure container services. + */ + public abstract get results(): + | { + container: IFluidContainer; + services: AzureContainerServices; + } + | undefined; + + /** + * Default SharedMap included in all clients for the purposes of tracking simple app state + */ + public get stateMap(): SharedMap | undefined { + if (this._turboStateMap) { + return this._turboStateMap; + } + return undefined; + } + + /** + * Join container functions to call. Used for generating helpful error messages when calling {@link getDDS}. + */ + protected abstract getDDSErrorJoinFunctionText: string; + + /** + * Setting for whether `LiveDataObject` instances using `LiveObjectSynchronizer` can send background updates. + * Default value is `true`. + * + * @remarks + * This is useful for scenarios where there are a large number of participants in a session, since service performance degrades as more socket connections are opened. + * Intended for use when a small number of users are intended to be "in control", such as the `LiveFollowMode` class's `startPresenting()` feature. + * There should always be at least one user in the session that has `canSendBackgroundUpdates` set to true. + * Set to true when the user is eligible to send background updates (e.g., "in control"), or false when that user is not in control. + * This setting will not prevent the local user from explicitly changing the state of objects using `LiveObjectSynchronizer`, such as `.set()` in `LiveState`. + * Impacts background updates of `LiveState`, `LivePresence`, `LiveTimer`, and `LiveFollowMode`. + */ + public get canSendBackgroundUpdates(): boolean { + return this._runtime.canSendBackgroundUpdates; + } + + public set canSendBackgroundUpdates(value: boolean) { + this._runtime.canSendBackgroundUpdates = value; + } + + private async dynamicObjects(): Promise { + if (!this._turboDynamicObjects) { + await this.loadFromTurboDirectory(); + } + return this._turboDynamicObjects; + } + + private async loadFromTurboDirectory() { + if (!this.results) { + return; + } + + const rootDataObject = getRootDataObject(this.results.container); + const rootDirectory = getRootDirectory(rootDataObject); + const turboDir = rootDirectory.getSubDirectory(TurboDirectory); + + if (turboDir) { + this._turboDynamicObjects = await turboDir + .get(TurboDynamicObjects) + .get(); + this._turboStateMap = await turboDir.get(TurboStateMap).get(); + } + } + + /** + * Callback to load a Fluid DDS for a given key. If the object does not already exist, a new one will be created. + * If the key matches an object in the `initialObjects` from your `ContainerSchema`, the initial object will be returned. + * + * @template T Type of Fluid object to load. + * @param objectKey unique key for the Fluid DDS you'd like to load + * @param objectClass Fluid SharedObjectKind you'd like to load of type T + * @param onDidFirstInitialize Optional. Callback that is used when the object was initially created. + * @returns DDS object corresponding to `objectKey` + * + * @throws error if you have not already joined the Fluid container. + * @throws error if you are using a legacy container created prior to Live Share version 2.0.0 or greater. + */ + public async getDDS< + T extends IFluidLoadable = FluidObject & IFluidLoadable + >( + objectKey: string, + objectClass: SharedObjectKind, + onDidFirstInitialize?: (dds: T) => void + ): Promise { + ExpectedError.assert( + !!this.results, + "BaseLiveShareClient:getDDS", + "cannot call until successfully joined a FluidContainer", + `To fix this issue, call the ${this.getDDSErrorJoinFunctionText} function before using this API.` + ); + + await this.waitUntilConnected(); + try { + const initialDDS = this.results.container.initialObjects[ + objectKey + ] as T | undefined; + if (initialDDS !== undefined) { + return initialDDS; + } + } catch (e) { + // ignore "Initial Objects were not correctly initialized" error if none defined. + } + + const dynamicObjects = await this.dynamicObjects(); + ExpectedError.assert( + !!dynamicObjects, + "BaseLiveShareClient:getDDS", + "getDDS must have valid dynamicObjects DynamicObjectManager instance. This implies this container was created with a version of Live Share prior to 2.0.0 or greater.", + "To fix this error, please create a new Fluid container and try again." + ); + + // The uniqueKey key makes the developer provided uniqueKey never conflict across different DDS objects + const className = + (objectClass as any).name ?? + getFactoryName(objectClass) ?? + "unknown"; + const uniqueKey = `<${className}>:${objectKey}`; + const response = await dynamicObjects.getDDS( + uniqueKey, + objectClass, + this.results.container, + onDidFirstInitialize + ); + return response.dds; + } + + /** + * Get the container schema to use within a `BaseLiveShareClient` container. + * + * @param initialObjects Optional. Initial objects to add to the schema + * @returns a `ContainerSchema` record to use in a Fluid container + */ + protected getContainerSchema(schema?: ContainerSchema): ContainerSchema { + return { + initialObjects: { + ...schema?.initialObjects, + }, + // Get the static registry of SharedObjectKind types. + dynamicObjectTypes: [ + ...(schema?.dynamicObjectTypes ?? []), + ...DynamicObjectRegistry.dynamicLoadableObjects.values(), + ] as unknown as SharedObjectKind[], + }; + } + + /** + * Utility function to wait until the Fluid container is connected. + * + * @returns promise that will resolve once the container connects. + */ + protected async waitUntilConnected(): Promise { + if (this._awaitConnectedPromise) { + return this._awaitConnectedPromise; + } + this._awaitConnectedPromise = new Promise((resolve, reject) => { + if (!this.results?.container) { + reject( + new Error( + "FluidTurboClient awaitConnected: cannot load DDS without a Fluid container" + ) + ); + this._awaitConnectedPromise = undefined; + } else { + const onConnected = () => { + this.results?.container.off("connected", onConnected); + resolve(); + }; + // Wait until connected event to ensure we have the latest document + // and don't accidentally override a dds handle recently created + // by another client + if (this.results.container.connectionState === 2) { + resolve(); + } else { + this.results.container.on("connected", onConnected); + } + } + }); + return this._awaitConnectedPromise; + } + + /** + * @internal + * Adds additional objects needed by Live Share to the Fluid container's root data object. + * Intended for use only when extending `BaseLiveShareClient`. + * This should be called only when the container is first created. + * + * @param container Fluid container to add the objects to. + */ + protected async addTurboFolder(container: IFluidContainer) { + const rootDataObject = getRootDataObject(container); + const rootDirectory = getRootDirectory(rootDataObject); + const containerRuntime = getContainerRuntime(rootDataObject); + + const turboDir = rootDirectory.createSubDirectory(TurboDirectory); + const obj = await SharedMap.create(containerRuntime, undefined); + turboDir.set(TurboStateMap, obj.handle); + + const turboObjectManager = await container.create(DynamicObjectManager); + turboDir.set(TurboDynamicObjects, turboObjectManager.handle); + } +} diff --git a/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts b/packages/live-share/src/internals/DynamicObjectManager.ts similarity index 80% rename from packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts rename to packages/live-share/src/internals/DynamicObjectManager.ts index 59fffa67b..3cd50f73f 100644 --- a/packages/live-share-turbo/src/dds-objects/DynamicObjectManager.ts +++ b/packages/live-share/src/internals/DynamicObjectManager.ts @@ -3,16 +3,20 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { DataObjectFactory } from "@fluidframework/aqueduct/internal"; -import { LoadableObjectClass, IFluidContainer } from "fluid-framework"; import { - IFluidHandle, + DataObjectFactory, + createDataObjectKind, +} from "@fluidframework/aqueduct/internal"; +import { FluidObject, - IFluidLoadable, -} from "@fluidframework/core-interfaces"; + IFluidContainer, + SharedObjectKind, +} from "fluid-framework"; +import { IFluidHandle, IFluidLoadable } from "@fluidframework/core-interfaces"; import { assert } from "@fluidframework/core-utils/internal"; import { ConsensusRegisterCollection } from "@fluidframework/register-collection/internal"; -import { DynamicObjectRegistry, LiveDataObject } from "@microsoft/live-share"; +import { DynamicObjectRegistry } from "./DynamicObjectRegistry"; +import { LiveDataObject } from "../LiveDataObject"; // Register ConsensusRegisterCollection DynamicObjectRegistry.registerObjectClass( @@ -28,7 +32,7 @@ const dynamicObjectsCollectionKey = "liveShareConsensusRegisterCollectionKey"; * @remarks * If a DDS does not yet exist for a given key, a new one is created. Fluid `ConsensusRegisterCollection` is used to ensure that only one person will create the DDS. */ -export class DynamicObjectManager extends LiveDataObject { +export class DynamicObjectManagerClass extends LiveDataObject { /** * ConsensusRegisterCollection instance that stores handles for a given key using FWW. */ @@ -48,8 +52,8 @@ export class DynamicObjectManager extends LiveDataObject { * The objects fluid type factory. */ public static readonly factory = new DataObjectFactory( - DynamicObjectManager.TypeName, - DynamicObjectManager, + DynamicObjectManagerClass.TypeName, + DynamicObjectManagerClass, [ConsensusRegisterCollection.getFactory()], {} ); @@ -101,16 +105,18 @@ export class DynamicObjectManager extends LiveDataObject { * * @template T Type of Fluid object to load. * @param key unique key for the dynamic object - * @param loadableClass the Fluid LoadableObjectClass + * @param objectClass the Fluid SharedObjectKind * @param container Fluid container to load the DDS into + * @param onDidFirstInitialize Optional. Callback that is used when the object was initially created, regardless of whether it is confirmed via consensus or not. * @returns the DDS and whether or not it was created locally */ public async getDDS< T extends IFluidLoadable = FluidObject & IFluidLoadable >( key: string, - loadableClass: LoadableObjectClass, - container: IFluidContainer + objectClass: SharedObjectKind, + container: IFluidContainer, + onDidFirstInitialize?: (dds: T) => void ): Promise<{ dds: T; created: boolean; @@ -125,9 +131,10 @@ export class DynamicObjectManager extends LiveDataObject { } // Create a new DDS to attempt to store it into consensusRegisterCollection. The localDDS may not be used if it has first been written by another client. // Fluid's garbage collector will clean up the DDS if it is not used. - const localDDS = await container.create(loadableClass); + const localDDS = await container.create(objectClass); + onDidFirstInitialize?.(localDDS); // Get the DDS with consensus - return this.loadDDSWithConsensus(key, localDDS); + return this.loadDDSWithConsensus(key, localDDS); } /** @@ -195,6 +202,22 @@ export class DynamicObjectManager extends LiveDataObject { }; } // Fluid did not acknowledge the write, either because the container disconnected or someone else created the object already, so we need to try again - return await this.loadDDSWithConsensus(key, localDDS); + return await this.loadDDSWithConsensus(key, localDDS); } } + +export type DynamicObjectManager = DynamicObjectManagerClass; + +// eslint-disable-next-line no-redeclare +export const DynamicObjectManager = (() => { + const kind = createDataObjectKind(DynamicObjectManagerClass); + return kind as typeof kind & SharedObjectKind; +})(); + +/** + * Register `DynamicObjectManager` as an available `SharedObjectKind` for use in packages that support dynamic object loading, such as `@microsoft/live-share`. + */ +DynamicObjectRegistry.registerObjectClass( + DynamicObjectManager, + DynamicObjectManager.TypeName +); diff --git a/packages/live-share/src/DynamicObjectRegistry.ts b/packages/live-share/src/internals/DynamicObjectRegistry.ts similarity index 77% rename from packages/live-share/src/DynamicObjectRegistry.ts rename to packages/live-share/src/internals/DynamicObjectRegistry.ts index a91e127cb..fd5bba2cf 100644 --- a/packages/live-share/src/DynamicObjectRegistry.ts +++ b/packages/live-share/src/internals/DynamicObjectRegistry.ts @@ -3,10 +3,11 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { LoadableObjectClass } from "fluid-framework"; +import { ITree, SharedObjectKind, SharedTree } from "fluid-framework"; import { SharedMap } from "fluid-framework/legacy"; import { SharedDirectory } from "@fluidframework/map/internal"; import { SharedString } from "@fluidframework/sequence/internal"; +import type { ISharedObjectKind } from "@fluidframework/shared-object-base/internal"; /** * Key for window global reference to loadable objects. @@ -23,25 +24,20 @@ const GLOBAL_WINDOW_KEY = "@microsoft/live-share:DYNAMIC-LOADABLE-OBJECTS"; * aware of what every DDS is. */ export class DynamicObjectRegistry { - private static _dynamicLoadableObjects: Map< - string, - LoadableObjectClass - > = new Map>(); + private static _dynamicLoadableObjects: Map> = + new Map>(); /** * Get all registered dynamic loadable objects */ public static get dynamicLoadableObjects(): Map< string, - LoadableObjectClass + SharedObjectKind > { if (typeof window === "undefined") { return this._dynamicLoadableObjects; } return ((window as any)[GLOBAL_WINDOW_KEY] || - this._dynamicLoadableObjects) as Map< - string, - LoadableObjectClass - >; + this._dynamicLoadableObjects) as Map>; } /** @@ -50,15 +46,15 @@ export class DynamicObjectRegistry { * @remarks * Duplicate classes will be ignored. * - * @param loadableObjectClass the Fluid loadable object class to register + * @param objectKind the Fluid loadable object class to register */ public static registerObjectClass( - loadableObjectClass: LoadableObjectClass, + objectClass: SharedObjectKind, typeName: string ) { const loadableObjects = this.dynamicLoadableObjects; if (loadableObjects.has(typeName)) return; - loadableObjects.set(typeName, loadableObjectClass); + loadableObjects.set(typeName, objectClass); if (typeof window !== "undefined") { (window as any)[GLOBAL_WINDOW_KEY] = loadableObjects; } @@ -81,3 +77,10 @@ DynamicObjectRegistry.registerObjectClass( SharedDirectory, SharedDirectory.getFactory().type ); +DynamicObjectRegistry.registerObjectClass( + SharedTree, + ( + SharedTree as unknown as ISharedObjectKind & + SharedObjectKind + ).getFactory().type +); diff --git a/packages/live-share/src/internals/LiveObjectManager.ts b/packages/live-share/src/internals/LiveObjectManager.ts index b8e3a4d61..bccadc31b 100644 --- a/packages/live-share/src/internals/LiveObjectManager.ts +++ b/packages/live-share/src/internals/LiveObjectManager.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { IInboundSignalMessage } from "@fluidframework/runtime-definitions"; +import { IInboundSignalMessage } from "@fluidframework/runtime-definitions/internal"; import { TypedEventEmitter } from "@fluid-internal/client-utils"; import { IRuntimeSignaler } from "../LiveEventScope"; import { LiveShareRuntime } from "../LiveShareRuntime"; diff --git a/packages/live-share/src/internals/consts.ts b/packages/live-share/src/internals/consts.ts index d09d0441a..50d404e81 100644 --- a/packages/live-share/src/internals/consts.ts +++ b/packages/live-share/src/internals/consts.ts @@ -3,6 +3,8 @@ * Licensed under the Microsoft Live Share SDK License. */ +import { CompatibilityMode } from "@fluidframework/azure-client"; + /** * List of telemetry events. * @hidden @@ -41,3 +43,8 @@ export const ObjectSynchronizerEvents = { * @hidden */ export const LiveShareReportIssueLink = "https://aka.ms/teamsliveshare/issue"; + +/** + * @hidden + */ +export const FluidCompatibilityMode: CompatibilityMode = "2"; diff --git a/packages/live-share/src/internals/fluid-duplicated.ts b/packages/live-share/src/internals/fluid-duplicated.ts new file mode 100644 index 000000000..17b813725 --- /dev/null +++ b/packages/live-share/src/internals/fluid-duplicated.ts @@ -0,0 +1,105 @@ +import { type IFluidDataStoreFactory } from "@fluidframework/runtime-definitions/internal"; +import { type IChannelFactory } from "@fluidframework/datastore-definitions/internal"; +import { IFluidLoadable } from "@fluidframework/core-interfaces"; +import type { SharedObjectKind } from "@fluidframework/shared-object-base"; +/** + * COPIED FROM @fluidframework/fluid-static + * + * A mapping of string identifiers to classes that will later be used to instantiate a corresponding `DataObject` + * or `SharedObject`. + */ +export type LoadableObjectClassRecord = Record; + +/** + * COPIED FROM @fluidframework/fluid-static + * + * A class that has a factory that can create a `DataObject` and a + * constructor that will return the type of the `DataObject`. + * + * @typeParam T - The class of the `DataObject`. + * @privateRemarks + * Having both `factory` and constructor is redundant. + * TODO: It appears the factory is what's used, so the constructor should be removed once factory provides strong typing. + */ +export interface DataObjectClass { + readonly factory: IFluidDataStoreFactory; + new (...args: any[]): T; +} + +/** + * COPIED FROM @fluidframework/fluid-static + * + * An internal type used by the internal type guard isDataObjectClass to cast a + * DataObjectClass to a type that is strongly coupled to IFluidDataStoreFactory. + * Unlike the external and exported type DataObjectClass which is + * weakly coupled to the IFluidDataStoreFactory to prevent leaking internals. + */ +type InternalDataObjectClass = DataObjectClass & + Record<"factory", IFluidDataStoreFactory>; + +/** + * COPIED FROM @fluidframework/fluid-static + * + * Runtime check to determine if a class is a DataObject type + */ +const isDataObjectClass = ( + obj: unknown +): obj is InternalDataObjectClass => { + const maybe = obj as + | Partial> + | undefined; + return ( + maybe?.factory?.IFluidDataStoreFactory !== undefined && + maybe?.factory?.IFluidDataStoreFactory === maybe?.factory + ); +}; + +/** + * COPIED FROM @fluidframework/fluid-static + * + * Runtime check to determine if a class is a SharedObject type + */ +const isSharedObjectClass = ( + obj: unknown +): obj is SharedObjectClass => { + const maybe = obj as Partial> | undefined; + return maybe?.getFactory !== undefined; +}; + +/** + * COPIED FROM @fluidframework/fluid-static + * + * A class that has a factory that can create a DDSes (`SharedObject`s) and a + * constructor that will return the type of the `DataObject`. + * + * @typeParam T - The class of the `SharedObject`. + * @public + */ +type SharedObjectClass = { + readonly getFactory: () => IChannelFactory; +} & LoadableObjectCtor; + +/** + * COPIED FROM @fluidframework/fluid-static + * + * An object with a constructor that will return an {@link @fluidframework/core-interfaces#IFluidLoadable}. + * + * @typeParam T - The class of the loadable object. + * @public + */ +export type LoadableObjectCtor = new ( + ...args: any[] +) => T; + +/** + * Combining above to get factory type string. + */ +export const getFactoryName = (obj: unknown): string | undefined => { + if (isDataObjectClass(obj)) { + return obj.factory.type; + } else if (isSharedObjectClass(obj)) { + return obj.getFactory().type; + } else { + return undefined; + } +}; diff --git a/packages/live-share/src/internals/index.ts b/packages/live-share/src/internals/index.ts index 6892862e5..4c9651474 100644 --- a/packages/live-share/src/internals/index.ts +++ b/packages/live-share/src/internals/index.ts @@ -16,3 +16,5 @@ export * from "./internal-interfaces"; export * from "./LiveObjectManager"; export * from "./ContainerSynchronizer"; export * from "./FormatFixHostDecorator"; + +// TODO: delete internals/index.ts diff --git a/packages/live-share/src/schema-injection-utils.ts b/packages/live-share/src/internals/schema-injection-utils.ts similarity index 78% rename from packages/live-share/src/schema-injection-utils.ts rename to packages/live-share/src/internals/schema-injection-utils.ts index 0e3a43977..7303fed1c 100644 --- a/packages/live-share/src/schema-injection-utils.ts +++ b/packages/live-share/src/internals/schema-injection-utils.ts @@ -3,14 +3,14 @@ import { IDataObjectProps, } from "@fluidframework/aqueduct/internal"; import { IFluidLoadable } from "@fluidframework/core-interfaces"; -import { DataObjectClass } from "@fluidframework/fluid-static/internal"; -import { LiveDataObject } from "./LiveDataObject"; -import { LiveShareRuntime } from "./LiveShareRuntime"; +import { LiveDataObject } from "../LiveDataObject"; +import { LiveShareRuntime } from "../LiveShareRuntime"; import { - ContainerSchema, - LoadableObjectClass, + LoadableObjectCtor, LoadableObjectClassRecord, -} from "fluid-framework"; + DataObjectClass, +} from "./fluid-duplicated"; +import { ContainerSchema, SharedObjectKind } from "fluid-framework"; /** * A LiveObjectClass is a class that has a factory that can create a DDS (SharedObject) and a @@ -19,7 +19,8 @@ import { */ type LiveObjectClass = { TypeName: string; -} & DataObjectClass; +} & DataObjectClass & + LoadableObjectCtor; /** * Inject Live Share dependencies into your Fluid container schema. @@ -39,14 +40,14 @@ export function getLiveContainerSchema( ): ContainerSchema { // Each container must proxy LiveDataObject classes separately. // This map is used to de-duplicate proxies for each class. - const injectedClasses = new Map>(); + const injectedClasses = new Map>(); const initialObjectEntries = Object.entries(schema.initialObjects).map( - ([key, ObjectClass]) => { + ([key, objectClass]) => { return [ key, - getLiveDataObjectClass( - ObjectClass, + getLiveDataObjectKind( + objectClass, liveRuntime, injectedClasses ), @@ -58,23 +59,12 @@ export function getLiveContainerSchema( return { initialObjects: newInitialObjects, - dynamicObjectTypes: schema.dynamicObjectTypes?.map((ObjectClass) => - getLiveDataObjectClass(ObjectClass, liveRuntime, injectedClasses) + dynamicObjectTypes: schema.dynamicObjectTypes?.map((objectClass) => + getLiveDataObjectKind(objectClass, liveRuntime, injectedClasses) ), }; } -/** - * @deprecated - * Use {@link getLiveContainerSchema} instead. - */ -export function getLiveContainerSchemaProxy( - schema: ContainerSchema, - liveRuntime: LiveShareRuntime -): ContainerSchema { - return getLiveContainerSchema(schema, liveRuntime); -} - /** * Inject Live Share dependencies to relevant `LiveDataObject` derived classes. * Regular `DataObject` classes are not injected. @@ -82,35 +72,35 @@ export function getLiveContainerSchemaProxy( * @remarks * Can be used to follow the pattern of this package's unit tests for custom `LiveDataObject` implementations. * - * @param ObjectClass a `LoadableObjectClass` instance to inject with the `liveRuntime` provided, if needed. + * @param ObjectKind a `SharedObjectKind` instance to inject with the `liveRuntime` provided, if needed. * @param liveRuntime the `LiveShareRuntime` instance to inject into provided `LiveDataObject` instances. * @param injectedClasses Optional. Map of classes that have already been injected. Default value is an empty map. - * @returns the new `LoadableObjectClass` if injected, or the same `ObjectClass` passed in if not. + * @returns the new `SharedObjectKind` if injected, or the same `ObjectKind` passed in if not. */ -export function getLiveDataObjectClass( - ObjectClass: LoadableObjectClass, +export function getLiveDataObjectKind( + objectClass: SharedObjectKind, liveRuntime: LiveShareRuntime, - injectedClasses: Map> = new Map() -): LoadableObjectClass { - if (isLiveDataObject(ObjectClass)) { + injectedClasses: Map> = new Map() +): SharedObjectKind { + if (isLiveDataObject(objectClass)) { // We should only be proxying one Live Share DDS per type. // This is because Fluid attempts to de-duplicate by comparing classes, but we are dynamically creating proxies. // They then enforce this de-duplication using the factory type name, throwing an error in `parseDataObjectsFromSharedObjects`. // So, we ensure that we only create the proxy once per container. - const typeName = (ObjectClass as any).TypeName; + const typeName = (objectClass as any).TypeName; const CheckExisting = injectedClasses.get(typeName); if (CheckExisting !== undefined) { return CheckExisting; } // Create a new proxy for this type and insert it into proxiedClasses const NewProxy = getLiveDataObjectProxyClassInternal( - ObjectClass, + objectClass, liveRuntime - ); + ) as unknown as SharedObjectKind; injectedClasses.set(typeName, NewProxy); return NewProxy; } - return ObjectClass; + return objectClass; } /** diff --git a/packages/live-share/src/internals/smuggle.ts b/packages/live-share/src/internals/smuggle.ts new file mode 100644 index 000000000..9c981359a --- /dev/null +++ b/packages/live-share/src/internals/smuggle.ts @@ -0,0 +1,54 @@ +import { DataObject } from "@fluidframework/aqueduct/internal"; +import { type ISharedDirectory } from "@fluidframework/map/internal"; +import { type IFluidDataStoreRuntime } from "@fluidframework/datastore-definitions/internal"; +import { IFluidContainer } from "@fluidframework/fluid-static"; + +/** + * @hidden + */ +export const TurboDirectory = "TURBO_DIRECTORY"; + +/** + * @hidden + */ +export const TurboStateMap = "TURBO_STATE_MAP"; + +/** + * @hidden + */ +export const TurboDynamicObjects = "TURBO_DYNAMIC_OBJECTS"; + +/** + * @hidden + */ +export function getRootDataObject(container: IFluidContainer): DataObject { + interface RootDataObjectSmuggler { + rootDataObject: DataObject; + } + const blah = container as unknown as RootDataObjectSmuggler; + return blah.rootDataObject; +} + +/** + * @hidden + */ +export function getRootDirectory(rootDataObject: DataObject): ISharedDirectory { + interface RootDataObjectDirectorymuggler { + root: ISharedDirectory; + } + const blah = rootDataObject as unknown as RootDataObjectDirectorymuggler; + return blah.root; +} + +/** + * @hidden + */ +export function getContainerRuntime( + rootDataObject: DataObject +): IFluidDataStoreRuntime { + interface RootDataObjectRuntimeSmuggler { + runtime: IFluidDataStoreRuntime; + } + const blah = rootDataObject as unknown as RootDataObjectRuntimeSmuggler; + return blah.runtime; +} diff --git a/packages/live-share/src/internals/utils.ts b/packages/live-share/src/internals/utils.ts index 903e9f318..71166a24d 100644 --- a/packages/live-share/src/internals/utils.ts +++ b/packages/live-share/src/internals/utils.ts @@ -144,14 +144,22 @@ export function timeoutRequest( * @hidden */ export async function getInsecureTokenProvider(): Promise { + const userId: () => string | undefined | null = () => { + try { + const userIdParam = new URL( + window.location.href + )?.searchParams?.get("userId"); + return userIdParam; + } catch { + // window not available + return undefined; + } + }; try { const { InsecureTokenProvider } = await require("@fluidframework/test-runtime-utils"); - const userIdParam = new URL(window.location.href)?.searchParams?.get( - "userId" - ); const tokenProvider = new InsecureTokenProvider("", { - id: userIdParam ?? uuid(), + id: userId() ?? uuid(), name: "Test User", }); return tokenProvider as ITokenProvider; diff --git a/packages/live-share-turbo/src/test/AzureTurboClient.spec.ts b/packages/live-share/src/test/AzureLiveShareClient.spec.ts similarity index 80% rename from packages/live-share-turbo/src/test/AzureTurboClient.spec.ts rename to packages/live-share/src/test/AzureLiveShareClient.spec.ts index f040c5065..89453eaaf 100644 --- a/packages/live-share-turbo/src/test/AzureTurboClient.spec.ts +++ b/packages/live-share/src/test/AzureLiveShareClient.spec.ts @@ -4,21 +4,19 @@ */ import { strict as assert } from "assert"; -import { - IFluidContainer, - LoadableObjectClassRecord, - SharedMap, -} from "fluid-framework"; +import { ContainerSchema, IFluidContainer } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; + import { AzureContainerServices, AzureLocalConnectionConfig, } from "@fluidframework/azure-client"; -import { AzureTurboClient } from "../AzureTurboClient"; +import { AzureLiveShareClient } from "../AzureLiveShareClient"; import { IInsecureUser, InsecureTokenProvider, -} from "@fluidframework/test-runtime-utils"; -import { LiveEvent } from "@microsoft/live-share"; +} from "@fluidframework/test-runtime-utils/internal"; +import { LiveEvent, LiveState } from "@microsoft/live-share"; import { v4 as uuid } from "uuid"; function generateUser(): IInsecureUser { @@ -31,20 +29,13 @@ function generateUser(): IInsecureUser { } describe("AzureTurboClient", () => { - (window.performance as any).mark = () => { - return {}; - }; - (window.performance as any).measure = () => { - return {}; - }; - const connectionProps: AzureLocalConnectionConfig = { tokenProvider: new InsecureTokenProvider("fooBar", generateUser()), endpoint: "http://localhost:7070", type: "local", }; - let client1: AzureTurboClient; - let client2: AzureTurboClient; + let client1: AzureLiveShareClient; + let client2: AzureLiveShareClient; const testMapKey = "TEST-MAP-KEY"; const testLiveEventKey = "TEST-LIVE-EVENT-KEY"; @@ -58,18 +49,20 @@ describe("AzureTurboClient", () => { }; beforeEach(async () => { - client1 = new AzureTurboClient({ + client1 = new AzureLiveShareClient({ connection: connectionProps, }); - client2 = new AzureTurboClient({ + client2 = new AzureLiveShareClient({ connection: connectionProps, }); - const initialObjects: LoadableObjectClassRecord = { - [testLiveEventKey]: LiveEvent, + const schema: ContainerSchema = { + initialObjects: { + [testLiveEventKey]: LiveEvent, + }, }; - results1 = await client1.createContainer(initialObjects); + results1 = await client1.createContainer(schema); const containerId = await results1.container.attach(); - results2 = await client2.getContainer(containerId, initialObjects); + results2 = await client2.getContainer(containerId, schema); }); it("Containers should be configured correctly", async () => { @@ -81,6 +74,10 @@ describe("AzureTurboClient", () => { !!results1.container || !!results1.services, "client1 results container or services are not defined" ); + + // state map not initialized until dynamic features are used. + await client1.getDDS("test", LiveState); + await client2.getDDS("test", LiveState); assert( !!client1.stateMap || !!client2.stateMap, "stateMap is not defined" @@ -120,10 +117,10 @@ describe("AzureTurboClient", () => { dds1 !== undefined && dds2 !== undefined, "test map(s) not defined" ); - // Only one should be marked as created + // two should be marked as created, one gets discarded after consensus is reached assert( [object1Created, object2Created].filter((created) => created) - .length === 1, + .length === 2, "Incorrect number of objects created" ); }); diff --git a/packages/live-share/src/test/LiveEvent.spec.ts b/packages/live-share/src/test/LiveEvent.spec.ts index 04696d42d..b32dccfb7 100644 --- a/packages/live-share/src/test/LiveEvent.spec.ts +++ b/packages/live-share/src/test/LiveEvent.spec.ts @@ -16,9 +16,8 @@ import { MockRoleVerifier } from "./MockRoleVerifier"; import { LocalTimestampProvider } from "../LocalTimestampProvider"; import { UserMeetingRole, ILiveEvent } from "../interfaces"; import { TestLiveShareHost } from "../TestLiveShareHost"; -import { getLiveDataObjectClass } from "../schema-injection-utils"; +import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; import { LiveShareRuntime } from "../LiveShareRuntime"; -import { DataObjectClass } from "fluid-framework"; import { describeCompat } from "@live-share-private/test-utils"; describeCompat("LiveEvent", (getTestObjectProvider) => { @@ -31,20 +30,20 @@ describeCompat("LiveEvent", (getTestObjectProvider) => { timestampProvider: new LocalTimestampProvider(), } ); - let LiveEventProxy1 = getLiveDataObjectClass( + let LiveEventProxy1: any = getLiveDataObjectKind( LiveEvent, liveRuntime1 - ) as DataObjectClass; + ); let liveRuntime2: LiveShareRuntime = new LiveShareRuntime( TestLiveShareHost.create(), { timestampProvider: new LocalTimestampProvider(), } ); - let LiveEventProxy2 = getLiveDataObjectClass( + let LiveEventProxy2: any = getLiveDataObjectKind( LiveEvent, liveRuntime2 - ) as DataObjectClass; + ); beforeEach(async () => { provider = getTestObjectProvider(); diff --git a/packages/live-share/src/test/LiveFollowMode.spec.ts b/packages/live-share/src/test/LiveFollowMode.spec.ts index 71751bc9f..0d378bf26 100644 --- a/packages/live-share/src/test/LiveFollowMode.spec.ts +++ b/packages/live-share/src/test/LiveFollowMode.spec.ts @@ -16,7 +16,7 @@ import { LiveFollowMode, } from "../LiveFollowMode"; import { Deferred, waitForDelay } from "../internals"; -import { getLiveDataObjectClass } from "../schema-injection-utils"; +import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; import { MockLiveShareRuntime } from "./MockLiveShareRuntime"; import { LivePresenceUser } from "../LivePresenceUser"; import { describeCompat } from "@live-share-private/test-utils"; @@ -30,10 +30,10 @@ async function getObjects(getTestObjectProvider) { let liveRuntime1 = new MockLiveShareRuntime(false); let liveRuntime2 = new MockLiveShareRuntime(false); - let ObjectProxy1: any = getLiveDataObjectClass< + let ObjectProxy1: any = getLiveDataObjectKind< LiveFollowMode >(LiveFollowMode, liveRuntime1); - let ObjectProxy2: any = getLiveDataObjectClass< + let ObjectProxy2: any = getLiveDataObjectKind< LiveFollowMode >(LiveFollowMode, liveRuntime2); diff --git a/packages/live-share/src/test/LivePresence.spec.ts b/packages/live-share/src/test/LivePresence.spec.ts index 41e3a63bf..a4d5578bb 100644 --- a/packages/live-share/src/test/LivePresence.spec.ts +++ b/packages/live-share/src/test/LivePresence.spec.ts @@ -9,7 +9,7 @@ import { fluidEntryPoint, getContainerEntryPointBackCompat, } from "@fluidframework/test-utils/internal"; -import { LivePresence } from "../LivePresence"; +import { LivePresence, LivePresenceClass } from "../LivePresence"; import { PresenceState } from "../LivePresenceUser"; import { waitForDelay } from "../internals"; import { Deferred } from "../internals"; @@ -22,13 +22,13 @@ import { UserMeetingRole, } from "../interfaces"; import { TestLiveShareHost } from "../TestLiveShareHost"; -import { getLiveDataObjectClass } from "../schema-injection-utils"; +import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; import { MockLiveShareRuntime } from "./MockLiveShareRuntime"; import { describeCompat } from "@live-share-private/test-utils"; class TestLivePresence< TData extends object = object -> extends LivePresence { +> extends LivePresenceClass { public async clientId(): Promise { return await this.waitUntilConnected(); } @@ -49,10 +49,10 @@ async function getObjects( } liveRuntime2.canSendBackgroundUpdates = object2canSendBackgroundUpdates; - let ObjectProxy1: any = getLiveDataObjectClass< + let ObjectProxy1: any = getLiveDataObjectKind< TestLivePresence<{ foo: string }> >(TestLivePresence, liveRuntime1); - let ObjectProxy2: any = getLiveDataObjectClass< + let ObjectProxy2: any = getLiveDataObjectKind< TestLivePresence<{ foo: string }> >(TestLivePresence, liveRuntime2); diff --git a/packages/live-share-turbo/src/test/LiveShareTurboClient.spec.ts b/packages/live-share/src/test/LiveShareClient.spec.ts similarity index 78% rename from packages/live-share-turbo/src/test/LiveShareTurboClient.spec.ts rename to packages/live-share/src/test/LiveShareClient.spec.ts index 27e139116..6bf91e037 100644 --- a/packages/live-share-turbo/src/test/LiveShareTurboClient.spec.ts +++ b/packages/live-share/src/test/LiveShareClient.spec.ts @@ -4,23 +4,15 @@ */ import { strict as assert } from "assert"; -import { - IFluidContainer, - LoadableObjectClassRecord, - SharedMap, -} from "fluid-framework"; -import { LiveEvent, TestLiveShareHost } from "@microsoft/live-share"; -import { LiveShareTurboClient } from "../LiveShareTurboClient"; +import { ContainerSchema, IFluidContainer } from "fluid-framework"; +import { SharedMap } from "fluid-framework/legacy"; import { AzureContainerServices } from "@fluidframework/azure-client"; +import { TestLiveShareHost } from "../TestLiveShareHost"; +import { LiveShareClient } from "../LiveShareClient"; +import { LiveEvent } from "../LiveEvent"; +import { LiveState } from "../LiveState"; -describe("LiveShareTurboClient", () => { - (window.performance as any).mark = () => { - return {}; - }; - (window.performance as any).measure = () => { - return {}; - }; - +describe("LiveShareClient dynamic objects", () => { let containerId: string | undefined; const getContainerId = (): string | undefined => { return containerId; @@ -29,8 +21,8 @@ describe("LiveShareTurboClient", () => { containerId = newContainerId; }; const host = TestLiveShareHost.create(getContainerId, setContainerId); - let client1: LiveShareTurboClient; - let client2: LiveShareTurboClient; + let client1: LiveShareClient; + let client2: LiveShareClient; const testMapKey = "TEST-MAP-KEY"; const testLiveEventKey = "TEST-LIVE-EVENT-KEY"; @@ -46,14 +38,16 @@ describe("LiveShareTurboClient", () => { }; beforeEach(async () => { - client1 = new LiveShareTurboClient(host); - client2 = new LiveShareTurboClient(host); - const initialObjects: LoadableObjectClassRecord = { - [testLiveEventKey]: LiveEvent, + client1 = new LiveShareClient(host); + client2 = new LiveShareClient(host); + const schema: ContainerSchema = { + initialObjects: { + [testLiveEventKey]: LiveEvent, + }, }; containerId = undefined; - results1 = await client1.join(initialObjects); - results2 = await client2.join(initialObjects); + results1 = await client1.join(schema); + results2 = await client2.join(schema); }); it("Containers should be configured correctly", async () => { @@ -62,14 +56,14 @@ describe("LiveShareTurboClient", () => { .length === 1, "Incorrect number of containers created" ); - assert( - !!client1.results && !!client2.results, - "client.results results not defined" - ); assert( !!results1.container || !!results1.services, "client1 results container or services are not defined" ); + + // state map not initialized until dynamic features are used. + await client1.getDDS("test", LiveState); + await client2.getDDS("test", LiveState); assert( !!client1.stateMap || !!client2.stateMap, "stateMap is not defined" @@ -109,10 +103,10 @@ describe("LiveShareTurboClient", () => { dds1 !== undefined && dds2 !== undefined, "test map(s) not defined" ); - // Only one should be marked as created + // two should be marked as created, one gets discarded after consensus is reached assert( [object1Created, object2Created].filter((created) => created) - .length === 1, + .length === 2, "Incorrect number of objects created" ); }); diff --git a/packages/live-share/src/test/LiveState.spec.ts b/packages/live-share/src/test/LiveState.spec.ts index 4ef6ac1c8..d80647231 100644 --- a/packages/live-share/src/test/LiveState.spec.ts +++ b/packages/live-share/src/test/LiveState.spec.ts @@ -11,7 +11,7 @@ import { } from "@fluidframework/test-utils/internal"; import { LiveState } from "../LiveState"; import { Deferred } from "../internals"; -import { getLiveDataObjectClass } from "../schema-injection-utils"; +import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; import { MockLiveShareRuntime } from "./MockLiveShareRuntime"; import { describeCompat } from "@live-share-private/test-utils"; @@ -25,11 +25,11 @@ async function getObjects(getTestObjectProvider) { let liveRuntime1 = new MockLiveShareRuntime(false); let liveRuntime2 = new MockLiveShareRuntime(false); - let ObjectProxy1: any = getLiveDataObjectClass>( + let ObjectProxy1: any = getLiveDataObjectKind>( LiveState, liveRuntime1 ); - let ObjectProxy2: any = getLiveDataObjectClass>( + let ObjectProxy2: any = getLiveDataObjectKind>( LiveState, liveRuntime2 ); diff --git a/packages/live-share/src/test/LiveTimer.spec.ts b/packages/live-share/src/test/LiveTimer.spec.ts index c5f55119d..5421b324b 100644 --- a/packages/live-share/src/test/LiveTimer.spec.ts +++ b/packages/live-share/src/test/LiveTimer.spec.ts @@ -11,7 +11,7 @@ import { } from "@fluidframework/test-utils/internal"; import { LiveTimer } from "../LiveTimer"; import { Deferred, waitForDelay } from "../internals"; -import { getLiveDataObjectClass } from "../schema-injection-utils"; +import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; import { MockLiveShareRuntime } from "./MockLiveShareRuntime"; import { describeCompat } from "@live-share-private/test-utils"; @@ -23,11 +23,11 @@ async function getObjects( let liveRuntime1 = new MockLiveShareRuntime(false, updateInterval); let liveRuntime2 = new MockLiveShareRuntime(false, updateInterval); - let ObjectProxy1: any = getLiveDataObjectClass( + let ObjectProxy1: any = getLiveDataObjectKind( LiveTimer, liveRuntime1 ); - let ObjectProxy2: any = getLiveDataObjectClass( + let ObjectProxy2: any = getLiveDataObjectKind( LiveTimer, liveRuntime2 ); diff --git a/packages/live-share/src/test/MockRuntimeSignaler.ts b/packages/live-share/src/test/MockRuntimeSignaler.ts index 10ab7514e..610d2744a 100644 --- a/packages/live-share/src/test/MockRuntimeSignaler.ts +++ b/packages/live-share/src/test/MockRuntimeSignaler.ts @@ -3,11 +3,11 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { ITelemetryLogger } from "@fluidframework/common-definitions"; import { IInboundSignalMessage } from "@fluidframework/runtime-definitions"; -import { MockLogger } from "@fluidframework/telemetry-utils"; +import { MockLogger } from "@fluidframework/telemetry-utils/internal"; import { IRuntimeSignaler } from "../LiveEventScope"; import { v4 } from "uuid"; +import { ITelemetryBaseLogger } from "@fluidframework/azure-client"; export class MockRuntimeSignaler implements IRuntimeSignaler { private _connected: MockRuntimeSignaler[] = []; @@ -25,7 +25,7 @@ export class MockRuntimeSignaler implements IRuntimeSignaler { public clientId: string | undefined; public connected: boolean; - public logger: ITelemetryLogger; + public logger: ITelemetryBaseLogger; public connect(): void { if (!this.connected) { diff --git a/samples/javascript/01.dice-roller/package.json b/samples/javascript/01.dice-roller/package.json index 05c959fdc..155a2e20b 100644 --- a/samples/javascript/01.dice-roller/package.json +++ b/samples/javascript/01.dice-roller/package.json @@ -20,10 +20,10 @@ "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/02.react-video/package.json b/samples/javascript/02.react-video/package.json index a8f9b4eef..c4a3a9c08 100644 --- a/samples/javascript/02.react-video/package.json +++ b/samples/javascript/02.react-video/package.json @@ -16,7 +16,7 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -27,7 +27,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", diff --git a/samples/javascript/03.live-canvas-demo/package.json b/samples/javascript/03.live-canvas-demo/package.json index a4d41d7ac..365c01764 100644 --- a/samples/javascript/03.live-canvas-demo/package.json +++ b/samples/javascript/03.live-canvas-demo/package.json @@ -20,10 +20,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/04.live-share-react/package.json b/samples/javascript/04.live-share-react/package.json index cbfcb99ec..c997e259f 100644 --- a/samples/javascript/04.live-share-react/package.json +++ b/samples/javascript/04.live-share-react/package.json @@ -13,7 +13,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/javascript/05.dice-roller-turbo/package.json b/samples/javascript/05.dice-roller-turbo/package.json index fcfa4bca4..0364b038e 100644 --- a/samples/javascript/05.dice-roller-turbo/package.json +++ b/samples/javascript/05.dice-roller-turbo/package.json @@ -20,10 +20,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-turbo": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/javascript/05.dice-roller-turbo/src/app.js b/samples/javascript/05.dice-roller-turbo/src/app.js index b50b5f630..b19d370ca 100644 --- a/samples/javascript/05.dice-roller-turbo/src/app.js +++ b/samples/javascript/05.dice-roller-turbo/src/app.js @@ -3,8 +3,11 @@ * Licensed under the MIT License. */ -import { TestLiveShareHost, LiveState } from "@microsoft/live-share"; -import { LiveShareTurboClient } from "@microsoft/live-share-turbo"; +import { + TestLiveShareHost, + LiveState, + LiveShareClient, +} from "@microsoft/live-share"; import { app, pages, meeting, LiveShareHost } from "@microsoft/teams-js"; const searchParams = new URL(window.location).searchParams; @@ -60,7 +63,7 @@ async function join() { : TestLiveShareHost.create(); // Create client & join session - const client = new LiveShareTurboClient(host); + const client = new LiveShareClient(host); await client.join(); return client; } diff --git a/samples/javascript/21.react-media-template/package.json b/samples/javascript/21.react-media-template/package.json index a5dbe51e3..d9a80c0f8 100644 --- a/samples/javascript/21.react-media-template/package.json +++ b/samples/javascript/21.react-media-template/package.json @@ -12,7 +12,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -24,7 +24,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "@vitejs/plugin-react": "^3.0.1", diff --git a/samples/javascript/22.react-agile-poker/package.json b/samples/javascript/22.react-agile-poker/package.json index cb7bc5b55..9261a9eeb 100644 --- a/samples/javascript/22.react-agile-poker/package.json +++ b/samples/javascript/22.react-agile-poker/package.json @@ -10,7 +10,7 @@ "@fluentui/react-theme": "^9.1.5", "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -20,7 +20,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/javascript/23.react-live-canvas/package.json b/samples/javascript/23.react-live-canvas/package.json index 53a0e6092..db2bbde0a 100644 --- a/samples/javascript/23.react-live-canvas/package.json +++ b/samples/javascript/23.react-live-canvas/package.json @@ -8,7 +8,7 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router": "^6.4.2", @@ -17,7 +17,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/01.dice-roller/package.json b/samples/typescript/01.dice-roller/package.json index dc4520521..5c30d947a 100644 --- a/samples/typescript/01.dice-roller/package.json +++ b/samples/typescript/01.dice-roller/package.json @@ -20,10 +20,10 @@ "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/03.live-canvas-demo/package.json b/samples/typescript/03.live-canvas-demo/package.json index 7568dabec..342769234 100644 --- a/samples/typescript/03.live-canvas-demo/package.json +++ b/samples/typescript/03.live-canvas-demo/package.json @@ -20,10 +20,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/04.live-share-react/package.json b/samples/typescript/04.live-share-react/package.json index bda88a5b9..ebbd4d646 100644 --- a/samples/typescript/04.live-share-react/package.json +++ b/samples/typescript/04.live-share-react/package.json @@ -13,7 +13,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/05.dice-roller-turbo/package.json b/samples/typescript/05.dice-roller-turbo/package.json index c0c9b765a..4003eeba3 100644 --- a/samples/typescript/05.dice-roller-turbo/package.json +++ b/samples/typescript/05.dice-roller-turbo/package.json @@ -20,10 +20,10 @@ "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-turbo": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.7", "buffer": "^6.0.3", diff --git a/samples/typescript/05.dice-roller-turbo/src/app.ts b/samples/typescript/05.dice-roller-turbo/src/app.ts index 44e42d8c4..01296e097 100644 --- a/samples/typescript/05.dice-roller-turbo/src/app.ts +++ b/samples/typescript/05.dice-roller-turbo/src/app.ts @@ -3,8 +3,11 @@ * Licensed under the MIT License. */ -import { TestLiveShareHost, LiveState } from "@microsoft/live-share"; -import { LiveShareTurboClient } from "@microsoft/live-share-turbo"; +import { + TestLiveShareHost, + LiveState, + LiveShareClient, +} from "@microsoft/live-share"; import { app, pages, meeting, LiveShareHost } from "@microsoft/teams-js"; const searchParams = new URL(window.location.href).searchParams; @@ -58,7 +61,7 @@ async function join() { : TestLiveShareHost.create(); // Create client & join session - const client = new LiveShareTurboClient(host); + const client = new LiveShareClient(host); await client.join(); return client; } @@ -81,7 +84,7 @@ stageTemplate["innerHTML"] = ` `; -async function renderStage(client: LiveShareTurboClient, elem: HTMLElement) { +async function renderStage(client: LiveShareClient, elem: HTMLElement) { elem.appendChild(stageTemplate.content.cloneNode(true)); const wrapper = elem.querySelector(".wrapper")!; const diceListEl = wrapper.querySelector(".dice-list")!; @@ -125,7 +128,7 @@ async function renderStage(client: LiveShareTurboClient, elem: HTMLElement) { } async function renderDiceElement( - client: LiveShareTurboClient, + client: LiveShareClient, wrapper: HTMLElement, diceIndex: number ) { diff --git a/samples/typescript/06.presence-avatars/package.json b/samples/typescript/06.presence-avatars/package.json index 81cac41c0..60b8abf32 100644 --- a/samples/typescript/06.presence-avatars/package.json +++ b/samples/typescript/06.presence-avatars/package.json @@ -13,7 +13,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/07.countdown-timer/package.json b/samples/typescript/07.countdown-timer/package.json index 350590c08..d5aedcf4e 100644 --- a/samples/typescript/07.countdown-timer/package.json +++ b/samples/typescript/07.countdown-timer/package.json @@ -13,7 +13,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -25,7 +25,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/08.3d-model/package.json b/samples/typescript/08.3d-model/package.json index be935e98d..f0ed871cf 100644 --- a/samples/typescript/08.3d-model/package.json +++ b/samples/typescript/08.3d-model/package.json @@ -15,7 +15,7 @@ "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/live-share-react": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -29,7 +29,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", diff --git a/samples/typescript/21.react-media-template/package.json b/samples/typescript/21.react-media-template/package.json index 1ee42ff99..e956209d6 100644 --- a/samples/typescript/21.react-media-template/package.json +++ b/samples/typescript/21.react-media-template/package.json @@ -12,7 +12,7 @@ "@microsoft/live-share-canvas": "2.0.0-internal.5", "@microsoft/live-share-media": "2.0.0-internal.5", "@microsoft/teams-js": "^2.16.0", - "fluid-framework": "^2.0.0-rc.4.0.2", + "fluid-framework": "^2.0.0-rc.5.0.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "react": "^18.2.0", @@ -24,7 +24,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "@types/lodash": "^4.14.191", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", diff --git a/samples/typescript/21.react-media-template/src/pages/MeetingStage.tsx b/samples/typescript/21.react-media-template/src/pages/MeetingStage.tsx index b7333fa15..ab12b33a8 100644 --- a/samples/typescript/21.react-media-template/src/pages/MeetingStage.tsx +++ b/samples/typescript/21.react-media-template/src/pages/MeetingStage.tsx @@ -36,7 +36,7 @@ const MeetingStage: FC = () => { liveCanvas, // LiveEvent Fluid object container, // Fluid container error, // Join container error - timestampProvider, // LiveShareRuntime instance, used for getting reference server timestamp + timestampProvider, // ITimestampProvider instance, used for getting reference server timestamp } = liveShareHooks.useSharedObjects(); // Notification hook diff --git a/samples/typescript/31.live-canvas-tests/package.json b/samples/typescript/31.live-canvas-tests/package.json index 512567481..2947631bd 100644 --- a/samples/typescript/31.live-canvas-tests/package.json +++ b/samples/typescript/31.live-canvas-tests/package.json @@ -16,13 +16,13 @@ "postinstall":"node ../../../ensure-packages-built.js" }, "dependencies": { - "@fluidframework/azure-client": "^2.0.0-rc.4.0.2", + "@fluidframework/azure-client": "^2.0.0-rc.5.0.1", "@microsoft/live-share": "2.0.0-internal.5", "@microsoft/live-share-canvas": "2.0.0-internal.5", - "fluid-framework": "^2.0.0-rc.4.0.2" + "fluid-framework": "^2.0.0-rc.5.0.1" }, "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.4.0.2", + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", "buffer": "^6.0.3", "concurrently": "^5.3.0", "start-server-and-test": "^2.0.0", From bbde862b77564ecb5992762de64037ccf5220f4c Mon Sep 17 00:00:00 2001 From: huntj88 Date: Mon, 1 Jul 2024 17:16:43 -0500 Subject: [PATCH 16/40] Cleanup Live Share folder structure (#782) Co-authored-by: James Hunt --- .../src/core/InkingManager.ts | 2 +- .../live-share-canvas/src/core/LiveCanvas.ts | 10 +- .../live-share-media/src/LiveMediaSession.ts | 6 +- .../src/LiveMediaSessionCoordinator.ts | 16 ++- .../src/MediaPlayerSynchronizer.ts | 11 +- .../src/internals/GroupCoordinatorState.ts | 8 +- .../src/internals/GroupPlaybackPosition.ts | 4 +- .../src/internals/GroupTransportState.ts | 2 +- .../src/internals/interfaces.ts | 2 +- .../src/test/GroupPlaybackPosition.spec.ts | 7 +- .../src/test/GroupPlaybackTrack.spec.ts | 2 +- ...veMediaSession_ManualActionHandler.spec.ts | 16 ++- .../LiveMediaSession_Synchronizer.spec.ts | 16 ++- .../live-share-media/src/test/TestUtils.ts | 6 +- .../src/test/VolumeManager.spec.ts | 2 +- .../src/providers/AzureProvider.tsx | 6 +- .../shared-hooks/useSharedStateRegistry.ts | 2 +- packages/live-share/internal.ts | 17 +++ .../live-share/src/AzureLiveShareClient.ts | 4 +- packages/live-share/src/AzureLiveShareHost.ts | 2 +- packages/live-share/src/LiveEvent.ts | 8 +- packages/live-share/src/LiveEventTimer.ts | 117 ---------------- packages/live-share/src/LiveFollowMode.ts | 2 +- packages/live-share/src/LivePresence.ts | 9 +- .../live-share/src/LivePresenceConnection.ts | 4 +- packages/live-share/src/LivePresenceUser.ts | 4 +- packages/live-share/src/LiveShareClient.ts | 4 +- packages/live-share/src/LiveState.ts | 7 +- .../live-share/src/LiveTelemetryLogger.ts | 4 +- packages/live-share/src/LiveTimer.ts | 4 +- packages/live-share/src/TimestampProvider.ts | 2 +- packages/live-share/src/errors.ts | 2 +- packages/live-share/src/index.ts | 18 --- .../src/internals/BaseLiveShareClient.ts | 2 +- .../src/internals/ContainerSynchronizer.ts | 4 +- .../src/internals/DynamicObjectManager.ts | 2 +- .../src/{ => internals}/LiveDataObject.ts | 6 +- .../src/{ => internals}/LiveEventScope.ts | 9 +- .../src/{ => internals}/LiveEventSource.ts | 2 +- .../src/{ => internals}/LiveEventTarget.ts | 0 .../src/internals/LiveObjectManager.ts | 17 ++- .../{ => internals}/LiveObjectSynchronizer.ts | 2 +- .../src/{ => internals}/LiveShareRuntime.ts | 20 ++- packages/live-share/src/internals/index.ts | 20 --- .../src/internals/internal-interfaces.ts | 2 +- .../mock}/MockContainerRuntimeSignaler.ts | 4 +- .../mock}/MockLiveShareRuntime.ts | 9 +- .../mock}/MockRoleVerifier.ts | 4 +- .../mock}/MockRuntimeSignaler.ts | 2 +- .../mock}/MockTimestampProvider.ts | 2 +- .../src/internals/schema-injection-utils.ts | 4 +- .../test/FormatFixHostDecorator.spec.ts | 2 +- .../test/LiveEventScope.spec.ts | 12 +- .../test/LiveEventSource.spec.ts | 6 +- .../test/LiveEventTarget.spec.ts | 6 +- .../test/LiveObjectSynchronizer.spec.ts | 7 +- packages/live-share/src/internals/utils.ts | 2 +- .../live-share/src/test/LiveEvent.spec.ts | 8 +- .../src/test/LiveEventTimer.spec.ts | 130 ------------------ .../src/test/LiveFollowMode.spec.ts | 5 +- .../live-share/src/test/LivePresence.spec.ts | 8 +- .../live-share/src/test/LiveState.spec.ts | 4 +- .../live-share/src/test/LiveTimer.spec.ts | 5 +- .../src/test/TimestampProvider.spec.ts | 2 +- packages/live-share/src/test/utils.spec.ts | 6 +- packages/live-share/tsconfig.build.json | 3 - packages/live-share/tsconfig.json | 9 +- 67 files changed, 194 insertions(+), 458 deletions(-) create mode 100644 packages/live-share/internal.ts delete mode 100644 packages/live-share/src/LiveEventTimer.ts rename packages/live-share/src/{ => internals}/LiveDataObject.ts (96%) rename packages/live-share/src/{ => internals}/LiveEventScope.ts (97%) rename packages/live-share/src/{ => internals}/LiveEventSource.ts (97%) rename packages/live-share/src/{ => internals}/LiveEventTarget.ts (100%) rename packages/live-share/src/{ => internals}/LiveObjectSynchronizer.ts (99%) rename packages/live-share/src/{ => internals}/LiveShareRuntime.ts (94%) delete mode 100644 packages/live-share/src/internals/index.ts rename packages/live-share/src/{test => internals/mock}/MockContainerRuntimeSignaler.ts (96%) rename packages/live-share/src/{test => internals/mock}/MockLiveShareRuntime.ts (87%) rename packages/live-share/src/{test => internals/mock}/MockRoleVerifier.ts (89%) rename packages/live-share/src/{test => internals/mock}/MockRuntimeSignaler.ts (99%) rename packages/live-share/src/{test => internals/mock}/MockTimestampProvider.ts (88%) rename packages/live-share/src/{ => internals}/test/LiveEventScope.spec.ts (95%) rename packages/live-share/src/{ => internals}/test/LiveEventSource.spec.ts (91%) rename packages/live-share/src/{ => internals}/test/LiveEventTarget.spec.ts (91%) rename packages/live-share/src/{ => internals}/test/LiveObjectSynchronizer.spec.ts (98%) delete mode 100644 packages/live-share/src/test/LiveEventTimer.spec.ts diff --git a/packages/live-share-canvas/src/core/InkingManager.ts b/packages/live-share-canvas/src/core/InkingManager.ts index aaac951be..a1560c3f7 100644 --- a/packages/live-share-canvas/src/core/InkingManager.ts +++ b/packages/live-share-canvas/src/core/InkingManager.ts @@ -51,7 +51,7 @@ import { computeQuadPath, renderQuadPathToSVG, } from "./internals"; -import { IEvent } from "@fluidframework/common-definitions"; +import { IEvent } from "@fluidframework/core-interfaces"; /** * Defines available inking tools. diff --git a/packages/live-share-canvas/src/core/LiveCanvas.ts b/packages/live-share-canvas/src/core/LiveCanvas.ts index f2867686b..f73e5569c 100644 --- a/packages/live-share-canvas/src/core/LiveCanvas.ts +++ b/packages/live-share-canvas/src/core/LiveCanvas.ts @@ -34,15 +34,17 @@ import { } from "./Geometry"; import { IStroke, Stroke, StrokeType } from "./Stroke"; import { - LiveEventScope, - LiveEventTarget, UserMeetingRole, - DynamicObjectRegistry, - LiveDataObject, LiveTelemetryLogger, ILiveEvent, LiveDataObjectInitializeState, } from "@microsoft/live-share"; +import { + LiveEventScope, + LiveEventTarget, + DynamicObjectRegistry, + LiveDataObject, +} from "@microsoft/live-share/internal"; import { IBrush } from "./Brush"; import { BasicColors, IColor, lightenColor, toCssRgbaColor } from "./Colors"; import { TelemetryEvents } from "./internals"; diff --git a/packages/live-share-media/src/LiveMediaSession.ts b/packages/live-share-media/src/LiveMediaSession.ts index 90826d7a5..fe5f66ff1 100644 --- a/packages/live-share-media/src/LiveMediaSession.ts +++ b/packages/live-share-media/src/LiveMediaSession.ts @@ -8,13 +8,15 @@ import { createDataObjectKind, } from "@fluidframework/aqueduct/internal"; import { - DynamicObjectRegistry, - LiveDataObject, LiveDataObjectInitializeNotNeededError, LiveDataObjectInitializeState, LiveTelemetryLogger, UserMeetingRole, } from "@microsoft/live-share"; +import { + DynamicObjectRegistry, + LiveDataObject, +} from "@microsoft/live-share/internal"; import { MediaPlayerSynchronizer } from "./MediaPlayerSynchronizer"; import { ITriggerActionEvent, TelemetryEvents } from "./internals"; import { diff --git a/packages/live-share-media/src/LiveMediaSessionCoordinator.ts b/packages/live-share-media/src/LiveMediaSessionCoordinator.ts index 09aeaef1e..09c16604d 100644 --- a/packages/live-share-media/src/LiveMediaSessionCoordinator.ts +++ b/packages/live-share-media/src/LiveMediaSessionCoordinator.ts @@ -4,19 +4,21 @@ */ import { - LiveEventScope, LiveTelemetryLogger, - LiveEventTarget, - IRuntimeSignaler, TimeInterval, UserMeetingRole, - LiveShareRuntime, LiveDataObjectInitializeState, LiveDataObjectInitializeNotNeededError, LiveDataObjectNotInitializedError, - LiveObjectSynchronizer, ILiveEvent, } from "@microsoft/live-share"; +import { + IRuntimeSignaler, + LiveEventScope, + LiveEventTarget, + LiveObjectSynchronizer, + LiveShareRuntime, +} from "@microsoft/live-share/internal"; import { CoordinationWaitPoint, ExtendedMediaMetadata, @@ -36,9 +38,9 @@ import { IRateChangeCommandEvent, } from "./internals"; import { LiveMediaSessionCoordinatorSuspension } from "./LiveMediaSessionCoordinatorSuspension"; -import { isErrorLike } from "@microsoft/live-share/bin/internals"; +import { isErrorLike } from "@microsoft/live-share/bin/internals/type-guards"; import { TypedEventEmitter } from "@fluid-internal/client-utils"; -import { IEvent } from "@fluidframework/common-definitions"; +import { IEvent } from "@fluidframework/core-interfaces"; /** * Most recent state of the media session. diff --git a/packages/live-share-media/src/MediaPlayerSynchronizer.ts b/packages/live-share-media/src/MediaPlayerSynchronizer.ts index 116ae0900..8bc1868a1 100644 --- a/packages/live-share-media/src/MediaPlayerSynchronizer.ts +++ b/packages/live-share-media/src/MediaPlayerSynchronizer.ts @@ -2,11 +2,8 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Microsoft Live Share SDK License. */ -import { - LiveTelemetryLogger, - ILiveEvent, - IRuntimeSignaler, -} from "@microsoft/live-share"; +import { LiveTelemetryLogger, ILiveEvent } from "@microsoft/live-share"; +import { IRuntimeSignaler } from "@microsoft/live-share/internal"; import { ExtendedMediaSessionAction, ExtendedMediaSessionPlaybackState, @@ -20,9 +17,9 @@ import { VolumeManager } from "./VolumeManager"; import { LiveMediaSession } from "./LiveMediaSession"; import { IMediaPlayer } from "./IMediaPlayer"; import { ITriggerActionEvent, TelemetryEvents } from "./internals"; -import { waitUntilConnected } from "@microsoft/live-share/bin/internals"; +import { waitUntilConnected } from "@microsoft/live-share/bin/internals/utils"; import { TypedEventEmitter } from "@fluid-internal/client-utils"; -import { IEvent } from "@fluidframework/common-definitions"; +import { IEvent } from "@fluidframework/core-interfaces"; /** * Event data returned by `MediaPlayerSynchronizer` object. diff --git a/packages/live-share-media/src/internals/GroupCoordinatorState.ts b/packages/live-share-media/src/internals/GroupCoordinatorState.ts index 9a72060a8..7de9b94e8 100644 --- a/packages/live-share-media/src/internals/GroupCoordinatorState.ts +++ b/packages/live-share-media/src/internals/GroupCoordinatorState.ts @@ -6,11 +6,13 @@ import { ILiveEvent, TimeInterval, - IRuntimeSignaler, LiveTelemetryLogger, - LiveShareRuntime, IEvent, } from "@microsoft/live-share"; +import { + IRuntimeSignaler, + LiveShareRuntime, +} from "@microsoft/live-share/internal"; import { ExtendedMediaMetadata, CoordinationWaitPoint, @@ -42,7 +44,7 @@ import { IPlaybackTrackDataChangeEvent, } from "./GroupPlaybackTrackData"; import { TelemetryEvents } from "./consts"; -import { waitUntilConnected } from "@microsoft/live-share/bin/internals"; +import { waitUntilConnected } from "@microsoft/live-share/bin/internals/utils"; import { GroupPlaybackRate, IPlaybackRate, diff --git a/packages/live-share-media/src/internals/GroupPlaybackPosition.ts b/packages/live-share-media/src/internals/GroupPlaybackPosition.ts index c2d2fedd9..e219664b4 100644 --- a/packages/live-share-media/src/internals/GroupPlaybackPosition.ts +++ b/packages/live-share-media/src/internals/GroupPlaybackPosition.ts @@ -3,11 +3,11 @@ * Licensed under the Microsoft Live Share SDK License. */ +import { TimeInterval } from "@microsoft/live-share"; import { IRuntimeSignaler, - TimeInterval, LiveShareRuntime, -} from "@microsoft/live-share"; +} from "@microsoft/live-share/internal"; import { GroupTransportState } from "./GroupTransportState"; import { GroupPlaybackTrackEvents } from "./GroupPlaybackTrack"; import { diff --git a/packages/live-share-media/src/internals/GroupTransportState.ts b/packages/live-share-media/src/internals/GroupTransportState.ts index ec682d9c4..07b23576b 100644 --- a/packages/live-share-media/src/internals/GroupTransportState.ts +++ b/packages/live-share-media/src/internals/GroupTransportState.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { LiveShareRuntime } from "@microsoft/live-share"; +import { LiveShareRuntime } from "@microsoft/live-share/internal"; import { TypedEventEmitter } from "@fluid-internal/client-utils"; import { IMediaPlayerState } from "../LiveMediaSessionCoordinator"; import { diff --git a/packages/live-share-media/src/internals/interfaces.ts b/packages/live-share-media/src/internals/interfaces.ts index 254a34efa..38ce5fcef 100644 --- a/packages/live-share-media/src/internals/interfaces.ts +++ b/packages/live-share-media/src/internals/interfaces.ts @@ -1,5 +1,5 @@ import { IEvent } from "@microsoft/live-share"; -import { IEvent as IFluidEvent } from "@fluidframework/common-definitions"; +import { IEvent as IFluidEvent } from "@fluidframework/core-interfaces"; import { ExtendedMediaSessionActionSource } from "../MediaSessionExtensions"; /** diff --git a/packages/live-share-media/src/test/GroupPlaybackPosition.spec.ts b/packages/live-share-media/src/test/GroupPlaybackPosition.spec.ts index 51a4bdb23..75c0a379f 100644 --- a/packages/live-share-media/src/test/GroupPlaybackPosition.spec.ts +++ b/packages/live-share-media/src/test/GroupPlaybackPosition.spec.ts @@ -18,12 +18,11 @@ import { ICurrentPlaybackPosition, ITransportState, } from "../internals"; +import { TestLiveShareHost, TimeInterval } from "@microsoft/live-share"; import { IRuntimeSignaler, - TestLiveShareHost, - TimeInterval, -} from "@microsoft/live-share"; -import { MockLiveShareRuntime } from "@microsoft/live-share/src/test/MockLiveShareRuntime"; + MockLiveShareRuntime, +} from "@microsoft/live-share/internal"; import { IMediaPlayerState } from "../LiveMediaSessionCoordinator"; function createTransportUpdate( diff --git a/packages/live-share-media/src/test/GroupPlaybackTrack.spec.ts b/packages/live-share-media/src/test/GroupPlaybackTrack.spec.ts index 9f1eb8b58..8a2ec52d4 100644 --- a/packages/live-share-media/src/test/GroupPlaybackTrack.spec.ts +++ b/packages/live-share-media/src/test/GroupPlaybackTrack.spec.ts @@ -11,7 +11,7 @@ import { IPlaybackTrackChangeEvent, } from "../internals/GroupPlaybackTrack"; import { ExtendedMediaMetadata } from "../MediaSessionExtensions"; -import { Deferred } from "@microsoft/live-share/src/internals/Deferred"; +import { Deferred } from "@microsoft/live-share/internal"; describe("GroupPlaybackTrack", () => { const track1 = { diff --git a/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts b/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts index 5c4140eed..fab831b73 100644 --- a/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts +++ b/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts @@ -4,7 +4,6 @@ */ import { TestLiveMediaSession, TestMediaTimeStampProvider } from "./TestUtils"; -import { Deferred } from "@microsoft/live-share/src/internals/Deferred"; import { strict as assert } from "assert"; import { ITestObjectProvider, @@ -13,15 +12,18 @@ import { } from "@fluidframework/test-utils/internal"; import { ITimestampProvider, - LiveEventScope, - LiveEventTarget, LocalTimestampProvider, UserMeetingRole, + TestLiveShareHost, } from "@microsoft/live-share"; -import { TestLiveShareHost } from "@microsoft/live-share"; -import { getLiveDataObjectKind } from "@microsoft/live-share"; -import { waitForDelay } from "@microsoft/live-share/src/internals"; -import { MockLiveShareRuntime } from "@microsoft/live-share/src/test/MockLiveShareRuntime"; +import { + getLiveDataObjectKind, + LiveEventScope, + LiveEventTarget, + MockLiveShareRuntime, + waitForDelay, + Deferred, +} from "@microsoft/live-share/internal"; import { ExtendedMediaMetadata, ExtendedMediaSessionActionDetails, diff --git a/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts b/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts index d84817cbd..401b2c95b 100644 --- a/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts +++ b/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts @@ -8,12 +8,11 @@ import { TestMediaPlayer, TestMediaTimeStampProvider, } from "./TestUtils"; -import { Deferred } from "@microsoft/live-share/src/internals/Deferred"; import { strict as assert } from "assert"; import { - ITestObjectProvider, - fluidEntryPoint, getContainerEntryPointBackCompat, + fluidEntryPoint, + ITestObjectProvider, } from "@fluidframework/test-utils/internal"; import { ITimestampProvider, @@ -21,10 +20,13 @@ import { UserMeetingRole, } from "@microsoft/live-share"; import { TestLiveShareHost } from "@microsoft/live-share"; -import { getLiveDataObjectKind } from "@microsoft/live-share"; -import { waitForDelay } from "@microsoft/live-share/src/internals"; -import { MockLiveShareRuntime } from "@microsoft/live-share/src/test/MockLiveShareRuntime"; -import { isErrorLike } from "@microsoft/live-share/bin/internals"; +import { getLiveDataObjectKind } from "@microsoft/live-share/internal"; +import { + Deferred, + isErrorLike, + MockLiveShareRuntime, + waitForDelay, +} from "@microsoft/live-share/internal"; import { ExtendedMediaMetadata, ExtendedMediaSessionAction, diff --git a/packages/live-share-media/src/test/TestUtils.ts b/packages/live-share-media/src/test/TestUtils.ts index 29ed7d7f2..a727fa6ea 100644 --- a/packages/live-share-media/src/test/TestUtils.ts +++ b/packages/live-share-media/src/test/TestUtils.ts @@ -4,13 +4,13 @@ */ import { IMediaPlayer } from "../IMediaPlayer"; -import { Deferred } from "@microsoft/live-share/src/internals/Deferred"; import { LiveMediaSession } from "../LiveMediaSession"; +import { ITimestampProvider } from "@microsoft/live-share"; import { + Deferred, IRuntimeSignaler, - ITimestampProvider, LiveShareRuntime, -} from "@microsoft/live-share"; +} from "@microsoft/live-share/internal"; export class TestMediaPlayer implements IMediaPlayer { private done = new Deferred(); diff --git a/packages/live-share-media/src/test/VolumeManager.spec.ts b/packages/live-share-media/src/test/VolumeManager.spec.ts index e52b9eaa0..09151f72e 100644 --- a/packages/live-share-media/src/test/VolumeManager.spec.ts +++ b/packages/live-share-media/src/test/VolumeManager.spec.ts @@ -1,7 +1,7 @@ import { strict as assert } from "assert"; import { IMediaPlayer } from "../IMediaPlayer"; import { LimitLevelType, VolumeManager } from "../VolumeManager"; -import { Deferred, waitForDelay } from "@microsoft/live-share/src/internals"; +import { Deferred, waitForDelay } from "@microsoft/live-share/internal"; // few millis more than max timeout callback in scheduleAnimationFrame const milliTolerance = 25; diff --git a/packages/live-share-react/src/providers/AzureProvider.tsx b/packages/live-share-react/src/providers/AzureProvider.tsx index 901a3edc4..b8a7c5aff 100644 --- a/packages/live-share-react/src/providers/AzureProvider.tsx +++ b/packages/live-share-react/src/providers/AzureProvider.tsx @@ -14,10 +14,8 @@ import { ISharedStateRegistryResponse, useSharedStateRegistry, } from "../shared-hooks"; -import { - BaseLiveShareClient, - AzureLiveShareClient, -} from "@microsoft/live-share"; +import { AzureLiveShareClient } from "@microsoft/live-share"; +import { BaseLiveShareClient } from "@microsoft/live-share/internal"; /** * React Context provider values for `` and ``. diff --git a/packages/live-share-react/src/shared-hooks/useSharedStateRegistry.ts b/packages/live-share-react/src/shared-hooks/useSharedStateRegistry.ts index 42beb9ab6..a412146cf 100644 --- a/packages/live-share-react/src/shared-hooks/useSharedStateRegistry.ts +++ b/packages/live-share-react/src/shared-hooks/useSharedStateRegistry.ts @@ -22,7 +22,7 @@ import { getRootDirectory, TurboDirectory, TurboStateMap, -} from "@microsoft/live-share"; +} from "@microsoft/live-share/internal"; /** * Response for the {@link useSharedStateRegistry} hook. diff --git a/packages/live-share/internal.ts b/packages/live-share/internal.ts new file mode 100644 index 000000000..e44e609d0 --- /dev/null +++ b/packages/live-share/internal.ts @@ -0,0 +1,17 @@ +// Exposed for other live share libs, or advanced use cases. +export * from "./bin/internals/BaseLiveShareClient"; +export * from "./bin/internals/Deferred"; +export * from "./bin/internals/DynamicObjectRegistry"; +export * from "./bin/internals/DynamicObjectManager"; +export * from "./bin/internals/LiveDataObject"; +export * from "./bin/internals/LiveEventScope"; +export * from "./bin/internals/LiveEventSource"; +export * from "./bin/internals/LiveEventTarget"; +export * from "./bin/internals/LiveObjectSynchronizer"; +export * from "./bin/internals/LiveShareRuntime"; +export * from "./bin/internals/schema-injection-utils"; +export * from "./bin/internals/smuggle"; + +export { waitForDelay, waitUntilConnected } from "./bin/internals/utils"; +export { MockLiveShareRuntime } from "./bin/internals/mock/MockLiveShareRuntime"; +export { isErrorLike } from "./bin/internals/type-guards"; diff --git a/packages/live-share/src/AzureLiveShareClient.ts b/packages/live-share/src/AzureLiveShareClient.ts index 0dd1ef3a1..ac2f77edb 100644 --- a/packages/live-share/src/AzureLiveShareClient.ts +++ b/packages/live-share/src/AzureLiveShareClient.ts @@ -9,10 +9,10 @@ import { AzureContainerServices } from "@fluidframework/azure-client/internal"; import { BaseLiveShareClient } from "./internals/BaseLiveShareClient"; import { ILiveShareHost } from "./interfaces"; import { AzureLiveShareHost } from "./AzureLiveShareHost"; -import { LiveShareRuntime } from "./LiveShareRuntime"; +import { LiveShareRuntime } from "./internals/LiveShareRuntime"; import { getLiveContainerSchema } from "./internals/schema-injection-utils"; import { LiveShareClient } from "./LiveShareClient"; -import { LiveDataObject } from "./LiveDataObject"; +import { LiveDataObject } from "./internals/LiveDataObject"; import { FluidCompatibilityMode } from "./internals/consts"; /** diff --git a/packages/live-share/src/AzureLiveShareHost.ts b/packages/live-share/src/AzureLiveShareHost.ts index 52b631ede..53f310777 100644 --- a/packages/live-share/src/AzureLiveShareHost.ts +++ b/packages/live-share/src/AzureLiveShareHost.ts @@ -7,7 +7,7 @@ import { INtpTimeInfo, UserMeetingRole, } from "./interfaces"; -import { Deferred } from "./internals"; +import { Deferred } from "./internals/Deferred"; /** * @alpha diff --git a/packages/live-share/src/LiveEvent.ts b/packages/live-share/src/LiveEvent.ts index 9af6a53ff..8605f6b68 100644 --- a/packages/live-share/src/LiveEvent.ts +++ b/packages/live-share/src/LiveEvent.ts @@ -14,17 +14,17 @@ import { ILiveEvent, LiveDataObjectInitializeState, } from "./interfaces"; -import { LiveEventScope } from "./LiveEventScope"; -import { LiveEventTarget } from "./LiveEventTarget"; +import { LiveEventScope } from "./internals/LiveEventScope"; +import { LiveEventTarget } from "./internals/LiveEventTarget"; import { DynamicObjectRegistry } from "./internals/DynamicObjectRegistry"; -import { LiveDataObject } from "./LiveDataObject"; -import { cloneValue } from "./internals"; +import { LiveDataObject } from "./internals/LiveDataObject"; import { LiveDataObjectInitializeNotNeededError, LiveDataObjectNotInitializedError, UnexpectedError, } from "./errors"; import { SharedObjectKind } from "fluid-framework"; +import { cloneValue } from "./internals/utils"; /** * Events supported by `LiveEvent` object. diff --git a/packages/live-share/src/LiveEventTimer.ts b/packages/live-share/src/LiveEventTimer.ts deleted file mode 100644 index 72359eaea..000000000 --- a/packages/live-share/src/LiveEventTimer.ts +++ /dev/null @@ -1,117 +0,0 @@ -/*! - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Microsoft Live Share SDK License. - */ - -import { TimeInterval } from "./TimeInterval"; -import { LiveEventSource } from "./LiveEventSource"; -import { ILiveEvent } from "./interfaces"; - -/** - * Periodically broadcasts an event to listening `LiveEventTarget` instances. - */ -export class LiveEventTimer { - private _eventSource: LiveEventSource; - private _createEvent: () => T; - private _delay: TimeInterval; - private _isRunning = false; - private _timer?: any; - - /** - * Creates a new `LiveEventTimer instance. - * @param eventSource Event source that will be used to emit events. - * @param createEvent Function used to construct an event to send. This will be called at regular intervals prior to sending an event. - * @param delay Period to delay for in milliseconds. - * @param repeat Optional. If true the timer will repeat once `start` is called, otherwise a single event will be sent after the delay. Defaults to false. - */ - constructor( - eventSource: LiveEventSource, - createEvent: () => T, - delay: number, - repeat = false - ) { - this._eventSource = eventSource; - this._createEvent = createEvent; - this._delay = new TimeInterval(delay); - this.repeat = repeat; - } - - /** - * The rate at which the events are sent in milliseconds. - */ - public get delay(): number { - return this._delay.milliseconds; - } - - public set delay(value: number) { - this._delay.milliseconds = value; - } - - /** - * Returns true if the timer is currently running. - */ - public get isRunning(): boolean { - return this._isRunning; - } - - /** - * If true the event will automatically repeat at an interval specified by the `delay`. - */ - public repeat: boolean; - - /** - * Immediately sends an event. - * - * @remarks - * The `createEvent` callback to construct the event is called but does not impact any pending - * timeouts. Call `start` after calling `sendEvent` if you'd like to skip the next timer - * interval. - */ - public sendEvent(): Promise> { - const evt = this._createEvent(); - return this._eventSource.sendEvent(evt); - } - - /** - * Starts the timer. - * - * @remarks - * If the timer is running it will be stooped and then re-started with a new `delay`. - */ - public start(): void { - this.stop(); - this._isRunning = true; - this.delayedEmit(this.delay); - } - - /** - * Stops the timer if its running. - */ - public stop(): void { - if (this._timer != undefined) { - clearTimeout(this._timer); - this._timer = undefined; - } - this._isRunning = false; - } - - private delayedEmit(delay: number): void { - this._timer = setTimeout(() => { - this._timer = undefined; - const startedAt = new Date().getTime(); - this.sendEvent().catch((err) => { - console.warn(err); - }); - - // Auto-repeat - if (this._isRunning && this.repeat) { - // We want to send an every ${this.delay} milliseconds so we subtract the duration - // of the time it took us to emit the event. If it took longer then ${this.delay} - // we will skip to the next interval (hence the %mod% operation.) - const duration = - (new Date().getTime() - startedAt) % this.delay; - this.delayedEmit(this.delay - duration); - } - }, delay); - } -} diff --git a/packages/live-share/src/LiveFollowMode.ts b/packages/live-share/src/LiveFollowMode.ts index 4ab75825f..5b533049f 100644 --- a/packages/live-share/src/LiveFollowMode.ts +++ b/packages/live-share/src/LiveFollowMode.ts @@ -1,4 +1,4 @@ -import { LiveDataObject } from "./LiveDataObject"; +import { LiveDataObject } from "./internals/LiveDataObject"; import { LiveState } from "./LiveState"; import { ILivePresenceEvents, LivePresence } from "./LivePresence"; import { diff --git a/packages/live-share/src/LivePresence.ts b/packages/live-share/src/LivePresence.ts index 721982090..65af6c60c 100644 --- a/packages/live-share/src/LivePresence.ts +++ b/packages/live-share/src/LivePresence.ts @@ -7,16 +7,15 @@ import { DataObjectFactory, createDataObjectKind, } from "@fluidframework/aqueduct/internal"; -import { IEvent } from "@fluidframework/common-definitions"; +import { IEvent } from "@fluidframework/core-interfaces"; import { LivePresenceUser, PresenceState, ILivePresenceEvent, LivePresenceReceivedEventData, } from "./LivePresenceUser"; -import { LiveObjectSynchronizer } from "./LiveObjectSynchronizer"; +import { LiveObjectSynchronizer } from "./internals/LiveObjectSynchronizer"; import { LiveTelemetryLogger } from "./LiveTelemetryLogger"; -import { cloneValue, TelemetryEvents } from "./internals"; import { LiveDataObjectInitializeNotNeededError, LiveDataObjectNotInitializedError, @@ -29,8 +28,10 @@ import { LiveDataObjectInitializeState, UserMeetingRole, } from "./interfaces"; -import { LiveDataObject } from "./LiveDataObject"; +import { LiveDataObject } from "./internals/LiveDataObject"; import { SharedObjectKind } from "fluid-framework"; +import { cloneValue } from "./internals/utils"; +import { TelemetryEvents } from "./internals/consts"; /** * Events supported by `LivePresence` object. diff --git a/packages/live-share/src/LivePresenceConnection.ts b/packages/live-share/src/LivePresenceConnection.ts index e31351985..9fa88109f 100644 --- a/packages/live-share/src/LivePresenceConnection.ts +++ b/packages/live-share/src/LivePresenceConnection.ts @@ -1,11 +1,11 @@ -import { cloneValue } from "./internals"; import { LiveEvent } from "./LiveEvent"; import { LivePresenceReceivedEventData, PresenceState, } from "./LivePresenceUser"; -import { LiveShareRuntime } from "./LiveShareRuntime"; +import { LiveShareRuntime } from "./internals/LiveShareRuntime"; import { TimeInterval } from "./TimeInterval"; +import { cloneValue } from "./internals/utils"; /** * A connection that presence is being tracked for. diff --git a/packages/live-share/src/LivePresenceUser.ts b/packages/live-share/src/LivePresenceUser.ts index 1f973805d..508373206 100644 --- a/packages/live-share/src/LivePresenceUser.ts +++ b/packages/live-share/src/LivePresenceUser.ts @@ -6,9 +6,9 @@ import { LiveEvent } from "./LiveEvent"; import { IClientInfo, ILiveEvent, UserMeetingRole } from "./interfaces"; import { TimeInterval } from "./TimeInterval"; -import { cloneValue } from "./internals"; -import { LiveShareRuntime } from "./LiveShareRuntime"; +import { LiveShareRuntime } from "./internals/LiveShareRuntime"; import { LivePresenceConnection } from "./LivePresenceConnection"; +import { cloneValue } from "./internals/utils"; /** * List of possible presence states. diff --git a/packages/live-share/src/LiveShareClient.ts b/packages/live-share/src/LiveShareClient.ts index 239f904f9..3281114fe 100644 --- a/packages/live-share/src/LiveShareClient.ts +++ b/packages/live-share/src/LiveShareClient.ts @@ -23,10 +23,10 @@ import { import { BaseLiveShareClient } from "./internals/BaseLiveShareClient"; import { LocalTimestampProvider } from "./LocalTimestampProvider"; import { TestLiveShareHost } from "./TestLiveShareHost"; -import { LiveShareRuntime } from "./LiveShareRuntime"; +import { LiveShareRuntime } from "./internals/LiveShareRuntime"; import { getLiveContainerSchema } from "./internals/schema-injection-utils"; import { ExpectedError, UnexpectedError } from "./errors"; -import { FluidCompatibilityMode } from "./internals"; +import { FluidCompatibilityMode } from "./internals/consts"; /** * @hidden diff --git a/packages/live-share/src/LiveState.ts b/packages/live-share/src/LiveState.ts index 2a1f92ebd..0882f12cb 100644 --- a/packages/live-share/src/LiveState.ts +++ b/packages/live-share/src/LiveState.ts @@ -14,7 +14,6 @@ import { LiveDataObjectInitializeState, UserMeetingRole, } from "./interfaces"; -import { cloneValue, TelemetryEvents } from "./internals"; import { LiveDataObjectInitializeNotNeededError, LiveDataObjectNotInitializedError, @@ -22,10 +21,12 @@ import { } from "./errors"; import { LiveTelemetryLogger } from "./LiveTelemetryLogger"; import { LiveEvent } from "./LiveEvent"; -import { LiveObjectSynchronizer } from "./LiveObjectSynchronizer"; +import { LiveObjectSynchronizer } from "./internals/LiveObjectSynchronizer"; import { DynamicObjectRegistry } from "./internals/DynamicObjectRegistry"; -import { LiveDataObject } from "./LiveDataObject"; +import { LiveDataObject } from "./internals/LiveDataObject"; import { SharedObjectKind } from "fluid-framework"; +import { TelemetryEvents } from "./internals/consts"; +import { cloneValue } from "./internals/utils"; /** * Events supported by [LiveState` object. diff --git a/packages/live-share/src/LiveTelemetryLogger.ts b/packages/live-share/src/LiveTelemetryLogger.ts index dcc0818b9..5bc6e355a 100644 --- a/packages/live-share/src/LiveTelemetryLogger.ts +++ b/packages/live-share/src/LiveTelemetryLogger.ts @@ -8,8 +8,8 @@ import { ITelemetryBaseProperties, LogLevel, } from "@fluidframework/core-interfaces"; -import { IRuntimeSignaler } from "./LiveEventScope"; -import { LiveShareRuntime } from "./LiveShareRuntime"; +import { IRuntimeSignaler } from "./internals/LiveEventScope"; +import { LiveShareRuntime } from "./internals/LiveShareRuntime"; /** * Properties included on all events sent by `LiveTelemetryLogger`. diff --git a/packages/live-share/src/LiveTimer.ts b/packages/live-share/src/LiveTimer.ts index 5062805ea..6a2f967bd 100644 --- a/packages/live-share/src/LiveTimer.ts +++ b/packages/live-share/src/LiveTimer.ts @@ -7,7 +7,7 @@ import { DataObjectFactory, createDataObjectKind, } from "@fluidframework/aqueduct/internal"; -import { LiveObjectSynchronizer } from "./LiveObjectSynchronizer"; +import { LiveObjectSynchronizer } from "./internals/LiveObjectSynchronizer"; import { IClientTimestamp, ILiveEvent, @@ -17,7 +17,7 @@ import { import { IEvent } from "@fluidframework/core-interfaces"; import { LiveEvent } from "./LiveEvent"; import { DynamicObjectRegistry } from "./internals/DynamicObjectRegistry"; -import { LiveDataObject } from "./LiveDataObject"; +import { LiveDataObject } from "./internals/LiveDataObject"; import { LiveDataObjectInitializeNotNeededError, LiveDataObjectNotInitializedError, diff --git a/packages/live-share/src/TimestampProvider.ts b/packages/live-share/src/TimestampProvider.ts index 6706a5091..36ff37bfc 100644 --- a/packages/live-share/src/TimestampProvider.ts +++ b/packages/live-share/src/TimestampProvider.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { ILiveShareHost, INtpTimeInfo, ITimestampProvider } from "./interfaces"; +import { INtpTimeInfo, ITimestampProvider } from "./interfaces"; const IMPROVE_ACCURACY_INTERVAL = 5 * 1000; const IMPROVE_ACCURACY_ATTEMPTS = 5; diff --git a/packages/live-share/src/errors.ts b/packages/live-share/src/errors.ts index 6da07284f..5cc54d4aa 100644 --- a/packages/live-share/src/errors.ts +++ b/packages/live-share/src/errors.ts @@ -1,5 +1,5 @@ -import { LiveShareReportIssueLink } from "./internals"; import { LiveDataObjectInitializeState } from "./interfaces"; +import { LiveShareReportIssueLink } from "./internals/consts"; /** * @hidden diff --git a/packages/live-share/src/index.ts b/packages/live-share/src/index.ts index 21347f8a4..60acde0bd 100644 --- a/packages/live-share/src/index.ts +++ b/packages/live-share/src/index.ts @@ -20,21 +20,3 @@ export * from "./LocalTimestampProvider"; export * from "./TestLiveShareHost"; export * from "./TimeInterval"; export * from "./TimestampProvider"; - -export * from "./LiveEventTimer"; // TODO: Delete LiveEventTime.ts - -// TODO: our package structure is such that things that need to be exposed at all for other live share libs -// are in the root of the directory even if they are "internal". move some to internal again? -export * from "./internals/BaseLiveShareClient"; -export * from "./internals/DynamicObjectRegistry"; -export * from "./internals/DynamicObjectManager"; -export * from "./internals/schema-injection-utils"; -export * from "./internals/smuggle"; - -// TODO: move to internal -export * from "./LiveDataObject"; -export * from "./LiveEventScope"; -export * from "./LiveEventSource"; -export * from "./LiveEventTarget"; -export * from "./LiveObjectSynchronizer"; -export * from "./LiveShareRuntime"; diff --git a/packages/live-share/src/internals/BaseLiveShareClient.ts b/packages/live-share/src/internals/BaseLiveShareClient.ts index 9105e6bd1..4efa8e76e 100644 --- a/packages/live-share/src/internals/BaseLiveShareClient.ts +++ b/packages/live-share/src/internals/BaseLiveShareClient.ts @@ -14,7 +14,7 @@ import { AzureContainerServices } from "@fluidframework/azure-client/internal"; import { IFluidLoadable } from "@fluidframework/core-interfaces"; import { DynamicObjectRegistry } from "./DynamicObjectRegistry"; import { DynamicObjectManager } from "./DynamicObjectManager"; -import { LiveShareRuntime } from "../LiveShareRuntime"; +import { LiveShareRuntime } from "./LiveShareRuntime"; import { getRootDataObject, getContainerRuntime, diff --git a/packages/live-share/src/internals/ContainerSynchronizer.ts b/packages/live-share/src/internals/ContainerSynchronizer.ts index 74b3bf6fb..9274c3030 100644 --- a/packages/live-share/src/internals/ContainerSynchronizer.ts +++ b/packages/live-share/src/internals/ContainerSynchronizer.ts @@ -1,5 +1,5 @@ -import { IRuntimeSignaler } from "../LiveEventScope"; -import { LiveShareRuntime } from "../LiveShareRuntime"; +import { IRuntimeSignaler } from "./LiveEventScope"; +import { LiveShareRuntime } from "./LiveShareRuntime"; import { IContainerRuntimeSignaler, ILiveEvent } from "../interfaces"; import { GetAndUpdateStateHandlers, diff --git a/packages/live-share/src/internals/DynamicObjectManager.ts b/packages/live-share/src/internals/DynamicObjectManager.ts index 3cd50f73f..0426f96a7 100644 --- a/packages/live-share/src/internals/DynamicObjectManager.ts +++ b/packages/live-share/src/internals/DynamicObjectManager.ts @@ -16,7 +16,7 @@ import { IFluidHandle, IFluidLoadable } from "@fluidframework/core-interfaces"; import { assert } from "@fluidframework/core-utils/internal"; import { ConsensusRegisterCollection } from "@fluidframework/register-collection/internal"; import { DynamicObjectRegistry } from "./DynamicObjectRegistry"; -import { LiveDataObject } from "../LiveDataObject"; +import { LiveDataObject } from "./LiveDataObject"; // Register ConsensusRegisterCollection DynamicObjectRegistry.registerObjectClass( diff --git a/packages/live-share/src/LiveDataObject.ts b/packages/live-share/src/internals/LiveDataObject.ts similarity index 96% rename from packages/live-share/src/LiveDataObject.ts rename to packages/live-share/src/internals/LiveDataObject.ts index 8ef6e2141..c41f03291 100644 --- a/packages/live-share/src/LiveDataObject.ts +++ b/packages/live-share/src/internals/LiveDataObject.ts @@ -9,9 +9,9 @@ import { IClientInfo, LiveDataObjectInitializeState, UserMeetingRole, -} from "./interfaces"; -import { LiveShareReportIssueLink } from "./internals/consts"; -import { waitUntilConnected } from "./internals/utils"; +} from "../interfaces"; +import { LiveShareReportIssueLink } from "./consts"; +import { waitUntilConnected } from "./utils"; /** * Extends Fluid's DataObject class. Intended for use with Live Share custom DDS's that rely on a `ILiveShareHost`. diff --git a/packages/live-share/src/LiveEventScope.ts b/packages/live-share/src/internals/LiveEventScope.ts similarity index 97% rename from packages/live-share/src/LiveEventScope.ts rename to packages/live-share/src/internals/LiveEventScope.ts index c7beef7d6..49b25c309 100644 --- a/packages/live-share/src/LiveEventScope.ts +++ b/packages/live-share/src/internals/LiveEventScope.ts @@ -9,11 +9,12 @@ import { } from "@fluidframework/core-interfaces"; import { TypedEventEmitter } from "@fluid-internal/client-utils"; import { IInboundSignalMessage } from "@fluidframework/runtime-definitions/internal"; -import { ILiveEvent, UserMeetingRole } from "./interfaces"; +import { ILiveEvent, UserMeetingRole } from "../interfaces"; import { LiveShareRuntime } from "./LiveShareRuntime"; -import { isILiveEvent, waitUntilConnected } from "./internals"; -import { IEvent } from "@fluidframework/common-definitions"; -import { LiveTelemetryLogger } from "./LiveTelemetryLogger"; +import { IEvent } from "@fluidframework/core-interfaces"; +import { LiveTelemetryLogger } from "../LiveTelemetryLogger"; +import { isILiveEvent } from "./type-guards"; +import { waitUntilConnected } from "./utils"; /** * Live event callback. diff --git a/packages/live-share/src/LiveEventSource.ts b/packages/live-share/src/internals/LiveEventSource.ts similarity index 97% rename from packages/live-share/src/LiveEventSource.ts rename to packages/live-share/src/internals/LiveEventSource.ts index d81f5933e..1530e9ec4 100644 --- a/packages/live-share/src/LiveEventSource.ts +++ b/packages/live-share/src/internals/LiveEventSource.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { ILiveEvent } from "./interfaces"; +import { ILiveEvent } from "../interfaces"; import { LiveEventScope } from "./LiveEventScope"; /** diff --git a/packages/live-share/src/LiveEventTarget.ts b/packages/live-share/src/internals/LiveEventTarget.ts similarity index 100% rename from packages/live-share/src/LiveEventTarget.ts rename to packages/live-share/src/internals/LiveEventTarget.ts diff --git a/packages/live-share/src/internals/LiveObjectManager.ts b/packages/live-share/src/internals/LiveObjectManager.ts index bccadc31b..c105bbbaf 100644 --- a/packages/live-share/src/internals/LiveObjectManager.ts +++ b/packages/live-share/src/internals/LiveObjectManager.ts @@ -5,23 +5,22 @@ import { IInboundSignalMessage } from "@fluidframework/runtime-definitions/internal"; import { TypedEventEmitter } from "@fluid-internal/client-utils"; -import { IRuntimeSignaler } from "../LiveEventScope"; -import { LiveShareRuntime } from "../LiveShareRuntime"; +import { IRuntimeSignaler } from "./LiveEventScope"; +import { LiveShareRuntime } from "./LiveShareRuntime"; import { IContainerRuntimeSignaler, ILiveEvent } from "../interfaces"; import { LiveEvent } from "../LiveEvent"; +import { IAzureAudience } from "@fluidframework/azure-client"; +import { isILiveEvent } from "./type-guards"; +import { ObjectSynchronizerEvents } from "./consts"; +import { cloneValue, waitUntilConnected } from "./utils"; +import { ContainerSynchronizer } from "./ContainerSynchronizer"; import { - ContainerSynchronizer, GetAndUpdateStateHandlers, IContainerLiveObjectStoreEvents, ILiveClientEventMap, ILiveObjectStore, - ObjectSynchronizerEvents, StateSyncEventContent, - cloneValue, - isILiveEvent, - waitUntilConnected, -} from "./"; -import { IAzureAudience } from "@fluidframework/azure-client"; +} from "./internal-interfaces"; /** * @hidden diff --git a/packages/live-share/src/LiveObjectSynchronizer.ts b/packages/live-share/src/internals/LiveObjectSynchronizer.ts similarity index 99% rename from packages/live-share/src/LiveObjectSynchronizer.ts rename to packages/live-share/src/internals/LiveObjectSynchronizer.ts index 8efa3135f..85aa86a40 100644 --- a/packages/live-share/src/LiveObjectSynchronizer.ts +++ b/packages/live-share/src/internals/LiveObjectSynchronizer.ts @@ -9,7 +9,7 @@ import { GetLocalUserCanSend, ILiveEvent, UpdateSynchronizationState, -} from "./interfaces"; +} from "../interfaces"; /** * @internal diff --git a/packages/live-share/src/LiveShareRuntime.ts b/packages/live-share/src/internals/LiveShareRuntime.ts similarity index 94% rename from packages/live-share/src/LiveShareRuntime.ts rename to packages/live-share/src/internals/LiveShareRuntime.ts index 9d39adab8..f427972aa 100644 --- a/packages/live-share/src/LiveShareRuntime.ts +++ b/packages/live-share/src/internals/LiveShareRuntime.ts @@ -1,5 +1,5 @@ import { assert } from "@fluidframework/core-utils/internal"; -import { HostTimestampProvider } from "./HostTimestampProvider"; +import { HostTimestampProvider } from "../HostTimestampProvider"; import { IClientInfo, ILiveShareHost, @@ -7,17 +7,15 @@ import { ITimestampProvider, UserMeetingRole, IContainerRuntimeSignaler, -} from "./interfaces"; -import { - BackwardsCompatibilityHostDecorator, - LiveShareHostDecorator, - RoleVerifier, - isTimestampProvider, - LiveObjectManager, - FormatFixHostDecorator, -} from "./internals"; +} from "../interfaces"; import { IAzureAudience } from "@fluidframework/azure-client"; -import { ILiveShareClientOptions } from "./LiveShareClient"; +import { ILiveShareClientOptions } from "../LiveShareClient"; +import { isTimestampProvider } from "./type-guards"; +import { LiveObjectManager } from "./LiveObjectManager"; +import { RoleVerifier } from "./RoleVerifier"; +import { BackwardsCompatibilityHostDecorator } from "./BackwardsCompatibilityHostDecorator"; +import { LiveShareHostDecorator } from "./LiveShareHostDecorator"; +import { FormatFixHostDecorator } from "./FormatFixHostDecorator"; /** * Runtime for LiveDataObject, which is used to do things like validate roles, get a timestamp diff --git a/packages/live-share/src/internals/index.ts b/packages/live-share/src/internals/index.ts deleted file mode 100644 index 4c9651474..000000000 --- a/packages/live-share/src/internals/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/*! - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Microsoft Live Share SDK License. - */ - -export * from "./consts"; -export * from "./LiveShareTokenProvider"; -export * from "./RequestCache"; -export * from "./RoleVerifier"; -export * from "./utils"; -export * from "./LiveShareHostDecorator"; -export * from "./BackwardsCompatibilityHostDecorator"; -export * from "./Deferred"; -export * from "./type-guards"; -export * from "./internal-interfaces"; -export * from "./LiveObjectManager"; -export * from "./ContainerSynchronizer"; -export * from "./FormatFixHostDecorator"; - -// TODO: delete internals/index.ts diff --git a/packages/live-share/src/internals/internal-interfaces.ts b/packages/live-share/src/internals/internal-interfaces.ts index 6155b087d..978637c54 100644 --- a/packages/live-share/src/internals/internal-interfaces.ts +++ b/packages/live-share/src/internals/internal-interfaces.ts @@ -3,7 +3,7 @@ import { ILiveEvent, UpdateSynchronizationState, } from "../interfaces"; -import { IEvent } from "@fluidframework/common-definitions"; +import { IEvent } from "@fluidframework/core-interfaces"; /** * @hidden diff --git a/packages/live-share/src/test/MockContainerRuntimeSignaler.ts b/packages/live-share/src/internals/mock/MockContainerRuntimeSignaler.ts similarity index 96% rename from packages/live-share/src/test/MockContainerRuntimeSignaler.ts rename to packages/live-share/src/internals/mock/MockContainerRuntimeSignaler.ts index aa47433de..573eeb3cb 100644 --- a/packages/live-share/src/test/MockContainerRuntimeSignaler.ts +++ b/packages/live-share/src/internals/mock/MockContainerRuntimeSignaler.ts @@ -3,8 +3,8 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { IInboundSignalMessage } from "@fluidframework/runtime-definitions"; -import { IContainerRuntimeSignaler } from "../interfaces"; +import { IInboundSignalMessage } from "@fluidframework/runtime-definitions/internal"; +import { IContainerRuntimeSignaler } from "../../interfaces"; import { v4 } from "uuid"; export class MockContainerRuntimeSignaler implements IContainerRuntimeSignaler { diff --git a/packages/live-share/src/test/MockLiveShareRuntime.ts b/packages/live-share/src/internals/mock/MockLiveShareRuntime.ts similarity index 87% rename from packages/live-share/src/test/MockLiveShareRuntime.ts rename to packages/live-share/src/internals/mock/MockLiveShareRuntime.ts index 3c04469b1..942221edc 100644 --- a/packages/live-share/src/test/MockLiveShareRuntime.ts +++ b/packages/live-share/src/internals/mock/MockLiveShareRuntime.ts @@ -1,8 +1,11 @@ import { LiveShareRuntime } from "../LiveShareRuntime"; -import { TestLiveShareHost } from "../TestLiveShareHost"; -import { IContainerRuntimeSignaler, ITimestampProvider } from "../interfaces"; +import { TestLiveShareHost } from "../../TestLiveShareHost"; +import { + IContainerRuntimeSignaler, + ITimestampProvider, +} from "../../interfaces"; import { MockContainerRuntimeSignaler } from "./MockContainerRuntimeSignaler"; -import { LocalTimestampProvider } from "../LocalTimestampProvider"; +import { LocalTimestampProvider } from "../../LocalTimestampProvider"; export class MockLiveShareRuntime extends LiveShareRuntime { constructor( diff --git a/packages/live-share/src/test/MockRoleVerifier.ts b/packages/live-share/src/internals/mock/MockRoleVerifier.ts similarity index 89% rename from packages/live-share/src/test/MockRoleVerifier.ts rename to packages/live-share/src/internals/mock/MockRoleVerifier.ts index 6b81e7d2a..a7d620716 100644 --- a/packages/live-share/src/test/MockRoleVerifier.ts +++ b/packages/live-share/src/internals/mock/MockRoleVerifier.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { IRoleVerifier, UserMeetingRole } from "../interfaces"; +import { IRoleVerifier, UserMeetingRole } from "../../interfaces"; export class MockRoleVerifier implements IRoleVerifier { private _sendersRoles: UserMeetingRole[]; @@ -14,7 +14,7 @@ export class MockRoleVerifier implements IRoleVerifier { public blocked = false; public called = false; - public clientId: string; + public clientId: string = ""; public verifyRolesAllowed( clientId: string, diff --git a/packages/live-share/src/test/MockRuntimeSignaler.ts b/packages/live-share/src/internals/mock/MockRuntimeSignaler.ts similarity index 99% rename from packages/live-share/src/test/MockRuntimeSignaler.ts rename to packages/live-share/src/internals/mock/MockRuntimeSignaler.ts index 610d2744a..630b1c233 100644 --- a/packages/live-share/src/test/MockRuntimeSignaler.ts +++ b/packages/live-share/src/internals/mock/MockRuntimeSignaler.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { IInboundSignalMessage } from "@fluidframework/runtime-definitions"; +import { IInboundSignalMessage } from "@fluidframework/runtime-definitions/internal"; import { MockLogger } from "@fluidframework/telemetry-utils/internal"; import { IRuntimeSignaler } from "../LiveEventScope"; import { v4 } from "uuid"; diff --git a/packages/live-share/src/test/MockTimestampProvider.ts b/packages/live-share/src/internals/mock/MockTimestampProvider.ts similarity index 88% rename from packages/live-share/src/test/MockTimestampProvider.ts rename to packages/live-share/src/internals/mock/MockTimestampProvider.ts index 565d9b042..7c0d4690c 100644 --- a/packages/live-share/src/test/MockTimestampProvider.ts +++ b/packages/live-share/src/internals/mock/MockTimestampProvider.ts @@ -3,7 +3,7 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { ITimestampProvider } from "../interfaces"; +import { ITimestampProvider } from "../../interfaces"; export class MockTimestampProvider implements ITimestampProvider { public called = false; diff --git a/packages/live-share/src/internals/schema-injection-utils.ts b/packages/live-share/src/internals/schema-injection-utils.ts index 7303fed1c..10b433f1d 100644 --- a/packages/live-share/src/internals/schema-injection-utils.ts +++ b/packages/live-share/src/internals/schema-injection-utils.ts @@ -3,8 +3,8 @@ import { IDataObjectProps, } from "@fluidframework/aqueduct/internal"; import { IFluidLoadable } from "@fluidframework/core-interfaces"; -import { LiveDataObject } from "../LiveDataObject"; -import { LiveShareRuntime } from "../LiveShareRuntime"; +import { LiveDataObject } from "./LiveDataObject"; +import { LiveShareRuntime } from "./LiveShareRuntime"; import { LoadableObjectCtor, LoadableObjectClassRecord, diff --git a/packages/live-share/src/internals/test/FormatFixHostDecorator.spec.ts b/packages/live-share/src/internals/test/FormatFixHostDecorator.spec.ts index bcdf41998..99f1c4b38 100644 --- a/packages/live-share/src/internals/test/FormatFixHostDecorator.spec.ts +++ b/packages/live-share/src/internals/test/FormatFixHostDecorator.spec.ts @@ -1,6 +1,6 @@ import { ILiveShareHost, UserMeetingRole, IClientInfo } from "../../interfaces"; import { strict as assert } from "assert"; -import { FormatFixHostDecorator } from ".."; +import { FormatFixHostDecorator } from "../FormatFixHostDecorator"; class HostWithAndroidBug { constructor(private result: unknown) {} diff --git a/packages/live-share/src/test/LiveEventScope.spec.ts b/packages/live-share/src/internals/test/LiveEventScope.spec.ts similarity index 95% rename from packages/live-share/src/test/LiveEventScope.spec.ts rename to packages/live-share/src/internals/test/LiveEventScope.spec.ts index 81f7080f6..fa54d54ef 100644 --- a/packages/live-share/src/test/LiveEventScope.spec.ts +++ b/packages/live-share/src/internals/test/LiveEventScope.spec.ts @@ -5,12 +5,12 @@ import { strict as assert } from "assert"; import { LiveEventScope } from "../LiveEventScope"; -import { UserMeetingRole } from "../interfaces"; -import { MockRuntimeSignaler } from "./MockRuntimeSignaler"; -import { MockRoleVerifier } from "./MockRoleVerifier"; -import { MockTimestampProvider } from "./MockTimestampProvider"; -import { LocalTimestampProvider } from "../LocalTimestampProvider"; -import { TestLiveShareHost } from "../TestLiveShareHost"; +import { UserMeetingRole } from "../../interfaces"; +import { MockRuntimeSignaler } from "../mock/MockRuntimeSignaler"; +import { MockRoleVerifier } from "../mock/MockRoleVerifier"; +import { MockTimestampProvider } from "../mock/MockTimestampProvider"; +import { LocalTimestampProvider } from "../../LocalTimestampProvider"; +import { TestLiveShareHost } from "../../TestLiveShareHost"; import { LiveShareRuntime } from "../LiveShareRuntime"; function createConnectedSignalers() { diff --git a/packages/live-share/src/test/LiveEventSource.spec.ts b/packages/live-share/src/internals/test/LiveEventSource.spec.ts similarity index 91% rename from packages/live-share/src/test/LiveEventSource.spec.ts rename to packages/live-share/src/internals/test/LiveEventSource.spec.ts index 6b85a979a..92a532409 100644 --- a/packages/live-share/src/test/LiveEventSource.spec.ts +++ b/packages/live-share/src/internals/test/LiveEventSource.spec.ts @@ -6,10 +6,10 @@ import { strict as assert } from "assert"; import { LiveEventScope } from "../LiveEventScope"; import { LiveEventSource } from "../LiveEventSource"; -import { MockRuntimeSignaler } from "./MockRuntimeSignaler"; +import { MockRuntimeSignaler } from "../mock/MockRuntimeSignaler"; import { LiveShareRuntime } from "../LiveShareRuntime"; -import { TestLiveShareHost } from "../TestLiveShareHost"; -import { LocalTimestampProvider } from "../LocalTimestampProvider"; +import { TestLiveShareHost } from "../../TestLiveShareHost"; +import { LocalTimestampProvider } from "../../LocalTimestampProvider"; function createConnectedSignalers() { const localRuntime = new MockRuntimeSignaler(); diff --git a/packages/live-share/src/test/LiveEventTarget.spec.ts b/packages/live-share/src/internals/test/LiveEventTarget.spec.ts similarity index 91% rename from packages/live-share/src/test/LiveEventTarget.spec.ts rename to packages/live-share/src/internals/test/LiveEventTarget.spec.ts index 5bb6dc052..b305f158f 100644 --- a/packages/live-share/src/test/LiveEventTarget.spec.ts +++ b/packages/live-share/src/internals/test/LiveEventTarget.spec.ts @@ -6,10 +6,10 @@ import { strict as assert } from "assert"; import { LiveEventScope } from "../LiveEventScope"; import { LiveEventTarget } from "../LiveEventTarget"; -import { MockRuntimeSignaler } from "./MockRuntimeSignaler"; +import { MockRuntimeSignaler } from "../mock/MockRuntimeSignaler"; import { LiveShareRuntime } from "../LiveShareRuntime"; -import { TestLiveShareHost } from "../TestLiveShareHost"; -import { LocalTimestampProvider } from "../LocalTimestampProvider"; +import { TestLiveShareHost } from "../../TestLiveShareHost"; +import { LocalTimestampProvider } from "../../LocalTimestampProvider"; function createConnectedSignalers() { const localRuntime = new MockRuntimeSignaler(); diff --git a/packages/live-share/src/test/LiveObjectSynchronizer.spec.ts b/packages/live-share/src/internals/test/LiveObjectSynchronizer.spec.ts similarity index 98% rename from packages/live-share/src/test/LiveObjectSynchronizer.spec.ts rename to packages/live-share/src/internals/test/LiveObjectSynchronizer.spec.ts index f94804fe2..969704039 100644 --- a/packages/live-share/src/test/LiveObjectSynchronizer.spec.ts +++ b/packages/live-share/src/internals/test/LiveObjectSynchronizer.spec.ts @@ -5,9 +5,10 @@ import { strict as assert } from "assert"; import { LiveObjectSynchronizer } from "../LiveObjectSynchronizer"; -import { MockRuntimeSignaler } from "./MockRuntimeSignaler"; -import { Deferred, waitForDelay } from "../internals"; -import { MockLiveShareRuntime } from "./MockLiveShareRuntime"; +import { MockRuntimeSignaler } from "../mock/MockRuntimeSignaler"; +import { Deferred } from "../Deferred"; +import { waitForDelay } from "../utils"; +import { MockLiveShareRuntime } from "../mock/MockLiveShareRuntime"; interface ITestState { client: "local" | "remote"; diff --git a/packages/live-share/src/internals/utils.ts b/packages/live-share/src/internals/utils.ts index 71166a24d..b9e35aa79 100644 --- a/packages/live-share/src/internals/utils.ts +++ b/packages/live-share/src/internals/utils.ts @@ -5,7 +5,7 @@ import { ITokenProvider } from "@fluidframework/azure-client"; import { v4 as uuid } from "uuid"; -import { IRuntimeSignaler } from "../LiveEventScope"; +import { IRuntimeSignaler } from "./LiveEventScope"; /** * @hidden diff --git a/packages/live-share/src/test/LiveEvent.spec.ts b/packages/live-share/src/test/LiveEvent.spec.ts index b32dccfb7..3e02e2318 100644 --- a/packages/live-share/src/test/LiveEvent.spec.ts +++ b/packages/live-share/src/test/LiveEvent.spec.ts @@ -10,15 +10,15 @@ import { getContainerEntryPointBackCompat, } from "@fluidframework/test-utils/internal"; import { LiveEvent } from "../LiveEvent"; -import { Deferred } from "../internals"; -import { MockTimestampProvider } from "./MockTimestampProvider"; -import { MockRoleVerifier } from "./MockRoleVerifier"; +import { MockTimestampProvider } from "../internals/mock/MockTimestampProvider"; +import { MockRoleVerifier } from "../internals/mock/MockRoleVerifier"; import { LocalTimestampProvider } from "../LocalTimestampProvider"; import { UserMeetingRole, ILiveEvent } from "../interfaces"; import { TestLiveShareHost } from "../TestLiveShareHost"; import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; -import { LiveShareRuntime } from "../LiveShareRuntime"; +import { LiveShareRuntime } from "../internals/LiveShareRuntime"; import { describeCompat } from "@live-share-private/test-utils"; +import { Deferred } from "../internals/Deferred"; describeCompat("LiveEvent", (getTestObjectProvider) => { let provider: ITestObjectProvider; diff --git a/packages/live-share/src/test/LiveEventTimer.spec.ts b/packages/live-share/src/test/LiveEventTimer.spec.ts deleted file mode 100644 index 1a94f12ba..000000000 --- a/packages/live-share/src/test/LiveEventTimer.spec.ts +++ /dev/null @@ -1,130 +0,0 @@ -/*! - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Microsoft Live Share SDK License. - */ - -import { strict as assert } from "assert"; -import { LiveEventScope } from "../LiveEventScope"; -import { LiveEventTarget } from "../LiveEventTarget"; -import { LiveEventTimer } from "../LiveEventTimer"; -import { MockRuntimeSignaler } from "./MockRuntimeSignaler"; -import { LiveShareRuntime } from "../LiveShareRuntime"; -import { TestLiveShareHost } from "../TestLiveShareHost"; -import { LocalTimestampProvider } from "../LocalTimestampProvider"; - -function createConnectedSignalers() { - const localRuntime = new MockRuntimeSignaler(); - const remoteRuntime = new MockRuntimeSignaler(); - MockRuntimeSignaler.connectRuntimes([localRuntime, remoteRuntime]); - return { localRuntime, remoteRuntime }; -} - -describe("LiveEventTimer", () => { - let localLiveRuntime = new LiveShareRuntime(TestLiveShareHost.create(), { - timestampProvider: new LocalTimestampProvider(), - }); - let remoteLiveRuntime = new LiveShareRuntime(TestLiveShareHost.create(), { - timestampProvider: new LocalTimestampProvider(), - }); - - afterEach(async () => { - // restore defaults - localLiveRuntime = new LiveShareRuntime(TestLiveShareHost.create(), { - timestampProvider: new LocalTimestampProvider(), - }); - remoteLiveRuntime = new LiveShareRuntime(TestLiveShareHost.create(), { - timestampProvider: new LocalTimestampProvider(), - }); - }); - - it("Should send a single event after a delay", (done) => { - let created = 0; - let triggered = 0; - const signalers = createConnectedSignalers(); - const localScope = new LiveEventScope( - signalers.localRuntime, - localLiveRuntime - ); - const localTarget = new LiveEventTarget<{}>( - localScope, - "test", - (evt, local) => triggered++ - ); - const localTimer = new LiveEventTimer( - localTarget, - () => { - created++; - return {}; - }, - 10 - ); - - const remoteScope = new LiveEventScope( - signalers.remoteRuntime, - remoteLiveRuntime - ); - const remoteTarget = new LiveEventTarget( - remoteScope, - "test", - (evt, local) => triggered++ - ); - - localTimer.start(); - assert(created == 0); - setTimeout(() => { - assert(created == 1, `Message creation count is ${created}`); - assert( - triggered == created * 2, - `Messages created is ${created} but received is an unexpected ${triggered}` - ); - localTimer.stop(); - done(); - }, 50); - }); - - it("Should repeatedly send events after a delay", (done) => { - let created = 0; - let triggered = 0; - const signalers = createConnectedSignalers(); - const localScope = new LiveEventScope( - signalers.localRuntime, - localLiveRuntime - ); - const localTarget = new LiveEventTarget<{}>( - localScope, - "test", - (evt, local) => triggered++ - ); - const localTimer = new LiveEventTimer( - localTarget, - () => { - created++; - return {}; - }, - 5, - true - ); - - const remoteScope = new LiveEventScope( - signalers.remoteRuntime, - remoteLiveRuntime - ); - const remoteTarget = new LiveEventTarget( - remoteScope, - "test", - (evt, local) => triggered++ - ); - - localTimer.start(); - assert(created == 0); - setTimeout(() => { - assert(created > 1, `Message creation count is ${created}`); - assert( - triggered == created * 2, - `Messages created is ${created} but received is an unexpected ${triggered}` - ); - localTimer.stop(); - done(); - }, 50); - }); -}); diff --git a/packages/live-share/src/test/LiveFollowMode.spec.ts b/packages/live-share/src/test/LiveFollowMode.spec.ts index 0d378bf26..9b1a9fa4f 100644 --- a/packages/live-share/src/test/LiveFollowMode.spec.ts +++ b/packages/live-share/src/test/LiveFollowMode.spec.ts @@ -15,11 +15,12 @@ import { IFollowModeState, LiveFollowMode, } from "../LiveFollowMode"; -import { Deferred, waitForDelay } from "../internals"; import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; -import { MockLiveShareRuntime } from "./MockLiveShareRuntime"; +import { MockLiveShareRuntime } from "../internals/mock/MockLiveShareRuntime"; import { LivePresenceUser } from "../LivePresenceUser"; import { describeCompat } from "@live-share-private/test-utils"; +import { waitForDelay } from "../internals/utils"; +import { Deferred } from "../internals/Deferred"; interface TestFollowData { page: string; diff --git a/packages/live-share/src/test/LivePresence.spec.ts b/packages/live-share/src/test/LivePresence.spec.ts index a4d5578bb..702b71220 100644 --- a/packages/live-share/src/test/LivePresence.spec.ts +++ b/packages/live-share/src/test/LivePresence.spec.ts @@ -9,10 +9,10 @@ import { fluidEntryPoint, getContainerEntryPointBackCompat, } from "@fluidframework/test-utils/internal"; -import { LivePresence, LivePresenceClass } from "../LivePresence"; +import { LivePresenceClass } from "../LivePresence"; import { PresenceState } from "../LivePresenceUser"; -import { waitForDelay } from "../internals"; -import { Deferred } from "../internals"; +import { waitForDelay } from "../internals/utils"; +import { Deferred } from "../internals/Deferred"; import { IClientInfo, IFluidContainerInfo, @@ -23,7 +23,7 @@ import { } from "../interfaces"; import { TestLiveShareHost } from "../TestLiveShareHost"; import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; -import { MockLiveShareRuntime } from "./MockLiveShareRuntime"; +import { MockLiveShareRuntime } from "../internals/mock/MockLiveShareRuntime"; import { describeCompat } from "@live-share-private/test-utils"; class TestLivePresence< diff --git a/packages/live-share/src/test/LiveState.spec.ts b/packages/live-share/src/test/LiveState.spec.ts index d80647231..606fc5431 100644 --- a/packages/live-share/src/test/LiveState.spec.ts +++ b/packages/live-share/src/test/LiveState.spec.ts @@ -10,9 +10,9 @@ import { getContainerEntryPointBackCompat, } from "@fluidframework/test-utils/internal"; import { LiveState } from "../LiveState"; -import { Deferred } from "../internals"; +import { Deferred } from "../internals/Deferred"; import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; -import { MockLiveShareRuntime } from "./MockLiveShareRuntime"; +import { MockLiveShareRuntime } from "../internals/mock/MockLiveShareRuntime"; import { describeCompat } from "@live-share-private/test-utils"; interface TestStateData { diff --git a/packages/live-share/src/test/LiveTimer.spec.ts b/packages/live-share/src/test/LiveTimer.spec.ts index 5421b324b..87f693433 100644 --- a/packages/live-share/src/test/LiveTimer.spec.ts +++ b/packages/live-share/src/test/LiveTimer.spec.ts @@ -10,10 +10,11 @@ import { getContainerEntryPointBackCompat, } from "@fluidframework/test-utils/internal"; import { LiveTimer } from "../LiveTimer"; -import { Deferred, waitForDelay } from "../internals"; +import { Deferred } from "../internals/Deferred"; import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; -import { MockLiveShareRuntime } from "./MockLiveShareRuntime"; +import { MockLiveShareRuntime } from "../internals/mock/MockLiveShareRuntime"; import { describeCompat } from "@live-share-private/test-utils"; +import { waitForDelay } from "../internals/utils"; async function getObjects( getTestObjectProvider, diff --git a/packages/live-share/src/test/TimestampProvider.spec.ts b/packages/live-share/src/test/TimestampProvider.spec.ts index 7199dd445..865e3f588 100644 --- a/packages/live-share/src/test/TimestampProvider.spec.ts +++ b/packages/live-share/src/test/TimestampProvider.spec.ts @@ -6,7 +6,7 @@ import { strict as assert } from "assert"; import { INtpTimeInfo } from "../interfaces"; import { TimestampProvider } from "../TimestampProvider"; -import { Deferred } from "../internals"; +import { Deferred } from "../internals/Deferred"; class TestTimestampProvider extends TimestampProvider { private _onGetNtpTime: () => Promise; diff --git a/packages/live-share/src/test/utils.spec.ts b/packages/live-share/src/test/utils.spec.ts index 52dc45821..9073e8531 100644 --- a/packages/live-share/src/test/utils.spec.ts +++ b/packages/live-share/src/test/utils.spec.ts @@ -1,10 +1,10 @@ import { strict as assert } from "assert"; import { + TimeoutError, timeoutRequest, - Deferred, waitForResult, - TimeoutError, -} from "../internals"; +} from "../internals/utils"; +import { Deferred } from "../internals/Deferred"; describe("timeoutRequest", function () { it("should return the result when request is successful within timeout", async () => { diff --git a/packages/live-share/tsconfig.build.json b/packages/live-share/tsconfig.build.json index 9d8cab4a6..0a07c839b 100644 --- a/packages/live-share/tsconfig.build.json +++ b/packages/live-share/tsconfig.build.json @@ -3,7 +3,4 @@ "compilerOptions": { "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ }, - "exclude": [ - "test/**/*.ts" - ] } \ No newline at end of file diff --git a/packages/live-share/tsconfig.json b/packages/live-share/tsconfig.json index 258994400..e1f304e87 100644 --- a/packages/live-share/tsconfig.json +++ b/packages/live-share/tsconfig.json @@ -66,11 +66,6 @@ "skipLibCheck": true, /* Skip type checking of declaration files. */ "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ }, - "exclude": ["build", "dist", "node_modules"], - "include": [ - "test/**/*.ts" - ], - "files": [ - "src/index.ts" - ] + "include": ["src/**/*.ts"], + "exclude": ["**/*.spec.ts"] } From 640def506954da1a5c3996100b8f15cfff8e3280 Mon Sep 17 00:00:00 2001 From: James Hunt Date: Mon, 1 Jul 2024 17:50:46 -0500 Subject: [PATCH 17/40] deleted old host decorators --- .../BackwardsCompatibilityHostDecorator.ts | 206 ------------------ .../src/internals/FormatFixHostDecorator.ts | 68 ------ .../src/internals/LiveShareHostDecorator.ts | 34 +-- .../src/internals/LiveShareRuntime.ts | 16 +- .../test/FormatFixHostDecorator.spec.ts | 74 ------- packages/live-share/src/internals/utils.ts | 25 +-- packages/live-share/src/test/utils.spec.ts | 132 +---------- 7 files changed, 9 insertions(+), 546 deletions(-) delete mode 100644 packages/live-share/src/internals/BackwardsCompatibilityHostDecorator.ts delete mode 100644 packages/live-share/src/internals/FormatFixHostDecorator.ts delete mode 100644 packages/live-share/src/internals/test/FormatFixHostDecorator.spec.ts diff --git a/packages/live-share/src/internals/BackwardsCompatibilityHostDecorator.ts b/packages/live-share/src/internals/BackwardsCompatibilityHostDecorator.ts deleted file mode 100644 index 111b71e67..000000000 --- a/packages/live-share/src/internals/BackwardsCompatibilityHostDecorator.ts +++ /dev/null @@ -1,206 +0,0 @@ -/*! - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Microsoft Live Share SDK License. - */ - -import { ILiveShareHost, UserMeetingRole, IClientInfo } from "../interfaces"; -import { BaseHostDecorator } from "./BaseHostDecorator"; -import { RequestCache } from "./RequestCache"; -import { - isErrorLike, - isMobileWorkaroundRolesResponse, - isClientRolesResponse, -} from "./type-guards"; -import { waitForResult } from "./utils"; - -const EXPONENTIAL_BACKOFF_SCHEDULE = [100, 200, 200, 400, 600]; -const CACHE_LIFETIME = 5 * 60 * 1000; // original cache time - -/** - * @hidden - * Optionally Adds `retrySchedule` to `getClientInfo`. doesn't break `ILiveShareHost` interface. - * - * For internal use only. Will be deleted. - */ -export interface BackwardsCompatibilityGetClientInfoRetrySchedule { - getClientInfo( - clientId: string, - lateFinish?: () => void, - retrySchedule?: number[] - ): Promise; -} - -/** - * @hidden - * Decorator that provides backwards compatibility for getClientInfo - * If getClientInfo does not exist on an unsupported client, `IUserInfo.displayName` will be undefined - * - * For internal use only. Will be deleted. - */ -export class BackwardsCompatibilityHostDecorator extends BaseHostDecorator { - private readonly _userRolesRequestCache: RequestCache = - new RequestCache(CACHE_LIFETIME); - - private _totalTries = 4; - private _getClientInfoTriesRemaining = this._totalTries; - private _getClientInfoExists = false; - private _hasWarnedPolyfill = false; - - /** - * @hidden - * _host would be `BackwardsCompatibilityHostDecorator` decorator: `new BackwardsCompatibilityHostDecorator(new LiveShareHostDecorator(teamsJsHost))` - */ - constructor( - readonly _host: ILiveShareHost & - BackwardsCompatibilityGetClientInfoRetrySchedule - ) { - super(_host); - this.warmupCheckGetClientInfoExists(); - } - - /** - * @deprecated - */ - public async getClientRoles( - clientId: string - ): Promise { - if (!clientId) { - throw new Error( - `BackwardsCompatibilityHostDecorator: called getClientInfo() without a clientId` - ); - } - return this._userRolesRequestCache.cacheRequest(clientId, () => { - return waitForResult( - async () => { - return await this._host.getClientRoles(clientId); - }, - (result) => { - if (isClientRolesResponse(result)) { - return { - response: result, - }; - } else if (isMobileWorkaroundRolesResponse(result)) { - return { - response: result.userRoles, - }; - } - return null; - }, - () => { - return new Error( - `BackwardsCompatibilityHostDecorator: timed out getting roles for a remote client ID` - ); - }, - EXPONENTIAL_BACKOFF_SCHEDULE - ); - }); - } - - public async getClientInfo( - clientId: string - ): Promise { - // 1. fire getClientInfo and getClientRoles at same time. - // - on new versions of teams client getClientInfo and getClientRoles share same network cache, cheap to call. - // - on old versions of teams client getClientRoles needs to be called anyway. - - // 2. if getClientInfo resolves, return that - // 3. if getClientInfo times out, return polyfil using getClientRoles, log warning - // 4. if getClientInfo times out after multiple calls, start using only polyfill. - - if (this._getClientInfoExists) { - return await this._host.getClientInfo(clientId); - } - - if (this._getClientInfoTriesRemaining <= 0) { - if (!this._hasWarnedPolyfill) { - console.warn( - "BackwardsCompatibilityHostDecorator.getClientInfo: using getClientInfo polyfill" - ); - this._hasWarnedPolyfill = true; - } - const roles = await this.getClientRoles(clientId); - return { - userId: clientId, - displayName: undefined, - roles: roles ?? [], - }; - } - - const getClientRoles = this.getClientRoles(clientId); - try { - const clientInfo = await this._host.getClientInfo( - clientId, - () => { - // The request initially timed out, but then it later was rejected/resolved for a legitimate reason - this._getClientInfoExists = true; - }, - this.getRetrySchedule() - ); - this._getClientInfoExists = true; - return clientInfo; - } catch (error: unknown) { - if (isErrorLike(error) && error.message.includes("timed out")) { - this._getClientInfoTriesRemaining--; - if (this._getClientInfoTriesRemaining <= 0) { - console.warn( - "BackwardsCompatibilityHostDecorator.getClientInfo: will use getClientInfo polyfill" - ); - } - - const roles = await getClientRoles; - return { - userId: clientId, - displayName: undefined, - roles: roles ?? [], - }; - } - } - this._getClientInfoExists = true; - // retry schedule gets longer as we lose confidence it exists. - // First call to this._host.getClientInfo may result in an error if the api exists, but without retries. - // If error we know the api exists. call the normal implementation again. - // this should only ever be hit one time at the start because this._getClientInfoExists will be true. - console.log( - "BackwardsCompatibilityHostDecorator: error, retryingWithActual" - ); - return await this.getClientInfo(clientId); - } - - private warmupCheckGetClientInfoExists() { - if (this._getClientInfoExists) return; - - // warmup doesn't use polyfill implementation - // "fakeId" clientId, error expected, hopefully not a timeout - this._host - .getClientInfo( - "fakeId", - () => { - // The request initially timed out, but then it later was rejected/resolved for a legitimate reason - this._getClientInfoExists = true; - }, - [] - ) - .catch((e) => { - if (e.message.includes("timed out")) { - this._getClientInfoTriesRemaining--; - if (this._getClientInfoTriesRemaining > 0) { - this.warmupCheckGetClientInfoExists(); - } else { - console.warn( - "BackwardsCompatibilityHostDecorator.getClientInfo: will use getClientInfo polyfill" - ); - } - } else { - // resolved for reason other than timeout, api exists - this._getClientInfoExists = true; - } - }); - } - - // retry little bit longer when getting to end of retries remaining. - private getRetrySchedule(): number[] { - const retryAmount = - this._totalTries - Math.max(0, this._getClientInfoTriesRemaining); - return EXPONENTIAL_BACKOFF_SCHEDULE.slice(0, retryAmount); - } -} diff --git a/packages/live-share/src/internals/FormatFixHostDecorator.ts b/packages/live-share/src/internals/FormatFixHostDecorator.ts deleted file mode 100644 index 7c376382d..000000000 --- a/packages/live-share/src/internals/FormatFixHostDecorator.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { UserMeetingRole, IClientInfo } from "../interfaces"; -import { BaseHostDecorator } from "./BaseHostDecorator"; - -import { isClientRolesResponse, isIClientInfo } from "./type-guards"; - -/** - * @hidden - * Temporary fix for android bug which causes IClientInfo to come back with the keys modified - * Delete in November 2023 - */ -export class FormatFixHostDecorator extends BaseHostDecorator { - public async getClientInfo( - clientId: string - ): Promise { - const clientInfo = await this._host.getClientInfo(clientId); - if (isIClientInfo(clientId)) { - return clientInfo; - } - - const androidBugToClientInfo = androidBugFormatToClientInfo(clientInfo); - if (androidBugToClientInfo) { - return androidBugToClientInfo; - } - return clientInfo; - } -} - -/** - * @hidden - */ -function androidBugFormatToClientInfo(value: any): IClientInfo | undefined { - if (value instanceof Object) { - let userId: string | undefined; - let roles: UserMeetingRole[] | undefined; - let displayName: string | undefined; - Object.keys(value) - .map((key) => value[key]) - .forEach((objectValue) => { - if (isClientRolesResponse(objectValue)) { - roles = objectValue; - } else if (isGuid(objectValue)) { - userId = objectValue; - } else if (typeof objectValue === "string") { - displayName = objectValue; - } - }); - - if (userId && roles) { - return { - userId, - roles, - displayName, - }; - } - } - - return undefined; -} - -function isGuid(value: any) { - if (typeof value === "string") { - let regex: RegExp = - /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/; - return regex.test(value); - } - - return false; -} diff --git a/packages/live-share/src/internals/LiveShareHostDecorator.ts b/packages/live-share/src/internals/LiveShareHostDecorator.ts index 4c642d34f..2b031b3cc 100644 --- a/packages/live-share/src/internals/LiveShareHostDecorator.ts +++ b/packages/live-share/src/internals/LiveShareHostDecorator.ts @@ -4,7 +4,6 @@ */ import { UserMeetingRole, IClientInfo } from "../interfaces"; -import { BackwardsCompatibilityGetClientInfoRetrySchedule } from "./BackwardsCompatibilityHostDecorator"; import { BaseHostDecorator } from "./BaseHostDecorator"; import { RequestCache } from "./RequestCache"; import { @@ -22,10 +21,7 @@ const CACHE_LIFETIME = 4 * 1000; * @hidden * Live Share Host decorator used to reduce rapid duplicate requests. */ -export class LiveShareHostDecorator - extends BaseHostDecorator - implements BackwardsCompatibilityGetClientInfoRetrySchedule -{ +export class LiveShareHostDecorator extends BaseHostDecorator { private readonly _registerRequestCache: RequestCache = new RequestCache(CACHE_LIFETIME); private readonly _userInfoRequestCache: RequestCache< @@ -63,26 +59,7 @@ export class LiveShareHostDecorator } return null; }, - (error: unknown) => { - return new Error( - `LiveShareHostDecorator: getting client info for a remote client ID for reason: ${ - isErrorLike(error) ? error.message : "unknown" - }` - ); - }, - retrySchedule ?? EXPONENTIAL_BACKOFF_SCHEDULE, - (error: unknown) => { - // Errors here do not include any timeout errors, so if it is an error from "fakeId", we immediately reject it - if (clientId === "fakeId") { - return new Error( - isErrorLike(error) - ? error.message - : "an unknown error occurred" - ); - } - return null; - }, - lateFinish // TODO: delete (not a breaking change to remove, see InternalDontUseGetClientInfoRetryPolyfill) + retrySchedule ?? EXPONENTIAL_BACKOFF_SCHEDULE ); }); } @@ -107,13 +84,6 @@ export class LiveShareHostDecorator } return null; }, - (reason: unknown) => { - return new Error( - `LiveShareHostDecorator: registering local client ID for reason: ${ - isErrorLike(reason) ? reason.message : "unknown" - }` - ); - }, EXPONENTIAL_BACKOFF_SCHEDULE ); }); diff --git a/packages/live-share/src/internals/LiveShareRuntime.ts b/packages/live-share/src/internals/LiveShareRuntime.ts index f427972aa..5140835c1 100644 --- a/packages/live-share/src/internals/LiveShareRuntime.ts +++ b/packages/live-share/src/internals/LiveShareRuntime.ts @@ -13,9 +13,7 @@ import { ILiveShareClientOptions } from "../LiveShareClient"; import { isTimestampProvider } from "./type-guards"; import { LiveObjectManager } from "./LiveObjectManager"; import { RoleVerifier } from "./RoleVerifier"; -import { BackwardsCompatibilityHostDecorator } from "./BackwardsCompatibilityHostDecorator"; import { LiveShareHostDecorator } from "./LiveShareHostDecorator"; -import { FormatFixHostDecorator } from "./FormatFixHostDecorator"; /** * Runtime for LiveDataObject, which is used to do things like validate roles, get a timestamp @@ -42,13 +40,8 @@ export class LiveShareRuntime { options?: ILiveShareClientOptions, decorate: boolean = true ) { - // BackwardsCompatibilityHostDecorator is used for backwards compatibility with older versions of the Teams client. // LiveShareHostDecorator is used as a thin caching layer for some host APIs. - this._host = decorate - ? new BackwardsCompatibilityHostDecorator( - new LiveShareHostDecorator(new FormatFixHostDecorator(host)) - ) - : host; + this._host = decorate ? new LiveShareHostDecorator(host) : host; this._timestampProvider = options?.timestampProvider ?? new HostTimestampProvider(this._host); this._roleVerifier = @@ -155,13 +148,8 @@ export class LiveShareRuntime { * @param decorate choose whether or not to automatically decorate host with `BackwardsCompatibilityHostDecorator` and `LiveShareHostDecorator` */ public setHost(host: ILiveShareHost, decorate: boolean = true) { - // BackwardsCompatibilityHostDecorator is used for backwards compatibility with older versions of the Teams client. // LiveShareHostDecorator is used as a thin caching layer for some host APIs. - this._host = decorate - ? new BackwardsCompatibilityHostDecorator( - new LiveShareHostDecorator(host) - ) - : host; + this._host = decorate ? new LiveShareHostDecorator(host) : host; if (this._timestampProvider instanceof HostTimestampProvider) { this._timestampProvider.stop(); this.setTimestampProvider(new HostTimestampProvider(this._host)); diff --git a/packages/live-share/src/internals/test/FormatFixHostDecorator.spec.ts b/packages/live-share/src/internals/test/FormatFixHostDecorator.spec.ts deleted file mode 100644 index 99f1c4b38..000000000 --- a/packages/live-share/src/internals/test/FormatFixHostDecorator.spec.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { ILiveShareHost, UserMeetingRole, IClientInfo } from "../../interfaces"; -import { strict as assert } from "assert"; -import { FormatFixHostDecorator } from "../FormatFixHostDecorator"; - -class HostWithAndroidBug { - constructor(private result: unknown) {} - public async getClientInfo( - clientId: string - ): Promise { - return this.result as IClientInfo; - } -} - -describe("FormatFixHostDecorator tests", function () { - it("should map android bug format to expected format 1", async () => { - const hostResponse = { - lock: "972ea631-abc8-4056-ae0e-f4dc7427c4ef", - _loadStates: [UserMeetingRole.organizer], - internalState: "displayName", - }; - const host = new HostWithAndroidBug( - hostResponse - ) as unknown as ILiveShareHost; - const hostWithMapper = new FormatFixHostDecorator(host); - const expectedResult = { - userId: "972ea631-abc8-4056-ae0e-f4dc7427c4ef", - roles: [UserMeetingRole.organizer], - displayName: "displayName", - }; - const result = await hostWithMapper.getClientInfo("test"); - assert( - JSON.stringify(result) === JSON.stringify(expectedResult), - `unexpected result: ${JSON.stringify(result)}` - ); - }); - - it("should map android bug format to expected format 2", async () => { - const hostResponse = { - sup: "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF", - blah: [UserMeetingRole.organizer], - }; - const host = new HostWithAndroidBug( - hostResponse - ) as unknown as ILiveShareHost; - const hostWithMapper = new FormatFixHostDecorator(host); - const expectedResult = { - userId: "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF", - roles: [UserMeetingRole.organizer], - displayName: undefined, - }; - const result = await hostWithMapper.getClientInfo("test"); - assert( - JSON.stringify(result) === JSON.stringify(expectedResult), - `unexpected result: ${JSON.stringify(result)}` - ); - }); - - it("should not map if already expected format", async () => { - const hostResponse = { - userId: "userId", - roles: [UserMeetingRole.organizer], - displayName: "displayName", - }; - const host = new HostWithAndroidBug( - hostResponse - ) as unknown as ILiveShareHost; - const hostWithMapper = new FormatFixHostDecorator(host); - const result = await hostWithMapper.getClientInfo("test"); - assert( - JSON.stringify(result) === JSON.stringify(hostResponse), - `unexpected result: ${JSON.stringify(result)}` - ); - }); -}); diff --git a/packages/live-share/src/internals/utils.ts b/packages/live-share/src/internals/utils.ts index b9e35aa79..c015b77a2 100644 --- a/packages/live-share/src/internals/utils.ts +++ b/packages/live-share/src/internals/utils.ts @@ -62,10 +62,7 @@ export function waitForResult( fnValidateResponse: (result: TRequestResult) => { response: TSuccessResult; } | null, - fnTimeout: (reason: unknown) => Error, retrySchedule: number[], - fnRequestError?: (error: unknown) => Error | null, - lateFinish?: () => void, basedDelayMilliseconds: number = 1000 ): Promise { let retries: number = 0; @@ -77,8 +74,7 @@ export function waitForResult( Math.max( basedDelayMilliseconds * (retries + 1), basedDelayMilliseconds * 3 - ), - lateFinish + ) ); const validated = fnValidateResponse(result); if (validated !== null) { @@ -90,17 +86,9 @@ export function waitForResult( } } catch (error: unknown) { if (retries >= retrySchedule.length) { - reject(fnTimeout(error)); + reject(error); break; } - // Check if this error is something that should cause us to skip the retry schedule - if (!!fnRequestError && !(error instanceof TimeoutError)) { - const rejectNowError = fnRequestError(error); - if (rejectNowError !== null) { - reject(rejectNowError); - break; - } - } } await waitForDelay(retrySchedule[retries++]); @@ -114,8 +102,7 @@ export function waitForResult( */ export function timeoutRequest( fnRequest: () => Promise, - timeout: number, - lateFinish?: () => void + timeout: number ): Promise { return new Promise(async (resolve, reject) => { let hTimer: any = setTimeout(() => { @@ -125,14 +112,8 @@ export function timeoutRequest( try { const result = await fnRequest(); resolve(result); - if (hTimer == null) { - lateFinish?.(); - } } catch (error: unknown) { reject(error); - if (hTimer == null) { - lateFinish?.(); - } } clearTimeout(hTimer); }); diff --git a/packages/live-share/src/test/utils.spec.ts b/packages/live-share/src/test/utils.spec.ts index 9073e8531..121d79fda 100644 --- a/packages/live-share/src/test/utils.spec.ts +++ b/packages/live-share/src/test/utils.spec.ts @@ -40,25 +40,6 @@ describe("timeoutRequest", function () { ); } }); - - it("should call lateFinish when request finishes after timeout", async () => { - const lateFinishCalled = new Deferred(); - const fnRequest = () => { - const lateRequestFinished = new Deferred(); - setTimeout(() => { - lateRequestFinished.resolve(); - }, 20); - return lateRequestFinished.promise; - }; - try { - await timeoutRequest(fnRequest, 10, () => { - lateFinishCalled.resolve(); - }); - } catch (error) { - // We expect a timeout error here, so we just swallow it - } - await lateFinishCalled.promise; - }); }); describe("waitForResult", function () { @@ -67,14 +48,10 @@ describe("waitForResult", function () { const fnRequest = async () => "response"; const fnValidateResponse = (result: string) => result === "response" ? { response: expectedResult } : null; - const fnTimeout = (reason: unknown) => new TimeoutError(); const result = await waitForResult( fnRequest, fnValidateResponse, - fnTimeout, [10], - undefined, - undefined, 10 ); assert(result === expectedResult, "unexpected result"); @@ -87,14 +64,10 @@ describe("waitForResult", function () { attempt++ === 1 ? "response" : "invalid"; const fnValidateResponse = (result: string) => result === "response" ? { response: expectedResult } : null; - const fnTimeout = (reason: unknown) => new TimeoutError(); const result = await waitForResult( fnRequest, fnValidateResponse, - fnTimeout, [10, 20], - undefined, - undefined, 10 ); assert(result === expectedResult, "unexpected result"); @@ -106,9 +79,8 @@ describe("waitForResult", function () { attempt++ === 2 ? "response" : "invalid"; const fnValidateResponse = (result: string) => result === "response" ? { response: "successful" } : null; - const fnTimeout = (reason: unknown) => new TimeoutError(); try { - await waitForResult(fnRequest, fnValidateResponse, fnTimeout, [10]); + await waitForResult(fnRequest, fnValidateResponse, [10]); assert.fail("Expected an error to be thrown"); } catch (error) { assert(error instanceof Error, "Expected an instance of Error"); @@ -126,79 +98,8 @@ describe("waitForResult", function () { const fnValidateResponse = (result: string) => ({ response: "successful", }); - const fnTimeout = (reason: unknown) => new TimeoutError(); - const fnRequestError = (error: unknown) => - error instanceof Error ? error : null; - try { - await waitForResult( - fnRequest, - fnValidateResponse, - fnTimeout, - [10], - fnRequestError, - undefined, - 10 - ); - assert.fail("Expected an error to be thrown"); - } catch (error) { - assert(error instanceof Error, "Expected an instance of Error"); - assert( - error.message === "request failed", - "unexpected error message" - ); - } - }); - - it("should retry when the request fails, retrySchedule allows more attempts, and fnRequestError doesn't reject", async () => { - const expectedResult = "successful"; - let attempt = 0; - const fnRequest = async () => { - if (attempt++ === 0) { - throw new Error("request failed"); - } else { - return "response"; - } - }; - const fnValidateResponse = (result: string) => - result === "response" ? { response: expectedResult } : null; - const fnTimeout = (reason: unknown) => new TimeoutError(); - const fnRequestError = (error: unknown) => null; - const result = await waitForResult( - fnRequest, - fnValidateResponse, - fnTimeout, - [10, 20], - fnRequestError, - undefined, - 10 - ); - assert(result === expectedResult, "unexpected result"); - }); - - it("should fail when the request fails, retrySchedule allows more attempts, but fnRequestError rejects", async () => { - let attempt = 0; - const fnRequest = async () => { - if (attempt++ === 0) { - throw new Error("request failed"); - } else { - return "response"; - } - }; - const fnValidateResponse = (result: string) => - result === "response" ? { response: "successful" } : null; - const fnTimeout = (reason: unknown) => new TimeoutError(); - const fnRequestError = (error: unknown) => - error instanceof Error ? error : null; try { - await waitForResult( - fnRequest, - fnValidateResponse, - fnTimeout, - [10, 20], - fnRequestError, - undefined, - 10 - ); + await waitForResult(fnRequest, fnValidateResponse, [10], 10); assert.fail("Expected an error to be thrown"); } catch (error) { assert(error instanceof Error, "Expected an instance of Error"); @@ -208,33 +109,4 @@ describe("waitForResult", function () { ); } }); - - it("should call lateFinish when the request takes more time than allowed", async () => { - const lateFinished = new Deferred(); - const lateFinish = () => { - lateFinished.resolve(); - }; - const fnRequest = async () => - new Promise((resolve) => - setTimeout(resolve, 20, "response") - ); - const fnValidateResponse = (result: string) => - result === "response" ? { response: "successful" } : null; - const fnTimeout = (reason: unknown) => new TimeoutError(); - try { - await waitForResult( - fnRequest, - fnValidateResponse, - fnTimeout, - [2], - undefined, - lateFinish, - 2 - ); - assert.fail("this should never happen"); - } catch (error) { - // We expect a timeout error here, so we just swallow it - } - await lateFinished.promise; - }); }); From a875776cbbe7fae12037e44bca885e63d2ba8b06 Mon Sep 17 00:00:00 2001 From: huntj88 Date: Mon, 22 Jul 2024 09:29:48 -0700 Subject: [PATCH 18/40] Provide CommonJS and ESM implementations (#785) Co-authored-by: James Hunt --- .github/workflows/checkFormatting.sh | 12 + .github/workflows/live-share-formatting.yaml | 28 + internal/test-utils/package.json | 8 +- internal/test-utils/src/describeCompat.ts | 5 +- internal/test-utils/src/index.ts | 2 +- internal/test-utils/tsconfig.json | 2 +- package-lock.json | 1366 ++++++++++------- package.json | 25 +- packages/live-share-acs/package.json | 20 +- packages/live-share-acs/tsconfig.build.json | 9 - packages/live-share-acs/tsconfig.cjs.json | 14 + packages/live-share-acs/tsconfig.json | 139 +- packages/live-share-canvas/package.json | 23 +- .../src/core/InkingManager.ts | 21 +- .../live-share-canvas/src/core/LiveCanvas.ts | 34 +- .../live-share-canvas/src/test/Utils.spec.ts | 4 +- .../live-share-canvas/tsconfig.build.json | 9 - packages/live-share-canvas/tsconfig.cjs.json | 14 + packages/live-share-canvas/tsconfig.json | 139 +- packages/live-share-canvas/tsconfig.test.json | 9 + .../{src/test => }/.mocharc.js | 0 packages/live-share-media/package.json | 25 +- .../src/LiveMediaSessionCoordinator.ts | 2 +- .../src/MediaPlayerSynchronizer.ts | 6 +- .../src/internals/GroupCoordinatorState.ts | 2 +- .../src/test/GroupPlaybackPosition.spec.ts | 5 +- ...veMediaSession_ManualActionHandler.spec.ts | 31 +- .../LiveMediaSession_Synchronizer.spec.ts | 32 +- .../live-share-media/src/test/TestUtils.ts | 12 +- .../src/test/VolumeManager.spec.ts | 57 +- packages/live-share-media/tsconfig.build.json | 9 - packages/live-share-media/tsconfig.cjs.json | 14 + packages/live-share-media/tsconfig.json | 139 +- packages/live-share-media/tsconfig.test.json | 9 + packages/live-share-react/package.json | 104 +- .../src/shared-hooks/useDynamicDDS.ts | 4 +- packages/live-share-react/tsconfig.build.json | 6 - packages/live-share-react/tsconfig.cjs.json | 14 + packages/live-share-react/tsconfig.json | 135 +- .../live-share/{src/test => }/.mocharc.js | 0 packages/live-share/internal.ts | 17 - packages/live-share/package.json | 45 +- packages/live-share/src/LivePresence.ts | 2 +- packages/live-share/src/LiveShareClient.ts | 5 +- packages/live-share/src/index.internal.ts | 17 + packages/live-share/src/index.public.ts | 22 + packages/live-share/src/index.ts | 19 +- .../src/internals/BaseLiveShareClient.ts | 2 +- .../src/internals/ContainerSynchronizer.ts | 6 +- .../src/internals/DynamicObjectManager.ts | 6 +- .../src/internals/LiveDataObject.ts | 2 +- .../src/internals/schema-injection-utils.ts | 2 +- .../src/internals/test/LiveEventScope.spec.ts | 7 +- .../src/test/LiveFollowMode.spec.ts | 21 +- .../live-share/src/test/LivePresence.spec.ts | 40 +- .../live-share/src/test/LiveState.spec.ts | 25 +- .../live-share/src/test/LiveTimer.spec.ts | 9 +- packages/live-share/src/test/utils.spec.ts | 1 - packages/live-share/tsconfig.build.json | 6 +- packages/live-share/tsconfig.cjs.json | 9 + packages/live-share/tsconfig.json | 134 +- packages/live-share/tsconfig.test.json | 9 + .../javascript/01.dice-roller/package.json | 6 +- .../javascript/02.react-video/package.json | 138 +- .../02.react-video/public/manifest.json | 46 +- samples/javascript/02.react-video/src/App.jsx | 20 +- .../03.live-canvas-demo/package.json | 6 +- .../04.live-share-react/package.json | 14 +- .../04.live-share-react/public/manifest.json | 46 +- .../05.dice-roller-turbo/package.json | 6 +- .../21.react-media-template/package.json | 14 +- .../public/manifest.json | 46 +- .../21.react-media-template/src/App.jsx | 20 +- .../22.react-agile-poker/package.json | 14 +- .../22.react-agile-poker/public/manifest.json | 46 +- .../22.react-agile-poker/src/App.jsx | 16 +- .../23.react-live-canvas/package.json | 14 +- .../23.react-live-canvas/public/manifest.json | 46 +- .../typescript/01.dice-roller/package.json | 6 +- .../typescript/01.dice-roller/tsconfig.json | 140 +- .../03.live-canvas-demo/package.json | 6 +- .../03.live-canvas-demo/tsconfig.json | 140 +- .../04.live-share-react/package.json | 14 +- .../04.live-share-react/public/manifest.json | 46 +- .../04.live-share-react/tsconfig.json | 14 +- .../05.dice-roller-turbo/package.json | 6 +- .../05.dice-roller-turbo/tsconfig.json | 140 +- .../06.presence-avatars/package.json | 14 +- .../06.presence-avatars/public/manifest.json | 46 +- .../06.presence-avatars/tsconfig.json | 14 +- .../07.countdown-timer/package.json | 14 +- .../07.countdown-timer/public/manifest.json | 46 +- .../src/utils/time-utils.ts | 2 +- .../07.countdown-timer/tsconfig.json | 14 +- samples/typescript/08.3d-model/package.json | 12 +- .../08.3d-model/public/manifest.json | 46 +- .../08.3d-model/src/utils/time-utils.ts | 2 +- samples/typescript/08.3d-model/tsconfig.json | 14 +- .../21.react-media-template/package.json | 16 +- .../21.react-media-template/tsconfig.json | 43 +- .../31.live-canvas-tests/package.json | 2 +- 101 files changed, 2296 insertions(+), 1894 deletions(-) create mode 100644 .github/workflows/checkFormatting.sh create mode 100644 .github/workflows/live-share-formatting.yaml delete mode 100644 packages/live-share-acs/tsconfig.build.json create mode 100644 packages/live-share-acs/tsconfig.cjs.json delete mode 100644 packages/live-share-canvas/tsconfig.build.json create mode 100644 packages/live-share-canvas/tsconfig.cjs.json create mode 100644 packages/live-share-canvas/tsconfig.test.json rename packages/live-share-media/{src/test => }/.mocharc.js (100%) delete mode 100644 packages/live-share-media/tsconfig.build.json create mode 100644 packages/live-share-media/tsconfig.cjs.json create mode 100644 packages/live-share-media/tsconfig.test.json delete mode 100644 packages/live-share-react/tsconfig.build.json create mode 100644 packages/live-share-react/tsconfig.cjs.json rename packages/live-share/{src/test => }/.mocharc.js (100%) delete mode 100644 packages/live-share/internal.ts create mode 100644 packages/live-share/src/index.internal.ts create mode 100644 packages/live-share/src/index.public.ts create mode 100644 packages/live-share/tsconfig.cjs.json create mode 100644 packages/live-share/tsconfig.test.json diff --git a/.github/workflows/checkFormatting.sh b/.github/workflows/checkFormatting.sh new file mode 100644 index 000000000..2eb53a5ff --- /dev/null +++ b/.github/workflows/checkFormatting.sh @@ -0,0 +1,12 @@ +#!/bin/bash +cd ../.. +npm run doctor +diff=`git diff` +if [ -z "$diff" ] +then +echo "everything formatted" +exit 0 +else +echo "formatting needed, please run 'npm run doctor'" +exit 1 +fi diff --git a/.github/workflows/live-share-formatting.yaml b/.github/workflows/live-share-formatting.yaml new file mode 100644 index 000000000..e412c4240 --- /dev/null +++ b/.github/workflows/live-share-formatting.yaml @@ -0,0 +1,28 @@ +name: Check formatting + +on: + push: + branches: [ main, mainv2 ] + pull_request: + branches: [ main, mainv2 ] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x] + + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - run: npm install + + - name: "check formatting" + run: "bash checkFormatting.sh" + working-directory: .github/workflows diff --git a/internal/test-utils/package.json b/internal/test-utils/package.json index c311894dc..b3b044db2 100644 --- a/internal/test-utils/package.json +++ b/internal/test-utils/package.json @@ -50,13 +50,13 @@ }, "devDependencies": { "@fluidframework/eslint-config-fluid": "^5.3.0", - "@typescript-eslint/eslint-plugin": "^7.1.1", - "eslint": "~8.56.0", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "eslint": "^8.56.0", "eslint-plugin-unused-imports": "^3.1.0", "mocha-json-output-reporter": "^2.0.1", "mocha-multi-reporters": "^1.5.1", - "prettier": "~3.0.3", + "prettier": "^3.3.3", "rimraf": "^4.4.0", - "typescript": "~5.1.6" + "typescript": "~5.5.3" } } diff --git a/internal/test-utils/src/describeCompat.ts b/internal/test-utils/src/describeCompat.ts index ec6f8339e..87bdd3080 100644 --- a/internal/test-utils/src/describeCompat.ts +++ b/internal/test-utils/src/describeCompat.ts @@ -33,9 +33,8 @@ function createCompatSuite( before(async function () { try { - provider = await getVersionedTestObjectProviderFromApis( - apis - ); + provider = + await getVersionedTestObjectProviderFromApis(apis); } catch (error) { const logger = createChildLogger({ logger: getTestLogger?.(), diff --git a/internal/test-utils/src/index.ts b/internal/test-utils/src/index.ts index b9bec5840..07afbaf81 100644 --- a/internal/test-utils/src/index.ts +++ b/internal/test-utils/src/index.ts @@ -3,4 +3,4 @@ * Licensed under the MIT License. */ -export { describeCompat } from "./describeCompat"; +export { describeCompat, ITestObjectProviderOptions } from "./describeCompat"; diff --git a/internal/test-utils/tsconfig.json b/internal/test-utils/tsconfig.json index dac5d720a..c972b1cab 100644 --- a/internal/test-utils/tsconfig.json +++ b/internal/test-utils/tsconfig.json @@ -5,7 +5,7 @@ /* Basic Options */ // "incremental": true, /* Enable incremental compilation */ "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, - "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "module": "CommonJS" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, "lib": [ "es2020", "DOM" diff --git a/package-lock.json b/package-lock.json index aa3a11148..243b006d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,16 +19,16 @@ "samples/typescript/*" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", - "prettier": "^2.8.8", - "typedoc": "^0.24.6", - "typescript": "^5.0.4" + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-react": "^7.34.4", + "eslint-plugin-react-hooks": "^4.6.2", + "prettier": "^3.3.3", + "typedoc": "^0.26.4", + "typescript": "~5.5.3" } }, "internal/test-utils": { @@ -62,14 +62,14 @@ }, "devDependencies": { "@fluidframework/eslint-config-fluid": "^5.3.0", - "@typescript-eslint/eslint-plugin": "^7.1.1", - "eslint": "~8.56.0", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "eslint": "^8.56.0", "eslint-plugin-unused-imports": "^3.1.0", "mocha-json-output-reporter": "^2.0.1", "mocha-multi-reporters": "^1.5.1", - "prettier": "~3.0.3", + "prettier": "^3.3.3", "rimraf": "^4.4.0", - "typescript": "~5.1.6" + "typescript": "~5.5.3" } }, "internal/test-utils/node_modules/@fluidframework/eslint-config-fluid": { @@ -330,195 +330,63 @@ "@fluidframework/protocol-definitions": "^3.2.0" } }, - "internal/test-utils/node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.1.1", - "@typescript-eslint/type-utils": "7.1.1", - "@typescript-eslint/utils": "7.1.1", - "@typescript-eslint/visitor-keys": "7.1.1", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "internal/test-utils/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "7.1.1", + "internal/test-utils/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.1.1", - "@typescript-eslint/utils": "7.1.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "balanced-match": "^1.0.0" } }, - "internal/test-utils/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "7.1.1", + "internal/test-utils/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.1.1", - "@typescript-eslint/types": "7.1.1", - "@typescript-eslint/typescript-estree": "7.1.1", - "semver": "^7.5.4" + "esutils": "^2.0.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" + "node": ">=0.10.0" } }, - "internal/test-utils/node_modules/@typescript-eslint/parser": { - "version": "7.1.1", + "internal/test-utils/node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, - "license": "BSD-2-Clause", - "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.1.1", - "@typescript-eslint/types": "7.1.1", - "@typescript-eslint/typescript-estree": "7.1.1", - "@typescript-eslint/visitor-keys": "7.1.1", - "debug": "^4.3.4" + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=4" }, "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "internal/test-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "7.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.1.1", - "@typescript-eslint/visitor-keys": "7.1.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "internal/test-utils/node_modules/@typescript-eslint/types": { - "version": "7.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "internal/test-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "7.1.1", - "@typescript-eslint/visitor-keys": "7.1.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "internal/test-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.1.1", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "internal/test-utils/node_modules/brace-expansion": { - "version": "2.0.1", + "internal/test-utils/node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "bin": { + "semver": "bin/semver.js" } }, "internal/test-utils/node_modules/eslint-plugin-unused-imports": { @@ -572,34 +440,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "internal/test-utils/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "internal/test-utils/node_modules/prettier": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "internal/test-utils/node_modules/rimraf": { "version": "4.4.1", "dev": true, @@ -4090,6 +3930,18 @@ "node": ">= 8" } }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@puppeteer/browsers": { "version": "1.4.6", "dev": true, @@ -4247,6 +4099,15 @@ "dev": true, "license": "MIT" }, + "node_modules/@shikijs/core": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.10.3.tgz", + "integrity": "sha512-D45PMaBaeDHxww+EkcDQtDAtzv00Gcsp72ukBtaLSmqRvh0WgGMq3Al0rl1QQBZfuneO75NXMIzEZGFitThWbg==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.4" + } + }, "node_modules/@sideway/address": { "version": "4.1.5", "dev": true, @@ -4516,6 +4377,15 @@ "version": "3.0.3", "license": "MIT" }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/ioredis-mock": { "version": "8.2.5", "resolved": "https://registry.npmjs.org/@types/ioredis-mock/-/ioredis-mock-8.2.5.tgz", @@ -4658,6 +4528,12 @@ "@types/jest": "*" } }, + "node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, "node_modules/@types/uuid": { "version": "9.0.1", "dev": true, @@ -4692,31 +4568,31 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz", + "integrity": "sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==", "dev": true, - "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/type-utils": "7.16.1", + "@typescript-eslint/utils": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -4838,24 +4714,26 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.1.tgz", + "integrity": "sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/typescript-estree": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -4864,15 +4742,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz", + "integrity": "sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -4880,24 +4759,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.1.tgz", + "integrity": "sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/typescript-estree": "7.16.1", + "@typescript-eslint/utils": "7.16.1", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -4906,11 +4786,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.62.0", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz", + "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==", "dev": true, - "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -4918,20 +4799,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz", + "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -4943,41 +4826,63 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.1.tgz", + "integrity": "sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==", "dev": true, - "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/typescript-estree": "7.16.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz", + "integrity": "sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "7.16.1", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -5289,11 +5194,6 @@ "node": ">=8" } }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, "node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", @@ -5381,14 +5281,16 @@ } }, "node_modules/array-includes": { - "version": "3.1.7", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -5406,6 +5308,26 @@ "node": ">=8" } }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { "version": "1.3.2", "dev": true, @@ -5440,16 +5362,32 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, "node_modules/array.prototype.tosorted": { - "version": "1.1.3", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.1.0", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/arraybuffer.prototype.slice": { @@ -5509,21 +5447,17 @@ "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - } - }, "node_modules/asynckit": { "version": "0.4.0", "license": "MIT" }, "node_modules/available-typed-arrays": { - "version": "1.0.6", - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -6201,6 +6135,57 @@ "node": ">= 14" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/date-fns": { "version": "2.30.0", "dev": true, @@ -6520,6 +6505,18 @@ "node": ">=10.13.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/error-ex": { "version": "1.3.2", "dev": true, @@ -6529,17 +6526,22 @@ } }, "node_modules/es-abstract": { - "version": "1.22.4", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, - "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.6", + "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", "get-intrinsic": "^1.2.4", @@ -6547,15 +6549,16 @@ "globalthis": "^1.0.3", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.1", + "hasown": "^2.0.2", "internal-slot": "^1.0.7", "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", @@ -6563,17 +6566,17 @@ "object-keys": "^1.1.1", "object.assign": "^4.1.5", "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", + "safe-array-concat": "^1.1.2", "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.1", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -6618,25 +6621,25 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.0.17", + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", "dev": true, - "license": "MIT", "dependencies": { - "asynciterator.prototype": "^1.0.0", "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.4", + "es-abstract": "^1.23.3", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", + "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", "internal-slot": "^1.0.7", "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.0" + "safe-array-concat": "^1.1.2" }, "engines": { "node": ">= 0.4" @@ -6648,14 +6651,27 @@ "license": "MIT", "peer": true }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.2", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, - "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -6818,9 +6834,10 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.10.0", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, - "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -6984,20 +7001,30 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, - "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" }, "engines": { - "node": ">=12.0.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" }, "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, "eslint-config-prettier": { "optional": true } @@ -7015,26 +7042,30 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.33.2", + "version": "7.34.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.4.tgz", + "integrity": "sha512-Np+jo9bUwJNxCsT12pXtrGhJgT3T44T1sHhn1Ssr42XFn8TES0267wPGo5nNrMHi8qkyimDAX2BUmkf9pSaVzA==", "dev": true, - "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", + "es-iterator-helpers": "^1.0.19", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", + "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" @@ -7044,9 +7075,10 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -8013,8 +8045,9 @@ } }, "node_modules/has-proto": { - "version": "1.0.1", - "license": "MIT", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -8069,8 +8102,9 @@ } }, "node_modules/hasown": { - "version": "2.0.1", - "license": "MIT", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -8324,8 +8358,9 @@ }, "node_modules/is-async-function": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, - "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -8399,12 +8434,27 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-core-module": { - "version": "2.13.1", + "node_modules/is-core-module": { + "version": "2.13.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, - "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8440,8 +8490,9 @@ }, "node_modules/is-finalizationregistry": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -8503,9 +8554,10 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8581,10 +8633,14 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "license": "MIT", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8842,8 +8898,9 @@ }, "node_modules/iterator.prototype": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dev": true, - "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "get-intrinsic": "^1.2.1", @@ -9248,11 +9305,6 @@ "node": ">=6" } }, - "node_modules/jsonc-parser": { - "version": "3.2.1", - "dev": true, - "license": "MIT" - }, "node_modules/jsonfile": { "version": "6.1.0", "dev": true, @@ -9356,6 +9408,15 @@ "dev": true, "license": "MIT" }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/live-canvas-tests": { "resolved": "samples/typescript/31.live-canvas-tests", "link": true @@ -9440,8 +9501,9 @@ }, "node_modules/lunr": { "version": "2.3.9", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true }, "node_modules/lz-string": { "version": "1.5.0", @@ -9496,17 +9558,29 @@ "version": "0.1.0", "dev": true }, - "node_modules/marked": { - "version": "4.3.0", + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, - "license": "MIT", - "bin": { - "marked": "bin/marked.js" + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" }, - "engines": { - "node": ">= 12" + "bin": { + "markdown-it": "bin/markdown-it.mjs" } }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true + }, "node_modules/merge-deep": { "version": "3.0.3", "dev": true, @@ -9864,11 +9938,6 @@ "dev": true, "license": "MIT" }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, "node_modules/nconf": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.1.tgz", @@ -10353,26 +10422,29 @@ } }, "node_modules/object.entries": { - "version": "1.1.7", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.7", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -10382,25 +10454,31 @@ } }, "node_modules/object.hasown": { - "version": "1.1.3", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", "dev": true, - "license": "MIT", "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.values": { - "version": "1.1.7", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -10795,6 +10873,14 @@ "node": ">=4" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.4.35", "dev": true, @@ -10831,14 +10917,15 @@ } }, "node_modules/prettier": { - "version": "2.8.8", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, - "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -10992,6 +11079,15 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/puppeteer": { "version": "20.9.0", "dev": true, @@ -11390,15 +11486,16 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.5", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.0.0", - "get-intrinsic": "^1.2.3", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", "which-builtin-type": "^1.1.3" }, @@ -11611,12 +11708,13 @@ "license": "0BSD" }, "node_modules/safe-array-concat": { - "version": "1.1.0", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -11799,12 +11897,14 @@ } }, "node_modules/set-function-name": { - "version": "2.0.1", - "license": "MIT", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -11874,21 +11974,21 @@ } }, "node_modules/shiki": { - "version": "0.14.7", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.10.3.tgz", + "integrity": "sha512-eneCLncGuvPdTutJuLyUGS8QNPAVFO5Trvld2wgEq1e002mwctAhJKeMGWtWVXOIEzmlcLRqcgPSorR6AVzOmQ==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" + "@shikijs/core": "1.10.3", + "@types/hast": "^3.0.4" } }, "node_modules/side-channel": { - "version": "1.0.5", - "license": "MIT", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", "object-inspect": "^1.13.1" @@ -12126,14 +12226,15 @@ "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" }, "node_modules/start-server-and-test": { - "version": "2.0.3", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-2.0.4.tgz", + "integrity": "sha512-CKNeBTcP0hVqIlNismHMudb9q3lLdAjcVPO13/7gfI66fcJpeIb/o4NzQd1JK/CD+lfWVqr10ZH9Y14+OwlJuw==", "dev": true, - "license": "MIT", "dependencies": { "arg": "^5.0.2", "bluebird": "3.7.2", "check-more-types": "2.24.0", - "debug": "4.3.4", + "debug": "4.3.5", "execa": "5.1.1", "lazy-ass": "1.6.0", "ps-tree": "1.2.0", @@ -12148,6 +12249,23 @@ "node": ">=16" } }, + "node_modules/start-server-and-test/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/start-server-and-test/node_modules/rxjs": { "version": "7.8.1", "dev": true, @@ -12242,32 +12360,51 @@ } }, "node_modules/string.prototype.matchall": { - "version": "4.0.10", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { - "version": "1.2.8", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -12277,26 +12414,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12373,6 +12515,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/tabster": { "version": "6.0.1", "license": "MIT", @@ -12559,9 +12717,10 @@ } }, "node_modules/ts-api-utils": { - "version": "1.2.1", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=16" }, @@ -12713,11 +12872,12 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "es-errors": "^1.3.0", "is-typed-array": "^1.1.13" }, @@ -12726,14 +12886,16 @@ } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -12743,15 +12905,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, - "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -12761,13 +12925,20 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12782,37 +12953,41 @@ } }, "node_modules/typedoc": { - "version": "0.24.8", + "version": "0.26.4", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.4.tgz", + "integrity": "sha512-FlW6HpvULDKgc3rK04V+nbFyXogPV88hurarDPOjuuB5HAwuAlrCMQ5NeH7Zt68a/ikOKu6Z/0hFXAeC9xPccQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.0", - "shiki": "^0.14.1" + "markdown-it": "^14.1.0", + "minimatch": "^9.0.5", + "shiki": "^1.9.1", + "yaml": "^2.4.5" }, "bin": { "typedoc": "bin/typedoc" }, "engines": { - "node": ">= 14.14" + "node": ">= 18" }, "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x" + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x" } }, "node_modules/typedoc/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.3", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -12824,7 +12999,9 @@ } }, "node_modules/typescript": { - "version": "5.1.6", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -12835,6 +13012,12 @@ "node": ">=14.17" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true + }, "node_modules/unbox-primitive": { "version": "1.0.2", "dev": true, @@ -13049,16 +13232,6 @@ } } }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "dev": true, - "license": "MIT" - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/wait-on": { "version": "6.0.1", "dev": true, @@ -13226,8 +13399,9 @@ }, "node_modules/which-builtin-type": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", "dev": true, - "license": "MIT", "dependencies": { "function.prototype.name": "^1.1.5", "has-tostringtag": "^1.0.0", @@ -13268,14 +13442,15 @@ "license": "ISC" }, "node_modules/which-typed-array": { - "version": "1.1.14", - "license": "MIT", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dependencies": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -13397,6 +13572,18 @@ "dev": true, "license": "ISC" }, + "node_modules/yaml": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/yargs": { "version": "13.3.2", "dev": true, @@ -13561,8 +13748,9 @@ "fluid-framework": "^2.0.0-rc.5.0.1", "mocha": "^10.2.0", "nyc": "^15.1.0", + "start-server-and-test": "^2.0.4", "ts-mocha": "^10.0.0", - "typescript": "^5.0.4" + "typescript": "~5.5.3" }, "peerDependencies": { "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" @@ -13581,7 +13769,7 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", - "typescript": "^4.6.4" + "typescript": "~5.5.3" }, "peerDependencies": { "@azure/communication-calling": "^1.14.0", @@ -13596,18 +13784,6 @@ "undici-types": "~5.26.4" } }, - "packages/live-share-acs/node_modules/typescript": { - "version": "4.9.5", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "packages/live-share-canvas": { "name": "@microsoft/live-share-canvas", "version": "2.0.0-internal.5", @@ -13621,7 +13797,7 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", - "typescript": "^5.0.4" + "typescript": "~5.5.3" }, "peerDependencies": { "@microsoft/live-share": "2.0.0-internal.5", @@ -13645,7 +13821,7 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", - "typescript": "^5.0.4" + "typescript": "~5.5.3" }, "peerDependencies": { "@microsoft/live-share": "2.0.0-internal.5", @@ -13670,7 +13846,7 @@ "@types/uuid": "^9.0.1", "babel-loader": "^9.1.2", "fluid-framework": "^2.0.0-rc.5.0.1", - "typescript": "^5.0.4" + "typescript": "~5.5.3" }, "peerDependencies": { "@microsoft/live-share": "2.0.0-internal.5", @@ -13696,8 +13872,8 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "buffer": "^6.0.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" @@ -13730,16 +13906,16 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "chalk": "^5.2.0", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.32.2", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-react": "^7.34.4", "jest-puppeteer": "^6.1.0", - "prettier": "^2.8.8", + "prettier": "^3.3.3", "puppeteer": "^20.1.0", "rimraf": "^2.6.3", "start-server-and-test": "^2.0.0", @@ -13770,8 +13946,8 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "buffer": "^6.0.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" @@ -13807,14 +13983,14 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "dotenv-cli": "^7.2.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" } @@ -13832,8 +14008,8 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "buffer": "^6.0.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" @@ -13880,14 +14056,14 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "dotenv-cli": "^7.2.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" } @@ -13917,13 +14093,13 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" } @@ -13950,13 +14126,13 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" } @@ -13973,8 +14149,8 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "buffer": "^6.0.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" @@ -13993,8 +14169,8 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "buffer": "^6.0.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" @@ -14030,14 +14206,14 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "dotenv-cli": "^7.2.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" } @@ -14055,8 +14231,8 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "buffer": "^6.0.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" @@ -14104,14 +14280,14 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "dotenv-cli": "^7.2.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" } @@ -14146,14 +14322,14 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "dotenv-cli": "^7.2.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" } @@ -14193,14 +14369,14 @@ "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", "@types/babylonjs": "^2.4.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "dotenv-cli": "^7.2.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" } @@ -14237,16 +14413,16 @@ "@types/lodash": "^4.14.191", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "dotenv-cli": "^7.2.1", "esbuild": "^0.17.18", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-react": "^7.34.4", + "eslint-plugin-react-hooks": "^4.6.2", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" } diff --git a/package.json b/package.json index 4dd1b07a4..e706d341e 100644 --- a/package.json +++ b/package.json @@ -19,20 +19,23 @@ "build:samples": "node workspace-cmd-util.js build samples/javascript samples/typescript", "build:docs": "typedoc packages/live-share packages/live-share-media packages/live-share-turbo packages/live-share-canvas", "test:packages": "node workspace-cmd-util.js test packages", - "doctor": "eslint **/src/**/*.{j,t}s{,x} --fix --no-error-on-unmatched-pattern" + "doctor": "npm run doctor:src && npm run doctor:json", + "doctor:src": "eslint **/src/**/*.{j,t}s{,x} --fix", + "doctor:json": "eslint **/*.json --fix", + "clean": "npm exec --workspaces -- npx rimraf node_modules && npx rimraf node_modules" }, "author": "", "license": "Microsoft", "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", - "prettier": "^2.8.8", - "typedoc": "^0.24.6", - "typescript": "^5.0.4" + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-react": "^7.34.4", + "eslint-plugin-react-hooks": "^4.6.2", + "prettier": "^3.3.3", + "typedoc": "^0.26.4", + "typescript": "~5.5.3" } } diff --git a/packages/live-share-acs/package.json b/packages/live-share-acs/package.json index b94634a05..b58d3c34e 100644 --- a/packages/live-share-acs/package.json +++ b/packages/live-share-acs/package.json @@ -4,15 +4,27 @@ "description": "Live Share integration package for Azure Communication Services.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", - "main": "./bin/index.js", - "types": "./bin/index.d.ts", + "main": "./bin/esm/index.js", + "types": "./bin/esm/index.d.ts", "scripts": { "clean": "npx shx rm -rf bin", - "build": "tsc -p tsconfig.build.json", + "build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json", "test": "ts-mocha src/**/*.spec.ts --timeout 10000", "test:debug": "ts-mocha src/**/*.spec.ts --inspect-brk", "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test" }, + "exports": { + ".": { + "require": { + "types": "./bin/cjs/index.d.ts", + "default": "./bin/cjs/index.js" + }, + "import": { + "types": "./bin/esm/index.d.ts", + "default": "./bin/esm/index.js" + } + } + }, "devDependencies": { "@microsoft/live-share": "2.0.0-internal.5", "@azure/communication-calling": "^1.14.0", @@ -22,7 +34,7 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", - "typescript": "^4.6.4" + "typescript": "~5.5.3" }, "peerDependencies": { "@microsoft/live-share": "2.0.0-internal.5", diff --git a/packages/live-share-acs/tsconfig.build.json b/packages/live-share-acs/tsconfig.build.json deleted file mode 100644 index 9d8cab4a6..000000000 --- a/packages/live-share-acs/tsconfig.build.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - }, - "exclude": [ - "test/**/*.ts" - ] - } \ No newline at end of file diff --git a/packages/live-share-acs/tsconfig.cjs.json b/packages/live-share-acs/tsconfig.cjs.json new file mode 100644 index 000000000..6641d86cd --- /dev/null +++ b/packages/live-share-acs/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./bin/cjs", + "module": "CommonJS", + "moduleResolution": null, + "downlevelIteration": true, + "paths": { + "@microsoft/live-share/internal": [ + "../live-share/bin/esm/index.d.ts" + ] + } + } +} diff --git a/packages/live-share-acs/tsconfig.json b/packages/live-share-acs/tsconfig.json index 9d500ddde..b5fa96793 100644 --- a/packages/live-share-acs/tsconfig.json +++ b/packages/live-share-acs/tsconfig.json @@ -1,76 +1,67 @@ { - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - "lib": ["es2020","DOM"], /* Specify library files to be included in the compilation. */ - "allowJs": false, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./bin", /* Redirect output structure to the directory. */ - // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ - }, - "exclude": ["build", "dist", "node_modules"], - "include": [ - "test/**/*.ts" - ], - "files": [ - "src/index.ts" - ] + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "Preserve" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "moduleResolution": "Bundler", + "lib": [ + "es2020", + "DOM" + ] /* Specify library files to be included in the compilation. */, + "allowJs": false /* Allow javascript files to be compiled. */, + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./bin/esm" /* Redirect output structure to the directory. */, + // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "files": ["src/index.ts"] } diff --git a/packages/live-share-canvas/package.json b/packages/live-share-canvas/package.json index 6339430f7..c717b39de 100644 --- a/packages/live-share-canvas/package.json +++ b/packages/live-share-canvas/package.json @@ -4,15 +4,28 @@ "description": "Live Share extension library for collaborative inking.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", - "main": "./bin/index.js", - "types": "./bin/index.d.ts", + "main": "./bin/esm/index.js", + "types": "./bin/esm/index.d.ts", "scripts": { "clean": "npx shx rm -rf bin", - "build": "tsc -p tsconfig.build.json", - "test": "ts-mocha src/**/*.spec.ts --timeout 10000", + "build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json", + "build:test": "tsc -p tsconfig.test.json", + "test": "npm run build:test && ts-mocha -p tsconfig.test.json --recursive \"./bin/test/**/*.spec.js\" --timeout 10000", "test:debug": "ts-mocha src/**/*.spec.ts --inspect-brk", "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test" }, + "exports": { + ".": { + "require": { + "types": "./bin/cjs/index.d.ts", + "default": "./bin/cjs/index.js" + }, + "import": { + "types": "./bin/esm/index.d.ts", + "default": "./bin/esm/index.js" + } + } + }, "devDependencies": { "@microsoft/live-share": "2.0.0-internal.5", "@types/assert": "^1.5.6", @@ -22,7 +35,7 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", - "typescript": "^5.0.4" + "typescript": "~5.5.3" }, "peerDependencies": { "@microsoft/live-share": "2.0.0-internal.5", diff --git a/packages/live-share-canvas/src/core/InkingManager.ts b/packages/live-share-canvas/src/core/InkingManager.ts index a1560c3f7..f82ef0c83 100644 --- a/packages/live-share-canvas/src/core/InkingManager.ts +++ b/packages/live-share-canvas/src/core/InkingManager.ts @@ -232,7 +232,10 @@ class ChangeLog { class EphemeralCanvas extends DryCanvas { private _removalTimeout?: number; - constructor(readonly clientId: string, parentElement?: HTMLElement) { + constructor( + readonly clientId: string, + parentElement?: HTMLElement + ) { super(parentElement); } @@ -694,8 +697,8 @@ export class InkingManager extends TypedEventEmitter { this.tool === InkingTool.line ? StrokeMode.line : e.ctrlKey && InkingManager.enableStrokeModifierHotKeys - ? StrokeMode.line - : StrokeMode.freeHand; + ? StrokeMode.line + : StrokeMode.freeHand; // eslint-disable-next-line no-case-declarations const brush = { ...this.getBrushForTool(this.tool) }; @@ -832,8 +835,8 @@ export class InkingManager extends TypedEventEmitter { options?: IAddRemoveStrokeOptions ) { const effectiveOptions: Required = { - forceReRender: options ? options.forceReRender ?? false : false, - addToChangeLog: options ? options.addToChangeLog ?? true : true, + forceReRender: options ? (options.forceReRender ?? false) : false, + addToChangeLog: options ? (options.addToChangeLog ?? true) : true, }; if (effectiveOptions.forceReRender || this._strokes.has(stroke.id)) { @@ -1295,8 +1298,12 @@ export class InkingManager extends TypedEventEmitter { public removeStroke(id: string, options?: IAddRemoveStrokeOptions) { if (this._strokes.delete(id)) { const effectiveOptions: Required = { - forceReRender: options ? options.forceReRender ?? false : false, - addToChangeLog: options ? options.addToChangeLog ?? true : true, + forceReRender: options + ? (options.forceReRender ?? false) + : false, + addToChangeLog: options + ? (options.addToChangeLog ?? true) + : true, }; effectiveOptions.forceReRender diff --git a/packages/live-share-canvas/src/core/LiveCanvas.ts b/packages/live-share-canvas/src/core/LiveCanvas.ts index f73e5569c..6cd233bcb 100644 --- a/packages/live-share-canvas/src/core/LiveCanvas.ts +++ b/packages/live-share-canvas/src/core/LiveCanvas.ts @@ -178,7 +178,10 @@ export abstract class LiveCursor { * Initializes a new instance of `LiveCursor`. * @param info The cursor info. */ - constructor(public readonly clientId: string, _userInfo?: IUserInfo) { + constructor( + public readonly clientId: string, + _userInfo?: IUserInfo + ) { this._userInfo = _userInfo; } @@ -293,8 +296,8 @@ class BuiltInLiveCursor extends LiveCursor { let visualTemplate = ` `; + arrowWidth * 0.25 + }px;">`; } else if (this.userInfo.pictureUri && this.userInfo.displayName) { visualTemplate += `
+ arrowHeight * 1.1 + }px; height: ${arrowHeight * 1.1}px; border-radius: 50%;">
${ this.userInfo.displayName }
@@ -356,7 +359,10 @@ class BuiltInLiveCursor extends LiveCursor { return element; } - constructor(public clientId: string, _userInfo?: IUserInfo) { + constructor( + public clientId: string, + _userInfo?: IUserInfo + ) { super(clientId, _userInfo); this._color = diff --git a/packages/live-share-canvas/src/test/Utils.spec.ts b/packages/live-share-canvas/src/test/Utils.spec.ts index 76f00e970..5e85e19b3 100644 --- a/packages/live-share-canvas/src/test/Utils.spec.ts +++ b/packages/live-share-canvas/src/test/Utils.spec.ts @@ -71,8 +71,10 @@ export function assertObjectsEqual( const propertyNames = Object.getOwnPropertyNames(expected); for (const p of propertyNames) { + const expectedCast = expected as any; + const actualCast = actual as any; assert( - expected[p] === actual[p], + expectedCast[p] === actualCast[p], errorMessage + ` (expected = ${JSON.stringify( expected diff --git a/packages/live-share-canvas/tsconfig.build.json b/packages/live-share-canvas/tsconfig.build.json deleted file mode 100644 index 9d8cab4a6..000000000 --- a/packages/live-share-canvas/tsconfig.build.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - }, - "exclude": [ - "test/**/*.ts" - ] - } \ No newline at end of file diff --git a/packages/live-share-canvas/tsconfig.cjs.json b/packages/live-share-canvas/tsconfig.cjs.json new file mode 100644 index 000000000..6641d86cd --- /dev/null +++ b/packages/live-share-canvas/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./bin/cjs", + "module": "CommonJS", + "moduleResolution": null, + "downlevelIteration": true, + "paths": { + "@microsoft/live-share/internal": [ + "../live-share/bin/esm/index.d.ts" + ] + } + } +} diff --git a/packages/live-share-canvas/tsconfig.json b/packages/live-share-canvas/tsconfig.json index 258994400..b5fa96793 100644 --- a/packages/live-share-canvas/tsconfig.json +++ b/packages/live-share-canvas/tsconfig.json @@ -1,76 +1,67 @@ { - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - "lib": ["es2020","DOM"], /* Specify library files to be included in the compilation. */ - "allowJs": false, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./bin", /* Redirect output structure to the directory. */ - // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ - }, - "exclude": ["build", "dist", "node_modules"], - "include": [ - "test/**/*.ts" - ], - "files": [ - "src/index.ts" - ] + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "Preserve" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "moduleResolution": "Bundler", + "lib": [ + "es2020", + "DOM" + ] /* Specify library files to be included in the compilation. */, + "allowJs": false /* Allow javascript files to be compiled. */, + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./bin/esm" /* Redirect output structure to the directory. */, + // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "files": ["src/index.ts"] } diff --git a/packages/live-share-canvas/tsconfig.test.json b/packages/live-share-canvas/tsconfig.test.json new file mode 100644 index 000000000..59cee05ef --- /dev/null +++ b/packages/live-share-canvas/tsconfig.test.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.cjs.json", + "compilerOptions": { + "outDir": "./bin/test", + "types": ["mocha", "node"] + }, + "include": ["src/**/*"], + "exclude": [] +} diff --git a/packages/live-share-media/src/test/.mocharc.js b/packages/live-share-media/.mocharc.js similarity index 100% rename from packages/live-share-media/src/test/.mocharc.js rename to packages/live-share-media/.mocharc.js diff --git a/packages/live-share-media/package.json b/packages/live-share-media/package.json index d36693967..1c9c74c8a 100644 --- a/packages/live-share-media/package.json +++ b/packages/live-share-media/package.json @@ -4,16 +4,29 @@ "description": "Live Share classes that synchronize media playback across clients.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", - "main": "./bin/index.js", - "types": "./bin/index.d.ts", + "main": "./bin/esm/index.js", + "types": "./bin/esm/index.d.ts", "scripts": { "clean": "npx shx rm -rf bin", - "build": "tsc -p tsconfig.build.json", - "test": "ts-mocha --config ./src/test/.mocharc.js src/**/*.spec.ts --timeout 10000", - "test:debug": "ts-mocha --config ./src/test/.mocharc.js src/**/*.spec.ts --inspect-brk", + "build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json", + "build:test": "tsc -p tsconfig.test.json", + "test": "npm run build:test && ts-mocha -p tsconfig.test.json --config .mocharc.js --recursive \"./bin/test/**/*.spec.js\" --timeout 10000", + "test:debug": "npm run build:test && ts-mocha -p tsconfig.test.json --config .mocharc.js --recursive \"./bin/test/**/LiveMediaSession_Synchronizer.spec.js\" --inspect-brk", "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test", "test:race": "node ./../live-share/test-for-race-conditions.js" }, + "exports": { + ".": { + "require": { + "types": "./bin/cjs/index.d.ts", + "default": "./bin/cjs/index.js" + }, + "import": { + "types": "./bin/esm/index.d.ts", + "default": "./bin/esm/index.js" + } + } + }, "devDependencies": { "@microsoft/live-share": "2.0.0-internal.5", "@fluidframework/mocha-test-setup": "^2.0.0-rc.1.0.9", @@ -27,7 +40,7 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "ts-mocha": "^10.0.0", - "typescript": "^5.0.4" + "typescript": "~5.5.3" }, "peerDependencies": { "@microsoft/live-share": "2.0.0-internal.5", diff --git a/packages/live-share-media/src/LiveMediaSessionCoordinator.ts b/packages/live-share-media/src/LiveMediaSessionCoordinator.ts index 09c16604d..127b1221f 100644 --- a/packages/live-share-media/src/LiveMediaSessionCoordinator.ts +++ b/packages/live-share-media/src/LiveMediaSessionCoordinator.ts @@ -18,6 +18,7 @@ import { LiveEventTarget, LiveObjectSynchronizer, LiveShareRuntime, + isErrorLike, } from "@microsoft/live-share/internal"; import { CoordinationWaitPoint, @@ -38,7 +39,6 @@ import { IRateChangeCommandEvent, } from "./internals"; import { LiveMediaSessionCoordinatorSuspension } from "./LiveMediaSessionCoordinatorSuspension"; -import { isErrorLike } from "@microsoft/live-share/bin/internals/type-guards"; import { TypedEventEmitter } from "@fluid-internal/client-utils"; import { IEvent } from "@fluidframework/core-interfaces"; diff --git a/packages/live-share-media/src/MediaPlayerSynchronizer.ts b/packages/live-share-media/src/MediaPlayerSynchronizer.ts index 8bc1868a1..aabdd610c 100644 --- a/packages/live-share-media/src/MediaPlayerSynchronizer.ts +++ b/packages/live-share-media/src/MediaPlayerSynchronizer.ts @@ -3,7 +3,10 @@ * Licensed under the Microsoft Live Share SDK License. */ import { LiveTelemetryLogger, ILiveEvent } from "@microsoft/live-share"; -import { IRuntimeSignaler } from "@microsoft/live-share/internal"; +import { + IRuntimeSignaler, + waitUntilConnected, +} from "@microsoft/live-share/internal"; import { ExtendedMediaSessionAction, ExtendedMediaSessionPlaybackState, @@ -17,7 +20,6 @@ import { VolumeManager } from "./VolumeManager"; import { LiveMediaSession } from "./LiveMediaSession"; import { IMediaPlayer } from "./IMediaPlayer"; import { ITriggerActionEvent, TelemetryEvents } from "./internals"; -import { waitUntilConnected } from "@microsoft/live-share/bin/internals/utils"; import { TypedEventEmitter } from "@fluid-internal/client-utils"; import { IEvent } from "@fluidframework/core-interfaces"; diff --git a/packages/live-share-media/src/internals/GroupCoordinatorState.ts b/packages/live-share-media/src/internals/GroupCoordinatorState.ts index 7de9b94e8..1bbececad 100644 --- a/packages/live-share-media/src/internals/GroupCoordinatorState.ts +++ b/packages/live-share-media/src/internals/GroupCoordinatorState.ts @@ -12,6 +12,7 @@ import { import { IRuntimeSignaler, LiveShareRuntime, + waitUntilConnected, } from "@microsoft/live-share/internal"; import { ExtendedMediaMetadata, @@ -44,7 +45,6 @@ import { IPlaybackTrackDataChangeEvent, } from "./GroupPlaybackTrackData"; import { TelemetryEvents } from "./consts"; -import { waitUntilConnected } from "@microsoft/live-share/bin/internals/utils"; import { GroupPlaybackRate, IPlaybackRate, diff --git a/packages/live-share-media/src/test/GroupPlaybackPosition.spec.ts b/packages/live-share-media/src/test/GroupPlaybackPosition.spec.ts index 75c0a379f..dc3ce5ad1 100644 --- a/packages/live-share-media/src/test/GroupPlaybackPosition.spec.ts +++ b/packages/live-share-media/src/test/GroupPlaybackPosition.spec.ts @@ -21,6 +21,7 @@ import { import { TestLiveShareHost, TimeInterval } from "@microsoft/live-share"; import { IRuntimeSignaler, + LiveShareRuntime, MockLiveShareRuntime, } from "@microsoft/live-share/internal"; import { IMediaPlayerState } from "../LiveMediaSessionCoordinator"; @@ -121,13 +122,13 @@ async function getPlayBackPosition( playbackTrack, plybackRate, getMediaPlayerState, - liveRuntime + liveRuntime as unknown as LiveShareRuntime ); const playbackPosition = new GroupPlaybackPosition( transportState, plybackRate, runtime1, - liveRuntime, + liveRuntime as unknown as LiveShareRuntime, updateInterval ); diff --git a/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts b/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts index fab831b73..ec29b9a5d 100644 --- a/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts +++ b/packages/live-share-media/src/test/LiveMediaSession_ManualActionHandler.spec.ts @@ -23,16 +23,22 @@ import { MockLiveShareRuntime, waitForDelay, Deferred, + LiveShareRuntime, } from "@microsoft/live-share/internal"; import { ExtendedMediaMetadata, ExtendedMediaSessionActionDetails, } from "../MediaSessionExtensions"; import { IMediaPlayerState } from "../LiveMediaSessionCoordinator"; -import { describeCompat } from "@live-share-private/test-utils"; +import { + ITestObjectProviderOptions, + describeCompat, +} from "@live-share-private/test-utils"; async function getObjects( - getTestObjectProvider, + getTestObjectProvider: ( + options?: ITestObjectProviderOptions + ) => ITestObjectProvider, updateInterval: number = 10000, timestampProvider: ITimestampProvider = new LocalTimestampProvider() ) { @@ -52,11 +58,11 @@ async function getObjects( let ObjectProxy1: any = getLiveDataObjectKind( TestLiveMediaSession, - liveRuntime1 + liveRuntime1 as unknown as LiveShareRuntime ); let ObjectProxy2: any = getLiveDataObjectKind( TestLiveMediaSession, - liveRuntime2 + liveRuntime2 as unknown as LiveShareRuntime ); await liveRuntime1.start(); @@ -67,16 +73,18 @@ async function getObjects( let container1 = await provider.createContainer( ObjectProxy1.factory as fluidEntryPoint ); - let object1 = await getContainerEntryPointBackCompat( - container1 - ); + let object1 = + await getContainerEntryPointBackCompat( + container1 + ); object1.coordinator.positionUpdateInterval = 0.02; let container2 = await provider.loadContainer( ObjectProxy2.factory as fluidEntryPoint ); - let object2 = await getContainerEntryPointBackCompat( - container2 - ); + let object2 = + await getContainerEntryPointBackCompat( + container2 + ); object2.coordinator.positionUpdateInterval = 0.02; const track1 = { @@ -234,9 +242,8 @@ describeCompat( await object1.coordinator.seekTo(30); object1.coordinator.sendPositionUpdate(positionState(30)); - object2.coordinator.beginSuspension(); - + await waitForDelay(1); object2.coordinator.sendPositionUpdate(positionState(200)); await waitForDelay(1); diff --git a/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts b/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts index 401b2c95b..59d4ca322 100644 --- a/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts +++ b/packages/live-share-media/src/test/LiveMediaSession_Synchronizer.spec.ts @@ -17,13 +17,14 @@ import { import { ITimestampProvider, LocalTimestampProvider, + TestLiveShareHost, UserMeetingRole, } from "@microsoft/live-share"; -import { TestLiveShareHost } from "@microsoft/live-share"; -import { getLiveDataObjectKind } from "@microsoft/live-share/internal"; import { Deferred, + getLiveDataObjectKind, isErrorLike, + LiveShareRuntime, MockLiveShareRuntime, waitForDelay, } from "@microsoft/live-share/internal"; @@ -39,10 +40,15 @@ import { MediaPlayerSynchronizer, MediaPlayerSynchronizerEvents, } from "../MediaPlayerSynchronizer"; -import { describeCompat } from "@live-share-private/test-utils"; +import { + ITestObjectProviderOptions, + describeCompat, +} from "@live-share-private/test-utils"; async function getObjects( - getTestObjectProvider, + getTestObjectProvider: ( + options?: ITestObjectProviderOptions + ) => ITestObjectProvider, updateInterval: number = 10000, timestampProvider: ITimestampProvider = new LocalTimestampProvider() ) { @@ -62,11 +68,11 @@ async function getObjects( let ObjectProxy1: any = getLiveDataObjectKind( TestLiveMediaSession, - liveRuntime1 + liveRuntime1 as unknown as LiveShareRuntime ); let ObjectProxy2: any = getLiveDataObjectKind( TestLiveMediaSession, - liveRuntime2 + liveRuntime2 as unknown as LiveShareRuntime ); await liveRuntime1.start(); @@ -77,16 +83,18 @@ async function getObjects( let container1 = await provider.createContainer( ObjectProxy1.factory as fluidEntryPoint ); - let object1 = await getContainerEntryPointBackCompat( - container1 - ); + let object1 = + await getContainerEntryPointBackCompat( + container1 + ); object1.coordinator.positionUpdateInterval = 0.02; let container2 = await provider.loadContainer( ObjectProxy2.factory as fluidEntryPoint ); - let object2 = await getContainerEntryPointBackCompat( - container2 - ); + let object2 = + await getContainerEntryPointBackCompat( + container2 + ); object2.coordinator.positionUpdateInterval = 0.02; // need to be connected to send signals if (!container1.connect) { diff --git a/packages/live-share-media/src/test/TestUtils.ts b/packages/live-share-media/src/test/TestUtils.ts index a727fa6ea..dda79a869 100644 --- a/packages/live-share-media/src/test/TestUtils.ts +++ b/packages/live-share-media/src/test/TestUtils.ts @@ -18,15 +18,15 @@ export class TestMediaPlayer implements IMediaPlayer { private _currentTime: number = 0; private _playbackRate: number = 1; - duration: number; - ended: boolean; - muted: boolean; + duration: number = 0; + ended: boolean = false; + muted: boolean = false; paused: boolean = true; src: string = "test"; - currentSrc: string; - volume: number; + currentSrc: string = ""; + volume: number = 1; - constructor(public onCurrentTimeSet?: (number) => void) { + constructor(public onCurrentTimeSet?: (number: number) => void) { setInterval(() => { if (!this.paused && this.playStartTime != 0) { this._currentTime = diff --git a/packages/live-share-media/src/test/VolumeManager.spec.ts b/packages/live-share-media/src/test/VolumeManager.spec.ts index 09151f72e..4cce4210b 100644 --- a/packages/live-share-media/src/test/VolumeManager.spec.ts +++ b/packages/live-share-media/src/test/VolumeManager.spec.ts @@ -47,11 +47,14 @@ describe("VolumeManager", () => { assert(player.volume == volumeManager.limitLevel); volumeManager.stopLimiting(); - setTimeout(() => { - // check volume at halfway point - assert(player.volume > 0.4); - assert(player.volume < 0.6); - }, (volumeManager.volumeChangeDuration * 1000) / 2); + setTimeout( + () => { + // check volume at halfway point + assert(player.volume > 0.4); + assert(player.volume < 0.6); + }, + (volumeManager.volumeChangeDuration * 1000) / 2 + ); // check volume at end with milliTollerance of leeway await waitForDelay( @@ -89,11 +92,14 @@ describe("VolumeManager", () => { volumeManager.volumeChangeDuration = volumeChangeDuration; volumeManager.volume = 0.3; - setTimeout(() => { - // check volume at halfway point - assert(player.volume > 0.6); - assert(player.volume < 0.7); - }, (volumeManager.volumeChangeDuration * 1000) / 2); + setTimeout( + () => { + // check volume at halfway point + assert(player.volume > 0.6); + assert(player.volume < 0.7); + }, + (volumeManager.volumeChangeDuration * 1000) / 2 + ); await waitForDelay( volumeManager.volumeChangeDuration * 1000 + milliTolerance @@ -157,11 +163,14 @@ describe("VolumeManager", () => { volumeManager.startLimiting(); - setTimeout(() => { - // check volume at halfway point - assert(player.volume > 0.7); - assert(player.volume < 0.8); - }, (volumeManager.volumeChangeDuration * 1000) / 2); + setTimeout( + () => { + // check volume at halfway point + assert(player.volume > 0.7); + assert(player.volume < 0.8); + }, + (volumeManager.volumeChangeDuration * 1000) / 2 + ); // check volume at end with milliTolerance of leeway await waitForDelay( @@ -175,15 +184,15 @@ describe("VolumeManager", () => { // test implementation class TestMediaPlayer implements IMediaPlayer { - currentSrc: string; - currentTime: number; - duration: number; - ended: boolean; - muted: boolean; - paused: boolean; - playbackRate: number; - src: string; - volume: number; + currentSrc: string = ""; + currentTime: number = 0; + duration: number = 0; + ended: boolean = false; + muted: boolean = false; + paused: boolean = false; + playbackRate: number = 1.0; + src: string = ""; + volume: number = 1; load(): void { throw new Error("Method not implemented."); } diff --git a/packages/live-share-media/tsconfig.build.json b/packages/live-share-media/tsconfig.build.json deleted file mode 100644 index 9d8cab4a6..000000000 --- a/packages/live-share-media/tsconfig.build.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - }, - "exclude": [ - "test/**/*.ts" - ] - } \ No newline at end of file diff --git a/packages/live-share-media/tsconfig.cjs.json b/packages/live-share-media/tsconfig.cjs.json new file mode 100644 index 000000000..6641d86cd --- /dev/null +++ b/packages/live-share-media/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./bin/cjs", + "module": "CommonJS", + "moduleResolution": null, + "downlevelIteration": true, + "paths": { + "@microsoft/live-share/internal": [ + "../live-share/bin/esm/index.d.ts" + ] + } + } +} diff --git a/packages/live-share-media/tsconfig.json b/packages/live-share-media/tsconfig.json index 9d500ddde..b5fa96793 100644 --- a/packages/live-share-media/tsconfig.json +++ b/packages/live-share-media/tsconfig.json @@ -1,76 +1,67 @@ { - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - "lib": ["es2020","DOM"], /* Specify library files to be included in the compilation. */ - "allowJs": false, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./bin", /* Redirect output structure to the directory. */ - // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ - }, - "exclude": ["build", "dist", "node_modules"], - "include": [ - "test/**/*.ts" - ], - "files": [ - "src/index.ts" - ] + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "Preserve" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "moduleResolution": "Bundler", + "lib": [ + "es2020", + "DOM" + ] /* Specify library files to be included in the compilation. */, + "allowJs": false /* Allow javascript files to be compiled. */, + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./bin/esm" /* Redirect output structure to the directory. */, + // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "files": ["src/index.ts"] } diff --git a/packages/live-share-media/tsconfig.test.json b/packages/live-share-media/tsconfig.test.json new file mode 100644 index 000000000..59cee05ef --- /dev/null +++ b/packages/live-share-media/tsconfig.test.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.cjs.json", + "compilerOptions": { + "outDir": "./bin/test", + "types": ["mocha", "node"] + }, + "include": ["src/**/*"], + "exclude": [] +} diff --git a/packages/live-share-react/package.json b/packages/live-share-react/package.json index c0c298e4d..77958f662 100644 --- a/packages/live-share-react/package.json +++ b/packages/live-share-react/package.json @@ -1,47 +1,59 @@ { - "name": "@microsoft/live-share-react", - "version": "2.0.0-internal.5", - "description": "Build collaborative React apps using Microsoft's Fluid & Live Share frameworks with ease.", - "author": "Microsoft", - "license": "SEE LICENSE IN LICENSE", - "main": "./bin/index.js", - "types": "./bin/index.d.ts", - "scripts": { - "clean": "npx shx rm -rf bin", - "build": "tsc -p tsconfig.build.json", - "typecheck": "tsc" - }, - "dependencies": { - "url": "^0.11.0", - "uuid": "^9.0.0" - }, - "devDependencies": { - "@babel/core": "^7.21.8", - "@microsoft/live-share": "2.0.0-internal.5", - "@microsoft/live-share-canvas": "2.0.0-internal.5", - "@microsoft/live-share-media": "2.0.0-internal.5", - "@types/react": "^18.0.0", - "@types/react-dom": "^18.0.0", - "@types/uuid": "^9.0.1", - "babel-loader": "^9.1.2", - "fluid-framework": "^2.0.0-rc.5.0.1", - "typescript": "^5.0.4" - }, - "peerDependencies": { - "@microsoft/live-share": "2.0.0-internal.5", - "@microsoft/live-share-canvas": "2.0.0-internal.5", - "@microsoft/live-share-media": "2.0.0-internal.5", - "fluid-framework": "^2.0.0-rc || ^2.0.0-internal", - "react": "^16.8.0 || ^17 || ^18", - "react-dom": "^16.8.0 || ^17 || ^18" - }, - "repository": { - "directory": "packages/live-share-react", - "type": "git", - "url": "https://github.com/microsoft/live-share-sdk" - }, - "homepage": "https://aka.ms/teamsliveshare", - "bugs": { - "url": "https://github.com/microsoft/live-share-sdk/issues" - } -} \ No newline at end of file + "name": "@microsoft/live-share-react", + "version": "2.0.0-internal.5", + "description": "Build collaborative React apps using Microsoft's Fluid & Live Share frameworks with ease.", + "author": "Microsoft", + "license": "SEE LICENSE IN LICENSE", + "main": "./bin/esm/index.js", + "types": "./bin/esm/index.d.ts", + "scripts": { + "clean": "npx shx rm -rf bin", + "build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json", + "typecheck": "tsc" + }, + "exports": { + ".": { + "require": { + "types": "./bin/cjs/index.d.ts", + "default": "./bin/cjs/index.js" + }, + "import": { + "types": "./bin/esm/index.d.ts", + "default": "./bin/esm/index.js" + } + } + }, + "dependencies": { + "url": "^0.11.0", + "uuid": "^9.0.0" + }, + "devDependencies": { + "@babel/core": "^7.21.8", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", + "@types/react": "^18.0.0", + "@types/react-dom": "^18.0.0", + "@types/uuid": "^9.0.1", + "babel-loader": "^9.1.2", + "fluid-framework": "^2.0.0-rc.5.0.1", + "typescript": "~5.5.3" + }, + "peerDependencies": { + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-canvas": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", + "fluid-framework": "^2.0.0-rc || ^2.0.0-internal", + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" + }, + "repository": { + "directory": "packages/live-share-react", + "type": "git", + "url": "https://github.com/microsoft/live-share-sdk" + }, + "homepage": "https://aka.ms/teamsliveshare", + "bugs": { + "url": "https://github.com/microsoft/live-share-sdk/issues" + } +} diff --git a/packages/live-share-react/src/shared-hooks/useDynamicDDS.ts b/packages/live-share-react/src/shared-hooks/useDynamicDDS.ts index 0138061c7..e2c3c76df 100644 --- a/packages/live-share-react/src/shared-hooks/useDynamicDDS.ts +++ b/packages/live-share-react/src/shared-hooks/useDynamicDDS.ts @@ -5,7 +5,7 @@ import React from "react"; import { FluidObject, IFluidLoadable } from "@fluidframework/core-interfaces"; -import { useFluidObjectsContext } from "../providers"; +import { useFluidObjectsContext } from "../providers/AzureProvider"; import { SharedObjectKind } from "fluid-framework"; /** @@ -21,7 +21,7 @@ import { SharedObjectKind } from "fluid-framework"; * @returns the DDS object, which is of type T when loaded and undefined while loading */ export function useDynamicDDS< - T extends IFluidLoadable = FluidObject & IFluidLoadable + T extends IFluidLoadable = FluidObject & IFluidLoadable, >( uniqueKey: string, objectClass: SharedObjectKind, diff --git a/packages/live-share-react/tsconfig.build.json b/packages/live-share-react/tsconfig.build.json deleted file mode 100644 index 9f17e43fc..000000000 --- a/packages/live-share-react/tsconfig.build.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - } - } \ No newline at end of file diff --git a/packages/live-share-react/tsconfig.cjs.json b/packages/live-share-react/tsconfig.cjs.json new file mode 100644 index 000000000..6641d86cd --- /dev/null +++ b/packages/live-share-react/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./bin/cjs", + "module": "CommonJS", + "moduleResolution": null, + "downlevelIteration": true, + "paths": { + "@microsoft/live-share/internal": [ + "../live-share/bin/esm/index.d.ts" + ] + } + } +} diff --git a/packages/live-share-react/tsconfig.json b/packages/live-share-react/tsconfig.json index 151892a6d..4ddf6dae3 100644 --- a/packages/live-share-react/tsconfig.json +++ b/packages/live-share-react/tsconfig.json @@ -1,72 +1,67 @@ { - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - "module": "ES2020", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - "lib": ["es2020","DOM", "DOM.Iterable"], /* Specify library files to be included in the compilation. */ - "allowJs": false, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - "jsx": "react-jsx", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./bin", /* Redirect output structure to the directory. */ - // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ - }, - "files": [ - "src/index.ts" - ] + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "Preserve" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "moduleResolution": "Bundler", + "lib": [ + "es2020", + "DOM" + ] /* Specify library files to be included in the compilation. */, + "allowJs": false /* Allow javascript files to be compiled. */, + // "checkJs": true, /* Report errors in .js files. */ + "jsx": "react-jsx" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */, + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./bin/esm" /* Redirect output structure to the directory. */, + // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "files": ["src/index.ts"] } diff --git a/packages/live-share/src/test/.mocharc.js b/packages/live-share/.mocharc.js similarity index 100% rename from packages/live-share/src/test/.mocharc.js rename to packages/live-share/.mocharc.js diff --git a/packages/live-share/internal.ts b/packages/live-share/internal.ts deleted file mode 100644 index e44e609d0..000000000 --- a/packages/live-share/internal.ts +++ /dev/null @@ -1,17 +0,0 @@ -// Exposed for other live share libs, or advanced use cases. -export * from "./bin/internals/BaseLiveShareClient"; -export * from "./bin/internals/Deferred"; -export * from "./bin/internals/DynamicObjectRegistry"; -export * from "./bin/internals/DynamicObjectManager"; -export * from "./bin/internals/LiveDataObject"; -export * from "./bin/internals/LiveEventScope"; -export * from "./bin/internals/LiveEventSource"; -export * from "./bin/internals/LiveEventTarget"; -export * from "./bin/internals/LiveObjectSynchronizer"; -export * from "./bin/internals/LiveShareRuntime"; -export * from "./bin/internals/schema-injection-utils"; -export * from "./bin/internals/smuggle"; - -export { waitForDelay, waitUntilConnected } from "./bin/internals/utils"; -export { MockLiveShareRuntime } from "./bin/internals/mock/MockLiveShareRuntime"; -export { isErrorLike } from "./bin/internals/type-guards"; diff --git a/packages/live-share/package.json b/packages/live-share/package.json index 8262b9380..65732ce79 100644 --- a/packages/live-share/package.json +++ b/packages/live-share/package.json @@ -4,24 +4,48 @@ "description": "Building collaborative experiences for Microsoft Teams and M365 using Fluid.", "author": "Microsoft", "license": "SEE LICENSE IN LICENSE", - "main": "./bin/index.js", - "types": "./bin/index.d.ts", + "main": "./bin/esm/index.js", + "types": "./bin/esm/index.public.d.ts", "scripts": { "clean": "npx shx rm -rf bin", - "build": "tsc -p tsconfig.build.json", + "build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json", + "build:test": "tsc -p tsconfig.test.json", "test": "start-server-and-test test:client:start:server 7070 test:run", - "test:run": "ts-mocha --config ./src/test/.mocharc.js src --recursive --extension .spec.ts --timeout 10000", - "test:debug": "ts-mocha --config ./src/test/.mocharc.js src --recursive --extension .spec.ts --inspect-brk", + "test:run": "npm run build:test && ts-mocha -p tsconfig.test.json --config .mocharc.js --recursive \"./bin/test/**/*.spec.js\" --timeout 10000", + "test:debug": "npm run build:test && ts-mocha --config .mocharc.cjs --recursive \"./bin/test/**/*.spec.js\" --inspect-brk", "test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test", "test:race": "node test-for-race-conditions.js", "test:client:start:server": "npx tinylicious@latest > tinylicious.log 2>&1" }, "scriptsComments": { - "test": "does additional local server setup that LiveShareClient.spec.ts and AzureLiveShareClient.spec.ts need, then runs all tests with test:run" - }, + "test": "does additional local server setup that LiveShareClient.spec.ts and AzureLiveShareClient.spec.ts need, then runs all tests with test:run", + "todo": "npx rollup -c rollup.config.js --configPlugin typescript={tsconfig:\\'tsconfig.rollup.json\\'}" + }, + "exports": { + ".": { + "require": { + "types": "./bin/cjs/index.public.d.ts", + "default": "./bin/cjs/index.js" + }, + "import": { + "types": "./bin/esm/index.public.d.ts", + "default": "./bin/esm/index.js" + } + }, + "./internal": { + "require": { + "types": "./bin/cjs/index.internal.d.ts", + "default": "./bin/cjs/index.js" + }, + "import": { + "types": "./bin/esm/index.internal.d.ts", + "default": "./bin/esm/index.js" + } + } + }, "dependencies": { - "uuid": "^9.0.0", - "@fluidframework/register-collection": "^2.0.0-rc || ^2.0.0-internal" + "@fluidframework/register-collection": "^2.0.0-rc || ^2.0.0-internal", + "uuid": "^9.0.0" }, "devDependencies": { "@fluid-internal/client-utils": "^2.0.0-rc.5.0.1", @@ -37,8 +61,9 @@ "fluid-framework": "^2.0.0-rc.5.0.1", "mocha": "^10.2.0", "nyc": "^15.1.0", + "start-server-and-test": "^2.0.4", "ts-mocha": "^10.0.0", - "typescript": "^5.0.4" + "typescript": "~5.5.3" }, "peerDependencies": { "fluid-framework": "^2.0.0-rc || ^2.0.0-internal" diff --git a/packages/live-share/src/LivePresence.ts b/packages/live-share/src/LivePresence.ts index 65af6c60c..c056170bd 100644 --- a/packages/live-share/src/LivePresence.ts +++ b/packages/live-share/src/LivePresence.ts @@ -72,7 +72,7 @@ export interface ILivePresenceEvents * @template TData Type of data object to share with clients. */ export class LivePresenceClass< - TData extends object = object + TData extends object = object, > extends LiveDataObject<{ Events: ILivePresenceEvents; }> { diff --git a/packages/live-share/src/LiveShareClient.ts b/packages/live-share/src/LiveShareClient.ts index 3281114fe..f63ae3989 100644 --- a/packages/live-share/src/LiveShareClient.ts +++ b/packages/live-share/src/LiveShareClient.ts @@ -338,9 +338,8 @@ export class LiveShareClient extends BaseLiveShareClient { const newContainerId = await container.attach(); // Attempt to save container ID mapping - const containerInfo = await this._host.setFluidContainerId( - newContainerId - ); + const containerInfo = + await this._host.setFluidContainerId(newContainerId); if (containerInfo.containerState != ContainerState.added) { // Delete created container container.dispose(); diff --git a/packages/live-share/src/index.internal.ts b/packages/live-share/src/index.internal.ts new file mode 100644 index 000000000..0250e8ed4 --- /dev/null +++ b/packages/live-share/src/index.internal.ts @@ -0,0 +1,17 @@ +// Exposed for other live share libs, or advanced use cases. +export * from "./internals/BaseLiveShareClient.js"; +export * from "./internals/Deferred.js"; +export * from "./internals/DynamicObjectRegistry.js"; +export * from "./internals/DynamicObjectManager.js"; +export * from "./internals/LiveDataObject.js"; +export * from "./internals/LiveEventScope.js"; +export * from "./internals/LiveEventSource.js"; +export * from "./internals/LiveEventTarget.js"; +export * from "./internals/LiveObjectSynchronizer.js"; +export * from "./internals/LiveShareRuntime.js"; +export * from "./internals/schema-injection-utils.js"; +export * from "./internals/smuggle.js"; + +export { waitForDelay, waitUntilConnected } from "./internals/utils.js"; +export { isErrorLike } from "./internals/type-guards.js"; +export { MockLiveShareRuntime } from "./internals/mock/MockLiveShareRuntime.js"; diff --git a/packages/live-share/src/index.public.ts b/packages/live-share/src/index.public.ts new file mode 100644 index 000000000..60acde0bd --- /dev/null +++ b/packages/live-share/src/index.public.ts @@ -0,0 +1,22 @@ +/*! + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Microsoft Live Share SDK License. + */ + +export * from "./AzureLiveShareClient"; +export * from "./AzureLiveShareHost"; +export * from "./errors"; +export * from "./HostTimestampProvider"; +export * from "./interfaces"; +export * from "./LiveEvent"; +export * from "./LiveFollowMode"; +export * from "./LivePresence"; +export * from "./LivePresenceUser"; +export * from "./LiveShareClient"; +export * from "./LiveState"; +export * from "./LiveTelemetryLogger"; +export * from "./LiveTimer"; +export * from "./LocalTimestampProvider"; +export * from "./TestLiveShareHost"; +export * from "./TimeInterval"; +export * from "./TimestampProvider"; diff --git a/packages/live-share/src/index.ts b/packages/live-share/src/index.ts index 60acde0bd..bdb7834f1 100644 --- a/packages/live-share/src/index.ts +++ b/packages/live-share/src/index.ts @@ -3,20 +3,5 @@ * Licensed under the Microsoft Live Share SDK License. */ -export * from "./AzureLiveShareClient"; -export * from "./AzureLiveShareHost"; -export * from "./errors"; -export * from "./HostTimestampProvider"; -export * from "./interfaces"; -export * from "./LiveEvent"; -export * from "./LiveFollowMode"; -export * from "./LivePresence"; -export * from "./LivePresenceUser"; -export * from "./LiveShareClient"; -export * from "./LiveState"; -export * from "./LiveTelemetryLogger"; -export * from "./LiveTimer"; -export * from "./LocalTimestampProvider"; -export * from "./TestLiveShareHost"; -export * from "./TimeInterval"; -export * from "./TimestampProvider"; +export * from "./index.public"; +export * from "./index.internal"; diff --git a/packages/live-share/src/internals/BaseLiveShareClient.ts b/packages/live-share/src/internals/BaseLiveShareClient.ts index 4efa8e76e..294883610 100644 --- a/packages/live-share/src/internals/BaseLiveShareClient.ts +++ b/packages/live-share/src/internals/BaseLiveShareClient.ts @@ -132,7 +132,7 @@ export abstract class BaseLiveShareClient { * @throws error if you are using a legacy container created prior to Live Share version 2.0.0 or greater. */ public async getDDS< - T extends IFluidLoadable = FluidObject & IFluidLoadable + T extends IFluidLoadable = FluidObject & IFluidLoadable, >( objectKey: string, objectClass: SharedObjectKind, diff --git a/packages/live-share/src/internals/ContainerSynchronizer.ts b/packages/live-share/src/internals/ContainerSynchronizer.ts index 9274c3030..26ce2c162 100644 --- a/packages/live-share/src/internals/ContainerSynchronizer.ts +++ b/packages/live-share/src/internals/ContainerSynchronizer.ts @@ -296,9 +296,9 @@ export class ContainerSynchronizer { handlers.shouldUpdateTimestampPeriodically ? this._liveRuntime.getTimestamp() : evtType === - ObjectSynchronizerEvents.connect - ? 0 - : state.timestamp, + ObjectSynchronizerEvents.connect + ? 0 + : state.timestamp, }; continue; } diff --git a/packages/live-share/src/internals/DynamicObjectManager.ts b/packages/live-share/src/internals/DynamicObjectManager.ts index 0426f96a7..951f23b09 100644 --- a/packages/live-share/src/internals/DynamicObjectManager.ts +++ b/packages/live-share/src/internals/DynamicObjectManager.ts @@ -111,7 +111,7 @@ export class DynamicObjectManagerClass extends LiveDataObject { * @returns the DDS and whether or not it was created locally */ public async getDDS< - T extends IFluidLoadable = FluidObject & IFluidLoadable + T extends IFluidLoadable = FluidObject & IFluidLoadable, >( key: string, objectClass: SharedObjectKind, @@ -144,7 +144,7 @@ export class DynamicObjectManagerClass extends LiveDataObject { * @returns existing DDS in the _dynamicObjectsMap or undefined if it does not exist */ private async internalGetDDS< - T extends FluidObject = FluidObject & IFluidLoadable + T extends FluidObject = FluidObject & IFluidLoadable, >(key: string): Promise { // Check if we already have the DDS / get DDS promise in memory const ddsInMemory = this._dynamicObjectsMap.get(key); @@ -170,7 +170,7 @@ export class DynamicObjectManagerClass extends LiveDataObject { * @returns the DDS and whether or not it was created locally */ private async loadDDSWithConsensus< - T extends IFluidLoadable = FluidObject & IFluidLoadable + T extends IFluidLoadable = FluidObject & IFluidLoadable, >( key: string, localDDS: T diff --git a/packages/live-share/src/internals/LiveDataObject.ts b/packages/live-share/src/internals/LiveDataObject.ts index c41f03291..8ffd42939 100644 --- a/packages/live-share/src/internals/LiveDataObject.ts +++ b/packages/live-share/src/internals/LiveDataObject.ts @@ -17,7 +17,7 @@ import { waitUntilConnected } from "./utils"; * Extends Fluid's DataObject class. Intended for use with Live Share custom DDS's that rely on a `ILiveShareHost`. */ export abstract class LiveDataObject< - I extends DataObjectTypes = DataObjectTypes + I extends DataObjectTypes = DataObjectTypes, > extends DataObject { /** * @hidden diff --git a/packages/live-share/src/internals/schema-injection-utils.ts b/packages/live-share/src/internals/schema-injection-utils.ts index 10b433f1d..03e956d2d 100644 --- a/packages/live-share/src/internals/schema-injection-utils.ts +++ b/packages/live-share/src/internals/schema-injection-utils.ts @@ -115,7 +115,7 @@ function isLiveDataObject(value: any): value is typeof LiveDataObject { * Create a new class extending LiveDataObject to inject in _liveRuntime */ function getLiveDataObjectProxyClassInternal< - I extends DataObjectTypes = DataObjectTypes + I extends DataObjectTypes = DataObjectTypes, >( BaseClass: typeof LiveDataObject, runtime: LiveShareRuntime diff --git a/packages/live-share/src/internals/test/LiveEventScope.spec.ts b/packages/live-share/src/internals/test/LiveEventScope.spec.ts index fa54d54ef..e8ab6be16 100644 --- a/packages/live-share/src/internals/test/LiveEventScope.spec.ts +++ b/packages/live-share/src/internals/test/LiveEventScope.spec.ts @@ -5,7 +5,7 @@ import { strict as assert } from "assert"; import { LiveEventScope } from "../LiveEventScope"; -import { UserMeetingRole } from "../../interfaces"; +import { ILiveEvent, UserMeetingRole } from "../../interfaces"; import { MockRuntimeSignaler } from "../mock/MockRuntimeSignaler"; import { MockRoleVerifier } from "../mock/MockRoleVerifier"; import { MockTimestampProvider } from "../mock/MockTimestampProvider"; @@ -82,7 +82,8 @@ describe("LiveEventScope", () => { signalers.localRuntime, localLiveRuntime ); - const handler = (evt, local) => triggered++; + const handler = (evt: ILiveEvent, local: boolean) => + triggered++; localScope.onEvent("test", handler); const remoteScope = new LiveEventScope( @@ -151,7 +152,7 @@ describe("LiveEventScope", () => { try { await localScope.sendEvent("test", {}); assert(false, "Event should not have been sent"); - } catch (err) { + } catch (err: any) { assert( err?.message.includes( `The local user doesn't have a role of ["Organizer"]` diff --git a/packages/live-share/src/test/LiveFollowMode.spec.ts b/packages/live-share/src/test/LiveFollowMode.spec.ts index 9b1a9fa4f..caeb322a1 100644 --- a/packages/live-share/src/test/LiveFollowMode.spec.ts +++ b/packages/live-share/src/test/LiveFollowMode.spec.ts @@ -18,7 +18,10 @@ import { import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; import { MockLiveShareRuntime } from "../internals/mock/MockLiveShareRuntime"; import { LivePresenceUser } from "../LivePresenceUser"; -import { describeCompat } from "@live-share-private/test-utils"; +import { + describeCompat, + ITestObjectProviderOptions, +} from "@live-share-private/test-utils"; import { waitForDelay } from "../internals/utils"; import { Deferred } from "../internals/Deferred"; @@ -26,7 +29,11 @@ interface TestFollowData { page: string; } -async function getObjects(getTestObjectProvider) { +async function getObjects( + getTestObjectProvider: ( + options?: ITestObjectProviderOptions + ) => ITestObjectProvider +) { // Temporarily change update interval let liveRuntime1 = new MockLiveShareRuntime(false); let liveRuntime2 = new MockLiveShareRuntime(false); @@ -46,16 +53,14 @@ async function getObjects(getTestObjectProvider) { let container1 = await provider.createContainer( ObjectProxy1.factory as fluidEntryPoint ); - let object1 = await getContainerEntryPointBackCompat( - container1 - ); + let object1 = + await getContainerEntryPointBackCompat(container1); let container2 = await provider.loadContainer( ObjectProxy2.factory as fluidEntryPoint ); - let object2 = await getContainerEntryPointBackCompat( - container2 - ); + let object2 = + await getContainerEntryPointBackCompat(container2); // need to be connected to send signals if (!container1.connect) { diff --git a/packages/live-share/src/test/LivePresence.spec.ts b/packages/live-share/src/test/LivePresence.spec.ts index 702b71220..b6f5454d4 100644 --- a/packages/live-share/src/test/LivePresence.spec.ts +++ b/packages/live-share/src/test/LivePresence.spec.ts @@ -24,18 +24,34 @@ import { import { TestLiveShareHost } from "../TestLiveShareHost"; import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; import { MockLiveShareRuntime } from "../internals/mock/MockLiveShareRuntime"; -import { describeCompat } from "@live-share-private/test-utils"; - -class TestLivePresence< - TData extends object = object +import { + describeCompat, + ITestObjectProviderOptions, +} from "@live-share-private/test-utils"; +import { SharedObjectKind } from "fluid-framework"; +import { createDataObjectKind } from "@fluidframework/aqueduct/internal"; + +class TestLivePresenceClass< + TData extends object = object, > extends LivePresenceClass { public async clientId(): Promise { return await this.waitUntilConnected(); } } +export type TestLivePresence = + TestLivePresenceClass; + +// eslint-disable-next-line no-redeclare +export const TestLivePresence = (() => { + const kind = createDataObjectKind(TestLivePresenceClass); + return kind as typeof kind & SharedObjectKind>; +})(); + async function getObjects( - getTestObjectProvider, + getTestObjectProvider: ( + options?: ITestObjectProviderOptions + ) => ITestObjectProvider, updateInterval: number = 10000, object2canSendBackgroundUpdates = true, customHost?: ILiveShareHost @@ -64,16 +80,18 @@ async function getObjects( let container1 = await provider.createContainer( ObjectProxy1.factory as fluidEntryPoint ); - let object1 = await getContainerEntryPointBackCompat< - TestLivePresence<{ foo: string }> - >(container1); + let object1 = + await getContainerEntryPointBackCompat< + TestLivePresence<{ foo: string }> + >(container1); let container2 = await provider.loadContainer( ObjectProxy2.factory as fluidEntryPoint ); - let object2 = await getContainerEntryPointBackCompat< - TestLivePresence<{ foo: string }> - >(container2); + let object2 = + await getContainerEntryPointBackCompat< + TestLivePresence<{ foo: string }> + >(container2); // need to be connected to send signals if (!container1.connect) { await new Promise((resolve) => container1.once("connected", resolve)); diff --git a/packages/live-share/src/test/LiveState.spec.ts b/packages/live-share/src/test/LiveState.spec.ts index 606fc5431..734342bce 100644 --- a/packages/live-share/src/test/LiveState.spec.ts +++ b/packages/live-share/src/test/LiveState.spec.ts @@ -13,14 +13,21 @@ import { LiveState } from "../LiveState"; import { Deferred } from "../internals/Deferred"; import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; import { MockLiveShareRuntime } from "../internals/mock/MockLiveShareRuntime"; -import { describeCompat } from "@live-share-private/test-utils"; +import { + describeCompat, + ITestObjectProviderOptions, +} from "@live-share-private/test-utils"; interface TestStateData { status: string; value: string; } -async function getObjects(getTestObjectProvider) { +async function getObjects( + getTestObjectProvider: ( + options?: ITestObjectProviderOptions + ) => ITestObjectProvider +) { // Temporarily change update interval let liveRuntime1 = new MockLiveShareRuntime(false); let liveRuntime2 = new MockLiveShareRuntime(false); @@ -42,16 +49,18 @@ async function getObjects(getTestObjectProvider) { let container1 = await provider.createContainer( ObjectProxy1.factory as fluidEntryPoint ); - let object1 = await getContainerEntryPointBackCompat< - LiveState - >(container1); + let object1 = + await getContainerEntryPointBackCompat>( + container1 + ); let container2 = await provider.loadContainer( ObjectProxy2.factory as fluidEntryPoint ); - let object2 = await getContainerEntryPointBackCompat< - LiveState - >(container2); + let object2 = + await getContainerEntryPointBackCompat>( + container2 + ); // need to be connected to send signals if (!container1.connect) { await new Promise((resolve) => container1.once("connected", resolve)); diff --git a/packages/live-share/src/test/LiveTimer.spec.ts b/packages/live-share/src/test/LiveTimer.spec.ts index 87f693433..6072c1851 100644 --- a/packages/live-share/src/test/LiveTimer.spec.ts +++ b/packages/live-share/src/test/LiveTimer.spec.ts @@ -13,11 +13,16 @@ import { LiveTimer } from "../LiveTimer"; import { Deferred } from "../internals/Deferred"; import { getLiveDataObjectKind } from "../internals/schema-injection-utils"; import { MockLiveShareRuntime } from "../internals/mock/MockLiveShareRuntime"; -import { describeCompat } from "@live-share-private/test-utils"; +import { + describeCompat, + ITestObjectProviderOptions, +} from "@live-share-private/test-utils"; import { waitForDelay } from "../internals/utils"; async function getObjects( - getTestObjectProvider, + getTestObjectProvider: ( + options?: ITestObjectProviderOptions + ) => ITestObjectProvider, updateInterval: number = 10000 ) { // Temporarily change update interval diff --git a/packages/live-share/src/test/utils.spec.ts b/packages/live-share/src/test/utils.spec.ts index 121d79fda..baf2b6577 100644 --- a/packages/live-share/src/test/utils.spec.ts +++ b/packages/live-share/src/test/utils.spec.ts @@ -4,7 +4,6 @@ import { timeoutRequest, waitForResult, } from "../internals/utils"; -import { Deferred } from "../internals/Deferred"; describe("timeoutRequest", function () { it("should return the result when request is successful within timeout", async () => { diff --git a/packages/live-share/tsconfig.build.json b/packages/live-share/tsconfig.build.json index 0a07c839b..003d37c15 100644 --- a/packages/live-share/tsconfig.build.json +++ b/packages/live-share/tsconfig.build.json @@ -1,6 +1,6 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - }, - } \ No newline at end of file + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ + } +} diff --git a/packages/live-share/tsconfig.cjs.json b/packages/live-share/tsconfig.cjs.json new file mode 100644 index 000000000..bb0bb38f1 --- /dev/null +++ b/packages/live-share/tsconfig.cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./bin/cjs", + "module": "CommonJS", + "moduleResolution": null, + "downlevelIteration": true + } +} diff --git a/packages/live-share/tsconfig.json b/packages/live-share/tsconfig.json index e1f304e87..aab489592 100644 --- a/packages/live-share/tsconfig.json +++ b/packages/live-share/tsconfig.json @@ -1,71 +1,67 @@ { - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - "lib": ["es2020","DOM"], /* Specify library files to be included in the compilation. */ - "allowJs": false, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./bin", /* Redirect output structure to the directory. */ - // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ - }, - "include": ["src/**/*.ts"], - "exclude": ["**/*.spec.ts"] + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "Preserve" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "moduleResolution": "bundler", + "lib": [ + "es2020", + "DOM" + ] /* Specify library files to be included in the compilation. */, + "allowJs": false /* Allow javascript files to be compiled. */, + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./bin/esm" /* Redirect output structure to the directory. */, + // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "files": ["src/index.ts"] } diff --git a/packages/live-share/tsconfig.test.json b/packages/live-share/tsconfig.test.json new file mode 100644 index 000000000..59cee05ef --- /dev/null +++ b/packages/live-share/tsconfig.test.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.cjs.json", + "compilerOptions": { + "outDir": "./bin/test", + "types": ["mocha", "node"] + }, + "include": ["src/**/*"], + "exclude": [] +} diff --git a/samples/javascript/01.dice-roller/package.json b/samples/javascript/01.dice-roller/package.json index 155a2e20b..76cec0d16 100644 --- a/samples/javascript/01.dice-roller/package.json +++ b/samples/javascript/01.dice-roller/package.json @@ -15,7 +15,7 @@ "start-https": "start-server-and-test start:server 7070 start:https", "start": "start-server-and-test start:server 7070 start:client", "doctor": "eslint src/**/*.{j,t}s{,x} --fix --no-error-on-unmatched-pattern", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", @@ -24,8 +24,8 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "buffer": "^6.0.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" diff --git a/samples/javascript/02.react-video/package.json b/samples/javascript/02.react-video/package.json index c4a3a9c08..fc2f06111 100644 --- a/samples/javascript/02.react-video/package.json +++ b/samples/javascript/02.react-video/package.json @@ -1,71 +1,71 @@ { - "name": "react-video", - "private": true, - "version": "1.0.0", - "description": "Sample video app using react.", - "repository": "https://github.com/microsoft/live-share-sdk", - "license": "Microsoft", - "author": "Microsoft", - "dependencies": { - "@fluentui/react-components": "^9.18.6", - "@fluentui/react-icons": "^2.0.202", - "@fluentui/react-theme": "^9.1.5", - "@microsoft/live-share": "2.0.0-internal.5", - "@microsoft/live-share-media": "2.0.0-internal.5", - "@microsoft/teams-js": "^2.16.0", - "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^14.4.3", - "fluid-framework": "^2.0.0-rc.5.0.1", - "lodash": "^4.17.21", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router": "^6.4.2", - "react-router-dom": "^6.4.2", - "use-resize-observer": "^9.1.0", - "uuid": "^9.0.0", - "web-vitals": "^3.1.1" - }, - "devDependencies": { - "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", - "@vitejs/plugin-react": "^3.0.1", - "chalk": "^5.2.0", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.32.2", - "jest-puppeteer": "^6.1.0", - "prettier": "^2.8.8", - "puppeteer": "^20.1.0", - "rimraf": "^2.6.3", - "start-server-and-test": "^2.0.0", - "vite": "^4.0.4" - }, - "scripts": { - "build": "vite build", - "clean": "npx shx rm -rf build", - "doctor": "eslint src/**/*.{j,t}s{,x} --fix --no-error-on-unmatched-pattern", - "start": "start-server-and-test start:server 7070 start:client", - "start-https": "start-server-and-test start:server 7070 start:https", - "start:client": "vite", - "start:server": "npx tinylicious@latest", - "start:https": "vite --config vite.https-config.js", - "test": "jest", - "preview": "vite preview", - "postinstall":"node ../../../ensure-packages-built.js" - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } + "name": "react-video", + "private": true, + "version": "1.0.0", + "description": "Sample video app using react.", + "repository": "https://github.com/microsoft/live-share-sdk", + "license": "Microsoft", + "author": "Microsoft", + "dependencies": { + "@fluentui/react-components": "^9.18.6", + "@fluentui/react-icons": "^2.0.202", + "@fluentui/react-theme": "^9.1.5", + "@microsoft/live-share": "2.0.0-internal.5", + "@microsoft/live-share-media": "2.0.0-internal.5", + "@microsoft/teams-js": "^2.16.0", + "@testing-library/jest-dom": "^5.16.5", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^14.4.3", + "fluid-framework": "^2.0.0-rc.5.0.1", + "lodash": "^4.17.21", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router": "^6.4.2", + "react-router-dom": "^6.4.2", + "use-resize-observer": "^9.1.0", + "uuid": "^9.0.0", + "web-vitals": "^3.1.1" + }, + "devDependencies": { + "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", + "@vitejs/plugin-react": "^3.0.1", + "chalk": "^5.2.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-react": "^7.34.4", + "jest-puppeteer": "^6.1.0", + "prettier": "^3.3.3", + "puppeteer": "^20.1.0", + "rimraf": "^2.6.3", + "start-server-and-test": "^2.0.0", + "vite": "^4.0.4" + }, + "scripts": { + "build": "vite build", + "clean": "npx shx rm -rf build", + "doctor": "eslint src/**/*.{j,t}s{,x} --fix --no-error-on-unmatched-pattern", + "start": "start-server-and-test start:server 7070 start:client", + "start-https": "start-server-and-test start:server 7070 start:https", + "start:client": "vite", + "start:server": "npx tinylicious@latest", + "start:https": "vite --config vite.https-config.js", + "test": "jest", + "preview": "vite preview", + "postinstall": "node ../../../ensure-packages-built.js" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } } diff --git a/samples/javascript/02.react-video/public/manifest.json b/samples/javascript/02.react-video/public/manifest.json index 080d6c77a..f01493ff0 100644 --- a/samples/javascript/02.react-video/public/manifest.json +++ b/samples/javascript/02.react-video/public/manifest.json @@ -1,25 +1,25 @@ { - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" } diff --git a/samples/javascript/02.react-video/src/App.jsx b/samples/javascript/02.react-video/src/App.jsx index 756bd70d8..d4c82304d 100644 --- a/samples/javascript/02.react-video/src/App.jsx +++ b/samples/javascript/02.react-video/src/App.jsx @@ -59,17 +59,17 @@ export default function App() { break; } }); - microsoftTeams.app.registerOnThemeChangeHandler(function ( - theme - ) { - if (theme == "dark") { - setTeamsTheme(teamsDarkTheme); - } else if (theme == "contrast") { - setTeamsTheme(teamsHighContrastTheme); - } else { - setTeamsTheme(teamsLightTheme); + microsoftTeams.app.registerOnThemeChangeHandler( + function (theme) { + if (theme == "dark") { + setTeamsTheme(teamsDarkTheme); + } else if (theme == "contrast") { + setTeamsTheme(teamsHighContrastTheme); + } else { + setTeamsTheme(teamsLightTheme); + } } - }); + ); } else { setInitialized(true); } diff --git a/samples/javascript/03.live-canvas-demo/package.json b/samples/javascript/03.live-canvas-demo/package.json index 365c01764..034d5fc49 100644 --- a/samples/javascript/03.live-canvas-demo/package.json +++ b/samples/javascript/03.live-canvas-demo/package.json @@ -14,7 +14,7 @@ "start:https": "vite --config vite.https-config.js", "start:server": "npx tinylicious@latest", "doctor": "eslint src/**/*.{j,t}s{,x} --fix --no-error-on-unmatched-pattern", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", @@ -24,8 +24,8 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "buffer": "^6.0.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" diff --git a/samples/javascript/04.live-share-react/package.json b/samples/javascript/04.live-share-react/package.json index c997e259f..aa8414438 100644 --- a/samples/javascript/04.live-share-react/package.json +++ b/samples/javascript/04.live-share-react/package.json @@ -29,14 +29,14 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "dotenv-cli": "^7.2.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" }, @@ -49,7 +49,7 @@ "start:client": "vite", "start:https": "vite --config vite.https-config.js", "start:server": "npx tinylicious@latest", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "browserslist": { "production": [ diff --git a/samples/javascript/04.live-share-react/public/manifest.json b/samples/javascript/04.live-share-react/public/manifest.json index 080d6c77a..f01493ff0 100644 --- a/samples/javascript/04.live-share-react/public/manifest.json +++ b/samples/javascript/04.live-share-react/public/manifest.json @@ -1,25 +1,25 @@ { - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" } diff --git a/samples/javascript/05.dice-roller-turbo/package.json b/samples/javascript/05.dice-roller-turbo/package.json index 0364b038e..5c136ac41 100644 --- a/samples/javascript/05.dice-roller-turbo/package.json +++ b/samples/javascript/05.dice-roller-turbo/package.json @@ -14,7 +14,7 @@ "start:server": "npx tinylicious@latest", "start": "start-server-and-test start:server 7070 start:client", "doctor": "eslint src/**/*.{j,t}s{,x} --fix --no-error-on-unmatched-pattern", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", @@ -24,8 +24,8 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "buffer": "^6.0.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" diff --git a/samples/javascript/21.react-media-template/package.json b/samples/javascript/21.react-media-template/package.json index d9a80c0f8..81f704288 100644 --- a/samples/javascript/21.react-media-template/package.json +++ b/samples/javascript/21.react-media-template/package.json @@ -25,17 +25,17 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", "dotenv-cli": "^7.2.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" }, @@ -48,7 +48,7 @@ "start:client": "vite", "start:https": "vite --config vite.https-config.js", "start:server": "npx tinylicious@latest", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "browserslist": { "production": [ diff --git a/samples/javascript/21.react-media-template/public/manifest.json b/samples/javascript/21.react-media-template/public/manifest.json index 080d6c77a..f01493ff0 100644 --- a/samples/javascript/21.react-media-template/public/manifest.json +++ b/samples/javascript/21.react-media-template/public/manifest.json @@ -1,25 +1,25 @@ { - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" } diff --git a/samples/javascript/21.react-media-template/src/App.jsx b/samples/javascript/21.react-media-template/src/App.jsx index 1e9fba89f..8ea227b04 100644 --- a/samples/javascript/21.react-media-template/src/App.jsx +++ b/samples/javascript/21.react-media-template/src/App.jsx @@ -51,17 +51,17 @@ export default function App() { setTeamsTheme(teamsLightTheme); break; } - microsoftTeams.app.registerOnThemeChangeHandler(function ( - theme - ) { - if (theme == "dark") { - setTeamsTheme(teamsDarkTheme); - } else if (theme == "contrast") { - setTeamsTheme(teamsHighContrastTheme); - } else { - setTeamsTheme(teamsLightTheme); + microsoftTeams.app.registerOnThemeChangeHandler( + function (theme) { + if (theme == "dark") { + setTeamsTheme(teamsDarkTheme); + } else if (theme == "contrast") { + setTeamsTheme(teamsHighContrastTheme); + } else { + setTeamsTheme(teamsLightTheme); + } } - }); + ); } catch (error) { console.error(error); } diff --git a/samples/javascript/22.react-agile-poker/package.json b/samples/javascript/22.react-agile-poker/package.json index 9261a9eeb..e4fa51c13 100644 --- a/samples/javascript/22.react-agile-poker/package.json +++ b/samples/javascript/22.react-agile-poker/package.json @@ -24,13 +24,13 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" }, @@ -44,7 +44,7 @@ "build": "vite build", "preview": "vite preview", "doctor": "eslint src/**/*.{j,t}s{,x} --fix --no-error-on-unmatched-pattern", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "browserslist": { "production": [ diff --git a/samples/javascript/22.react-agile-poker/public/manifest.json b/samples/javascript/22.react-agile-poker/public/manifest.json index 080d6c77a..f01493ff0 100644 --- a/samples/javascript/22.react-agile-poker/public/manifest.json +++ b/samples/javascript/22.react-agile-poker/public/manifest.json @@ -1,25 +1,25 @@ { - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" } diff --git a/samples/javascript/22.react-agile-poker/src/App.jsx b/samples/javascript/22.react-agile-poker/src/App.jsx index 3acb70945..b3b174763 100644 --- a/samples/javascript/22.react-agile-poker/src/App.jsx +++ b/samples/javascript/22.react-agile-poker/src/App.jsx @@ -47,15 +47,15 @@ export default function App() { setWebTheme(webLightTheme); break; } - microsoftTeams.app.registerOnThemeChangeHandler(function ( - theme - ) { - if (theme == "dark") { - setWebTheme(webDarkTheme); - } else { - setWebTheme(webLightTheme); + microsoftTeams.app.registerOnThemeChangeHandler( + function (theme) { + if (theme == "dark") { + setWebTheme(webDarkTheme); + } else { + setWebTheme(webLightTheme); + } } - }); + ); } catch (error) { console.error(error); } diff --git a/samples/javascript/23.react-live-canvas/package.json b/samples/javascript/23.react-live-canvas/package.json index db2bbde0a..883cc765a 100644 --- a/samples/javascript/23.react-live-canvas/package.json +++ b/samples/javascript/23.react-live-canvas/package.json @@ -21,13 +21,13 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" }, @@ -41,7 +41,7 @@ "doctor": "eslint src/**/*.{j,t}s{,x} --fix --no-error-on-unmatched-pattern", "start:server": "npx tinylicious@latest", "start": "start-server-and-test start:server 7070 start:client", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "browserslist": { "production": [ diff --git a/samples/javascript/23.react-live-canvas/public/manifest.json b/samples/javascript/23.react-live-canvas/public/manifest.json index 080d6c77a..f01493ff0 100644 --- a/samples/javascript/23.react-live-canvas/public/manifest.json +++ b/samples/javascript/23.react-live-canvas/public/manifest.json @@ -1,25 +1,25 @@ { - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" } diff --git a/samples/typescript/01.dice-roller/package.json b/samples/typescript/01.dice-roller/package.json index 5c30d947a..a8d1b06fa 100644 --- a/samples/typescript/01.dice-roller/package.json +++ b/samples/typescript/01.dice-roller/package.json @@ -15,7 +15,7 @@ "start-https": "start-server-and-test start:server 7070 start:https", "start": "start-server-and-test start:server 7070 start:client", "doctor": "eslint src/**/*.{j,t}s{,x} --fix --no-error-on-unmatched-pattern", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", @@ -24,8 +24,8 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "buffer": "^6.0.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" diff --git a/samples/typescript/01.dice-roller/tsconfig.json b/samples/typescript/01.dice-roller/tsconfig.json index 06541f3b8..554a2eaa2 100644 --- a/samples/typescript/01.dice-roller/tsconfig.json +++ b/samples/typescript/01.dice-roller/tsconfig.json @@ -1,74 +1,74 @@ { "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - "lib": ["es2020","DOM"], /* Specify library files to be included in the compilation. */ - "allowJs": false, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./bin", /* Redirect output structure to the directory. */ - // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "lib": [ + "es2020", + "DOM" + ] /* Specify library files to be included in the compilation. */, + "allowJs": false /* Allow javascript files to be compiled. */, + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./bin" /* Redirect output structure to the directory. */, + // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ }, "exclude": ["build", "dist", "node_modules"], - "files": [ - "src/app.ts" - ] - } - \ No newline at end of file + "files": ["src/app.ts"] +} diff --git a/samples/typescript/03.live-canvas-demo/package.json b/samples/typescript/03.live-canvas-demo/package.json index 342769234..1da49e820 100644 --- a/samples/typescript/03.live-canvas-demo/package.json +++ b/samples/typescript/03.live-canvas-demo/package.json @@ -14,7 +14,7 @@ "start:https": "vite --config vite.https-config.js", "start:server": "npx tinylicious@latest", "doctor": "eslint src/**/*.{j,t}s{,x} --fix --no-error-on-unmatched-pattern", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", @@ -24,8 +24,8 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "buffer": "^6.0.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" diff --git a/samples/typescript/03.live-canvas-demo/tsconfig.json b/samples/typescript/03.live-canvas-demo/tsconfig.json index 06541f3b8..554a2eaa2 100644 --- a/samples/typescript/03.live-canvas-demo/tsconfig.json +++ b/samples/typescript/03.live-canvas-demo/tsconfig.json @@ -1,74 +1,74 @@ { "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - "lib": ["es2020","DOM"], /* Specify library files to be included in the compilation. */ - "allowJs": false, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./bin", /* Redirect output structure to the directory. */ - // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "lib": [ + "es2020", + "DOM" + ] /* Specify library files to be included in the compilation. */, + "allowJs": false /* Allow javascript files to be compiled. */, + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./bin" /* Redirect output structure to the directory. */, + // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ }, "exclude": ["build", "dist", "node_modules"], - "files": [ - "src/app.ts" - ] - } - \ No newline at end of file + "files": ["src/app.ts"] +} diff --git a/samples/typescript/04.live-share-react/package.json b/samples/typescript/04.live-share-react/package.json index ebbd4d646..6ecc2eb90 100644 --- a/samples/typescript/04.live-share-react/package.json +++ b/samples/typescript/04.live-share-react/package.json @@ -29,14 +29,14 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "dotenv-cli": "^7.2.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" }, @@ -49,7 +49,7 @@ "start:client": "vite", "start:https": "vite --config vite.https-config.ts", "start:server": "npx tinylicious@latest", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "browserslist": { "production": [ diff --git a/samples/typescript/04.live-share-react/public/manifest.json b/samples/typescript/04.live-share-react/public/manifest.json index 080d6c77a..f01493ff0 100644 --- a/samples/typescript/04.live-share-react/public/manifest.json +++ b/samples/typescript/04.live-share-react/public/manifest.json @@ -1,25 +1,25 @@ { - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" } diff --git a/samples/typescript/04.live-share-react/tsconfig.json b/samples/typescript/04.live-share-react/tsconfig.json index 30e5160ba..15d2ac6b0 100644 --- a/samples/typescript/04.live-share-react/tsconfig.json +++ b/samples/typescript/04.live-share-react/tsconfig.json @@ -1,9 +1,9 @@ { - "extends": "../../../packages/live-share/tsconfig.json", - "include": ["./src"], - "compilerOptions": { - "jsx": "react-jsx", - "outDir": "/tmp" - }, - "files": ["src/main.tsx"] + "extends": "../../../packages/live-share/tsconfig.json", + "include": ["./src"], + "compilerOptions": { + "jsx": "react-jsx", + "outDir": "/tmp" + }, + "files": ["src/main.tsx"] } diff --git a/samples/typescript/05.dice-roller-turbo/package.json b/samples/typescript/05.dice-roller-turbo/package.json index 4003eeba3..7ae02ecf8 100644 --- a/samples/typescript/05.dice-roller-turbo/package.json +++ b/samples/typescript/05.dice-roller-turbo/package.json @@ -14,7 +14,7 @@ "start:server": "npx tinylicious@latest", "start": "start-server-and-test start:server 7070 start:client", "doctor": "eslint src/**/*.{j,t}s{,x} --fix --no-error-on-unmatched-pattern", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "dependencies": { "@microsoft/live-share": "2.0.0-internal.5", @@ -24,8 +24,8 @@ }, "devDependencies": { "@fluidframework/test-runtime-utils": "^2.0.0-rc.5.0.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "buffer": "^6.0.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" diff --git a/samples/typescript/05.dice-roller-turbo/tsconfig.json b/samples/typescript/05.dice-roller-turbo/tsconfig.json index 06541f3b8..554a2eaa2 100644 --- a/samples/typescript/05.dice-roller-turbo/tsconfig.json +++ b/samples/typescript/05.dice-roller-turbo/tsconfig.json @@ -1,74 +1,74 @@ { "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - "lib": ["es2020","DOM"], /* Specify library files to be included in the compilation. */ - "allowJs": false, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./bin", /* Redirect output structure to the directory. */ - // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "lib": [ + "es2020", + "DOM" + ] /* Specify library files to be included in the compilation. */, + "allowJs": false /* Allow javascript files to be compiled. */, + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./bin" /* Redirect output structure to the directory. */, + // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ }, "exclude": ["build", "dist", "node_modules"], - "files": [ - "src/app.ts" - ] - } - \ No newline at end of file + "files": ["src/app.ts"] +} diff --git a/samples/typescript/06.presence-avatars/package.json b/samples/typescript/06.presence-avatars/package.json index 60b8abf32..c4f6ae105 100644 --- a/samples/typescript/06.presence-avatars/package.json +++ b/samples/typescript/06.presence-avatars/package.json @@ -29,14 +29,14 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "dotenv-cli": "^7.2.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" }, @@ -49,7 +49,7 @@ "start:client": "vite", "start:https": "vite --config vite.https-config.ts", "start:server": "npx tinylicious@latest", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "browserslist": { "production": [ diff --git a/samples/typescript/06.presence-avatars/public/manifest.json b/samples/typescript/06.presence-avatars/public/manifest.json index 080d6c77a..f01493ff0 100644 --- a/samples/typescript/06.presence-avatars/public/manifest.json +++ b/samples/typescript/06.presence-avatars/public/manifest.json @@ -1,25 +1,25 @@ { - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" } diff --git a/samples/typescript/06.presence-avatars/tsconfig.json b/samples/typescript/06.presence-avatars/tsconfig.json index 30e5160ba..15d2ac6b0 100644 --- a/samples/typescript/06.presence-avatars/tsconfig.json +++ b/samples/typescript/06.presence-avatars/tsconfig.json @@ -1,9 +1,9 @@ { - "extends": "../../../packages/live-share/tsconfig.json", - "include": ["./src"], - "compilerOptions": { - "jsx": "react-jsx", - "outDir": "/tmp" - }, - "files": ["src/main.tsx"] + "extends": "../../../packages/live-share/tsconfig.json", + "include": ["./src"], + "compilerOptions": { + "jsx": "react-jsx", + "outDir": "/tmp" + }, + "files": ["src/main.tsx"] } diff --git a/samples/typescript/07.countdown-timer/package.json b/samples/typescript/07.countdown-timer/package.json index d5aedcf4e..616a118de 100644 --- a/samples/typescript/07.countdown-timer/package.json +++ b/samples/typescript/07.countdown-timer/package.json @@ -29,14 +29,14 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "dotenv-cli": "^7.2.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" }, @@ -49,7 +49,7 @@ "start:client": "vite", "start:https": "vite --config vite.https-config.ts", "start:server": "npx tinylicious@latest", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "browserslist": { "production": [ diff --git a/samples/typescript/07.countdown-timer/public/manifest.json b/samples/typescript/07.countdown-timer/public/manifest.json index 080d6c77a..f01493ff0 100644 --- a/samples/typescript/07.countdown-timer/public/manifest.json +++ b/samples/typescript/07.countdown-timer/public/manifest.json @@ -1,25 +1,25 @@ { - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" } diff --git a/samples/typescript/07.countdown-timer/src/utils/time-utils.ts b/samples/typescript/07.countdown-timer/src/utils/time-utils.ts index 63016114c..b4cf719fb 100644 --- a/samples/typescript/07.countdown-timer/src/utils/time-utils.ts +++ b/samples/typescript/07.countdown-timer/src/utils/time-utils.ts @@ -21,7 +21,7 @@ export function millisecondsToTime(ms: number): [number, number, number] { export function timeToMilliseconds([hours, minutes, seconds]: [ number, number, - number + number, ]): number { return (hours * 3600 + minutes * 60 + seconds) * 1000; } diff --git a/samples/typescript/07.countdown-timer/tsconfig.json b/samples/typescript/07.countdown-timer/tsconfig.json index 30e5160ba..15d2ac6b0 100644 --- a/samples/typescript/07.countdown-timer/tsconfig.json +++ b/samples/typescript/07.countdown-timer/tsconfig.json @@ -1,9 +1,9 @@ { - "extends": "../../../packages/live-share/tsconfig.json", - "include": ["./src"], - "compilerOptions": { - "jsx": "react-jsx", - "outDir": "/tmp" - }, - "files": ["src/main.tsx"] + "extends": "../../../packages/live-share/tsconfig.json", + "include": ["./src"], + "compilerOptions": { + "jsx": "react-jsx", + "outDir": "/tmp" + }, + "files": ["src/main.tsx"] } diff --git a/samples/typescript/08.3d-model/package.json b/samples/typescript/08.3d-model/package.json index f0ed871cf..ffa20d181 100644 --- a/samples/typescript/08.3d-model/package.json +++ b/samples/typescript/08.3d-model/package.json @@ -34,14 +34,14 @@ "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", "@types/babylonjs": "^2.4.1", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "dotenv-cli": "^7.2.1", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.3", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" }, diff --git a/samples/typescript/08.3d-model/public/manifest.json b/samples/typescript/08.3d-model/public/manifest.json index 080d6c77a..f01493ff0 100644 --- a/samples/typescript/08.3d-model/public/manifest.json +++ b/samples/typescript/08.3d-model/public/manifest.json @@ -1,25 +1,25 @@ { - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" } diff --git a/samples/typescript/08.3d-model/src/utils/time-utils.ts b/samples/typescript/08.3d-model/src/utils/time-utils.ts index 63016114c..b4cf719fb 100644 --- a/samples/typescript/08.3d-model/src/utils/time-utils.ts +++ b/samples/typescript/08.3d-model/src/utils/time-utils.ts @@ -21,7 +21,7 @@ export function millisecondsToTime(ms: number): [number, number, number] { export function timeToMilliseconds([hours, minutes, seconds]: [ number, number, - number + number, ]): number { return (hours * 3600 + minutes * 60 + seconds) * 1000; } diff --git a/samples/typescript/08.3d-model/tsconfig.json b/samples/typescript/08.3d-model/tsconfig.json index 30e5160ba..15d2ac6b0 100644 --- a/samples/typescript/08.3d-model/tsconfig.json +++ b/samples/typescript/08.3d-model/tsconfig.json @@ -1,9 +1,9 @@ { - "extends": "../../../packages/live-share/tsconfig.json", - "include": ["./src"], - "compilerOptions": { - "jsx": "react-jsx", - "outDir": "/tmp" - }, - "files": ["src/main.tsx"] + "extends": "../../../packages/live-share/tsconfig.json", + "include": ["./src"], + "compilerOptions": { + "jsx": "react-jsx", + "outDir": "/tmp" + }, + "files": ["src/main.tsx"] } diff --git a/samples/typescript/21.react-media-template/package.json b/samples/typescript/21.react-media-template/package.json index e956209d6..71ed8958d 100644 --- a/samples/typescript/21.react-media-template/package.json +++ b/samples/typescript/21.react-media-template/package.json @@ -31,16 +31,16 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^3.0.1", "dotenv-cli": "^7.2.1", "esbuild": "^0.17.18", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-react": "^7.34.4", + "eslint-plugin-react-hooks": "^4.6.2", "start-server-and-test": "^2.0.0", "vite": "^4.0.4" }, @@ -54,7 +54,7 @@ "start:https": "vite --config vite.https-config.ts", "start:server": "npx tinylicious@latest", "start": "start-server-and-test start:server 7070 start:client", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "browserslist": { "production": [ diff --git a/samples/typescript/21.react-media-template/tsconfig.json b/samples/typescript/21.react-media-template/tsconfig.json index 985f805c1..a58c5a0d6 100644 --- a/samples/typescript/21.react-media-template/tsconfig.json +++ b/samples/typescript/21.react-media-template/tsconfig.json @@ -1,23 +1,24 @@ { - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - "lib": ["es2020","DOM"], /* Specify library files to be included in the compilation. */ - "allowJs": false, /* Allow javascript files to be compiled. */ - "jsx": "react-jsx", - "declaration": true, /* Generates corresponding '.d.ts' file. */ - "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ - "outDir": "./dist", /* Redirect output structure to the directory. */ - "strict": true, /* Enable all strict type-checking options. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ - }, - "include": ["./src"], - "exclude": ["build", "dist", "node_modules"], - "files": [ - "src/index.tsx" - ] + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "lib": [ + "es2020", + "DOM" + ] /* Specify library files to be included in the compilation. */, + "allowJs": false /* Allow javascript files to be compiled. */, + "jsx": "react-jsx", + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + "outDir": "./dist" /* Redirect output structure to the directory. */, + "strict": true /* Enable all strict type-checking options. */, + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "include": ["./src"], + "exclude": ["build", "dist", "node_modules"], + "files": ["src/index.tsx"] } diff --git a/samples/typescript/31.live-canvas-tests/package.json b/samples/typescript/31.live-canvas-tests/package.json index 2947631bd..cbe7d5e39 100644 --- a/samples/typescript/31.live-canvas-tests/package.json +++ b/samples/typescript/31.live-canvas-tests/package.json @@ -13,7 +13,7 @@ "start": "start-server-and-test start:server 7070 start:client", "test": "jest", "doctor": "eslint src/**/*.{j,t}s{,x} --fix --no-error-on-unmatched-pattern", - "postinstall":"node ../../../ensure-packages-built.js" + "postinstall": "node ../../../ensure-packages-built.js" }, "dependencies": { "@fluidframework/azure-client": "^2.0.0-rc.5.0.1", From e5821ee1f709f668acf7f5434808f64a084e5d4e Mon Sep 17 00:00:00 2001 From: Ryan Bliss Date: Mon, 22 Jul 2024 12:31:14 -0700 Subject: [PATCH 19/40] React SDK `useSharedTree` and `useTreeNode` (#783) Co-authored-by: James Hunt --- package-lock.json | 1 - .../src/core/InkingManager-constants.ts | 48 + .../src/core/InkingManager-interfaces.ts | 103 ++ .../src/core/InkingManager.ts | 381 +------ .../src/core/LiveCanvas-interfaces.ts | 19 + .../live-share-canvas/src/core/LiveCanvas.ts | 951 +++++++----------- .../src/core/LiveCanvasTreeSchema.ts | 133 +++ .../live-share-canvas/src/core/LiveCursor.ts | 73 ++ packages/live-share-canvas/src/core/Stroke.ts | 30 +- packages/live-share-canvas/src/core/index.ts | 5 + .../src/core/internals/BuiltInLiveCursor.ts | 160 +++ .../src/core/internals/ChangeLog.ts | 48 + .../src/core/internals/EphemeralCanvas.ts | 29 + .../LiveCanvas-constants-internal.ts | 5 + .../LiveCanvas-interfaces-internal.ts | 10 + .../internals/LiveCanvas-types-internal.ts | 17 + .../internals/LiveCanvasStorageSolution.ts | 38 + .../internals/LivePointerInputProvider.ts | 57 ++ .../src/core/internals/LiveStroke.ts | 73 ++ .../internals/SharedMapStorageSolution.ts | 85 ++ .../internals/SharedTreeStorageSolution.ts | 192 ++++ .../src/core/internals/WetStroke.ts | 163 +++ .../src/core/internals/index.ts | 13 + .../src/core/internals/undo-redo-utils.ts | 87 ++ .../src/core/internals/utils.ts | 17 +- .../src/live-hooks/useLiveCanvas.ts | 182 ++-- .../src/live-hooks/useLiveFollowMode.ts | 8 +- .../src/live-hooks/useLivePresence.ts | 8 +- .../src/shared-hooks/index.ts | 1 + .../internals/tree-node-constants.ts | 2 + .../shared-hooks/internals/tree-node-types.ts | 26 + .../shared-hooks/internals/tree-node-utils.ts | 269 +++++ .../src/shared-hooks/useDynamicDDS.ts | 31 +- .../src/shared-hooks/useSharedMap.ts | 51 +- .../src/shared-hooks/useSharedTree.ts | 116 ++- .../src/shared-hooks/useTreeNode.ts | 147 +++ .../live-share-react/src/types/PropTypes.ts | 57 ++ .../live-share-react/src/types/ResultTypes.ts | 54 +- .../src/internals/BaseLiveShareClient.ts | 1 - .../src/components/ExampleLiveCanvas.jsx | 12 +- .../04.live-share-react/src/App.tsx | 5 +- .../src/components/ExampleLiveCanvas.tsx | 147 +-- .../src/components/ExampleLiveState.tsx | 143 ++- .../src/components/ExampleSharedMap.tsx | 8 +- .../components/ExampleSharedTree-schema.ts | 170 ++++ .../src/components/ExampleSharedTree.tsx | 143 +++ .../components/internals/NavigationBar.tsx | 40 + .../components/internals/flex/FlexColumn.tsx | 73 ++ .../components/internals/flex/FlexItem.tsx | 26 + .../src/components/internals/flex/FlexRow.tsx | 79 ++ .../components/internals/flex/flex-styles.ts | 360 +++++++ .../src/components/internals/flex/index.tsx | 4 + .../04.live-share-react/src/index.css | 155 +-- .../src/pages/AzureAutoJoin.tsx | 23 +- .../src/pages/LiveShareAutoJoin.tsx | 29 +- .../src/pages/LiveShareManualJoin.tsx | 31 +- .../04.live-share-react/tsconfig.json | 3 +- .../src/components/LiveCanvasOverlay.tsx | 13 +- .../08.3d-model/src/pages/TabContent.tsx | 11 +- 59 files changed, 3819 insertions(+), 1347 deletions(-) create mode 100644 packages/live-share-canvas/src/core/InkingManager-constants.ts create mode 100644 packages/live-share-canvas/src/core/InkingManager-interfaces.ts create mode 100644 packages/live-share-canvas/src/core/LiveCanvas-interfaces.ts create mode 100644 packages/live-share-canvas/src/core/LiveCanvasTreeSchema.ts create mode 100644 packages/live-share-canvas/src/core/LiveCursor.ts create mode 100644 packages/live-share-canvas/src/core/internals/BuiltInLiveCursor.ts create mode 100644 packages/live-share-canvas/src/core/internals/ChangeLog.ts create mode 100644 packages/live-share-canvas/src/core/internals/EphemeralCanvas.ts create mode 100644 packages/live-share-canvas/src/core/internals/LiveCanvas-constants-internal.ts create mode 100644 packages/live-share-canvas/src/core/internals/LiveCanvas-interfaces-internal.ts create mode 100644 packages/live-share-canvas/src/core/internals/LiveCanvas-types-internal.ts create mode 100644 packages/live-share-canvas/src/core/internals/LiveCanvasStorageSolution.ts create mode 100644 packages/live-share-canvas/src/core/internals/LivePointerInputProvider.ts create mode 100644 packages/live-share-canvas/src/core/internals/LiveStroke.ts create mode 100644 packages/live-share-canvas/src/core/internals/SharedMapStorageSolution.ts create mode 100644 packages/live-share-canvas/src/core/internals/SharedTreeStorageSolution.ts create mode 100644 packages/live-share-canvas/src/core/internals/WetStroke.ts create mode 100644 packages/live-share-canvas/src/core/internals/undo-redo-utils.ts create mode 100644 packages/live-share-react/src/shared-hooks/internals/tree-node-constants.ts create mode 100644 packages/live-share-react/src/shared-hooks/internals/tree-node-types.ts create mode 100644 packages/live-share-react/src/shared-hooks/internals/tree-node-utils.ts create mode 100644 packages/live-share-react/src/shared-hooks/useTreeNode.ts create mode 100644 samples/typescript/04.live-share-react/src/components/ExampleSharedTree-schema.ts create mode 100644 samples/typescript/04.live-share-react/src/components/ExampleSharedTree.tsx create mode 100644 samples/typescript/04.live-share-react/src/components/internals/NavigationBar.tsx create mode 100644 samples/typescript/04.live-share-react/src/components/internals/flex/FlexColumn.tsx create mode 100644 samples/typescript/04.live-share-react/src/components/internals/flex/FlexItem.tsx create mode 100644 samples/typescript/04.live-share-react/src/components/internals/flex/FlexRow.tsx create mode 100644 samples/typescript/04.live-share-react/src/components/internals/flex/flex-styles.ts create mode 100644 samples/typescript/04.live-share-react/src/components/internals/flex/index.tsx diff --git a/package-lock.json b/package-lock.json index 243b006d1..ba4c32a53 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13003,7 +13003,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true, - "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/packages/live-share-canvas/src/core/InkingManager-constants.ts b/packages/live-share-canvas/src/core/InkingManager-constants.ts new file mode 100644 index 000000000..26f71f0fc --- /dev/null +++ b/packages/live-share-canvas/src/core/InkingManager-constants.ts @@ -0,0 +1,48 @@ +/** + * Defines available inking tools. + */ +export enum InkingTool { + pen = 0, + laserPointer = 1, + highlighter = 2, + eraser = 3, + pointEraser = 4, + line = 5, +} + +/** + * The event emitted by InkingManager when the canvas is cleared. + */ +export const ClearEvent = "Clear"; +/** + * The event emitted by InkingManager when a stroked is added. + */ +export const StrokesAddedEvent = "StrokesAdded"; +/** + * The event emitted by InkingManager when a stroked is removed. + */ +export const StrokesRemovedEvent = "StrokesRemoved"; + +/** + * The event emitted by InkingManager when the pointer moves over the canvas. + */ +export const PointerMovedEvent = "PointerMoved"; + +/** + * The event emitted by InkingManager when a stroke begins. + */ +export const BeginStrokeEvent = "BeginStroke"; + +/** + * Why the stroke state ended + */ +export enum StrokeEndState { + ended, + cancelled, +} + +/** + * The event emitted by InkingManager when points are added to + * the current stroke. + */ +export const AddPointsEvent = "AddPoints"; diff --git a/packages/live-share-canvas/src/core/InkingManager-interfaces.ts b/packages/live-share-canvas/src/core/InkingManager-interfaces.ts new file mode 100644 index 000000000..008a062b8 --- /dev/null +++ b/packages/live-share-canvas/src/core/InkingManager-interfaces.ts @@ -0,0 +1,103 @@ +import { IBrush } from "./Brush"; +import { IPoint, IPointerPoint } from "./Geometry"; +import { StrokeEndState } from "./InkingManager-constants"; +import { IStroke, StrokeMode, StrokeType } from "./Stroke"; + +/** + * Defines the arguments of the PointerMovedEvent. + */ +export interface IPointerMovedEventArgs { + position?: IPoint; +} + +/** + * Defines the arguments of the BeginStrokeEvent. + */ +export interface IBeginStrokeEventArgs { + /** + * The id of the new stroke. + */ + strokeId: string; + /** + * The type of the new stroke. + */ + type: StrokeType; + /** + * The stroke's mode. + */ + mode: StrokeMode; + /** + * The brush of the new stroke. + */ + brush: IBrush; + /** + * The starting point of the new stroke. + */ + startPoint: IPointerPoint; +} + +/** + * Defines the arguments of the AddPointsEvent. + */ +export interface IAddPointsEventArgs { + /** + * The id of the stroke a point has been added to. + */ + strokeId: string; + /** + * The points that were added to the stroke. + */ + points: IPointerPoint[]; + /** + * Indicates whether the stroke has ended (i.e. if the points + * were the last ones.) + */ + endState?: StrokeEndState; +} + +/** + * Defines a "wet" stroke, i.e. a stroke as it's being drawn. + */ +export interface IWetStroke extends IStroke { + /** + * The type of the wet stroke. + */ + readonly type: StrokeType; + /** + * The wet stroke's mode. + */ + readonly mode: StrokeMode; + /** + * Straightens a point so that the line it forms with the previous + * point is straight (either horizontal or vertical). + * @param p The point to update + */ + straighten(p: IPointerPoint): IPointerPoint; + /** + * Ends the wet stroke. + * @param p Optional. The points at which the stroke ends. If not specified, + * the stroke ends at the last added point. + */ + end(): void; + /** + * Cancels the wet stroke. + */ + cancel(): void; +} + +/** + * Defines options used by `InkingManager.addStroke` and `InkingManager.removeStroke`. + */ +export interface IAddRemoveStrokeOptions { + /** + * Optional. Indicates if the canvas must be fully re-rendered at once after the + * stroke has been added or removed. Defaults to `false`. + */ + forceReRender?: boolean; + /** + * Optional. Indicates whether the add or remove operation should be added to the + * change log, which in turn will lead to `StrokeAddedEvent` or `StrokeRemovedEvent` + * begin emitted. Defaults to `true`. + */ + addToChangeLog?: boolean; +} diff --git a/packages/live-share-canvas/src/core/InkingManager.ts b/packages/live-share-canvas/src/core/InkingManager.ts index f82ef0c83..db522f04f 100644 --- a/packages/live-share-canvas/src/core/InkingManager.ts +++ b/packages/live-share-canvas/src/core/InkingManager.ts @@ -46,24 +46,33 @@ import { import { makeRectangle, generateUniqueId, - computeEndArrow, isPointInsideRectangle, computeQuadPath, renderQuadPathToSVG, + ChangeLog, + EphemeralCanvas, + WetLineStroke, + WetStroke, + WetFreehandStroke, } from "./internals"; import { IEvent } from "@fluidframework/core-interfaces"; - -/** - * Defines available inking tools. - */ -export enum InkingTool { - pen = 0, - laserPointer = 1, - highlighter = 2, - eraser = 3, - pointEraser = 4, - line = 5, -} +import { + AddPointsEvent, + BeginStrokeEvent, + ClearEvent, + InkingTool, + PointerMovedEvent, + StrokeEndState, + StrokesAddedEvent, + StrokesRemovedEvent, +} from "./InkingManager-constants"; +import { + IAddPointsEventArgs, + IAddRemoveStrokeOptions, + IBeginStrokeEventArgs, + IPointerMovedEventArgs, + IWetStroke, +} from "./InkingManager-interfaces"; type StrokeBasedTool = | InkingTool.pen @@ -71,351 +80,6 @@ type StrokeBasedTool = | InkingTool.laserPointer | InkingTool.highlighter; -/** - * The event emitted by InkingManager when the canvas is cleared. - */ -export const ClearEvent = "Clear"; -/** - * The event emitted by InkingManager when a stroked is added. - */ -export const StrokesAddedEvent = "StrokesAdded"; -/** - * The event emitted by InkingManager when a stroked is removed. - */ -export const StrokesRemovedEvent = "StrokesRemoved"; - -/** - * Defines the arguments of the PointerMovedEvent. - */ -export interface IPointerMovedEventArgs { - position?: IPoint; -} - -/** - * The event emitted by InkingManager when the pointer moves over the canvas. - */ -export const PointerMovedEvent = "PointerMoved"; - -/** - * Defines the arguments of the BeginStrokeEvent. - */ -export interface IBeginStrokeEventArgs { - /** - * The id of the new stroke. - */ - strokeId: string; - /** - * The type of the new stroke. - */ - type: StrokeType; - /** - * The stroke's mode. - */ - mode: StrokeMode; - /** - * The brush of the new stroke. - */ - brush: IBrush; - /** - * The starting point of the new stroke. - */ - startPoint: IPointerPoint; -} - -/** - * The event emitted by InkingManager when a stroke begins. - */ -export const BeginStrokeEvent = "BeginStroke"; - -export enum StrokeEndState { - ended, - cancelled, -} - -/** - * Defines the arguments of the AddPointsEvent. - */ -export interface IAddPointsEventArgs { - /** - * The id of the stroke a point has been added to. - */ - strokeId: string; - /** - * The points that were added to the stroke. - */ - points: IPointerPoint[]; - /** - * Indicates whether the stroke has ended (i.e. if the points - * were the last ones.) - */ - endState?: StrokeEndState; -} - -/** - * The event emitted by InkingManager when points are added to - * the current stroke. - */ -export const AddPointsEvent = "AddPoints"; - -/** - * Defines a "wet" stroke, i.e. a stroke as it's being drawn. - */ -export interface IWetStroke extends IStroke { - /** - * The type of the wet stroke. - */ - readonly type: StrokeType; - /** - * The wet stroke's mode. - */ - readonly mode: StrokeMode; - /** - * Straightens a point so that the line it forms with the previous - * point is straight (either horizontal or vertical). - * @param p The point to update - */ - straighten(p: IPointerPoint): IPointerPoint; - /** - * Ends the wet stroke. - * @param p Optional. The points at which the stroke ends. If not specified, - * the stroke ends at the last added point. - */ - end(): void; - /** - * Cancels the wet stroke. - */ - cancel(): void; -} - -class ChangeLog { - private _addedStrokes: Map = new Map(); - private _removedStrokes: Set = new Set(); - - public clear() { - this._addedStrokes.clear(); - this._removedStrokes.clear(); - } - - public mergeChanges(changes: ChangeLog) { - for (let id of changes._removedStrokes) { - if (!this._addedStrokes.delete(id)) { - this._removedStrokes.add(id); - } - } - - changes._addedStrokes.forEach((value: IStroke) => { - this._addedStrokes.set(value.id, value); - }); - } - - public addStroke(stroke: IStroke) { - this._addedStrokes.set(stroke.id, stroke); - } - - public removeStroke(id: string) { - this._removedStrokes.add(id); - } - - public getRemovedStrokes(): string[] { - return Array.from(this._removedStrokes); - } - - public getAddedStrokes(): IStroke[] { - return Array.from(this._addedStrokes.values()); - } - - get hasChanges(): boolean { - return this._addedStrokes.size > 0 || this._removedStrokes.size > 0; - } -} - -class EphemeralCanvas extends DryCanvas { - private _removalTimeout?: number; - - constructor( - readonly clientId: string, - parentElement?: HTMLElement - ) { - super(parentElement); - } - - scheduleRemoval(onRemoveCallback: (canvas: EphemeralCanvas) => void) { - if (this._removalTimeout) { - window.clearTimeout(this._removalTimeout); - } - - this._removalTimeout = window.setTimeout(() => { - this.fadeOut(); - - onRemoveCallback(this); - }, InkingManager.ephemeralCanvasRemovalDelay); - } -} - -/** - * Defines options used by `InkingManager.addStroke` and `InkingManager.removeStroke`. - */ -export interface IAddRemoveStrokeOptions { - /** - * Optional. Indicates if the canvas must be fully re-rendered at once after the - * stroke has been added or removed. Defaults to `false`. - */ - forceReRender?: boolean; - /** - * Optional. Indicates whether the add or remove operation should be added to the - * change log, which in turn will lead to `StrokeAddedEvent` or `StrokeRemovedEvent` - * begin emitted. Defaults to `true`. - */ - addToChangeLog?: boolean; -} - -abstract class WetStroke extends Stroke implements IWetStroke { - protected notifyStrokeEnded(isCancelled: boolean) { - if (this.onStrokeEnded) { - this.onStrokeEnded(this, isCancelled); - } - } - - onStrokeEnded?: (sender: WetStroke, isCancelled: boolean) => void; - - constructor( - private _canvas: InkingCanvas, - readonly type: StrokeType, - readonly mode: StrokeMode, - options?: IStrokeCreationOptions - ) { - super(options); - - this._canvas.setBrush(this.brush); - } - - straighten(p: IPointerPoint): IPointerPoint { - return p; - } - - end() { - this._canvas.removeFromDOM(); - this._canvas.endStroke(); - - this.notifyStrokeEnded(false); - } - - cancel() { - this._canvas.removeFromDOM(); - this._canvas.cancelStroke(); - - this.notifyStrokeEnded(true); - } - - get canvas(): InkingCanvas { - return this._canvas; - } -} - -class WetFreehandStroke extends WetStroke { - addPoints(...points: IPointerPoint[]): boolean { - const currentLength = this.length; - const result = super.addPoints(...points); - - if (result) { - let startIndex = currentLength; - - if (startIndex === 0) { - this.canvas.beginStroke(this.getPointAt(0)); - - startIndex = 1; - } - - for (let i = startIndex; i < this.length; i++) { - this.canvas.addPoint(this.getPointAt(i)); - } - } - - return result; - } - - end() { - if (this.length > 1 && this.brush.endArrow === "open") { - const penultimatePoint = this.getPointAt(this.length - 2); - const lastPoint = this.getPointAt(this.length - 1); - - const arrowPath = computeEndArrow(penultimatePoint, lastPoint); - - for (let i = 0; i < arrowPath.length; i++) { - const p = { ...arrowPath[i], pressure: lastPoint.pressure }; - - this.addPoint(p); - } - } - - super.end(); - } -} - -class WetLineStroke extends WetStroke { - straighten(p: IPointerPoint): IPointerPoint { - const result = { ...p }; - - if (this.length > 0) { - const firstPoint = this.getPointAt(0); - - if ( - Math.abs(result.x - firstPoint.x) > - Math.abs(result.y - firstPoint.y) - ) { - result.y = firstPoint.y; - } else { - result.x = firstPoint.x; - } - } - - return result; - } - - addPoints(...points: IPointerPoint[]): boolean { - if (this.length === 0) { - this.addPoint(points[0]); - - if (points.length > 1) { - this.addPoint(points[points.length - 1]); - } - } else { - const firstPoint = this.getPointAt(0); - - this.clear(); - - this.addPoint(firstPoint); - this.addPoint(points[points.length - 1]); - } - - this.canvas.cancelStroke(); - this.canvas.beginStroke(this.getPointAt(0)); - - if (this.length > 1) { - this.canvas.addPoint(this.getPointAt(1)); - - if (this.brush.endArrow === "open") { - const arrowPath = computeEndArrow( - this.getPointAt(0), - this.getPointAt(1) - ); - - for (let i = 0; i < arrowPath.length; i++) { - const p = { - ...arrowPath[i], - pressure: this.getPointAt(1).pressure, - }; - - this.addPoint(p); - this.canvas.addPoint(p); - } - } - } - - return true; - } -} - /** * Events emitted by the `InkingManager` class. */ @@ -1215,6 +879,7 @@ export class InkingManager extends TypedEventEmitter { brush: rawStroke.brush, points: rawStroke.points, clientId: InkingManager.localClientId, + version: 1, }); this.addStroke(stroke); diff --git a/packages/live-share-canvas/src/core/LiveCanvas-interfaces.ts b/packages/live-share-canvas/src/core/LiveCanvas-interfaces.ts new file mode 100644 index 000000000..bdb313332 --- /dev/null +++ b/packages/live-share-canvas/src/core/LiveCanvas-interfaces.ts @@ -0,0 +1,19 @@ +/** + * Encapsulates information about a user that is okay to be sent through events. + */ +export interface IEventUserInfo { + /** + * Optional. The URI to the user's picture. + */ + pictureUri?: string; +} + +/** + * Encapsulates information about a user. + */ +export interface IUserInfo extends IEventUserInfo { + /** + * Optional. The user's display name. + */ + displayName?: string; +} diff --git a/packages/live-share-canvas/src/core/LiveCanvas.ts b/packages/live-share-canvas/src/core/LiveCanvas.ts index 6cd233bcb..2e1865afa 100644 --- a/packages/live-share-canvas/src/core/LiveCanvas.ts +++ b/packages/live-share-canvas/src/core/LiveCanvas.ts @@ -8,36 +8,17 @@ import { createDataObjectKind, } from "@fluidframework/aqueduct/internal"; import { IFluidHandle } from "@fluidframework/core-interfaces"; -import { IValueChanged, SharedMap } from "@fluidframework/map/internal"; -import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions"; -import { - AddPointsEvent, - BeginStrokeEvent, - ClearEvent, - IAddPointsEventArgs, - IAddRemoveStrokeOptions, - IBeginStrokeEventArgs, - InkingManager, - IPointerMovedEventArgs, - IWetStroke, - PointerMovedEvent, - StrokeEndState, - StrokesAddedEvent, - StrokesRemovedEvent, -} from "./InkingManager"; -import { - IPointerPoint, - getDistanceBetweenPoints, - IPoint, - IRect, - expandRect, -} from "./Geometry"; -import { IStroke, Stroke, StrokeType } from "./Stroke"; +import { SharedMap } from "@fluidframework/map/internal"; +import { InkingManager } from "./InkingManager"; +import { IPoint } from "./Geometry"; +import { IStroke, StrokeType } from "./Stroke"; import { UserMeetingRole, LiveTelemetryLogger, ILiveEvent, LiveDataObjectInitializeState, + ExpectedError, + UnexpectedError, } from "@microsoft/live-share"; import { LiveEventScope, @@ -45,339 +26,47 @@ import { DynamicObjectRegistry, LiveDataObject, } from "@microsoft/live-share/internal"; -import { IBrush } from "./Brush"; -import { BasicColors, IColor, lightenColor, toCssRgbaColor } from "./Colors"; -import { TelemetryEvents } from "./internals"; import { - IMulticastEvent, - IPointerEvent, - IPointerMoveEvent, - InputProvider, -} from "../input"; -import { SharedObjectKind } from "fluid-framework"; - -enum InkingEventNames { - pointerMove = "PointerMove", - beginWetStroke = "BeginWetStroke", - addWetStrokePoints = "AddWetStrokePoint", -} - -/** - * Encapsulates information about a user that is okay to be sent through events. - */ -interface IEventUserInfo { - /** - * Optional. The URI to the user's picture. - */ - pictureUri?: string; -} - -/** - * Encapsulates information about a user. - */ -export interface IUserInfo extends IEventUserInfo { - /** - * Optional. The user's display name. - */ - displayName?: string; -} - -type IPointerMovedEvent = IPointerMovedEventArgs & IEventUserInfo; - -interface ISharedCursor { - isCursorShared?: boolean; -} - -type IBeginWetStrokeEvent = IBeginStrokeEventArgs & - ISharedCursor & - IEventUserInfo; - -type IAddWetStrokePointsEvent = IAddPointsEventArgs & - ISharedCursor & - IEventUserInfo; - -class LiveStroke { - /** - * Configures the delay before wet stroke events are emitted, to greatly reduce the - * number of events emitted and improve performance. - */ - private static readonly wetStrokeEventsStreamDelay = 60; - - private _points: IPointerPoint[] = []; - private _processTimeout?: number; - - private process() { - if (this.type !== StrokeType.persistent) { - return; - } - - let index = 0; - - while (index + 2 < this._points.length) { - const p1 = this._points[index]; - const p2 = this._points[index + 1]; - const p3 = this._points[index + 2]; - - const p1p2 = getDistanceBetweenPoints(p1, p2); - const p2p3 = getDistanceBetweenPoints(p2, p3); - const p1p3 = getDistanceBetweenPoints(p1, p3); - - const threshold = (p1p2 + p2p3) * (100 / p1p3); - - if (threshold < this.simplificationThreshold) { - this._points.splice(index + 1, 1); - } else { - index++; - } - } - } - - endState?: StrokeEndState; - - constructor( - readonly id: string, - readonly type: StrokeType, - readonly brush: IBrush, - readonly simplificationThreshold: number - ) {} - - get points(): IPointerPoint[] { - return this._points; - } - - clear() { - this._points = []; - } - - scheduleProcessing(onProcessedCallback: (stroke: LiveStroke) => void) { - if (this._processTimeout === undefined) { - this._processTimeout = window.setTimeout(() => { - this.process(); - - this._processTimeout = undefined; - - onProcessedCallback(this); - }, LiveStroke.wetStrokeEventsStreamDelay); - } - } -} - -/** - * Represents a live (shared) cursor. Applications that want to customize - * the appearance of cursors on the screen should extend `LiveCursor` and - * override its `renderedElement` property to return a custom HTML element. - */ -export abstract class LiveCursor { - private _renderedElement?: HTMLElement; - private _lastUpdated = Date.now(); - private _userInfo?: IUserInfo; - - protected abstract internalRender(): HTMLElement; - - /** - * Initializes a new instance of `LiveCursor`. - * @param info The cursor info. - */ - constructor( - public readonly clientId: string, - _userInfo?: IUserInfo - ) { - this._userInfo = _userInfo; - } - - /** - * Updates the position of the cursor. - * @param position The new position of the cursor. - */ - setPosition(position: IPoint) { - this._lastUpdated = Date.now(); - - if (this.renderedElement) { - this.renderedElement.style.left = position.x + "px"; - this.renderedElement.style.top = position.y + "px"; - } - } - - /** - * @hidden - * Overwrite the user info used for rendering displayName. - * Normally should let LiveCanvas set this value, which comes from the host and is trusted. - * Values set here will be overwritten by values from the host - */ - public set userInfo(value: IUserInfo | undefined) { - this._userInfo = value; - } - - public get userInfo(): IUserInfo | undefined { - return this._userInfo; - } - - /** - * Gets the amount of time the cursor has been idle. - */ - get idleTime() { - return Date.now() - this._lastUpdated; - } - - /** - * Returns an HTML element representing the cursor. Applications - * that extend `LiveCursor` must override `get renderedElement` - * to return a custom built HTML element. - */ - get renderedElement(): HTMLElement { - if (!this._renderedElement) { - this._renderedElement = this.internalRender(); - } - - return this._renderedElement; - } -} - -interface ICursorColor { - readonly backgroundColor: IColor; - readonly textColor: IColor; -} - -class BuiltInLiveCursor extends LiveCursor { - private static cursorColors: ICursorColor[] = [ - { backgroundColor: BasicColors.red, textColor: BasicColors.white }, - { backgroundColor: BasicColors.green, textColor: BasicColors.white }, - { backgroundColor: BasicColors.blue, textColor: BasicColors.white }, - { backgroundColor: BasicColors.purple, textColor: BasicColors.white }, - { backgroundColor: BasicColors.magenta, textColor: BasicColors.white }, - { backgroundColor: BasicColors.violet, textColor: BasicColors.white }, - { backgroundColor: BasicColors.gray, textColor: BasicColors.white }, - { backgroundColor: BasicColors.silver, textColor: BasicColors.black }, - ]; - private static currentColorIndex = 0; - - private _color: ICursorColor; - private _arrowPathData?: string; - private _arrowBounds?: IRect; - - protected internalRender(): HTMLElement { - const arrowPath: IPoint[] = [ - { x: 0, y: 0 }, - { x: 10, y: 30 }, - { x: 17, y: 17 }, - { x: 30, y: 10 }, - ]; - - if (!this._arrowPathData || !this._arrowBounds) { - this._arrowPathData = ""; - - this._arrowBounds = { - left: Number.MAX_VALUE, - top: Number.MAX_VALUE, - right: Number.MIN_VALUE, - bottom: Number.MIN_VALUE, - }; - - for (let i = 0; i < arrowPath.length; i++) { - const p = arrowPath[i]; - - this._arrowBounds = expandRect(this._arrowBounds, p); - - this._arrowPathData += `${i === 0 ? "M" : "L"} ${p.x} ${p.y} `; - } - - this._arrowPathData += "Z"; - } - - const arrowWidth = this._arrowBounds.right - this._arrowBounds.left; - const arrowHeight = this._arrowBounds.bottom - this._arrowBounds.top; - const arrowStrokeWidth = 10; - - const textColor = toCssRgbaColor(this._color.textColor); - const arrowBorderColor = toCssRgbaColor( - lightenColor(this._color.backgroundColor, 80) - ); - const backgroundColor = toCssRgbaColor(this._color.backgroundColor); - - let visualTemplate = ` - - - - `; - - if (this.userInfo) { - if (this.userInfo.displayName && !this.userInfo.pictureUri) { - visualTemplate += ` -
- ${this.userInfo.displayName} -
`; - } else if (this.userInfo.pictureUri && !this.userInfo.displayName) { - visualTemplate += ` - `; - } else if (this.userInfo.pictureUri && this.userInfo.displayName) { - visualTemplate += ` -
- -
${ - this.userInfo.displayName - }
-
`; - } - } - - const template = document.createElement("template"); - template["innerHTML"] = visualTemplate; - - const element = document.createElement("div"); - element.style.position = "absolute"; - element.style.display = "flex"; - element.style.flexDirection = "row"; - - element.appendChild(template.content.cloneNode(true)); - - return element; - } - - constructor( - public clientId: string, - _userInfo?: IUserInfo - ) { - super(clientId, _userInfo); - - this._color = - BuiltInLiveCursor.cursorColors[BuiltInLiveCursor.currentColorIndex]; - - BuiltInLiveCursor.currentColorIndex++; - - if ( - BuiltInLiveCursor.currentColorIndex >= - BuiltInLiveCursor.cursorColors.length - ) { - BuiltInLiveCursor.currentColorIndex = 0; - } - } -} + BuiltInLiveCursor, + IAddWetStrokePointsEvent, + IBeginWetStrokeEvent, + IPointerMovedEvent, + InkingEventNames, + LivePointerInputProvider, + LiveStroke, + TelemetryEvents, + LiveCanvasStorageSolution, + SharedTreeStorageSolution, + SharedMapStorageSolution, + StorageSolutionEvents, + createUndoRedoStacks, + undoRedo, +} from "./internals"; +import { ITree, SharedObjectKind, SharedTree, TreeView } from "fluid-framework"; +import { + IAddPointsEventArgs, + IAddRemoveStrokeOptions, + IBeginStrokeEventArgs, + IPointerMovedEventArgs, + IWetStroke, +} from "./InkingManager-interfaces"; +import { + AddPointsEvent, + BeginStrokeEvent, + ClearEvent, + PointerMovedEvent, + StrokeEndState, + StrokesAddedEvent, + StrokesRemovedEvent, +} from "./InkingManager-constants"; +import { IEventUserInfo, IUserInfo } from "./LiveCanvas-interfaces"; +import { LiveCursor } from "./LiveCursor"; +import type { ISharedObjectKind } from "@fluidframework/shared-object-base/internal"; +import { + LiveCanvasStrokesMap, + LiveCanvasTreeNode, + treeViewConfiguration, +} from "./LiveCanvasTreeSchema"; /** * Enables live and collaborative inking. @@ -385,6 +74,7 @@ class BuiltInLiveCursor extends LiveCursor { export class LiveCanvasClass extends LiveDataObject { private _logger?: LiveTelemetryLogger; private static readonly dryInkMapKey = "dryInk"; + private static readonly treeKey = "treeKey"; /** * In order to limit the number of points being sent over the wire, wet strokes are @@ -417,13 +107,22 @@ export class LiveCanvasClass extends LiveDataObject { public static readonly factory = new DataObjectFactory( LiveCanvasClass.TypeName, LiveCanvasClass, - [], + [ + ( + SharedTree as unknown as ISharedObjectKind & + SharedObjectKind + ).getFactory(), + ], {} ); private _inkingManager?: InkingManager; private _processingIncomingChanges = false; private _dryInkMap!: SharedMap; + private _tree?: ITree; + private _treeView?: TreeView; + private _treeUndoRedo?: undoRedo; + private _storageSolution?: LiveCanvasStorageSolution; private _wetStrokes: Map = new Map< string, IWetStroke @@ -436,9 +135,11 @@ export class LiveCanvasClass extends LiveDataObject { LiveStroke >(); private _liveCursorsMap = new Map(); - private _liveCursorsHost!: HTMLElement; + private _liveCursorsHost?: HTMLElement; private _isCursorShared: boolean = false; private _liveCursorSweepTimeout?: number; + private _storageListeners: Map = new Map(); + private _inkingManagerListeners: Map = new Map(); private liveStrokeProcessed = (liveStroke: LiveStroke) => { this.onLocalUserAllowed(async () => { @@ -467,93 +168,84 @@ export class LiveCanvasClass extends LiveDataObject { private setupWetInkProcessing(): void { // Setup outgoing events - if (this._inkingManager) { - this._inkingManager.on( - PointerMovedEvent, - (eventArgs: IPointerMovedEventArgs) => { - if (this.isCursorShared) { - this.onLocalUserAllowed(async () => { - try { - // Send a pointer moved event with an undefined - // point to indicated the cursor is not shared anymore - this._pointerMovedEventTarget.sendEvent({ - position: eventArgs.position, - pictureUri: this.getLocalUserPictureUrl(), - }); - } catch (err) { - this._logger?.sendErrorEvent( - TelemetryEvents.LiveCanvas - .PointerMovedEventError, - err - ); - } + if (!this._inkingManager) return; + const pointerEventListener = (eventArgs: IPointerMovedEventArgs) => { + if (this.isCursorShared) { + this.onLocalUserAllowed(async () => { + try { + // Send a pointer moved event with an undefined + // point to indicated the cursor is not shared anymore + this._pointerMovedEventTarget.sendEvent({ + position: eventArgs.position, + pictureUri: this.getLocalUserPictureUrl(), }); + } catch (err) { + this._logger?.sendErrorEvent( + TelemetryEvents.LiveCanvas.PointerMovedEventError, + err + ); } - } + }); + } + }; + this._inkingManager.on(PointerMovedEvent, pointerEventListener); + this._inkingManagerListeners.set( + PointerMovedEvent, + pointerEventListener + ); + const beginStrokeListener = (eventArgs: IBeginStrokeEventArgs) => { + const liveStroke = new LiveStroke( + eventArgs.strokeId, + eventArgs.type, + eventArgs.brush, + LiveCanvas.wetStrokePointSimplificationThreshold ); - this._inkingManager.on( - BeginStrokeEvent, - (eventArgs: IBeginStrokeEventArgs) => { - const liveStroke = new LiveStroke( - eventArgs.strokeId, - eventArgs.type, - eventArgs.brush, - LiveCanvas.wetStrokePointSimplificationThreshold - ); - liveStroke.points.push(eventArgs.startPoint); - - this._pendingLiveStrokes.set(liveStroke.id, liveStroke); - - this.onLocalUserAllowed(async () => { - // Send the begin wet stroke event - try { - this._beginWetStrokeEventTarget.sendEvent({ - isCursorShared: this.isCursorShared - ? true - : undefined, - pictureUri: this.getLocalUserPictureUrl(), - ...eventArgs, - }); - } catch (err) { - this._logger?.sendErrorEvent( - TelemetryEvents.LiveCanvas.BeginWetStrokeError, - err - ); - } + liveStroke.points.push(eventArgs.startPoint); + + this._pendingLiveStrokes.set(liveStroke.id, liveStroke); + + this.onLocalUserAllowed(async () => { + // Send the begin wet stroke event + try { + this._beginWetStrokeEventTarget.sendEvent({ + isCursorShared: this.isCursorShared ? true : undefined, + pictureUri: this.getLocalUserPictureUrl(), + ...eventArgs, }); - } - ); - this._inkingManager.on( - AddPointsEvent, - (eventArgs: IAddPointsEventArgs) => { - const liveStroke = this._pendingLiveStrokes.get( - eventArgs.strokeId + } catch (err) { + this._logger?.sendErrorEvent( + TelemetryEvents.LiveCanvas.BeginWetStrokeError, + err ); + } + }); + }; + this._inkingManager.on(BeginStrokeEvent, beginStrokeListener); + this._inkingManagerListeners.set(BeginStrokeEvent, beginStrokeListener); + const addPointListener = (eventArgs: IAddPointsEventArgs) => { + const liveStroke = this._pendingLiveStrokes.get(eventArgs.strokeId); + + if (liveStroke !== undefined) { + if (!eventArgs.endState && eventArgs.points.length > 0) { + liveStroke.points.push(...eventArgs.points); + } - if (liveStroke !== undefined) { - if ( - !eventArgs.endState && - eventArgs.points.length > 0 - ) { - liveStroke.points.push(...eventArgs.points); - } - - liveStroke.endState = eventArgs.endState; + liveStroke.endState = eventArgs.endState; - if (eventArgs.endState) { - this._pendingLiveStrokes.delete(eventArgs.strokeId); - } + if (eventArgs.endState) { + this._pendingLiveStrokes.delete(eventArgs.strokeId); + } - if (eventArgs.points.length > 0) { - liveStroke.scheduleProcessing( - this.liveStrokeProcessed - ); - } - } + if (eventArgs.points.length > 0) { + liveStroke.scheduleProcessing(this.liveStrokeProcessed); } - ); - } + } + }; + this._inkingManager.on(AddPointsEvent, addPointListener); + this._inkingManagerListeners.set(AddPointsEvent, addPointListener); + + if (this._pointerMovedEventTarget) return; // Setup incoming events const scope = new LiveEventScope( @@ -592,6 +284,7 @@ export class LiveCanvasClass extends LiveDataObject { clientId: evt.clientId, timeStamp: evt.timestamp, brush: evt.data.brush, + version: 1, } ); @@ -664,105 +357,143 @@ export class LiveCanvasClass extends LiveDataObject { ); } - private setupStorageProcessing(): void { + private setupStorageProcessing(node?: LiveCanvasTreeNode): void { if (this._inkingManager) { const inkingManager = this._inkingManager; + const treeNode = node ?? this._treeView?.root; + if (treeNode) { + this._storageSolution = new SharedTreeStorageSolution( + treeNode, + inkingManager + ); + } else { + this._storageSolution = new SharedMapStorageSolution( + this._dryInkMap, + inkingManager + ); + } // Setup incoming dry ink changes - this._dryInkMap.forEach((value: string) => { - const stroke = new Stroke(); - stroke.deserialize(value); - + this._storageSolution.forEach((stroke: IStroke) => { inkingManager.addStroke(stroke); }); - this._dryInkMap.on( - "valueChanged", - (changed: IValueChanged, local: boolean): void => { - this._processingIncomingChanges = true; - - try { - if (!local) { - const serializedStroke: string | undefined = - this._dryInkMap.get(changed.key); - const addRemoveOptions: IAddRemoveStrokeOptions = { - forceReRender: true, - addToChangeLog: false, - }; - - if (serializedStroke !== undefined) { - const stroke = - inkingManager.getStroke(changed.key) ?? - new Stroke(); - stroke.deserialize(serializedStroke); - - // If we received a stroke that happens to be an ongoing wet stroke, - // cancel the wet stroke so it's removed from the screen and replace - // it with the full fidelity version we just received. - const wetStroke = this._wetStrokes.get( - stroke.id - ); + const onStrokeRemovedListener = ( + strokeId: string, + local: boolean + ) => { + if (local) return; + this._processingIncomingChanges = true; + try { + const addRemoveOptions: IAddRemoveStrokeOptions = { + forceReRender: true, + addToChangeLog: false, + }; + inkingManager.removeStroke(strokeId, addRemoveOptions); + } finally { + this._processingIncomingChanges = false; + } + }; + this._storageSolution.on( + StorageSolutionEvents.strokeRemoved, + onStrokeRemovedListener + ); + this._storageListeners.set( + StorageSolutionEvents.strokeRemoved, + onStrokeRemovedListener + ); - if (wetStroke) { - wetStroke.cancel(); + const onStrokeChangedListener = ( + stroke: IStroke, + local: boolean + ): void => { + if (local) return; + this._processingIncomingChanges = true; + + try { + const addRemoveOptions: IAddRemoveStrokeOptions = { + forceReRender: true, + addToChangeLog: false, + }; + // If we received a stroke that happens to be an ongoing wet stroke, + // cancel the wet stroke so it's removed from the screen and replace + // it with the full fidelity version we just received. + const wetStroke = this._wetStrokes.get(stroke.id); - this._wetStrokes.delete(wetStroke.id); - } + if (wetStroke) { + wetStroke.cancel(); - inkingManager.addStroke( - stroke, - addRemoveOptions - ); - } else { - inkingManager.removeStroke( - changed.key, - addRemoveOptions - ); - } - } - } finally { - this._processingIncomingChanges = false; + this._wetStrokes.delete(wetStroke.id); } + + inkingManager.addStroke(stroke, addRemoveOptions); + } finally { + this._processingIncomingChanges = false; } + }; + this._storageSolution.on( + StorageSolutionEvents.strokeChanged, + onStrokeChangedListener + ); + this._storageListeners.set( + StorageSolutionEvents.strokeChanged, + onStrokeChangedListener ); - this._dryInkMap.on( - "op", - (op: ISequencedDocumentMessage, local: boolean): void => { - this._processingIncomingChanges = true; + const onStrokesClearedListener = (local: boolean): void => { + if (local) return; + this._processingIncomingChanges = true; - try { - if (!local) { - if (isClearEvent(op.contents)) { - inkingManager.clear(); - } - } - } finally { - this._processingIncomingChanges = false; - } + try { + inkingManager.clear(); + } finally { + this._processingIncomingChanges = false; } + }; + this._storageSolution.on( + StorageSolutionEvents.strokesCleared, + onStrokesClearedListener + ); + this._storageListeners.set( + StorageSolutionEvents.strokesCleared, + onStrokesClearedListener ); // Setup outgoing dry ink changes. - inkingManager.on(StrokesAddedEvent, (strokes: IStroke[]): void => { + const onStrokesAddedListener = (strokes: IStroke[]): void => { if (!this._processingIncomingChanges) { for (let stroke of strokes) { - this._dryInkMap.set(stroke.id, stroke.serialize()); + this._storageSolution?.set(stroke); } } - }); - inkingManager.on(StrokesRemovedEvent, (ids: string[]): void => { + }; + inkingManager.on(StrokesAddedEvent, onStrokesAddedListener); + this._inkingManagerListeners.set( + StrokesAddedEvent, + onStrokesAddedListener + ); + const onStrokesRemovedEventListener = (ids: string[]): void => { if (!this._processingIncomingChanges) { for (let id of ids) { - this._dryInkMap.delete(id); + this._storageSolution?.delete(id); } } - }); - inkingManager.on(ClearEvent, (): void => { + }; + inkingManager.on( + StrokesRemovedEvent, + onStrokesRemovedEventListener + ); + this._inkingManagerListeners.set( + StrokesRemovedEvent, + onStrokesRemovedEventListener + ); + const onClearEventListener = (): void => { if (!this._processingIncomingChanges) { - this._dryInkMap.clear(); + this._storageSolution?.clear(); } - }); + }; + inkingManager.on(ClearEvent, onClearEventListener); + this._inkingManagerListeners.set(ClearEvent, onClearEventListener); } } @@ -807,8 +538,8 @@ export class LiveCanvasClass extends LiveDataObject { liveCursor.userInfo = userInfo; } - if (!this._liveCursorsHost.contains(liveCursor.renderedElement)) { - this._liveCursorsHost.appendChild(liveCursor.renderedElement); + if (!this._liveCursorsHost?.contains(liveCursor.renderedElement)) { + this._liveCursorsHost?.appendChild(liveCursor.renderedElement); } this.scheduleLiveCursorSweep(); @@ -820,7 +551,7 @@ export class LiveCanvasClass extends LiveDataObject { const liveCursor = this._liveCursorsMap.get(clientId); if (liveCursor) { - if (this._liveCursorsHost.contains(liveCursor.renderedElement)) { + if (this._liveCursorsHost?.contains(liveCursor.renderedElement)) { this._liveCursorsHost.removeChild(liveCursor.renderedElement); } } @@ -854,27 +585,59 @@ export class LiveCanvasClass extends LiveDataObject { } } + private clearListeners() { + this._storageListeners.forEach((listener, key) => { + this._storageSolution?.off(key, listener as any); + }); + this._inkingManagerListeners.forEach((listener, key) => { + this._inkingManager?.off(key, listener as any); + }); + } + protected async initializingFirstTime(): Promise { this._dryInkMap = SharedMap.create( this.runtime, LiveCanvas.dryInkMapKey ); + this._tree = ( + SharedTree as unknown as ISharedObjectKind & + SharedObjectKind + ).create(this.runtime, LiveCanvas.treeKey); + const view = this._tree.viewWith(treeViewConfiguration); + view.initialize( + new LiveCanvasTreeNode({ + dryInkMap: new LiveCanvasStrokesMap([]), + }) + ); + view.dispose(); this.root.set(LiveCanvas.dryInkMapKey, this._dryInkMap.handle); + this.root.set(LiveCanvas.treeKey, this._tree.handle); } protected async hasInitialized(): Promise { - const handle = this.root.get>( + const mapHandle = this.root.get>( LiveCanvas.dryInkMapKey ); - if (handle) { - this._dryInkMap = await handle.get(); + if (mapHandle) { + this._dryInkMap = await mapHandle.get(); } else { throw new Error( `Unable to get SharedMap with key "${LiveCanvas.dryInkMapKey}"` ); } + + const treeHandle = this.root.get>( + LiveCanvas.treeKey + ); + if (treeHandle) { + // Legacy containers will not have `_tree` and will have to fall back to `_dryInkMap` + this._tree = await treeHandle.get(); + this._treeView = this._tree.viewWith(treeViewConfiguration); + this._treeUndoRedo = createUndoRedoStacks(this._treeView.events); + // TODO: listen for changes to root, pretty minor since we don't ever set it outside of the first time + } } /** @@ -895,13 +658,21 @@ export class LiveCanvasClass extends LiveDataObject { * Initializes the live inking session. * * @param inkingManager The InkingManager instance providing the drawing and events that will be synchronized across clients. + * @param allowedRoles Optional. Roles who are allowed to draw strokes + * @param node Optional. A Fluid `LiveCanvasTree` `TreeNode` instance to swap out the underlying storage solution for strokes. + * To learn more, look at Fluid's [SharedTree](https://fluidframework.com/docs/data-structures/tree/) documentation. * * @returns a void promise that resolves once complete. */ async initialize( inkingManager: InkingManager, - allowedRoles?: UserMeetingRole[] + allowedRoles?: UserMeetingRole[], + node?: LiveCanvasTreeNode ) { + // Cleanup if already + this.clearListeners(); + this._storageSolution?.dispose(); + // Update initialize state as pending this.initializeState = LiveDataObjectInitializeState.pending; @@ -915,7 +686,7 @@ export class LiveCanvasClass extends LiveDataObject { ); this._logger = new LiveTelemetryLogger(this.runtime, this.liveRuntime); - this.setupStorageProcessing(); + this.setupStorageProcessing(node); this.setupWetInkProcessing(); this._liveCursorsHost = document.createElement("div"); @@ -924,13 +695,89 @@ export class LiveCanvasClass extends LiveDataObject { this._liveCursorsHost.style.width = "100%"; this._liveCursorsHost.style.height = "100%"; this._liveCursorsHost.style.overflow = "hidden"; - inkingManager.hostElement.appendChild(this._liveCursorsHost); // Update initialize state as succeeded this.initializeState = LiveDataObjectInitializeState.succeeded; } + /** + * Changes the underlying {@link LiveCanvasTreeNode} node used for storing inking strokes. + * To learn more, look at Fluid's [SharedTree](https://fluidframework.com/docs/data-structures/tree/) documentation. + * @remarks + * There is a default `LiveCanvasTree` node that is created for each `LiveCanvas`. + * The purpose of this is to allow you to use a single `LiveCanvas` instance with an interchangable data source. + * This will not cause the default `LiveCanvasTree` node to be deleted. + */ + setTreeNode(node: LiveCanvasTreeNode) { + // Legacy containers that only have _dryInkMap are not supported + ExpectedError.assert( + !this._treeView, + "LiveCanvas:setTreeNode", + "Cannot call `setTreeNode` on a 1.0 `LiveCanvas` instance using `SharedMap`.", + 'To fix this issue, create a new Fluid container or `LiveCanvas` instance. You can also proactively check if this API is available using `LiveCanvas.ddsVersion === "2.0"`.' + ); + // Cleanup existing + this._storageSolution?.dispose(); + this.clearListeners(); + this._inkingManager?.clear(); + // Resetup storage & inking + this.setupStorageProcessing(node); + this.setupWetInkProcessing(); + } + + /** + * Undo the most recent stroke in this `LiveCanvas` instance's {@link LiveCanvasTreeNode} node. + * + * @remarks + * Only works in {@link ddsVersion} 2.0 and when using the default {@link LiveCanvasTreeNode} node as the data source. + * If you use your own `node` to {@link initialize} or {@link setTreeNode}, undo/redo must be handled via your root `TreeView`. + */ + undo() { + ExpectedError.assert( + this.ddsVersion === "2.0", + "LiveCanvas:undo", + "Cannot call `undo` on a 1.0 `LiveCanvas` instance using `SharedMap`.", + 'To fix this issue, create a new Fluid container or `LiveCanvas` instance. You can also proactively check if this API is available using `LiveCanvas.ddsVersion === "2.0"`.' + ); + UnexpectedError.assert( + !!this._treeUndoRedo, + "LiveCanvas:undo", + "`this._treeUndoRedo` is unexpectedly undefined despite `this.ddsVersion` being 2.0, which is a valid version." + ); + this._treeUndoRedo.undo(); + } + + /** + * Redo the most recent stroke in this `LiveCanvas` instance's {@link LiveCanvasTreeNode} node. + * + * @remarks + * Only works in {@link ddsVersion} 2.0 and when using the default {@link LiveCanvasTreeNode} node as the data source. + * If you use your own `node` to {@link initialize} or {@link setTreeNode}, undo/redo must be handled via your root `TreeView`. + */ + redo() { + ExpectedError.assert( + this.ddsVersion === "2.0", + "LiveCanvas:redo", + "Cannot call `redo` on a 1.0 `LiveCanvas` instance using `SharedMap`.", + 'To fix this issue, create a new Fluid container or `LiveCanvas` instance. You can also proactively check if this API is available using `LiveCanvas.ddsVersion === "2.0"`.' + ); + UnexpectedError.assert( + !!this._treeUndoRedo, + "LiveCanvas:redo", + "`this._treeUndoRedo` is unexpectedly undefined despite `this.ddsVersion` being 2.0, which is a valid version." + ); + this._treeUndoRedo.redo(); + } + + override dispose() { + this.clearListeners(); + this._treeView?.dispose(); + this._storageSolution?.dispose(); + this._treeUndoRedo?.dispose(); + super.dispose(); + } + /** * Gets the current cursor sharing status of this client. */ @@ -970,75 +817,23 @@ export class LiveCanvasClass extends LiveDataObject { } /** - * Sets the list of roles that are allowed to emit wet stroke events. + * Returns 2.0 if the `LiveCanvas` instance was created in `@microsoft/live-share-canvas` >=2.0.0. + * Otherwise, returns 1.0. + * @remarks + * Intended to know when it is safe to set the `node` prop in {@link initialize} or {@link setTreeNode}. + * Also helpful for knowing whether {@link undo} or {@link redo} will work. */ - set allowedRoles(value: UserMeetingRole[]) { - this._allowedRoles = value; - - this.setupWetInkProcessing(); + get ddsVersion(): "1.0" | "2.0" { + if (!this._treeView) { + return "1.0"; + } + return "2.0"; } } /** - * @hidden - * Decorator for InputProvider that ensures local user has correct - * roles before activating delegate input provider. + * Enables live and collaborative inking. */ -class LivePointerInputProvider extends InputProvider { - constructor( - private delegate: InputProvider, - private verifyLocalUserRoles: () => Promise - ) { - super(); - } - activate() { - this.verifyLocalUserRoles().then((allowed) => { - if (allowed) { - this.delegate.activate(); - } else { - this.delegate.deactivate(); - } - }); - } - - deactivate() { - this.delegate.deactivate(); - } - - get isActive(): boolean { - return this.delegate.isActive; - } - - get pointerDown(): IMulticastEvent { - return this.delegate.pointerDown; - } - - get pointerMove(): IMulticastEvent { - return this.delegate.pointerMove; - } - - get pointerUp(): IMulticastEvent { - return this.delegate.pointerUp; - } - - get pointerEnter(): IMulticastEvent { - return this.delegate.pointerEnter; - } - - get pointerLeave(): IMulticastEvent { - return this.delegate.pointerLeave; - } -} - -function isClearEvent(value: any): boolean { - return ( - typeof value === "object" && - typeof value.type === "string" && - // Fluid v2 emits "clear" instead of "Clear" on SharedMap.clear(), so we equalize it - value.type.toLowerCase() === ClearEvent.toLowerCase() - ); -} - export type LiveCanvas = LiveCanvasClass; // eslint-disable-next-line no-redeclare diff --git a/packages/live-share-canvas/src/core/LiveCanvasTreeSchema.ts b/packages/live-share-canvas/src/core/LiveCanvasTreeSchema.ts new file mode 100644 index 000000000..c0c9ee699 --- /dev/null +++ b/packages/live-share-canvas/src/core/LiveCanvasTreeSchema.ts @@ -0,0 +1,133 @@ +import { SchemaFactory, Tree, TreeViewConfiguration } from "fluid-framework"; +import { LiveCanvas } from "./LiveCanvas"; +import { IBrush } from "./Brush"; +import { IStroke, Stroke } from "./Stroke"; +import { IColor } from "./Colors"; + +/** + * The `SchemaFactory` used in the `SharedTree` instance of {@link LiveCanvas}. + */ +export const sf = new SchemaFactory( + "LiveCanvas-99059925-e384-44af-82ae-31c5a824cb46" +); + +/** + * `SharedTree` for {@link IColor} + */ +export class LiveCanvasColor extends sf.object("Color", { + r: sf.number, + g: sf.number, + b: sf.number, +}) {} + +/** + * `SharedTree` schema for {@link IBrush}. + */ +export class LiveCanvasBrush extends sf.object("Brush", { + type: sf.string, + color: LiveCanvasColor, + tip: sf.string, + tipSize: sf.number, + endArrow: sf.optional(sf.string), +}) {} + +/** + * `SharedTree` schema for {@link Stroke}. + */ +export class LiveCanvasStroke extends sf.object("LiveCanvasStroke", { + /** + * Unique id of stroke + */ + id: sf.string, + /** + * Version number of stroke + */ + version: sf.number, + /** + * Client id that made the stroke + */ + clientId: sf.optional(sf.string), + /** + * Timestamp the stroke was created + */ + timestamp: sf.number, + /** + * Type of brush. + * See {@link IBrush} + */ + brush: LiveCanvasBrush, + /** + * Serialized points + */ + points: sf.string, +}) { + private get serializeString(): string { + const strokeData = { + v: this.version, + id: this.id, + cId: this.clientId, + t: this.timestamp, + br: this.brush, + d: this.points, + }; + + return JSON.stringify(strokeData); + } + deserialize(existingStroke?: IStroke): IStroke { + const stroke = existingStroke ?? new Stroke(); + stroke.deserialize(this.serializeString); + return stroke; + } + + static fromStroke(stroke: IStroke): LiveCanvasStroke { + return new LiveCanvasStroke({ + id: stroke.id, + version: stroke.version, + clientId: stroke.clientId, + timestamp: stroke.timeStamp, + brush: new LiveCanvasBrush({ + type: stroke.brush.type, + color: new LiveCanvasColor({ + ...stroke.brush.color, + }), + tip: stroke.brush.tip, + tipSize: stroke.brush.tipSize, + endArrow: stroke.brush.endArrow, + }), + points: stroke.serializePoints(), + }); + } +} + +/** + * `SharedTree` schema for map of {@link LiveCanvasStroke} nodes. + */ +export class LiveCanvasStrokesMap extends sf.map( + "LiveCanvasStrokesMap", + LiveCanvasStroke +) { + /** + * Clear all strokes in the map + */ + clear() { + Tree.runTransaction(this, (node) => { + node.forEach((child) => { + node.delete(child.id); + }); + }); + } +} + +/** + * `SharedTree` schema used by {@link LiveCanvas} + */ +export class LiveCanvasTreeNode extends sf.object("LiveCanvasTree", { + dryInkMap: LiveCanvasStrokesMap, +}) {} + +/** + * @hidden + */ +export const treeViewConfiguration = new TreeViewConfiguration({ + schema: LiveCanvasTreeNode, +}); diff --git a/packages/live-share-canvas/src/core/LiveCursor.ts b/packages/live-share-canvas/src/core/LiveCursor.ts new file mode 100644 index 000000000..f0214947b --- /dev/null +++ b/packages/live-share-canvas/src/core/LiveCursor.ts @@ -0,0 +1,73 @@ +import { IPoint } from "./Geometry"; +import { IUserInfo } from "./LiveCanvas-interfaces"; + +/** + * Represents a live (shared) cursor. Applications that want to customize + * the appearance of cursors on the screen should extend `LiveCursor` and + * override its `renderedElement` property to return a custom HTML element. + */ +export abstract class LiveCursor { + private _renderedElement?: HTMLElement; + private _lastUpdated = Date.now(); + private _userInfo?: IUserInfo; + + protected abstract internalRender(): HTMLElement; + + /** + * Initializes a new instance of `LiveCursor`. + * @param info The cursor info. + */ + constructor( + public readonly clientId: string, + _userInfo?: IUserInfo + ) { + this._userInfo = _userInfo; + } + + /** + * Updates the position of the cursor. + * @param position The new position of the cursor. + */ + setPosition(position: IPoint) { + this._lastUpdated = Date.now(); + + if (this.renderedElement) { + this.renderedElement.style.left = position.x + "px"; + this.renderedElement.style.top = position.y + "px"; + } + } + + /** + * @hidden + * Overwrite the user info used for rendering displayName. + * Normally should let LiveCanvas set this value, which comes from the host and is trusted. + * Values set here will be overwritten by values from the host + */ + public set userInfo(value: IUserInfo | undefined) { + this._userInfo = value; + } + + public get userInfo(): IUserInfo | undefined { + return this._userInfo; + } + + /** + * Gets the amount of time the cursor has been idle. + */ + get idleTime() { + return Date.now() - this._lastUpdated; + } + + /** + * Returns an HTML element representing the cursor. Applications + * that extend `LiveCursor` must override `get renderedElement` + * to return a custom built HTML element. + */ + get renderedElement(): HTMLElement { + if (!this._renderedElement) { + this._renderedElement = this.internalRender(); + } + + return this._renderedElement; + } +} diff --git a/packages/live-share-canvas/src/core/Stroke.ts b/packages/live-share-canvas/src/core/Stroke.ts index f662a730c..8d6ce3bd9 100644 --- a/packages/live-share-canvas/src/core/Stroke.ts +++ b/packages/live-share-canvas/src/core/Stroke.ts @@ -152,6 +152,14 @@ export interface IStroke { * @param serializedStroke The serialized stroke. */ deserialize(serializedStroke: string): void; + /** + * Serialize points + */ + serializePoints(): string; + /** + * Version + */ + readonly version: number; /** * The id of the stroke. */ @@ -179,6 +187,7 @@ export interface IStroke { */ export interface IStrokeCreationOptions { id?: string; + version?: number; clientId?: string; timeStamp?: number; brush?: IBrush; @@ -191,11 +200,14 @@ export interface IStrokeCreationOptions { export class Stroke implements IStroke, Iterable { private static readonly coordinateSerializationPrecision = 1; private static readonly pressureSerializationPrecision = 2; + private _version: number = 1; // Version is fixed at 1 for now. If/when we evolve the structure // of a stroke, we'll update the version number and the // serialization/deserialization logic - private _version: number = 1; + get version(): number { + return this._version; + } private _brush: IBrush = { ...DefaultPenBrush }; private _points: IPointerPoint[]; @@ -218,7 +230,7 @@ export class Stroke implements IStroke, Iterable { * * @returns The serialized points. */ - private serializePoints(): string { + public serializePoints(): string { let result = ""; const coordinateMultiplier = Math.pow( @@ -321,11 +333,12 @@ export class Stroke implements IStroke, Iterable { */ constructor(options?: IStrokeCreationOptions) { const effectiveOptions: IStrokeCreationOptions = { - id: options ? options.id : undefined, - clientId: options ? options.clientId : undefined, - timeStamp: options ? options.timeStamp : undefined, - brush: options ? options.brush : undefined, - points: options ? options.points : undefined, + id: options?.id, + clientId: options?.clientId, + timeStamp: options?.timeStamp, + brush: options?.brush, + points: options?.points, + version: options?.version ?? 1, }; this._id = effectiveOptions.id ?? generateUniqueId(); @@ -499,6 +512,7 @@ export class Stroke implements IStroke, Iterable { clientId: this.clientId, timeStamp: this.timeStamp, brush: this.brush, + version: this.version, }); }; @@ -598,7 +612,7 @@ export class Stroke implements IStroke, Iterable { */ serialize(): string { const strokeData: ISerializedStrokeData = { - v: this._version, + v: this.version, id: this.id, cId: this.clientId, t: this.timeStamp, diff --git a/packages/live-share-canvas/src/core/index.ts b/packages/live-share-canvas/src/core/index.ts index d6712ce60..bde80818b 100644 --- a/packages/live-share-canvas/src/core/index.ts +++ b/packages/live-share-canvas/src/core/index.ts @@ -7,5 +7,10 @@ export * from "./Brush"; export * from "./Colors"; export * from "./Geometry"; export * from "./InkingManager"; +export * from "./InkingManager-constants"; +export * from "./InkingManager-interfaces"; export * from "./LiveCanvas"; +export * from "./LiveCanvas-interfaces"; +export * from "./LiveCanvasTreeSchema"; +export * from "./LiveCursor"; export * from "./Stroke"; diff --git a/packages/live-share-canvas/src/core/internals/BuiltInLiveCursor.ts b/packages/live-share-canvas/src/core/internals/BuiltInLiveCursor.ts new file mode 100644 index 000000000..50e711f86 --- /dev/null +++ b/packages/live-share-canvas/src/core/internals/BuiltInLiveCursor.ts @@ -0,0 +1,160 @@ +import { BasicColors, lightenColor, toCssRgbaColor } from "../Colors"; +import { IPoint, IRect, expandRect } from "../Geometry"; +import { IUserInfo } from "../LiveCanvas-interfaces"; +import { LiveCursor } from "../LiveCursor"; +import { ICursorColor } from "./LiveCanvas-interfaces-internal"; + +/** + * @internal + */ +export class BuiltInLiveCursor extends LiveCursor { + private static currentColorIndex = 0; + + private _color: ICursorColor; + private _arrowPathData?: string; + private _arrowBounds?: IRect; + + protected internalRender(): HTMLElement { + const arrowPath: IPoint[] = [ + { x: 0, y: 0 }, + { x: 10, y: 30 }, + { x: 17, y: 17 }, + { x: 30, y: 10 }, + ]; + + if (!this._arrowPathData || !this._arrowBounds) { + this._arrowPathData = ""; + + this._arrowBounds = { + left: Number.MAX_VALUE, + top: Number.MAX_VALUE, + right: Number.MIN_VALUE, + bottom: Number.MIN_VALUE, + }; + + for (let i = 0; i < arrowPath.length; i++) { + const p = arrowPath[i]; + + this._arrowBounds = expandRect(this._arrowBounds, p); + + this._arrowPathData += `${i === 0 ? "M" : "L"} ${p.x} ${p.y} `; + } + + this._arrowPathData += "Z"; + } + + const arrowWidth = this._arrowBounds.right - this._arrowBounds.left; + const arrowHeight = this._arrowBounds.bottom - this._arrowBounds.top; + const arrowStrokeWidth = 10; + + const textColor = toCssRgbaColor(this._color.textColor); + const arrowBorderColor = toCssRgbaColor( + lightenColor(this._color.backgroundColor, 80) + ); + const backgroundColor = toCssRgbaColor(this._color.backgroundColor); + + let visualTemplate = ` + + + + `; + + if (this.userInfo) { + if (this.userInfo.displayName && !this.userInfo.pictureUri) { + visualTemplate += ` +
+ ${this.userInfo.displayName} +
`; + } else if (this.userInfo.pictureUri && !this.userInfo.displayName) { + visualTemplate += ` + `; + } else if (this.userInfo.pictureUri && this.userInfo.displayName) { + visualTemplate += ` +
+ +
${ + this.userInfo.displayName + }
+
`; + } + } + + const template = document.createElement("template"); + template["innerHTML"] = visualTemplate; + + const element = document.createElement("div"); + element.style.position = "absolute"; + element.style.display = "flex"; + element.style.flexDirection = "row"; + + element.appendChild(template.content.cloneNode(true)); + + return element; + } + + constructor( + public clientId: string, + _userInfo?: IUserInfo + ) { + const cursorColors: ICursorColor[] = [ + { backgroundColor: BasicColors.red, textColor: BasicColors.white }, + { + backgroundColor: BasicColors.green, + textColor: BasicColors.white, + }, + { backgroundColor: BasicColors.blue, textColor: BasicColors.white }, + { + backgroundColor: BasicColors.purple, + textColor: BasicColors.white, + }, + { + backgroundColor: BasicColors.magenta, + textColor: BasicColors.white, + }, + { + backgroundColor: BasicColors.violet, + textColor: BasicColors.white, + }, + { backgroundColor: BasicColors.gray, textColor: BasicColors.white }, + { + backgroundColor: BasicColors.silver, + textColor: BasicColors.black, + }, + ]; + super(clientId, _userInfo); + + this._color = cursorColors[BuiltInLiveCursor.currentColorIndex]; + + BuiltInLiveCursor.currentColorIndex++; + + if (BuiltInLiveCursor.currentColorIndex >= cursorColors.length) { + BuiltInLiveCursor.currentColorIndex = 0; + } + } +} diff --git a/packages/live-share-canvas/src/core/internals/ChangeLog.ts b/packages/live-share-canvas/src/core/internals/ChangeLog.ts new file mode 100644 index 000000000..6c9bc4994 --- /dev/null +++ b/packages/live-share-canvas/src/core/internals/ChangeLog.ts @@ -0,0 +1,48 @@ +import { IStroke } from "../Stroke"; +import { InkingManager } from "../InkingManager"; + +/** + * @internal + * Tracks stroke changes in {@link InkingManager} + */ +export class ChangeLog { + private _addedStrokes: Map = new Map(); + private _removedStrokes: Set = new Set(); + + public clear() { + this._addedStrokes.clear(); + this._removedStrokes.clear(); + } + + public mergeChanges(changes: ChangeLog) { + for (let id of changes._removedStrokes) { + if (!this._addedStrokes.delete(id)) { + this._removedStrokes.add(id); + } + } + + changes._addedStrokes.forEach((value: IStroke) => { + this._addedStrokes.set(value.id, value); + }); + } + + public addStroke(stroke: IStroke) { + this._addedStrokes.set(stroke.id, stroke); + } + + public removeStroke(id: string) { + this._removedStrokes.add(id); + } + + public getRemovedStrokes(): string[] { + return Array.from(this._removedStrokes); + } + + public getAddedStrokes(): IStroke[] { + return Array.from(this._addedStrokes.values()); + } + + get hasChanges(): boolean { + return this._addedStrokes.size > 0 || this._removedStrokes.size > 0; + } +} diff --git a/packages/live-share-canvas/src/core/internals/EphemeralCanvas.ts b/packages/live-share-canvas/src/core/internals/EphemeralCanvas.ts new file mode 100644 index 000000000..9ec1b6c14 --- /dev/null +++ b/packages/live-share-canvas/src/core/internals/EphemeralCanvas.ts @@ -0,0 +1,29 @@ +import { DryCanvas } from "../../canvas"; +import { InkingManager } from "../InkingManager"; + +/** + * @internal + * Used in {@link InkingManager} + */ +export class EphemeralCanvas extends DryCanvas { + private _removalTimeout?: number; + + constructor( + readonly clientId: string, + parentElement?: HTMLElement + ) { + super(parentElement); + } + + scheduleRemoval(onRemoveCallback: (canvas: EphemeralCanvas) => void) { + if (this._removalTimeout) { + window.clearTimeout(this._removalTimeout); + } + + this._removalTimeout = window.setTimeout(() => { + this.fadeOut(); + + onRemoveCallback(this); + }, InkingManager.ephemeralCanvasRemovalDelay); + } +} diff --git a/packages/live-share-canvas/src/core/internals/LiveCanvas-constants-internal.ts b/packages/live-share-canvas/src/core/internals/LiveCanvas-constants-internal.ts new file mode 100644 index 000000000..c5abe0031 --- /dev/null +++ b/packages/live-share-canvas/src/core/internals/LiveCanvas-constants-internal.ts @@ -0,0 +1,5 @@ +export enum InkingEventNames { + pointerMove = "PointerMove", + beginWetStroke = "BeginWetStroke", + addWetStrokePoints = "AddWetStrokePoint", +} diff --git a/packages/live-share-canvas/src/core/internals/LiveCanvas-interfaces-internal.ts b/packages/live-share-canvas/src/core/internals/LiveCanvas-interfaces-internal.ts new file mode 100644 index 000000000..c6b34eeda --- /dev/null +++ b/packages/live-share-canvas/src/core/internals/LiveCanvas-interfaces-internal.ts @@ -0,0 +1,10 @@ +import { IColor } from "../Colors"; + +export interface ISharedCursor { + isCursorShared?: boolean; +} + +export interface ICursorColor { + readonly backgroundColor: IColor; + readonly textColor: IColor; +} diff --git a/packages/live-share-canvas/src/core/internals/LiveCanvas-types-internal.ts b/packages/live-share-canvas/src/core/internals/LiveCanvas-types-internal.ts new file mode 100644 index 000000000..12463c194 --- /dev/null +++ b/packages/live-share-canvas/src/core/internals/LiveCanvas-types-internal.ts @@ -0,0 +1,17 @@ +import { + IAddPointsEventArgs, + IBeginStrokeEventArgs, + IPointerMovedEventArgs, +} from "../InkingManager-interfaces"; +import { IEventUserInfo } from "../LiveCanvas-interfaces"; +import { ISharedCursor } from "./LiveCanvas-interfaces-internal"; + +export type IBeginWetStrokeEvent = IBeginStrokeEventArgs & + ISharedCursor & + IEventUserInfo; + +export type IAddWetStrokePointsEvent = IAddPointsEventArgs & + ISharedCursor & + IEventUserInfo; + +export type IPointerMovedEvent = IPointerMovedEventArgs & IEventUserInfo; diff --git a/packages/live-share-canvas/src/core/internals/LiveCanvasStorageSolution.ts b/packages/live-share-canvas/src/core/internals/LiveCanvasStorageSolution.ts new file mode 100644 index 000000000..b12200f9f --- /dev/null +++ b/packages/live-share-canvas/src/core/internals/LiveCanvasStorageSolution.ts @@ -0,0 +1,38 @@ +import { IEvent } from "@fluidframework/core-interfaces"; +import { TypedEventEmitter } from "@fluid-internal/client-utils"; +import { IStroke } from "../Stroke"; + +export enum StorageSolutionEvents { + strokeChanged = "strokeChanged", + strokeRemoved = "strokeRemoved", + strokesCleared = "strokesCleared", +} + +/** + * @hidden + */ +interface ILiveCanvasStorageSolutionEvents extends IEvent { + ( + event: StorageSolutionEvents.strokeChanged, + listener: (stroke: IStroke, local: boolean) => void + ): void; + ( + event: StorageSolutionEvents.strokeRemoved, + listener: (strokeId: IStroke, local: boolean) => void + ): void; + ( + event: StorageSolutionEvents.strokesCleared, + listener: (local: boolean) => void + ): void; +} + +export abstract class LiveCanvasStorageSolution extends TypedEventEmitter { + abstract forEach( + callbackfn: (value: IStroke, key: string) => void, + thisArg?: any + ): void; + abstract set(stroke: IStroke): void; + abstract delete(strokeId: string): void; + abstract clear(): void; + abstract dispose(): void; +} diff --git a/packages/live-share-canvas/src/core/internals/LivePointerInputProvider.ts b/packages/live-share-canvas/src/core/internals/LivePointerInputProvider.ts new file mode 100644 index 000000000..d1ca934cd --- /dev/null +++ b/packages/live-share-canvas/src/core/internals/LivePointerInputProvider.ts @@ -0,0 +1,57 @@ +import { + IMulticastEvent, + IPointerEvent, + IPointerMoveEvent, + InputProvider, +} from "../../input"; + +/** + * @internal + * Decorator for InputProvider that ensures local user has correct + * roles before activating delegate input provider. + */ +export class LivePointerInputProvider extends InputProvider { + constructor( + private delegate: InputProvider, + private verifyLocalUserRoles: () => Promise + ) { + super(); + } + activate() { + this.verifyLocalUserRoles().then((allowed) => { + if (allowed) { + this.delegate.activate(); + } else { + this.delegate.deactivate(); + } + }); + } + + deactivate() { + this.delegate.deactivate(); + } + + get isActive(): boolean { + return this.delegate.isActive; + } + + get pointerDown(): IMulticastEvent { + return this.delegate.pointerDown; + } + + get pointerMove(): IMulticastEvent { + return this.delegate.pointerMove; + } + + get pointerUp(): IMulticastEvent { + return this.delegate.pointerUp; + } + + get pointerEnter(): IMulticastEvent { + return this.delegate.pointerEnter; + } + + get pointerLeave(): IMulticastEvent { + return this.delegate.pointerLeave; + } +} diff --git a/packages/live-share-canvas/src/core/internals/LiveStroke.ts b/packages/live-share-canvas/src/core/internals/LiveStroke.ts new file mode 100644 index 000000000..75c6d8d33 --- /dev/null +++ b/packages/live-share-canvas/src/core/internals/LiveStroke.ts @@ -0,0 +1,73 @@ +import { IBrush } from "../Brush"; +import { IPointerPoint, getDistanceBetweenPoints } from "../Geometry"; +import { StrokeEndState } from "../InkingManager-constants"; +import { StrokeType } from "../Stroke"; + +/** + * @internal + */ +export class LiveStroke { + /** + * Configures the delay before wet stroke events are emitted, to greatly reduce the + * number of events emitted and improve performance. + */ + private static readonly wetStrokeEventsStreamDelay = 60; + + private _points: IPointerPoint[] = []; + private _processTimeout?: number; + + private process() { + if (this.type !== StrokeType.persistent) { + return; + } + + let index = 0; + + while (index + 2 < this._points.length) { + const p1 = this._points[index]; + const p2 = this._points[index + 1]; + const p3 = this._points[index + 2]; + + const p1p2 = getDistanceBetweenPoints(p1, p2); + const p2p3 = getDistanceBetweenPoints(p2, p3); + const p1p3 = getDistanceBetweenPoints(p1, p3); + + const threshold = (p1p2 + p2p3) * (100 / p1p3); + + if (threshold < this.simplificationThreshold) { + this._points.splice(index + 1, 1); + } else { + index++; + } + } + } + + endState?: StrokeEndState; + + constructor( + readonly id: string, + readonly type: StrokeType, + readonly brush: IBrush, + readonly simplificationThreshold: number + ) {} + + get points(): IPointerPoint[] { + return this._points; + } + + clear() { + this._points = []; + } + + scheduleProcessing(onProcessedCallback: (stroke: LiveStroke) => void) { + if (this._processTimeout === undefined) { + this._processTimeout = window.setTimeout(() => { + this.process(); + + this._processTimeout = undefined; + + onProcessedCallback(this); + }, LiveStroke.wetStrokeEventsStreamDelay); + } + } +} diff --git a/packages/live-share-canvas/src/core/internals/SharedMapStorageSolution.ts b/packages/live-share-canvas/src/core/internals/SharedMapStorageSolution.ts new file mode 100644 index 000000000..c20f48dd7 --- /dev/null +++ b/packages/live-share-canvas/src/core/internals/SharedMapStorageSolution.ts @@ -0,0 +1,85 @@ +import { + ISequencedDocumentMessage, + IValueChanged, + SharedMap, +} from "fluid-framework/legacy"; +import { + LiveCanvasStorageSolution, + StorageSolutionEvents, + isClearEvent, +} from "."; +import { IStroke, Stroke } from "../Stroke"; +import { InkingManager } from "../InkingManager"; + +export class SharedMapStorageSolution extends LiveCanvasStorageSolution { + private registeredListeners = new Map(); + constructor( + private dryInkMap: SharedMap, + private inkingManager: InkingManager + ) { + super(); + this.setupListeners(); + } + + setupListeners() { + const valueChangedListener = ( + changed: IValueChanged, + local: boolean + ) => { + const serializedStroke: string | undefined = this.dryInkMap.get( + changed.key + ); + if (serializedStroke) { + const stroke = + this.inkingManager.getStroke(changed.key) ?? new Stroke(); + stroke.deserialize(serializedStroke); + this.emit(StorageSolutionEvents.strokeChanged, stroke, local); + } else { + this.emit( + StorageSolutionEvents.strokeRemoved, + changed.key, + local + ); + } + }; + this.registeredListeners.set("valueChanged", valueChangedListener); + this.dryInkMap.on("valueChanged", valueChangedListener); + const opListener = ( + op: ISequencedDocumentMessage, + local: boolean + ): void => { + if (isClearEvent(op.contents)) { + this.emit(StorageSolutionEvents.strokesCleared, local); + } + }; + this.registeredListeners.set("op", opListener); + this.dryInkMap.on("op", opListener); + } + + forEach( + callbackfn: (value: IStroke, key: string) => void, + thisArg?: any + ): void { + // Setup incoming dry ink changes + this.dryInkMap.forEach((value: string) => { + const stroke = new Stroke(); + stroke.deserialize(value); + + callbackfn(stroke, stroke.id); + }); + } + set(stroke: IStroke): void { + this.dryInkMap.set(stroke.id, stroke.serialize()); + } + delete(strokeId: string): void { + this.dryInkMap.delete(strokeId); + } + clear(): void { + this.dryInkMap.clear(); + } + dispose(): void { + this.registeredListeners.forEach((listener, key) => { + this.dryInkMap.off(key as any, listener as any); + }); + } +} diff --git a/packages/live-share-canvas/src/core/internals/SharedTreeStorageSolution.ts b/packages/live-share-canvas/src/core/internals/SharedTreeStorageSolution.ts new file mode 100644 index 000000000..7a674935a --- /dev/null +++ b/packages/live-share-canvas/src/core/internals/SharedTreeStorageSolution.ts @@ -0,0 +1,192 @@ +import { IStroke } from "../Stroke"; +import { LiveCanvasStroke, LiveCanvasTreeNode } from "../LiveCanvasTreeSchema"; +import { Tree, TreeStatus } from "fluid-framework"; +import { InkingManager } from "../InkingManager"; +import { LiveCanvasStorageSolution, StorageSolutionEvents } from "."; + +export class SharedTreeStorageSolution extends LiveCanvasStorageSolution { + private unsubscribeListeners: (() => void)[] = []; + // Track nodes previously checked so we can figure out which strokes were removed. + // This is needed because `Tree.on` doesn't include a diff of changes. + private previousCheckedNodes: Map = new Map(); + // Map to track some metadata about strokes we have already rendered. + // This helps us skip rendering strokes / updates that haven't changed. + private renderedStrokesMap: Map< + string, + { + timestamp: number; + status: TreeStatus; + } + > = new Map(); + + constructor( + private root: LiveCanvasTreeNode, + private inkingManager: InkingManager + ) { + super(); + // Start listening for changes to the strokes map and its child nodes + this.setupListeners(); + } + + private setupListeners(checkForChanges: boolean = false) { + // Unsubscribe to existing listeners + this.unsubscribeListeners.forEach((unsubscribe) => unsubscribe()); + + // Listen for changes to the stroke map + const unsubscribe = Tree.on(this.root.dryInkMap, "nodeChanged", () => { + // Fluid currently doesn't expose what keys were added/updated/removed. + // Thus, we just brute force our way through it and re-listen to everything. + // This time, we want to emit changes to `LiveCanvas`, so we set `checkForChanges` to true. + this.setupListeners(true); + }); + this.unsubscribeListeners = [unsubscribe]; + + // If we are checking for changes, we want to first check if the map is empty. + // If it is and we have currently rendered strokes, we emit a clear event. + if (checkForChanges) { + if (this.root.dryInkMap.size === 0) { + if (this.renderedStrokesMap.size === 0) { + // There is no change to what has been rendered. + // This includes cases where the local user was the one to clear the strokes. + // `InkingManager` optimistically clears stuff before emitting it. + // Thus, we can safely skip emitting this back to `LiveCanvas`. + return; + } + // Clear all rendered strokes, since we are clearing the `InkingManager`. + this.renderedStrokesMap.clear(); + + // Notify `LiveCanvas` that the strokes were cleared. + // Hardcode to false because the local client should never have initiated this. + // If they did, it would have been because of undo/redo, merge resolution, or something else. + // In that case, its fine to treat the change like we do for remote clients. + this.emit(StorageSolutionEvents.strokesCleared, false); + return; + } + } + // Track strokes currently in map so we can set into this.previousCheckedNodes after we notify of removed nodes + const newCheckedNodes: Map = new Map(); + + // Iterate through each stroke node and listen for changes to them + this.root.dryInkMap.forEach((value, key) => { + // We checked this node, any leftovers we will notify that the node was removed + this.previousCheckedNodes.delete(key); + newCheckedNodes.set(key, value); + // Listen for changes to the strokes + const nodeUnsubscribe = Tree.on(value, "treeChanged", () => { + // Emit change to `LiveCanvas` + this.handleNewOrChangedStroke(value, Tree.status(value)); + }); + this.unsubscribeListeners.push(nodeUnsubscribe); + + if (!checkForChanges) return; + + // Check for existing timestamp + const lastState = this.renderedStrokesMap.get(key); + const status = Tree.status(value); + // Check if we have already rendered the change. If so, skip. + if ( + lastState?.timestamp === value.timestamp && + lastState?.status === status + ) + return; + + // Emit the changed stroke to `LiveCanvas` + this.handleNewOrChangedStroke(value, status); + }); + + // Any unchecked nodes are no longer in dryStrokeMap, so we notify they were removed + this.previousCheckedNodes.forEach((value) => { + // Set the stroke as rendered + this.renderedStrokesMap.set(value.id, { + timestamp: value.timestamp, + status: Tree.status(value), + }); + // We need to remove the node from `InkingManager` so we notify `LiveCanvas` that it was removed. + this.emit(StorageSolutionEvents.strokeRemoved, value.id, false); + }); + // Set the most recent checked nodes as previous for susequent change comparisons + this.previousCheckedNodes = newCheckedNodes; + } + + forEach( + callbackfn: (value: IStroke, key: string) => void, + thisArg?: any + ): void { + this.root.dryInkMap.forEach((value, key) => { + const stroke = value.deserialize(); + this.renderedStrokesMap.set(value.id, { + timestamp: value.timestamp, + status: Tree.status(value), + }); + callbackfn(stroke, key); + }); + } + + set(stroke: IStroke): void { + // We will have already rendered the change locally, so we set it as rendered + this.renderedStrokesMap.set(stroke.id, { + timestamp: stroke.timeStamp, + status: TreeStatus.InDocument, + }); + // If the node already exists in the map, update changable values rather than replace the node + const existingNode = this.root.dryInkMap.get(stroke.id); + if (existingNode) { + // TODO: down the road, it would be good to only update the values that changed + Tree.runTransaction(existingNode, () => { + existingNode.points = stroke.serializePoints(); + existingNode.timestamp = stroke.timeStamp; + existingNode.version = stroke.version; + existingNode.clientId = stroke.clientId; + existingNode.brush.type = stroke.brush.type; + existingNode.brush.tipSize = stroke.brush.tipSize; + existingNode.brush.tip = stroke.brush.tip; + existingNode.brush.endArrow = stroke.brush.endArrow; + existingNode.brush.color.r = stroke.brush.color.r; + existingNode.brush.color.g = stroke.brush.color.g; + existingNode.brush.color.b = stroke.brush.color.b; + }); + return; + } + // Set the new stroke to the map + this.root.dryInkMap.set(stroke.id, LiveCanvasStroke.fromStroke(stroke)); + } + delete(strokeId: string): void { + const stroke = this.root.dryInkMap.get(strokeId); + if (!stroke) return; + // We will have already rendered the change locally, so we set it as rendered + this.renderedStrokesMap.set(stroke.id, { + timestamp: stroke.timestamp, + status: TreeStatus.Removed, + }); + this.root.dryInkMap.delete(stroke.id); + } + clear(): void { + // We will have already rendered the change locally, so we clear it + this.renderedStrokesMap.clear(); + // Delete all strokes in the map + this.root.dryInkMap.clear(); + } + dispose(): void { + // Unsubscribe to listeners + this.unsubscribeListeners.forEach((unsubscribe) => unsubscribe()); + // Reset rendered strokes and previously checked nodes + this.renderedStrokesMap.clear(); + this.previousCheckedNodes.clear(); + } + + private handleNewOrChangedStroke( + stroke: LiveCanvasStroke, + status: TreeStatus + ) { + // Mark the change as rendered + this.renderedStrokesMap.set(stroke.id, { + timestamp: stroke.timestamp, + status, + }); + // Update the existing stroke or create a new one + const existingStroke = this.inkingManager.getStroke(stroke.id); + const strokeToEmit = stroke.deserialize(existingStroke); + // Emit the stroke to `LiveCanvas` + this.emit(StorageSolutionEvents.strokeChanged, strokeToEmit, false); + } +} diff --git a/packages/live-share-canvas/src/core/internals/WetStroke.ts b/packages/live-share-canvas/src/core/internals/WetStroke.ts new file mode 100644 index 000000000..a8ef5cf0c --- /dev/null +++ b/packages/live-share-canvas/src/core/internals/WetStroke.ts @@ -0,0 +1,163 @@ +import { + IStrokeCreationOptions, + Stroke, + StrokeMode, + StrokeType, +} from "../Stroke"; +import { InkingCanvas } from "../../canvas"; +import { IWetStroke } from "../InkingManager-interfaces"; +import { IPointerPoint } from "../Geometry"; +import { computeEndArrow } from "./utils"; + +/** + * @internal + */ +export abstract class WetStroke extends Stroke implements IWetStroke { + protected notifyStrokeEnded(isCancelled: boolean) { + if (this.onStrokeEnded) { + this.onStrokeEnded(this, isCancelled); + } + } + + onStrokeEnded?: (sender: WetStroke, isCancelled: boolean) => void; + + constructor( + private _canvas: InkingCanvas, + readonly type: StrokeType, + readonly mode: StrokeMode, + options?: IStrokeCreationOptions + ) { + super(options); + + this._canvas.setBrush(this.brush); + } + + straighten(p: IPointerPoint): IPointerPoint { + return p; + } + + end() { + this._canvas.removeFromDOM(); + this._canvas.endStroke(); + + this.notifyStrokeEnded(false); + } + + cancel() { + this._canvas.removeFromDOM(); + this._canvas.cancelStroke(); + + this.notifyStrokeEnded(true); + } + + get canvas(): InkingCanvas { + return this._canvas; + } +} + +export class WetFreehandStroke extends WetStroke { + addPoints(...points: IPointerPoint[]): boolean { + const currentLength = this.length; + const result = super.addPoints(...points); + + if (result) { + let startIndex = currentLength; + + if (startIndex === 0) { + this.canvas.beginStroke(this.getPointAt(0)); + + startIndex = 1; + } + + for (let i = startIndex; i < this.length; i++) { + this.canvas.addPoint(this.getPointAt(i)); + } + } + + return result; + } + + end() { + if (this.length > 1 && this.brush.endArrow === "open") { + const penultimatePoint = this.getPointAt(this.length - 2); + const lastPoint = this.getPointAt(this.length - 1); + + const arrowPath = computeEndArrow(penultimatePoint, lastPoint); + + for (let i = 0; i < arrowPath.length; i++) { + const p = { ...arrowPath[i], pressure: lastPoint.pressure }; + + this.addPoint(p); + } + } + + super.end(); + } +} + +/** + * @internal + */ +export class WetLineStroke extends WetStroke { + straighten(p: IPointerPoint): IPointerPoint { + const result = { ...p }; + + if (this.length > 0) { + const firstPoint = this.getPointAt(0); + + if ( + Math.abs(result.x - firstPoint.x) > + Math.abs(result.y - firstPoint.y) + ) { + result.y = firstPoint.y; + } else { + result.x = firstPoint.x; + } + } + + return result; + } + + addPoints(...points: IPointerPoint[]): boolean { + if (this.length === 0) { + this.addPoint(points[0]); + + if (points.length > 1) { + this.addPoint(points[points.length - 1]); + } + } else { + const firstPoint = this.getPointAt(0); + + this.clear(); + + this.addPoint(firstPoint); + this.addPoint(points[points.length - 1]); + } + + this.canvas.cancelStroke(); + this.canvas.beginStroke(this.getPointAt(0)); + + if (this.length > 1) { + this.canvas.addPoint(this.getPointAt(1)); + + if (this.brush.endArrow === "open") { + const arrowPath = computeEndArrow( + this.getPointAt(0), + this.getPointAt(1) + ); + + for (let i = 0; i < arrowPath.length; i++) { + const p = { + ...arrowPath[i], + pressure: this.getPointAt(1).pressure, + }; + + this.addPoint(p); + this.canvas.addPoint(p); + } + } + } + + return true; + } +} diff --git a/packages/live-share-canvas/src/core/internals/index.ts b/packages/live-share-canvas/src/core/internals/index.ts index ebc202768..6bb31e1b1 100644 --- a/packages/live-share-canvas/src/core/internals/index.ts +++ b/packages/live-share-canvas/src/core/internals/index.ts @@ -1,2 +1,15 @@ export * from "./TelemetryEvents"; export * from "./utils"; +export * from "./ChangeLog"; +export * from "./EphemeralCanvas"; +export * from "./WetStroke"; +export * from "./LiveCanvas-types-internal"; +export * from "./LiveCanvas-constants-internal"; +export * from "./LiveCanvas-interfaces-internal"; +export * from "./LiveStroke"; +export * from "./BuiltInLiveCursor"; +export * from "./LivePointerInputProvider"; +export * from "./LiveCanvasStorageSolution"; +export * from "./SharedMapStorageSolution"; +export * from "./SharedTreeStorageSolution"; +export * from "./undo-redo-utils"; diff --git a/packages/live-share-canvas/src/core/internals/undo-redo-utils.ts b/packages/live-share-canvas/src/core/internals/undo-redo-utils.ts new file mode 100644 index 000000000..be132f67c --- /dev/null +++ b/packages/live-share-canvas/src/core/internals/undo-redo-utils.ts @@ -0,0 +1,87 @@ +import { + CommitKind, + CommitMetadata, + Listenable, + Revertible, + RevertibleFactory, + TreeViewEvents, +} from "fluid-framework"; + +/** + * Create undo and redo stacks for a tree view. The stacks are populated with revertible objects. + * You can manage the stacks by calling `undo` and `redo`. The redo stack is cleared when a new commit is made. + * The dispose function should be called when the stacks are no longer needed. + */ +export function createUndoRedoStacks( + events: Listenable +): undoRedo { + // Create arrays to store revertible objects + const undoStack: Revertible[] = []; + const redoStack: Revertible[] = []; + + // Manage the stacks when a new commit is made + function onNewCommit( + commit: CommitMetadata, + getRevertible?: RevertibleFactory + ): void { + if (getRevertible === undefined) { + return; + } + const revertible = getRevertible(); + if (commit.kind === CommitKind.Undo) { + redoStack.push(revertible); + } else { + if (commit.kind === CommitKind.Default) { + // clear redo stack + for (const redo of redoStack) { + redo.dispose(); + } + redoStack.length = 0; + } + undoStack.push(revertible); + } + } + + // Subscribe to the commitApplied event + const unsubscribeFromCommitApplied = events.on( + "commitApplied", + onNewCommit + ); + + // Dispose function to clean up the stacks + const dispose = () => { + unsubscribeFromCommitApplied(); + for (const revertible of undoStack) { + revertible.dispose(); + } + for (const revertible of redoStack) { + revertible.dispose(); + } + redoStack.length = 0; + undoStack.length = 0; + }; + + // Function to revert from a stack + function revertFromStack(stack: Revertible[]): void { + const revertible = stack.pop(); + if (revertible !== undefined) { + revertible.revert(); + } + } + + function undo(): void { + revertFromStack(undoStack); + } + + function redo(): void { + revertFromStack(redoStack); + } + + return { undo, redo, dispose }; +} + +export type undoRedo = { + undo: () => void; + redo: () => void; + dispose: () => void; +}; diff --git a/packages/live-share-canvas/src/core/internals/utils.ts b/packages/live-share-canvas/src/core/internals/utils.ts index c2e8842ad..2a4e73a92 100644 --- a/packages/live-share-canvas/src/core/internals/utils.ts +++ b/packages/live-share-canvas/src/core/internals/utils.ts @@ -5,6 +5,7 @@ import { v4 as uuid } from "uuid"; import { BrushTipShape, + ClearEvent, IColor, IPoint, IPointerPoint, @@ -295,7 +296,9 @@ export function renderFilledSVGCircle( color: IColor ): string { // eslint-disable-next-line prettier/prettier - return ``; + return ``; } /** @@ -652,3 +655,15 @@ export function computeEndArrow( }, ]; } + +/** + * Type guard that checks if a Fluid op is of type {@link ClearEvent} + */ +export function isClearEvent(value: any): boolean { + return ( + typeof value === "object" && + typeof value.type === "string" && + // Fluid v2 emits "clear" instead of "Clear" on SharedMap.clear(), so we equalize it + value.type.toLowerCase() === ClearEvent.toLowerCase() + ); +} diff --git a/packages/live-share-react/src/live-hooks/useLiveCanvas.ts b/packages/live-share-react/src/live-hooks/useLiveCanvas.ts index 8096c944b..1708d10fa 100644 --- a/packages/live-share-react/src/live-hooks/useLiveCanvas.ts +++ b/packages/live-share-react/src/live-hooks/useLiveCanvas.ts @@ -3,18 +3,13 @@ * Licensed under the Microsoft Live Share SDK License. */ -import { - CanvasReferencePoint, - IBrush, - InkingManager, - InkingTool, - IPoint, - LiveCanvas, -} from "@microsoft/live-share-canvas"; +import { InkingManager, LiveCanvas } from "@microsoft/live-share-canvas"; import React from "react"; import { useDynamicDDS } from "../shared-hooks"; -import { IUseLiveCanvasResults } from "../types"; +import { IUseLiveCanvasOptionalProps, IUseLiveCanvasResults } from "../types"; import { isRefObject } from "../utils"; +import { getRawNode } from "../shared-hooks/internals/tree-node-utils"; +import { LiveDataObjectInitializeState } from "@microsoft/live-share"; /** * React hook for using a Live Share Canvas `LiveCanvas` and `InkingManager`. @@ -26,27 +21,25 @@ import { isRefObject } from "../utils"; * * @param uniqueKey the unique key for the `LiveCanvas`. If one does not yet exist, a new one. * @param canvasElementRef the HTML div element ref or document ID that `InkingManager` will use for canvas-based collaboration. - * @param active Optional. Stateful boolean that will activate/de-activate `InkingManager` accordingly. - * @param tool Optional. Stateful enum for what tool to use in the `InkingManager`. - * @param lineBrush Optional. Stateful lineBrush object for the selected lineBrush options to use in `InkingManager`. - * @param offset Optional. Stateful offset point to use in the `InkingManager`. Gets the viewport offset. Defaults to 0,0. - * @param scale Optional. Stateful scale number to use in the `InkingManager`. Defaults to 1 and must be greater than 0. - * @param referencePoint Optional. Stateful reference point enum to use in the `InkingManger`. Defaults to "center". - * @param isCursorShared Optional. Stateful boolean flag for whether cursor should be shared in `LiveCanvas`. Defaults to false. - * @param localUserPictureUrl Optional. url string for the local user to display alongside their cursor. Defaults to undefined. - * @returns IUseLiveCanvasResults object that contains the `liveCanvas` data object and `inkingManager`. + * @param props Optional. Other optional props. + * @param props.active Optional. Stateful boolean that will activate/de-activate `InkingManager` accordingly. + * @param props.tool Optional. Stateful enum for what tool to use in the `InkingManager`. + * @param props.lineBrush Optional. Stateful lineBrush object for the selected lineBrush options to use in `InkingManager`. + * @param props.offset Optional. Stateful offset point to use in the `InkingManager`. Gets the viewport offset. Defaults to 0,0. + * @param props.scale Optional. Stateful scale number to use in the `InkingManager`. Defaults to 1 and must be greater than 0. + * @param props.referencePoint Optional. Stateful reference point enum to use in the `InkingManger`. Defaults to "center". + * @param props.isCursorShared Optional. Stateful boolean flag for whether cursor should be shared in `LiveCanvas`. Defaults to false. + * @param props.localUserPictureUrl Optional. url string for the local user to display alongside their cursor. Defaults to undefined. + * @param props.node Optional. A Fluid `LiveCanvasTree` `TreeNode` instance to swap out the underlying storage solution for strokes. + * To learn more, look at Fluid's [SharedTree](https://fluidframework.com/docs/data-structures/tree/) documentation. + * @param allowedRoles Optional. The user roles that are allowed to start/stop/pause the timer. + * + * @returns `IUseLiveCanvasResults` object that contains the `liveCanvas` data object and `inkingManager`. */ export function useLiveCanvas( uniqueKey: string, canvasElementRef: React.RefObject | string, - active?: boolean, - tool?: InkingTool, - lineBrush?: IBrush, - offset?: IPoint, - scale?: number, - referencePoint?: CanvasReferencePoint, - isCursorShared?: boolean, - localUserPictureUrl?: string + props: IUseLiveCanvasOptionalProps ): IUseLiveCanvasResults { /** * User facing: inking manager instance @@ -61,103 +54,132 @@ export function useLiveCanvas( LiveCanvas ); + // This should change less frequently then node if they are using `useTreeNode` + // We need the raw node anyways to apply event listeners + const rawNode = getRawNode(props?.node); + /** * Setup the InkingManager and LiveCanvas */ + React.useEffect( + () => { + // if the component is already listening or liveCanvas is not yet initialized, return + if (!liveCanvas) return; + // get the canvas element from the ref or document + let htmlElement: HTMLElement | null; + if (isRefObject(canvasElementRef)) { + htmlElement = canvasElementRef.current; + } else { + htmlElement = document.getElementById(canvasElementRef); + } + if (htmlElement === null) return; + // Clear out existing nodes + function removeAllChildren(node: HTMLElement | ChildNode) { + node.childNodes.forEach((childNode) => { + removeAllChildren(childNode); + childNode.remove(); + }); + } + removeAllChildren(htmlElement); + // Create the InkingManager and initialize the liveCanvas with it + const inkingManager = new InkingManager(htmlElement); + setInkingManager(inkingManager); + liveCanvas.initialize(inkingManager, props?.allowedRoles, rawNode); + + // cleanup function to be called when the component is unmount + return () => { + inkingManager.removeAllListeners(); + }; + }, + // Intentionally ommitting rawNode from deps because we only want to initialize once, + // whereas rawNode may change many times. + [liveCanvas, props?.allowedRoles] + ); + + /** + * Set the node if it changes while LiveCanvas is initialized + */ React.useEffect(() => { - // if the component is already listening or liveCanvas is not yet initialized, return - if (!liveCanvas) return; - // get the canvas element from the ref or document - let htmlElement: HTMLElement | null; - if (isRefObject(canvasElementRef)) { - htmlElement = canvasElementRef.current; - } else { - htmlElement = document.getElementById(canvasElementRef); - } - if (htmlElement === null) return; - // Create the InkingManager and initialize the liveCanvas with it - const inkingManager = new InkingManager(htmlElement); - setInkingManager(inkingManager); - liveCanvas.initialize(inkingManager); - - // cleanup function to be called when the component is unmount - return () => { - liveCanvas.dispose(); - inkingManager.removeAllListeners(); - }; - }, [liveCanvas]); + if ( + !rawNode || + liveCanvas?.initializeState !== + LiveDataObjectInitializeState.succeeded + ) + return; + liveCanvas.setTreeNode(rawNode); + }, [liveCanvas, rawNode]); /** * Activate or deactivate the inkingManager based on the 'active' prop */ React.useEffect(() => { - if (inkingManager && active !== undefined) { - if (active) { + if (inkingManager && props?.active !== undefined) { + if (props?.active) { inkingManager.activate(); } else { inkingManager.deactivate(); } } - }, [active, inkingManager]); + }, [props?.active, inkingManager]); /** * Sets the tool of the inkingManager based on the 'tool' prop */ React.useEffect(() => { - if (inkingManager && tool !== undefined) { - inkingManager.tool = tool; + if (inkingManager && props?.tool !== undefined) { + inkingManager.tool = props.tool; } - }, [tool, inkingManager]); + }, [props?.tool, inkingManager]); /** * Sets the offset of the inkingManager based on the 'offset' prop */ React.useEffect(() => { - if (inkingManager && offset !== undefined) { + if (inkingManager && props?.offset !== undefined) { inkingManager.offset = { - x: offset.x, - y: offset.y, + x: props?.offset.x, + y: props?.offset.y, }; } - }, [offset?.x, offset?.y, inkingManager]); + }, [props?.offset?.x, props?.offset?.y, inkingManager]); /** * Sets the scale of the inkingManager based on the 'scale' prop */ React.useEffect(() => { - if (inkingManager && scale !== undefined) { - inkingManager.scale = scale; + if (inkingManager && props?.scale !== undefined) { + inkingManager.scale = props?.scale; } - }, [scale, inkingManager]); + }, [props?.scale, inkingManager]); /** * Sets the referencePoint of the inkingManager based on the 'referencePoint' prop */ React.useEffect(() => { - if (inkingManager && referencePoint !== undefined) { - inkingManager.referencePoint = referencePoint; + if (inkingManager && props?.referencePoint !== undefined) { + inkingManager.referencePoint = props?.referencePoint; } - }, [referencePoint, inkingManager]); + }, [props?.referencePoint, inkingManager]); /** * Sets the lineBrush of the inkingManager based on the 'lineBrush' prop */ React.useEffect(() => { - if (inkingManager && lineBrush) { + if (inkingManager && props?.lineBrush) { inkingManager.lineBrush = { - color: lineBrush.color, - tip: lineBrush.tip, - tipSize: lineBrush.tipSize, - type: lineBrush.type, - endArrow: lineBrush.endArrow, + color: props.lineBrush.color, + tip: props.lineBrush.tip, + tipSize: props.lineBrush.tipSize, + type: props.lineBrush.type, + endArrow: props.lineBrush.endArrow, }; } }, [ - lineBrush?.color, - lineBrush?.tip, - lineBrush?.tipSize, - lineBrush?.type, - lineBrush?.endArrow, + props?.lineBrush?.color, + props?.lineBrush?.tip, + props?.lineBrush?.tipSize, + props?.lineBrush?.type, + props?.lineBrush?.endArrow, inkingManager, ]); @@ -165,21 +187,21 @@ export function useLiveCanvas( * Sets the isCursorShared of the liveCanvas based on the 'isCursorShared' prop */ React.useEffect(() => { - if (liveCanvas && isCursorShared !== undefined) { - liveCanvas.isCursorShared = isCursorShared; + if (liveCanvas && props?.isCursorShared !== undefined) { + liveCanvas.isCursorShared = props.isCursorShared; } - }, [isCursorShared, liveCanvas]); + }, [props?.isCursorShared, liveCanvas]); /** * Sets the onGetLocalUserInfo method of the liveCanvas based on the 'localUserCursor' prop */ React.useEffect(() => { - if (liveCanvas && localUserPictureUrl) { + if (liveCanvas && props?.localUserPictureUrl) { liveCanvas.onGetLocalUserPictureUrl = (): string | undefined => { - return localUserPictureUrl; + return props.localUserPictureUrl; }; } - }, [localUserPictureUrl, liveCanvas]); + }, [props?.localUserPictureUrl, liveCanvas]); /** * Return hook response diff --git a/packages/live-share-react/src/live-hooks/useLiveFollowMode.ts b/packages/live-share-react/src/live-hooks/useLiveFollowMode.ts index 0f86b4ab8..bc28e8e01 100644 --- a/packages/live-share-react/src/live-hooks/useLiveFollowMode.ts +++ b/packages/live-share-react/src/live-hooks/useLiveFollowMode.ts @@ -63,12 +63,16 @@ export function useLiveFollowMode( /** * User facing: list of non-local user's presence objects. */ - const otherUsers = allUsers.filter((user) => !user.isLocalUser); + const otherUsers = React.useMemo(() => { + return allUsers.filter((user) => !user.isLocalUser); + }, [allUsers]); /** * User facing: local user's presence object. */ - const localUser = allUsers.find((user) => user.isLocalUser); + const localUser = React.useMemo(() => { + return allUsers.find((user) => user.isLocalUser); + }, [allUsers]); const { container } = useFluidObjectsContext(); diff --git a/packages/live-share-react/src/live-hooks/useLivePresence.ts b/packages/live-share-react/src/live-hooks/useLivePresence.ts index 4a95aca96..581713f4b 100644 --- a/packages/live-share-react/src/live-hooks/useLivePresence.ts +++ b/packages/live-share-react/src/live-hooks/useLivePresence.ts @@ -61,12 +61,16 @@ export function useLivePresence( /** * User facing: list of non-local user's presence objects. */ - const otherUsers = allUsers.filter((user) => !user.isLocalUser); + const otherUsers = React.useMemo(() => { + return allUsers.filter((user) => !user.isLocalUser); + }, [allUsers]); /** * User facing: local user's presence object. */ - const localUser = allUsers.find((user) => user.isLocalUser); + const localUser = React.useMemo(() => { + return allUsers.find((user) => user.isLocalUser); + }, [allUsers]); const { container } = useFluidObjectsContext(); diff --git a/packages/live-share-react/src/shared-hooks/index.ts b/packages/live-share-react/src/shared-hooks/index.ts index 1290b7560..b53026ec8 100644 --- a/packages/live-share-react/src/shared-hooks/index.ts +++ b/packages/live-share-react/src/shared-hooks/index.ts @@ -3,3 +3,4 @@ export * from "./useSharedMap"; export * from "./useDynamicDDS"; export * from "./useSharedStateRegistry"; export * from "./useSharedTree"; +export * from "./useTreeNode"; diff --git a/packages/live-share-react/src/shared-hooks/internals/tree-node-constants.ts b/packages/live-share-react/src/shared-hooks/internals/tree-node-constants.ts new file mode 100644 index 000000000..229ec3987 --- /dev/null +++ b/packages/live-share-react/src/shared-hooks/internals/tree-node-constants.ts @@ -0,0 +1,2 @@ +export const rawTNodeKey = "[[FluidTreeNode]]"; +export const proxiedChildrenKey = "[[FluidChildNodes]]"; diff --git a/packages/live-share-react/src/shared-hooks/internals/tree-node-types.ts b/packages/live-share-react/src/shared-hooks/internals/tree-node-types.ts new file mode 100644 index 000000000..b79b51bf1 --- /dev/null +++ b/packages/live-share-react/src/shared-hooks/internals/tree-node-types.ts @@ -0,0 +1,26 @@ +import { TreeNode, Tree } from "fluid-framework"; +import { proxiedChildrenKey, rawTNodeKey } from "./tree-node-constants"; + +export interface ICustomProxyHandler { + [rawTNodeKey]: TNode; + [proxiedChildrenKey]: Record; +} + +export function isProxy(value: any): value is typeof Proxy { + return value && value["[[Handler]]"]; +} + +export function isCustomProxyHandler( + value: any +): value is ICustomProxyHandler { + return value?.[rawTNodeKey] !== undefined; +} + +export function isTreeNode(value: any): value is TreeNode { + try { + Tree.schema(value); + return true; + } catch (_) { + return false; + } +} diff --git a/packages/live-share-react/src/shared-hooks/internals/tree-node-utils.ts b/packages/live-share-react/src/shared-hooks/internals/tree-node-utils.ts new file mode 100644 index 000000000..863d006ab --- /dev/null +++ b/packages/live-share-react/src/shared-hooks/internals/tree-node-utils.ts @@ -0,0 +1,269 @@ +import { proxiedChildrenKey, rawTNodeKey } from "./tree-node-constants"; +import { + ICustomProxyHandler, + isCustomProxyHandler, + isTreeNode, + isProxy, +} from "./tree-node-types"; +import { TreeNode, Tree } from "fluid-framework"; +import { Dispatch, SetStateAction } from "react"; + +// Exported utils + +/** + * @internal + * Build a proxied version of a node and set its value to the treeMap provided + * + * @param rawNode the raw proxy node exposed by Fluid + * @param treeMap a map where Fluid's proxy node is mapped to our proxied node + * @returns TNode instance + */ +export function buildProxy( + rawNode: TNode, + treeMap: WeakMap +): TNode { + const previousProxy = treeMap.get(rawNode); + const previousProxyHandler = previousProxy + ? getCustomProxyHandler(previousProxy) + : undefined; + const proxyHandler: ProxyHandler & ICustomProxyHandler = { + // Add some extra stuff into the handler so we can store the original Fluid TreeNode and access it later + // Without overriding the rest of the getters in the object. + [rawTNodeKey]: rawNode, + [proxiedChildrenKey]: previousProxyHandler?.[proxiedChildrenKey] ?? {}, + get: (target, prop, _) => { + if (prop === "[[Handler]]") { + return proxyHandler; + } + if ( + typeof prop === "string" && + proxyHandler[proxiedChildrenKey][prop] + ) { + return proxyHandler[proxiedChildrenKey][prop]; + } + // pass in the rawNode so Fluid doesn't get confused by our proxy object and can find the flex node + const value = Reflect.get(target, prop, rawNode); + return typeof value === "function" && + typeof prop === "string" && + // TODO: need a better way of identifying which types of functions need to be proxied + // This is because if a developer uses an array prototype function, we need to return proxied + // objects so React can detect changes to those nodes... + !["map", "flatMap", "filter", "find", "indexOf"].includes(prop) + ? value.bind(rawNode) + : value; + }, + set(target, p, newValue, _) { + return Reflect.set(target, p, newValue, rawNode); + }, + }; + const proxy = new Proxy(rawNode, proxyHandler); + // Track the proxy for the rawNode + treeMap.set(rawNode, proxy); + // Set raw node getter so we can access it before things like Tree.on + return proxy as TNode; +} + +/** + * @internal + * Set up listeners for a given TreeNode. + * Will recursively call this function for all children nodes of each children until there are no more child nodes. + * + * @param parentRawNode raw parent node + * @param rootNodeForListener root node being listened to in useTreeNode + * @param treeMap a map where Fluid's proxy node is mapped to our proxied node + * @param unsubscribeListeners list of unsubscribe listeners, where we set the unsubscribe callbacks + * @param setProxyNode setter to set the root proxy node listened to in useTreeNode + */ +export function setUpListenersForNodeChildren< + TNode extends TreeNode = TreeNode, +>( + parentRawNode: TreeNode, + rootNodeForListener: TreeNode, + treeMap: WeakMap, + unsubscribeListeners: (() => void)[], + setProxyNode: Dispatch> +) { + let entries = Object.entries(parentRawNode); + for (let i = 0; i < entries.length; i++) { + const [key, entry] = entries[i]; + if ( + !entry || + ["string", "boolean", "number", "function"].includes( + typeof entry + ) || + !isTreeNode(entry) + ) { + continue; + } + const rawEntry = getRawNode(entry); + const onNodeChanged = () => { + onTreeNodeChanged( + key, + rawEntry, + rootNodeForListener, + treeMap, + setProxyNode + ); + }; + const unsubscribe = Tree.on(rawEntry, "nodeChanged", onNodeChanged); + unsubscribeListeners.push(unsubscribe); + // Recursively listen to children nodes of this node + setUpListenersForNodeChildren( + rawEntry, + rootNodeForListener, + treeMap, + unsubscribeListeners, + setProxyNode + ); + } +} + +/** + * @internal + * Fluid only knows how to work with their proxied version of a TreeNode. + * We store a reference to that node in our proxied instances so we can easily use it when working with Fluid APIs. + * + * @param node get the raw node from the proxy + * @returns the raw proxied node that Fluid expects + */ +export function getRawNode( + node: TNode +): TNode { + if (isProxy(node)) { + return getRawNodeFromProxy(node) as TNode; + } + return node; +} + +// Non public utils + +/** + * Callback for when a tree node changed + * + * @param key key where the object is stored in the parent + * @param rawNode the raw node that changed + * @param rootNodeForListener the root node that is being listened to in useTreeNode + * @param treeMap a map where Fluid's proxy node is mapped to our proxied node + * @param setProxyNode setter to set the root proxy node listened to in useTreeNode + */ +function onTreeNodeChanged( + key: string, + rawNode: TreeNode, + rootNodeForListener: TreeNode, + treeMap: WeakMap, + setProxyNode: Dispatch> +) { + const proxyNode = buildProxy(rawNode, treeMap); + const parent = Tree.parent(rawNode); + if (!parent) { + throw new Error( + "useTreeNode onTreeNodeChanged: no parent found for rawParentNode" + ); + } + + proxyParentForNode( + key, + parent, + proxyNode, + rootNodeForListener, + treeMap, + setProxyNode + ); +} + +/** + * Proxies the parent and sets reference to the child node that changed. + * + * @param key key where the object is referenced in its parent node + * @param rawParentNode raw parent tree node + * @param proxyNode proxied instance of the node that changed + * @param rootNodeForListener root node listened to in useTreeNode + * @param treeMap a map where Fluid's proxy node is mapped to our proxied node + * @param setProxyNode setter to set the root proxy node listened to in useTreeNode + */ +function proxyParentForNode( + key: string, + rawParentNode: TreeNode, + proxyNode: TreeNode, + rootNodeForListener: TreeNode, + treeMap: WeakMap, + setProxyNode: Dispatch> +) { + const parentProxy = buildProxy(rawParentNode, treeMap); + let parentProxyHandler = getCustomProxyHandler(parentProxy); + if (!parentProxyHandler) { + throw new Error( + "useTreeNode proxyParentForNode: unexpected error, should always find valid proxy handler" + ); + } + parentProxyHandler[proxiedChildrenKey][key] = proxyNode; + if (rawParentNode === rootNodeForListener) { + setProxyNode(parentProxy as TNode); + } else { + const parentOfParent = Tree.parent(rawParentNode); + if (!parentOfParent) { + throw new Error( + "useTreeNode proxyParentForNode: no parent found for rawParentNode" + ); + } + const parentKey = findKeyOfNode(rawParentNode, parentOfParent); + proxyParentForNode( + parentKey, + parentOfParent, + parentProxy, + rootNodeForListener, + treeMap, + setProxyNode + ); + } +} + +/** + * Returns key where parent[key] == nodeToCheck + * + * @param nodeToCheck tree node to check + * @param parent parent node where nodeToCheck is a child of + * @returns the key for node + */ +function findKeyOfNode(nodeToCheck: TreeNode, parent: TreeNode): string { + let entries = Object.entries(parent); + for (let i = 0; i < entries.length; i++) { + const [key, entry] = entries[i]; + if ( + !entry || + ["string", "boolean", "number", "function"].includes( + typeof entry + ) || + !isTreeNode(entry) + ) { + continue; + } + if (entry === nodeToCheck) return key; + } + throw new Error("Did not find node as a child of parent"); +} + +// Type utils + +/** + * Gets the proxy handler for a given TreeNode, assuming `isCustomProxyHandler` returns true. + * @param proxy the proxied TreeNode to get the handler for. + * @returns the handler if valid, otherwise undefined + */ +function getCustomProxyHandler(proxy: TreeNode) { + const handler = (proxy as any)["[[Handler]]"]; + if (isCustomProxyHandler(handler)) { + return handler; + } + return undefined; +} + +/** + * Gets the raw node for a given proxied tree node + * + * @param proxy the proxied TreeNode to get the raw node for + * @returns the raw node if valid, otherwise undefined + */ +function getRawNodeFromProxy(proxy: TreeNode) { + return getCustomProxyHandler(proxy)?.[rawTNodeKey]; +} diff --git a/packages/live-share-react/src/shared-hooks/useDynamicDDS.ts b/packages/live-share-react/src/shared-hooks/useDynamicDDS.ts index e2c3c76df..4c1a69efd 100644 --- a/packages/live-share-react/src/shared-hooks/useDynamicDDS.ts +++ b/packages/live-share-react/src/shared-hooks/useDynamicDDS.ts @@ -37,6 +37,16 @@ export function useDynamicDDS< */ const { container, clientRef } = useFluidObjectsContext(); + const mountedRef = React.useRef(false); + React.useEffect(() => { + mountedRef.current = true; + return () => { + mountedRef.current = false; + }; + }, []); + + const getDDSPromisesRef = React.useRef>>(new Map()); + /** * Once container is available, this effect will register the setter method so that the DDS loaded * from `dynamicObjects` that matches `uniqueKey` can be passed back to this hook. If one does not yet exist, @@ -45,16 +55,20 @@ export function useDynamicDDS< */ React.useEffect(() => { if (container === undefined) return; - let mounted = true; // Callback method to set the `initialData` into the map when the DDS is first created. const onGetDDS = async () => { try { - const dds = await clientRef.current.getDDS( - uniqueKey, - objectClass, - onFirstInitialize - ); - if (mounted) { + let getPromise = getDDSPromisesRef.current.get(uniqueKey); + if (!getPromise) { + getPromise = clientRef.current.getDDS( + uniqueKey, + objectClass, + onFirstInitialize + ); + getDDSPromisesRef.current.set(uniqueKey, getPromise); + } + const dds = await getPromise; + if (mountedRef.current) { setDDS(dds); } } catch (error: unknown) { @@ -70,9 +84,6 @@ export function useDynamicDDS< } }; onGetDDS(); - return () => { - mounted = false; - }; }, [container, uniqueKey, onFirstInitialize]); return { diff --git a/packages/live-share-react/src/shared-hooks/useSharedMap.ts b/packages/live-share-react/src/shared-hooks/useSharedMap.ts index f276756c4..e843be41d 100644 --- a/packages/live-share-react/src/shared-hooks/useSharedMap.ts +++ b/packages/live-share-react/src/shared-hooks/useSharedMap.ts @@ -8,13 +8,16 @@ import { isEntries, isJSON, isMap } from "../utils"; import { IUseSharedMapResults, SharedMapInitialData } from "../types"; import { useDynamicDDS } from "./useDynamicDDS"; import { SharedMap } from "fluid-framework/legacy"; -import { useFluidObjectsContext } from "../providers"; import { ActionContainerNotJoinedError, ActionLiveDataObjectUndefinedError, -} from "../internal"; +} from "../internal/errors"; +import { useFluidObjectsContext } from "../providers/AzureProvider"; +import { useSharedTree } from "./useSharedTree"; /** + * @deprecated use {@link useSharedTree} instead. + * * React hook for using a Fluid `SharedMap`. * * @remarks @@ -28,19 +31,12 @@ import { * will be created, otherwise it will use the existing one. * @param initialData a JS Map, entries array, or JSON object to insert into the `SharedMap` when creating * the DDS for the first time. - * @returns stateful `map` entries, `setEntry` callback, `deleteEntry` callback, and the Fluid `sharedMap`. + * @returns the Fluid `sharedMap`. */ export function useSharedMap( uniqueKey: string, initialData?: SharedMapInitialData ): IUseSharedMapResults { - /** - * Stateful readonly map (user facing) with most recent values from `SharedMap` and its setter method. - */ - const [map, setMap] = React.useState>( - getInitialData(initialData) - ); - const onFirstInitialize = React.useCallback( (newDDS: SharedMap): void => { /** @@ -64,6 +60,28 @@ export function useSharedMap( const { container } = useFluidObjectsContext(); + /** + * User facing: get a value from the Fluid `SharedMap`. + */ + const getEntry = React.useCallback( + (key: string) => { + if (!container) { + throw new ActionContainerNotJoinedError( + "sharedMap", + "getEntry" + ); + } + if (sharedMap === undefined) { + throw new ActionLiveDataObjectUndefinedError( + "sharedMap", + "getEntry" + ); + } + return sharedMap.get(key); + }, + [container, sharedMap] + ); + /** * User facing: set a value to the Fluid `SharedMap`. */ @@ -108,13 +126,20 @@ export function useSharedMap( [container, sharedMap] ); + const [sharedMapProxy, setSharedMapProxy] = React.useState(); + // Setup change listeners, initial values, etc. React.useEffect(() => { if (!sharedMap) return; + setSharedMapProxy(sharedMap); + + class SharedMapProxyHandler implements ProxyHandler {} // Register valueChanged listener for `SharedMap`. const onValueChanged = () => { - setMap(new Map(sharedMap.entries())); + setSharedMapProxy( + new Proxy(sharedMap, new SharedMapProxyHandler()) + ); }; sharedMap.on("valueChanged", onValueChanged); // Get initial values from `SharedMap`. @@ -127,10 +152,10 @@ export function useSharedMap( }, [sharedMap]); return { - map, + sharedMap: sharedMapProxy, + getEntry, setEntry, deleteEntry, - sharedMap, }; } diff --git a/packages/live-share-react/src/shared-hooks/useSharedTree.ts b/packages/live-share-react/src/shared-hooks/useSharedTree.ts index b3b049275..e5ae6cb49 100644 --- a/packages/live-share-react/src/shared-hooks/useSharedTree.ts +++ b/packages/live-share-react/src/shared-hooks/useSharedTree.ts @@ -5,28 +5,91 @@ import { TreeView, ITree, InsertableTreeFieldFromImplicitField, + TreeFieldFromImplicitField, } from "fluid-framework"; import { IUseSharedTreeResults } from "../types"; -import { useDynamicDDS } from "../shared-hooks"; +import { useDynamicDDS, useTreeNode } from "../shared-hooks"; import React from "react"; -export function useSharedTree( +/** + * Creates a new Fluid `SharedTree` instance if one doesn't already exist. + * @remarks + * Use the `root` variable from the {@link IUseSharedTreeResults} response from this hook with {@link useTreeNode}. + * This makes `root` stateful with React whenever a leaf of `root` changes. + * + * @param uniqueKey the unique key for the `SharedTree`. If one does not yet exist, a new `SharedTree` will be created. + * Otherwise it will use the existing one. + * @param treeViewConfiguration the tree view configuration that contains the `SharedTree` field schema. + * @param initialData the initial data to load into the `SharedTree` when it is first created. + * @returns the {@link IUseSharedTreeResults} with the `root` node. + * + * @example + * ```tsx + * import { SchemaFactory, TreeViewConfiguration } from "fluid-framework"; + * import { useSharedTree, useTreeNode } from "@microsoft/live-share-react"; + * // Declare a schema factory with your unique uuid + * const sf = new SchemaFactory("fc1db2e8-0000-11ee-be57-0242ac120002"); + * class YourObject extends sf.object("YourObject", { + * listChangedCount: sf.number, + * list: sf.array(sf.string), + * }) { + * // You can add your own utility functions + * insert() { + * this.list.insertAtEnd("some text"); + * this.listChangedCount += 1; + * } + * } + * const config = new TreeViewConfiguration({ schema: YourObject }); + * const initialData = new YourObject({ + * number: 0, + * list: [], + * }); + * + * // Must be child component of or + * export const YourComponent = () => { + * // Get the root node of the `SharedTree` mapped to "some-unique-key" + * const { root } = useSharedTree("some-unique-key", config, initialData); + * // Makes root stateful / automatically update when the node changes (e.g., node.count) + * const { node } = useTreeNode(root); + * // node.list is its own TreeNode, so we make it stateful as well + * const { node: list } = useTreeNode(node?.list); + * if (!node || !list) return (<>"Loading"); + * return ( + *
+ *
Changed: {node.listChangedCount}
+ * + * { list.map((item) =>
{item}
) } + *
+ * ); + * } + * ``` + */ +export function useSharedTree< + TSchema extends ImplicitFieldSchema = ImplicitFieldSchema, +>( uniqueKey: string, treeViewConfiguration: TreeViewConfiguration, initialData: InsertableTreeFieldFromImplicitField ): IUseSharedTreeResults { const [treeView, setTreeView] = React.useState>(); + const [root, setRoot] = + React.useState>(); + const onFirstInitialize = React.useCallback( (newDDS: ITree): void => { - // Create a `treeView` with the provided `treeViewConfiguration` - const _treeView = newDDS.viewWith(treeViewConfiguration); - if (_treeView.compatibility.canInitialize) { - // Set initial data - _treeView.initialize(initialData); + try { + // Create a `treeView` with the provided `treeViewConfiguration` + const _treeView = newDDS.viewWith(treeViewConfiguration); + if (_treeView.compatibility.canInitialize) { + // Set initial data + _treeView.initialize(initialData); + } + // `onFirstInitialize` is only called for the user that created the tree, but we need this object for all clients. + // Dispose, since we will call `sharedTree.viewWith` in a `useEffect` down below and set it to state. + _treeView.dispose(); + } catch (err) { + console.error(err); } - // `onFirstInitialize` is only called for the user that created the tree, but we need this object for all clients. - // Dispose, since we will call `sharedTree.viewWith` in a `useEffect` down below and set it to state. - _treeView.dispose(); }, [treeViewConfiguration, initialData] ); @@ -40,17 +103,42 @@ export function useSharedTree( ); /** - * Sets the tree view + * Sets the tree view and root view */ React.useEffect(() => { if (!sharedTree) return; - // Create a `treeView` with the provided `treeViewConfiguration` - const _treeView = sharedTree.viewWith(treeViewConfiguration); - setTreeView(_treeView); + let _treeView: TreeView | undefined = undefined; + try { + // Create a `treeView` with the provided `treeViewConfiguration` + _treeView = sharedTree.viewWith(treeViewConfiguration); + setTreeView(_treeView); + } catch (err) { + console.error(err); + } + + // Listen for changes to root view + const updateRoot = (): void => { + if (_treeView?.compatibility.canView) { + setRoot(_treeView.root); + } else { + setRoot(undefined); + } + }; + + updateRoot(); + const unsubscribeToRoot = _treeView?.events.on( + "rootChanged", + updateRoot + ); + return () => { + _treeView?.dispose(); + unsubscribeToRoot?.(); + }; }, [sharedTree, treeViewConfiguration]); return { treeView, sharedTree, + root, }; } diff --git a/packages/live-share-react/src/shared-hooks/useTreeNode.ts b/packages/live-share-react/src/shared-hooks/useTreeNode.ts new file mode 100644 index 000000000..afcfda86b --- /dev/null +++ b/packages/live-share-react/src/shared-hooks/useTreeNode.ts @@ -0,0 +1,147 @@ +import { Tree, TreeChangeEvents, TreeNode } from "fluid-framework"; +import { IUseTreeNodeResults } from "../types"; +import { useEffect, useRef, useState } from "react"; +import { + getRawNode, + buildProxy, + setUpListenersForNodeChildren, +} from "./internals/tree-node-utils"; + +/** + * Makes a provided Fluid `TreeNode` stateful in React. + * + * @param node the Fluid `SharedTree` `TreeNode` instance to make stateful. + * @param stateChangeType listener type to apply changes for. Default value is "nodeChanged", which has the most optimal performance. + * Provide "treeChanged" to make all children nodes stateful as well when those child nodes change. + * When using the default, you must pass all child `TreeNode` values into `useTreeNode` for them to be stateful as well. + * @returns a stateful version `node` + * + * @example + * Example using default `"nodeChanged"` `stateChangeType` + * ```tsx + * import { SchemaFactory, TreeViewConfiguration } from "fluid-framework"; + * import { useSharedTree, useTreeNode } from "@microsoft/live-share-react"; + * // Declare a schema factory with your unique uuid + * const sf = new SchemaFactory("fc1db2e8-0000-11ee-be57-0242ac120002"); + * class YourObject extends sf.object("YourObject", { + * listChangedCount: sf.number, + * list: sf.array(sf.string), + * }) { + * // You can add your own utility functions + * insert() { + * this.list.insertAtEnd("some text"); + * this.listChangedCount += 1; + * } + * } + * const config = new TreeViewConfiguration({ schema: YourObject }); + * const initialData = new YourObject({ + * number: 0, + * list: [], + * }); + * + * // Must be child component of or + * export const YourComponent = () => { + * // Get the root node of the `SharedTree` mapped to "some-unique-key" + * const { root } = useSharedTree("some-unique-key", config, initialData); + * // Makes root stateful / automatically update when the node changes (e.g., node.count) + * const { node } = useTreeNode(root); + * // node.list is its own TreeNode, so we make it stateful as well + * const { node: list } = useTreeNode(node?.list); + * if (!node || !list) return (<>"Loading"); + * return ( + *
+ *
Changed: {node.listChangedCount}
+ * + * { list.map((item) =>
{item}
) } + *
+ * ); + * } + * ``` + * + * @example + * Example using `"treeChanged"` `stateChangeType` + * ```tsx + * import { SchemaFactory, TreeViewConfiguration } from "fluid-framework"; + * import { useSharedTree, useTreeNode } from "@microsoft/live-share-react"; + * // Declare a schema factory with your unique uuid + * const sf = new SchemaFactory("fc1db2e8-0000-11ee-be57-0242ac120002"); + * + * class ChildObject extends sf.object("ChildObject", { + * count: sf.number, + * }) { + * increment() { + * this.count += 1; + * } + * } + * + * class YourObject extends sf.object("YourObject", { + * child: ChildObject, + * }) {} + * const config = new TreeViewConfiguration({ schema: YourObject }); + * const initialData = new YourObject({ + * child: new ChildObject({ count: 0 }), + * }); + * + * // Must be child component of or + * export const YourComponent = () => { + * // Get the root node of the `SharedTree` mapped to "some-unique-key" + * const { root } = useSharedTree("some-unique-key", config, initialData); + * // Using "treeChanged" prop makes all children nodes stateful as well. + * // Use with caution / measure render performance with React dev tools. + * const { node } = useTreeNode(root, "treeChanged"); + * if (!node) return (<>"Loading"); + * return ( + *
+ *
Changed: {node.child.count}
+ * + *
+ * ); + * } + * ``` + */ +export function useTreeNode( + node: TNode, + stateChangeType: keyof TreeChangeEvents = "nodeChanged" +): IUseTreeNodeResults { + // When we return a proxied node to a developer, it's possible they will pass it back to us in this hook. + // We can't listen using Tree.on using a proxy node though... + // Thus, if we are already listening to a node from another instance of this hook, we look for the unproxied node. + const rawNode = getRawNode(node); + const [proxyNode, setProxyNode] = useState(rawNode); + const treeProxyMapRef = useRef>(new WeakMap()); + + useEffect(() => { + if (!rawNode) return; + + // Set default value + setProxyNode(rawNode); + function onNodeChanged() { + if (!rawNode) return; + + const proxyNode = buildProxy(rawNode, treeProxyMapRef.current); + setProxyNode(proxyNode); + } + // Listen to Fluid's base node from their TreeView so Fluid flex nodes continue to work + const unsubscribeListeners: (() => void)[] = [ + Tree.on(rawNode, "nodeChanged", onNodeChanged), + ]; + if (stateChangeType === "treeChanged") { + // Recursively for all child nodes of this node in the tree + setUpListenersForNodeChildren( + rawNode, + rawNode, + treeProxyMapRef.current, + unsubscribeListeners, + // TODO: fix typing so casting isn't necessary + setProxyNode as any + ); + } + return () => { + unsubscribeListeners.forEach((unsubscribe) => unsubscribe()); + }; + }, [rawNode, stateChangeType]); + + return { + node: proxyNode, + }; +} diff --git a/packages/live-share-react/src/types/PropTypes.ts b/packages/live-share-react/src/types/PropTypes.ts index 10ff768e4..f0fbe417d 100644 --- a/packages/live-share-react/src/types/PropTypes.ts +++ b/packages/live-share-react/src/types/PropTypes.ts @@ -3,8 +3,65 @@ * Licensed under the Microsoft Live Share SDK License. */ +import { UserMeetingRole } from "@microsoft/live-share"; +import { + CanvasReferencePoint, + IBrush, + IPoint, + InkingTool, + LiveCanvasTreeNode, +} from "@microsoft/live-share-canvas"; +import { useLiveCanvas } from "../live-hooks"; + export type SharedMapInitialData = | Map | readonly (readonly [string, T])[] | { [key: string]: T } | undefined; + +/** + * Optional props for {@link useLiveCanvas} + */ +export interface IUseLiveCanvasOptionalProps { + /** + * Optional. Stateful boolean that will activate/de-activate `InkingManager` accordingly. + */ + active?: boolean; + /** + * Optional. Stateful enum for what tool to use in the `InkingManager`. + */ + tool?: InkingTool; + /** + * Optional. Stateful lineBrush object for the selected lineBrush options to use in `InkingManager`. + */ + lineBrush?: IBrush; + /** + * Optional. Stateful offset point to use in the `InkingManager`. Gets the viewport offset. Defaults to 0,0. + */ + offset?: IPoint; + /** + * Optional. Stateful scale number to use in the `InkingManager`. Defaults to 1 and must be greater than 0. + */ + scale?: number; + /** + * Optional. Stateful reference point enum to use in the `InkingManger`. Defaults to "center". + */ + referencePoint?: CanvasReferencePoint; + /** + * Optional. Stateful boolean flag for whether cursor should be shared in `LiveCanvas`. Defaults to false. + */ + isCursorShared?: boolean; + /** + * Optional. url string for the local user to display alongside their cursor. Defaults to undefined. + */ + localUserPictureUrl?: string; + /** + * Optional. A Fluid `LiveCanvasTree` `TreeNode` instance to swap out the underlying storage solution for strokes. + * To learn more, look at Fluid's [SharedTree](https://fluidframework.com/docs/data-structures/tree/) documentation. + */ + node?: LiveCanvasTreeNode; + /** + * Optional. The user roles that are allowed to start/stop/pause the timer. + */ + allowedRoles?: UserMeetingRole[]; +} diff --git a/packages/live-share-react/src/types/ResultTypes.ts b/packages/live-share-react/src/types/ResultTypes.ts index a5947db4e..ee2308439 100644 --- a/packages/live-share-react/src/types/ResultTypes.ts +++ b/packages/live-share-react/src/types/ResultTypes.ts @@ -24,9 +24,19 @@ import { IFluidContainer, ITree, ImplicitFieldSchema, + TreeFieldFromImplicitField, TreeView, } from "fluid-framework"; import { SharedMap } from "fluid-framework/legacy"; +import { useSharedMap, useTreeNode, useSharedTree } from "../shared-hooks"; +import { + useLiveEvent, + useLivePresence, + useMediaSynchronizer, + useLiveTimer, + useLiveCanvas, + useLiveFollowMode, +} from "../live-hooks"; import { IReceiveLiveEvent } from "../interfaces"; import { OnPauseTimerAction, @@ -55,13 +65,19 @@ export interface ILiveShareContainerResults extends IAzureContainerResults { } /** - * Return type of `useSharedMap` hook. + * @deprecated use {@link useSharedTree} instead. + * + * Return type of {@link useSharedMap} hook. */ export interface IUseSharedMapResults { /** - * Stateful map of most recent values from `SharedMap`. + * The Fluid `SharedMap` object. + */ + sharedMap: (Map & SharedMap) | undefined; + /** + * Callback method to get entries in the `SharedMap`. */ - map: ReadonlyMap; + getEntry: (key: string) => TData | undefined; /** * Callback method to set/replace new entries in the `SharedMap`. */ @@ -70,14 +86,10 @@ export interface IUseSharedMapResults { * Callback method to delete an existing entry in the `SharedMap`. */ deleteEntry: (key: string) => void; - /** - * The Fluid `SharedMap` object, should you want to use it directly. - */ - sharedMap: SharedMap | undefined; } /** - * Return type of `useSharedMap` hook. + * Return type of {@link useSharedTree} hook. */ export interface IUseSharedTreeResults { /** @@ -88,10 +100,24 @@ export interface IUseSharedTreeResults { * The Fluid `SharedTree` object, should you want to use it directly. */ sharedTree: ITree | undefined; + /** + * Root node + */ + root: TreeFieldFromImplicitField | undefined; +} + +/** + * Return type of {@link useTreeNode} hook. + */ +export interface IUseTreeNodeResults { + /** + * The Fluid `TreeNode` + */ + node: TNode; } /** - * Return type of `useLiveEvent` hook. + * Return type of {@link useLiveEvent} hook. */ export interface IUseLiveEventResults { /** @@ -115,7 +141,7 @@ export interface IUseLiveEventResults { } /** - * Return type of `useLiveTimer` hook. + * Return type of {@link useLiveTimer} hook. */ export interface IUseLiveTimerResults { /** @@ -149,7 +175,7 @@ export interface IUseLiveTimerResults { } /** - * Return type of `useLivePresence` hook. + * Return type of {@link useLivePresence} hook. */ export interface IUseLivePresenceResults { /** @@ -178,7 +204,7 @@ export interface IUseLivePresenceResults { } /** - * Return type of `useMediaSynchronizer` hook. + * Return type of {@link useMediaSynchronizer} hook. */ export interface IUseMediaSynchronizerResults { /** @@ -228,7 +254,7 @@ export interface IUseMediaSynchronizerResults { } /** - * Return type of `useLiveCanvas` hook. + * Return type of {@link useLiveCanvas} hook. */ export interface IUseLiveCanvasResults { /** @@ -242,7 +268,7 @@ export interface IUseLiveCanvasResults { } /** - * Return type of `useLiveFollowMode` hook. + * Return type of {@link useLiveFollowMode} hook. */ export interface IUseLiveFollowModeResults { /** diff --git a/packages/live-share/src/internals/BaseLiveShareClient.ts b/packages/live-share/src/internals/BaseLiveShareClient.ts index 294883610..cd833f9ad 100644 --- a/packages/live-share/src/internals/BaseLiveShareClient.ts +++ b/packages/live-share/src/internals/BaseLiveShareClient.ts @@ -23,7 +23,6 @@ import { TurboDynamicObjects, TurboStateMap, } from "./smuggle"; -import { isErrorLike } from "./type-guards"; import { getFactoryName } from "./fluid-duplicated"; import { ExpectedError } from "../errors"; diff --git a/samples/javascript/04.live-share-react/src/components/ExampleLiveCanvas.jsx b/samples/javascript/04.live-share-react/src/components/ExampleLiveCanvas.jsx index b6eb1a915..792e795a0 100644 --- a/samples/javascript/04.live-share-react/src/components/ExampleLiveCanvas.jsx +++ b/samples/javascript/04.live-share-react/src/components/ExampleLiveCanvas.jsx @@ -8,17 +8,11 @@ export const ExampleLiveCanvas = () => { const [active, setActive] = useState(true); const [tool, setTool] = useState(InkingTool.pen); const [isCursorShared, setIsCursorShared] = useState(true); - const { liveCanvas } = useLiveCanvas( - "CUSTOM-LIVE-CANVAS", - liveCanvasRef, + const { liveCanvas } = useLiveCanvas("CUSTOM-LIVE-CANVAS", liveCanvasRef, { active, tool, - undefined, - undefined, - undefined, - undefined, - isCursorShared - ); + isCursorShared, + }); return (
diff --git a/samples/typescript/04.live-share-react/src/App.tsx b/samples/typescript/04.live-share-react/src/App.tsx index 19ce0a170..9959d054c 100644 --- a/samples/typescript/04.live-share-react/src/App.tsx +++ b/samples/typescript/04.live-share-react/src/App.tsx @@ -9,6 +9,7 @@ import { TabConfig, } from "./pages"; import { AppRoutes } from "./constants"; +import { FluentProvider, teamsLightTheme } from "@fluentui/react-components"; const IN_TEAMS = inTeams(); @@ -42,7 +43,7 @@ export default function App() { const appReady = (IN_TEAMS && initialized) || !IN_TEAMS; return ( - <> + {appReady && ( @@ -74,6 +75,6 @@ export default function App() { )} - + ); } diff --git a/samples/typescript/04.live-share-react/src/components/ExampleLiveCanvas.tsx b/samples/typescript/04.live-share-react/src/components/ExampleLiveCanvas.tsx index f728c1d65..3a7bdc46e 100644 --- a/samples/typescript/04.live-share-react/src/components/ExampleLiveCanvas.tsx +++ b/samples/typescript/04.live-share-react/src/components/ExampleLiveCanvas.tsx @@ -2,6 +2,7 @@ import { useLiveCanvas } from "@microsoft/live-share-react"; import { InkingTool } from "@microsoft/live-share-canvas"; import { FC, useState } from "react"; import { useRef } from "react"; +import { FlexRow } from "./internals/flex"; export const ExampleLiveCanvas: FC = () => { const liveCanvasRef = useRef(null); @@ -11,67 +12,99 @@ export const ExampleLiveCanvas: FC = () => { const { inkingManager, liveCanvas } = useLiveCanvas( "CUSTOM-LIVE-CANVAS", liveCanvasRef, - active, - tool, - undefined, - undefined, - undefined, - undefined, - isCursorShared + { + active, + tool, + isCursorShared, + } ); return (
-
- {!!liveCanvas && ( -
- - - - - - -
- )} + +
+ +
+ {!!liveCanvas && ( + + + + + + + + + + + + )} +
); }; diff --git a/samples/typescript/04.live-share-react/src/components/ExampleLiveState.tsx b/samples/typescript/04.live-share-react/src/components/ExampleLiveState.tsx index 24931afca..53bd7d4c7 100644 --- a/samples/typescript/04.live-share-react/src/components/ExampleLiveState.tsx +++ b/samples/typescript/04.live-share-react/src/components/ExampleLiveState.tsx @@ -3,30 +3,51 @@ import { useLiveShareContext, useLiveState, } from "@microsoft/live-share-react"; -import { UserMeetingRole, LiveShareClient } from "@microsoft/live-share"; -import { FC, ReactNode, useState } from "react"; +import { UserMeetingRole } from "@microsoft/live-share"; +import { FC, ReactNode, useMemo, useState } from "react"; +import { ExampleSharedTree } from "./ExampleSharedTree"; +import { FlexColumn } from "./internals/flex"; +import { NavigationBar } from "./internals/NavigationBar"; +import { + Dropdown, + Option, + useId, + DropdownProps, + Title1, + Caption1, +} from "@fluentui/react-components"; +import { ExampleLiveCanvas } from "./ExampleLiveCanvas"; +import { ExampleLiveEvent } from "./ExampleLiveEvent"; +import { ExampleLivePresence } from "./ExampleLivePresence"; +import { ExampleLiveTimer } from "./ExampleLiveTimer"; +import { ExampleMediaSynchronizer } from "./ExampleMediaSynchronizer"; +import { ExampleSharedMap } from "./ExampleSharedMap"; +import { ExampleSharedState } from "./ExampleSharedState"; -enum ExampleAppStatus { - WAITING = "WAITING", - START = "START", +enum OpenDDS { + useLiveCanvas = "useLiveCanvas", + useLiveEvent = "useLiveEvent", + useMediaSynchronizer = "useMediaSynchronizer", + useSharedState = "useSharedState", + useSharedTree = "useSharedTree", + useLiveTimer = "useLiveTimer", + useLivePresence = "useLivePresence", + useSharedMap = "useSharedMap", } +const options = Object.keys(OpenDDS); interface ILiveStateData { - status: ExampleAppStatus; + status: OpenDDS | null; timeStarted?: number; } const ALLOWED_ROLES = [UserMeetingRole.organizer, UserMeetingRole.presenter]; const INITIAL_STATE: ILiveStateData = { - status: ExampleAppStatus.WAITING, + status: null, }; -interface IExampleStateProps { - waitingContent: ReactNode; - startContent: ReactNode; -} - -export const ExampleLiveState: FC = (props) => { +export const ExampleLiveState: FC = () => { + const dropdownId = useId("dropdown-default"); const [state, setState] = useLiveState( "CUSTOM-STATE-ID", INITIAL_STATE, @@ -34,45 +55,65 @@ export const ExampleLiveState: FC = (props) => { ); const { timestampProvider } = useLiveShareContext(); - if (state.status === ExampleAppStatus.WAITING) { - return ( -
-
-

{`Start round:`}

- - -
-

{"Welcome to Fluid React!"}

- {props.waitingContent} -
- ); - } + const onOptionSelect: DropdownProps["onOptionSelect"] = (ev, data) => { + if (!data.optionText || !(data.optionText in OpenDDS)) return; + setState({ + timeStarted: timestampProvider?.getTimestamp(), + status: data.optionText as OpenDDS, + }); + }; + return ( -
-
-

{`Time started: ${state.timeStarted}`}

- - -
- {props.startContent} -
+ + + + + {options.map((option) => ( + + ))} + + + + + {state.status === null && ( + + {"Welcome to Live Share React!"} + + {"Pick a hook to test from the dropdown above"} + + + )} + {state.status === OpenDDS.useLiveCanvas && ( + + )} + {state.status === OpenDDS.useLiveEvent && } + {state.status === OpenDDS.useLivePresence && ( + + )} + {state.status === OpenDDS.useLiveTimer && } + {state.status === OpenDDS.useMediaSynchronizer && ( + + )} + {state.status === OpenDDS.useSharedMap && } + {state.status === OpenDDS.useSharedState && ( + + )} + {state.status === OpenDDS.useSharedTree && ( + + )} + + ); }; diff --git a/samples/typescript/04.live-share-react/src/components/ExampleSharedMap.tsx b/samples/typescript/04.live-share-react/src/components/ExampleSharedMap.tsx index 3f2cf6c3b..4f5dc5902 100644 --- a/samples/typescript/04.live-share-react/src/components/ExampleSharedMap.tsx +++ b/samples/typescript/04.live-share-react/src/components/ExampleSharedMap.tsx @@ -7,10 +7,14 @@ import { FC } from "react"; export const EXAMPLE_SHARED_MAP_KEY = "CUSTOM-CARDS-MAP"; export const ExampleSharedMap: FC = () => { - const { map, setEntry, deleteEntry } = useSharedMap( + const { sharedMap, deleteEntry, setEntry } = useSharedMap( EXAMPLE_SHARED_MAP_KEY ); + if (!sharedMap) { + return <>Loading...; + } + return (
@@ -28,7 +32,7 @@ export const ExampleSharedMap: FC = () => {
- {[...map.values()].map((cardValue) => ( + {[...sharedMap.values()].map((cardValue) => ( NoteComment, +]) { + public addNode(author: string) { + const timeStamp = new Date().getTime(); + + // Define the note to add to the SharedTree - this must conform to + // the schema definition of a note + const newVote = new NoteComment({ + id: uuid(), + text: "", + author, + votes: [], + created: timeStamp, + lastChanged: timeStamp, + }); + + // Insert the note into the SharedTree. + this.insertAtEnd(newVote); + } +} + +export class NoteHeader extends sf.object("NoteHeader", { + color: sf.optional(sf.string), + emoji: sf.optional(sf.string), +}) { + setRandomVibrantColor() { + const vibrantColors: string[] = [ + "#FF5733", // Vibrant Red-Orange + "#FFBD33", // Vibrant Orange + "#FFD733", // Vibrant Yellow + "#33FF57", // Vibrant Green + "#33FFBD", // Vibrant Aqua + "#33D7FF", // Vibrant Sky Blue + "#3357FF", // Vibrant Blue + "#8D33FF", // Vibrant Purple + "#FF33BD", // Vibrant Pink + "#FF3357", // Vibrant Red + ]; + + const randomIndex: number = Math.floor( + Math.random() * vibrantColors.length + ); + this.color = vibrantColors[randomIndex]; + } + setRandomEmoji() { + const vibrantEmojis: string[] = [ + "🌟", // Star + "🔥", // Fire + "🌈", // Rainbow + "🍓", // Strawberry + "🍊", // Tangerine + "🍋", // Lemon + "🍀", // Four Leaf Clover + "🌸", // Cherry Blossom + "🎨", // Palette + "🎉", // Party Popper + ]; + + const randomIndex: number = Math.floor( + Math.random() * vibrantEmojis.length + ); + this.emoji = vibrantEmojis[randomIndex]; + } +} + +// Define the schema for the note object. +// Helper functions for working with the data contained in this object +// are included in this class definition as methods. +export class Note extends sf.object( + "Note", + // Fields for Notes which SharedTree will store and synchronize across clients. + // These fields are exposed as members of instances of the Note class. + { + /** + * Id to make building the React app simpler. + */ + id: sf.string, + text: sf.string, + author: sf.string, + /** + * Sequence of user ids to track which users have voted on this note. + */ + votes: sf.array(sf.string), + created: sf.number, + lastChanged: sf.number, + header: NoteHeader, + comments: NoteComments, + } +) { + // Update the note text and also update the timestamp in the note + public updateText(text: string) { + this.lastChanged = new Date().getTime(); + this.text = text; + } + + public toggleVote(user: string) { + const index = this.votes.indexOf(user); + if (index > -1) { + this.votes.removeAt(index); + } else { + this.votes.insertAtEnd(user); + } + } + + /** + * Removes a node from its parent {@link Notes}. + * If the note is not in an {@link Notes}, it is left unchanged. + */ + public delete() { + const parent = Tree.parent(this); + // Use type narrowing to ensure that parent is Items as expected for a note. + if (Tree.is(parent, Notes)) { + const index = parent.indexOf(this); + parent.removeAt(index); + } + } +} + +export type INote = typeof Note; + +// Schema for a list of Notes and Groups. +export class Notes extends sf.array("Notes", [() => Note]) { + public addNode(author: string) { + const timeStamp = new Date().getTime(); + + // Define the note to add to the SharedTree - this must conform to + // the schema definition of a note + const newNote = new Note({ + id: uuid(), + text: "", + author, + votes: [], + created: timeStamp, + lastChanged: timeStamp, + comments: [], + header: new NoteHeader({ + emoji: undefined, + color: undefined, + }), + }); + + // Insert the note into the SharedTree. + this.insertAtEnd(newNote); + } +} + +// Export the tree config appropriate for this schema. +// This is passed into the SharedTree when it is initialized. +export const appTreeConfiguration = new TreeViewConfiguration( + // Schema for the root + { schema: Notes } +); diff --git a/samples/typescript/04.live-share-react/src/components/ExampleSharedTree.tsx b/samples/typescript/04.live-share-react/src/components/ExampleSharedTree.tsx new file mode 100644 index 000000000..705ef1f04 --- /dev/null +++ b/samples/typescript/04.live-share-react/src/components/ExampleSharedTree.tsx @@ -0,0 +1,143 @@ +import { useSharedTree, useTreeNode } from "@microsoft/live-share-react"; +import { FC, memo, useCallback, ChangeEvent } from "react"; +import { + Note, + NoteHeader, + Notes, + appTreeConfiguration, +} from "./ExampleSharedTree-schema"; +import { Textarea, TextareaOnChangeData } from "@fluentui/react-components"; + +const initialData = new Notes([]); + +export const EXAMPLE_SHARED_TREE_KEY = "MY-TREE"; + +export const ExampleSharedTree: FC = () => { + // Live Share hook that creates a new SharedTree instance dynamically. + // `root` is of type `Notes`, which is just a list of `Note` nodes. + const { root } = useSharedTree( + EXAMPLE_SHARED_TREE_KEY, + appTreeConfiguration, + initialData + ); + + // Live Share hook that makes the `root` value stateful. + // By default, all child nodes of `notes` are not stateful and must be passed into `useTreeNode`. + const { node: notes } = useTreeNode(root); + + if (!root) { + return <>Loading root...; + } + if (!notes) { + return <>Loading notes...; + } + return ( +
+
+

{"Notes"}

+ +
+
+ {notes.map((note) => ( + + ))} +
+
+ ); +}; + +interface INoteStickyProps { + noteNode: Note; +} + +const NoteSticky: FC = ({ noteNode }) => { + // Makes the `noteNode` value stateful to React. + // Here we use the "treeChanged" prop, which will ensure all child nodes are stateful also. + // Since this note is a pretty small component, it is pretty safe to do this here. + const { node: note } = useTreeNode(noteNode, "treeChanged"); + const onTextChange = useCallback( + (_: ChangeEvent, data: TextareaOnChangeData) => { + note.text = data.value; + }, + [note] + ); + return ( +
+ +
{`${note.author} | ${note.votes.length} votes`}
+
+