From 3053974786e9ff008a4f12b0ad71c8169530a091 Mon Sep 17 00:00:00 2001 From: Eoin O'Brien Date: Tue, 18 Oct 2022 19:12:58 -0400 Subject: [PATCH] Add Live Share to Meeting Signing sample (#500) * Add Live Share to Meeting Signing * fix typo Co-authored-by: Wajeed-msft <31851992+Wajeed-msft@users.noreply.github.com> Co-authored-by: Wajeed-msft <31851992+Wajeed-msft@users.noreply.github.com> --- .../csharp/.tours/live-share.tour | 111 + .../csharp/Docs/live-share.md | 58 + .../csharp/README.md | 14 + .../ClientApp/package-lock.json | 3091 +++++++++++------ .../MeetingSigning.Web/ClientApp/package.json | 10 +- .../src/components/Cursor/Cursor.module.css | 14 + .../src/components/Cursor/Cursor.tsx | 30 + .../src/components/Cursor/CursorsRenderer.tsx | 45 + .../ClientApp/src/components/Cursor/index.ts | 3 + .../DocumentStage/DocumentStage.module.css | 8 + .../DocumentStage/DocumentStage.tsx | 152 +- .../components/Documents/Document.module.css | 4 +- .../src/components/Documents/Document.tsx | 2 +- .../components/Documents/DocumentChooser.tsx | 320 +- .../LiveSharePage/LiveSharePage.module.css | 11 + .../LiveSharePage/LiveSharePage.tsx | 56 + .../src/components/LiveSharePage/index.ts | 2 + .../SidepanelDocumentCard.module.css | 6 +- .../SidepanelDocumentCard.tsx | 49 +- .../SidepanelDocumentCardList.tsx | 31 +- .../src/components/Signatures/Signature.css | 5 + .../StageControls/StageControls.module.css | 11 + .../StageControls/StageControls.stories.tsx | 73 + .../StageControls/StageControls.tsx | 90 + .../src/components/StageControls/index.ts | 2 + .../ClientApp/src/hooks/index.ts | 22 +- .../src/hooks/useCursorLocationDom.ts | 49 + .../src/hooks/useCursorLocationsLiveShare.ts | 73 + .../ClientApp/src/hooks/useLiveShare.ts | 63 + .../ClientApp/src/hooks/useScrollOffsetDom.ts | 68 + .../src/hooks/useScrollOffsetLiveShare.ts | 142 + .../ClientApp/src/hooks/useTakeControl.ts | 125 + .../src/utils/TeamsProvider/TeamsProvider.tsx | 6 + .../ClientApp/tsconfig.json | 2 +- .../MeetingSigning.Web/Manifest/manifest.json | 8 + 35 files changed, 3642 insertions(+), 1114 deletions(-) create mode 100644 samples/meetings-share-to-stage-signing/csharp/.tours/live-share.tour create mode 100644 samples/meetings-share-to-stage-signing/csharp/Docs/live-share.md create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/Cursor.module.css create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/Cursor.tsx create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/CursorsRenderer.tsx create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/index.ts create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.module.css create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/LiveSharePage/LiveSharePage.module.css create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/LiveSharePage/LiveSharePage.tsx create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/LiveSharePage/index.ts create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/StageControls/StageControls.module.css create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/StageControls/StageControls.stories.tsx create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/StageControls/StageControls.tsx create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/StageControls/index.ts create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/hooks/useCursorLocationDom.ts create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/hooks/useCursorLocationsLiveShare.ts create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/hooks/useLiveShare.ts create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/hooks/useScrollOffsetDom.ts create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/hooks/useScrollOffsetLiveShare.ts create mode 100644 samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/hooks/useTakeControl.ts diff --git a/samples/meetings-share-to-stage-signing/csharp/.tours/live-share.tour b/samples/meetings-share-to-stage-signing/csharp/.tours/live-share.tour new file mode 100644 index 0000000000..5c4508c076 --- /dev/null +++ b/samples/meetings-share-to-stage-signing/csharp/.tours/live-share.tour @@ -0,0 +1,111 @@ +{ + "$schema": "https://aka.ms/codetour-schema", + "title": "Live Share", + "steps": [ + { + "file": "Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.tsx", + "description": "In this demo Live Share for Teams is used on our meeting stage. \r\n\r\nIn this file we call hooks to setup both the DOM event handlers and the Live Share event handlers we need to get the document scrolling, cursor location and taking of control set up.\r\n\r\nIn this code tour we will run through how we are handle the syncing of scroll location, our other Live Share features follow a similar structure. Scroll Location syncing is where as a presenter scrolls a document, others in the meeting will scroll to the same point, similar to how a presenter navigating slides in PowerPoint Live. We control who is the presenter by the `takeControl` event.", + "line": 30 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.tsx", + "description": "To keep the code easier to understand we have sepearated the code that concerns interations with the DOM, like reading the current scroll location and setting the document scroll position.", + "line": 37 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/hooks/useScrollOffsetDom.ts", + "description": "Here we listen for scroll events, and call a callback which sets a the scroll position in React state", + "line": 44 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/hooks/useScrollOffsetDom.ts", + "description": "When setting the scroll location it's important to know the size of the element you are scrolling. If your element (document in our case) is able to change size on different screen sizes the percentage scrolled might not line up correctly, especially if word wraps to different lines on screen size changes.\r\n\r\nThis is even more important if you are trying to highlight a specific word using an exact pixel placement like with cursors.", + "line": 36 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/hooks/useScrollOffsetDom.ts", + "description": "This hooks also provides a function that can be called to set the scroll location. This is called when a relevant Live Share event is recieved", + "line": 49 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.tsx", + "description": "The `useLiveShare` hook creates or joins our Live Share container and passes back it's objects so they can be used in feature specific hooks.", + "line": 41 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/hooks/useLiveShare.ts", + "description": "Here we [call the Live Share SDK](https://learn.microsoft.com/en-gb/microsoftteams/platform/apps-in-teams-meetings/teams-live-share-capabilities?tabs=typescript#join-a-meeting-session) to join the container. We pass in the schema of the data structures we want our container to have, and if we are able to join the container, it is returned.\r\n\r\nThe next user who joins the meeting will be given the same container.\r\n\r\nOne cavet, is that this container can last for longer than the length of the meeting (but less than 24 hours), so if you want to change the schema will developing you will have to create a new meeting or you will see failures.", + "line": 48 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.tsx", + "description": "`useTakeControl`, `useScrollOffsetLiveShare` and `useCursorLocationsLiveShare` is where we set up the Live Share portion of our features. ", + "line": 49, + "selection": { + "start": { + "line": 71, + "character": 5 + }, + "end": { + "line": 71, + "character": 32 + } + } + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.tsx", + "description": "We have a simple spinner page that waits for the Live Share container, and events to be started.", + "line": 119 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/hooks/useScrollOffsetLiveShare.ts", + "description": "We start the scrollOffsetEvent here, allowing only organisers and presenters to send these events", + "line": 127 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.tsx", + "description": "Here is how we connect the DOM concerns with the Live Share concerns. Calling `sendScrollOffset` when the DOM `position` changes.", + "line": 109 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/hooks/useScrollOffsetLiveShare.ts", + "description": "`sendScrollOffset` is called when the document is scrolled, we use optimistic concurrency to save latest scroll position before calling `throttledSendLatestScrollOffset`.", + "line": 81 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/hooks/useScrollOffsetLiveShare.ts", + "description": "Here we throttle the sending of events to Live Share to once every 50ms. This helps to prevent overloading the Azure Fluid Relay with unnecessary events, and also fellow meeting attendees have to handle less events.", + "line": 77 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/hooks/useScrollOffsetLiveShare.ts", + "description": "We only want to send event if the user who scrolled is actually in control (that is handled by `useTakeControl`). Here we check that and then send the latest scroll position to other participants.", + "line": 46 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/hooks/useScrollOffsetLiveShare.ts", + "description": "Irrespective of who is presenting, when the document is scrolled this function will be called. If a viewer's document scrolls because they received a Live Share event of the presenter's scroll, they will end up in this function.\r\n\r\nHere we check to see if the user has scrolled more than a small percentage away from the presenter. If so, we suspended following the presenter to allow this user to scroll the document at their own pace.", + "line": 60 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/hooks/useScrollOffsetLiveShare.ts", + "description": "If a suspended follower decides to end their suspension they can follow again by calling this function", + "line": 90 + }, + { + "file": "Source/MeetingSigning.Web/ClientApp/src/hooks/useScrollOffsetLiveShare.ts", + "description": "When a new scroll offset event comes in we handle it here. Where we check that the event is from the person who we have marked as in control, and then if following we call `setPosition` which is a function from `useScrollOffsetDom` that will actually scroll the document", + "line": 104, + "selection": { + "start": { + "line": 117, + "character": 11 + }, + "end": { + "line": 117, + "character": 22 + } + } + } + ] +} \ No newline at end of file diff --git a/samples/meetings-share-to-stage-signing/csharp/Docs/live-share.md b/samples/meetings-share-to-stage-signing/csharp/Docs/live-share.md new file mode 100644 index 0000000000..c11f7452c9 --- /dev/null +++ b/samples/meetings-share-to-stage-signing/csharp/Docs/live-share.md @@ -0,0 +1,58 @@ +# Live Share tips + +The below are some experiences I have had while working with Live Share, sharing here in an informal manner in case it is useful to someone else. + +## Getting a user's roles +Getting a user's roles is very helpful if you have an Ephemeral Object that is limited to specific roles and you want to alter the UI based on those roles. For example, you might not want to show a "take control" button to someone who cannot take control. + +In the response from `joinContainer` a `services` object is returned. That object contains a `audience` that can be used to get a user's clientIds. One of those clientIds in turn can be used to get the user's roles. + +Please note, that currently the user's roles are cached for 5 minutes so if a user's role is changed while the app is sharing, it can take a number of minutes for the roles list to update. + +Example: +```typescript + const ROLES_ALLOWED_TO_TAKE_CONTROL = [ + UserMeetingRole.organizer, + UserMeetingRole.presenter, + ]; + + ... + + try { + // The below is how we can get a user's roles in a meeting. + // It is used to change the UI based on the user's roles + + // First we get the user's clientId from the audience. + // Note this value will change if the client reconnects to the container, + // and a user can have multiple clientIds, one for each connection. + let currentUserClientId = audience?.getMyself()?.connections[0]?.id; + + if (currentUserClientId === undefined) { + return false; + } + + // Next we call getClientRoles to get the user's roles based on their clientId. + let currentUserRoles = await EphemeralEvent.getClientRoles( + currentUserClientId, + ); + + // Then we check if the current user has any of the allowed roles. + return ( + ROLES_ALLOWED_TO_TAKE_CONTROL.filter((role) => + currentUserRoles.includes(role), + ).length > 0 + ); + } catch (error) { + console.log(error); + return false; + } +``` + +## Inability to know who sent an event +The Live Share SDK is unable to verify who sent an event. Ephemeral Objects are limited by role, and it's impossible for a user to send an event for something that they do not have the correct role for. However, someone with the correct role could send an event that impersonates someone else. + +For example, if you are sending an event for cursor movements on the screen and you want to include the user's name, you have to use send the user's name in the data object sent with the event. Therefore, someone could send an event saying their cursor is someone else. + +At the moment there is no way to work around this except to limit the event to specific roles. + +[The `live-share-canvas` package, sends user's details in the event body for their cursor implementation](https://github.com/microsoft/live-share-sdk/blob/db33713fe47f5c302478387adf8e0c960aab1e2b/packages/live-share-canvas/src/core/LiveCanvas.ts#L349) similar to what is described above. \ No newline at end of file diff --git a/samples/meetings-share-to-stage-signing/csharp/README.md b/samples/meetings-share-to-stage-signing/csharp/README.md index 53e5ecbdc0..6a0672c53b 100644 --- a/samples/meetings-share-to-stage-signing/csharp/README.md +++ b/samples/meetings-share-to-stage-signing/csharp/README.md @@ -77,6 +77,15 @@ sequenceDiagram * A viewer can only view the document. * All signers can view and sign a document. +## Live Share integration +We have added Live Share to this demo to showcase some features of the SDK. The examples we are showing are scroll syncing, taking control and shared cursors. + +* Scroll Offset Syncing, when the person in control scrolls their view of the document, everyone following will see their document scroll too. We the controller scrolls we send an EphemeralEvent that viewers listen for, and if the viewer is following the controller their view will update. If the viewer has scrolled to a different part of the document, their following of the controller will be suspended until they follow the controller again. +* Take Control allows for other viewers to become the scroll controller. Only those that have an approved role (in our example Organiser and Presenter) will be able to claim control. +* Shared Cursors shares presenters cursors across every attendees screen. The approach we are using is primitive and uses DOM manipulation to position the cursors. If you plan to implement cursor support in your app using the [live-share-canvas SDK](https://github.com/microsoft/live-share-sdk/tree/main/packages/live-share-canvas) is recommended. + +*[We have discussed some more thoughts on Live Share here](docs/live-share.md)* + ## Known issues ### Feature Rollout Currently, this app is not fully supported in the following scenarios: @@ -96,6 +105,11 @@ Currently, this app is not fully supported in the following scenarios: " Unable to get information about the App. This happens if you are running the application in a normal browser, and not inside Teams. Install the app inside teams to test this application. To upload the app to Teams follow the instructions on https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload" +## Code Tours +This repository uses VSCode [Code Tours](https://marketplace.visualstudio.com/items?itemName=vsls-contrib.codetour#:~:text=A%20%22code%20tour%22%20is%20simply%20a%20series%20of,CONTRIBUTING.md%20file%20and%2For%20rely%20on%20help%20from%20others.) to explain _how_ the code works. + +The tour files can be found in the `.tours` directory. + ## Prerequisites * Make sure you have an active [Azure subscription](https://azure.microsoft.com/en-us/free/). * Make sure [Publish to organization's app store](https://docs.microsoft.com/en-us/MicrosoftTeams/manage-apps?toc=%2Fmicrosoftteams%2Fplatform%2Ftoc.json&bc=%2Fmicrosoftteams%2Fplatform%2Fbreadcrumb%2Ftoc.json#publish-a-custom-app-to-your-organizations-app-store) is available in Teams. diff --git a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/package-lock.json b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/package-lock.json index 6e088fca2e..86482e59de 100644 --- a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/package-lock.json +++ b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/package-lock.json @@ -8,17 +8,18 @@ "name": "meeting-signing", "version": "0.1.1", "dependencies": { - "@fluentui/react-northstar": "^0.60.1", - "@microsoft/teams-js": "^2.0.0", + "@fluentui/react-northstar": "^0.64.0", + "@microsoft/live-share": "^0.5.1", + "@microsoft/teams-js": "2.0.0-experimental.1", "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", "@types/jest": "^26.0.15", "@types/node": "^12.0.0", - "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", "adaptivecards-templating": "^2.2.0", "classnames": "^2.3.1", + "fluid-framework": "^1.2.3", "lodash": "^4.17.21", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -38,9 +39,10 @@ "@storybook/preset-create-react-app": "^4.0.0", "@storybook/react": "^6.4.18", "@types/lodash": "^4.14.178", + "@types/react": "^17.0.48", "@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/parser": "^5.10.2", - "eslint": "^7.11.0", + "eslint": "^8.0.0", "eslint-config-prettier": "^8.3.0", "eslint-config-react": "^1.1.7", "eslint-config-react-app": "^7.0.0", @@ -2168,28 +2170,33 @@ "dev": true }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@eslint/eslintrc/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==" + }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dependencies": { "type-fest": "^0.20.2" }, @@ -2200,18 +2207,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/@eslint/eslintrc/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==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">= 4" + "node": "*" } }, "node_modules/@fluentui/accessibility": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/accessibility/-/accessibility-0.60.1.tgz", - "integrity": "sha512-TCcZnE6Z8SZBb4EhzL0pKY4Ygb9os7afS5gL+30Q/utyrNWhCyU7G8xvcuuCNW1Yxu630jZxMMjUOlxcpWsCXg==", + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/accessibility/-/accessibility-0.64.0.tgz", + "integrity": "sha512-/8YkiPjKP5keUxKy+0wfuaYS6pOb7ruJg69pvMv10ZO0ev5m+IO1RsbQSjlbUidD9xPhTTDRCfnj2RGZSw6mSg==", "dependencies": { "@babel/runtime": "^7.10.4", "lodash": "^4.17.15" @@ -2226,50 +2247,104 @@ "tslib": "^1.10.0" } }, + "node_modules/@fluentui/react-bindings": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-bindings/-/react-bindings-0.64.0.tgz", + "integrity": "sha512-6m41Jgc6IAso3y7Ju8ZHAd1xBxGJn6as0hoIe9PQyEeTf/Zt51qggQUVDFEr5BnlnPyECy0nqLzJfQJtQ5dt4w==", + "dependencies": { + "@babel/runtime": "^7.10.4", + "@fluentui/accessibility": "^0.64.0", + "@fluentui/dom-utilities": "^1.1.1", + "@fluentui/react-component-event-listener": "^0.64.0", + "@fluentui/react-component-ref": "^0.64.0", + "@fluentui/react-northstar-fela-renderer": "^0.64.0", + "@fluentui/react-northstar-styles-renderer": "^0.64.0", + "@fluentui/state": "^0.64.0", + "@fluentui/styles": "^0.64.0", + "classnames": "^2.2.6", + "lodash": "^4.17.15", + "prop-types": "^15.7.2", + "react-is": "^16.6.3" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17", + "react-dom": "^16.8.0 || ^17", + "scheduler": "^0.19.0 || ^0.20.0" + } + }, "node_modules/@fluentui/react-component-event-listener": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-component-event-listener/-/react-component-event-listener-0.60.1.tgz", - "integrity": "sha512-dU8hVyb78WFk+LJYFxi/IDdeg5LjCtwyUalNrH25APqlOqsL4KTig3PSIxHT6eJsgIqbfP0IzC9/KzXciAyFhg==", + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-component-event-listener/-/react-component-event-listener-0.64.0.tgz", + "integrity": "sha512-9kFbQ8Xo44Bg65JfewcWXe0zjU0MZz+nxDoWtlg0EYNFhvfeBv5UdWl2rbvowWKwhSJAuX8JUtsc7ANvaBFy9A==", "dependencies": { "@babel/runtime": "^7.10.4" }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/@fluentui/react-component-nesting-registry": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-component-nesting-registry/-/react-component-nesting-registry-0.64.0.tgz", + "integrity": "sha512-kU1tISGVBMbYVTxI0RZEsWfbs+iEE4TDwvpYwDYGFpDdIK9xGPKbzba6bg1sQJjSgrVXh/STb77hDqZZIxBrqA==", + "dependencies": { + "@babel/runtime": "^7.10.4", + "prop-types": "^15.7.2" + }, "peerDependencies": { "react": "^16.8.0 || ^17", "react-dom": "^16.8.0 || ^17" } }, "node_modules/@fluentui/react-component-ref": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-component-ref/-/react-component-ref-0.60.1.tgz", - "integrity": "sha512-Ar/wAkJGnsa3TQPJTpiCjDASFHHMcOictnHb4IsPnRjCO3nmcWUPtOcIwKm9BLYoPKt1/s+7VfIbG2IZ2QjIRg==", + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-component-ref/-/react-component-ref-0.64.0.tgz", + "integrity": "sha512-g9/ujN3gN2IDQjoRvyxJF/PB65U3MnybSEzcZWzGmDbrO7H82VqPm/MnwB4Z3AB7myP0rOOPSIlj+I97p6ymMw==", "dependencies": { "@babel/runtime": "^7.10.4", "react-is": "^16.6.3" }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/@fluentui/react-icons-northstar": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-icons-northstar/-/react-icons-northstar-0.64.0.tgz", + "integrity": "sha512-34XPiVJbI+ztbn11y+2bLKqxYoSsjqzLDWZfFptmGsKn8aPwcCxZoM11XLD0ix2SBZzjj4KpMkVr9H0PivheBw==", + "dependencies": { + "@babel/runtime": "^7.10.4", + "@fluentui/accessibility": "^0.64.0", + "@fluentui/react-bindings": "^0.64.0", + "@fluentui/styles": "^0.64.0", + "classnames": "^2.2.6" + }, "peerDependencies": { "react": "^16.8.0 || ^17", "react-dom": "^16.8.0 || ^17" } }, "node_modules/@fluentui/react-northstar": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-northstar/-/react-northstar-0.60.1.tgz", - "integrity": "sha512-X3wYpaMvroDNTY+LgZU4fx6uDqMKOSO+syREKhPFC53vl5H//JIrhcdoK3gOXMONeEYqlx/BJGBa561Eu+MElw==", + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-northstar/-/react-northstar-0.64.0.tgz", + "integrity": "sha512-cZEQzrAdECk/6ZzACCO+c9XaPb8EptedgAjSI+ytGrUw6izvW5TlwfZTPGLWUqbciDIYRG9neUIvNevEVYIjZA==", "dependencies": { "@babel/runtime": "^7.10.4", - "@fluentui/accessibility": "^0.60.1", + "@fluentui/accessibility": "^0.64.0", "@fluentui/dom-utilities": "^1.1.1", - "@fluentui/react-bindings": "^0.60.1", - "@fluentui/react-component-event-listener": "^0.60.1", - "@fluentui/react-component-nesting-registry": "^0.60.1", - "@fluentui/react-component-ref": "^0.60.1", - "@fluentui/react-icons-northstar": "^0.60.1", - "@fluentui/react-northstar-styles-renderer": "^0.60.1", - "@fluentui/react-proptypes": "^0.60.1", - "@fluentui/state": "^0.60.1", - "@fluentui/styles": "^0.60.1", + "@fluentui/react-bindings": "^0.64.0", + "@fluentui/react-component-event-listener": "^0.64.0", + "@fluentui/react-component-nesting-registry": "^0.64.0", + "@fluentui/react-component-ref": "^0.64.0", + "@fluentui/react-icons-northstar": "^0.64.0", + "@fluentui/react-northstar-styles-renderer": "^0.64.0", + "@fluentui/react-portal-compat-context": "^9.0.1", + "@fluentui/react-proptypes": "^0.64.0", + "@fluentui/state": "^0.64.0", + "@fluentui/styles": "^0.64.0", "@popperjs/core": "~2.4.3", - "@uifabric/utilities": "^7.32.3", "body-scroll-lock": "^3.1.5", "classnames": "^2.2.6", "compute-scroll-into-view": "1.0.11", @@ -2280,49 +2355,25 @@ "react-transition-group": "^4.4.1" }, "peerDependencies": { - "react": "^16.8.0", - "react-dom": "^16.8.0" - } - }, - "node_modules/@fluentui/react-northstar/node_modules/@fluentui/react-bindings": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-bindings/-/react-bindings-0.60.1.tgz", - "integrity": "sha512-5YdriOQuD+us1d+zg02JCjeRJi4idn6c9H+/sm9IhvY3cksSJK864ryI3KK4muBjvNLXJ+qCsl9yLM2yes99mg==", - "dependencies": { - "@babel/runtime": "^7.10.4", - "@fluentui/accessibility": "^0.60.1", - "@fluentui/react-component-event-listener": "^0.60.1", - "@fluentui/react-component-ref": "^0.60.1", - "@fluentui/react-northstar-fela-renderer": "^0.60.1", - "@fluentui/react-northstar-styles-renderer": "^0.60.1", - "@fluentui/state": "^0.60.1", - "@fluentui/styles": "^0.60.1", - "@uifabric/utilities": "^7.32.3", - "classnames": "^2.2.6", - "lodash": "^4.17.15", - "prop-types": "^15.7.2", - "react-is": "^16.6.3", - "scheduler": "^0.20.1" - }, - "peerDependencies": { - "react": "^16.8.0", - "react-dom": "^16.8.0" + "react": "^16.8.0 || ^17", + "react-dom": "^16.8.0 || ^17" } }, - "node_modules/@fluentui/react-northstar/node_modules/@fluentui/react-bindings/node_modules/@fluentui/react-northstar-fela-renderer": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-northstar-fela-renderer/-/react-northstar-fela-renderer-0.60.1.tgz", - "integrity": "sha512-xL6G3Cc+nOOF3z+VvSSjw/0415VNLWzFdS/1t9gbo/nRZRo/bH4/zmgNmqnsn0Zk6YNf9exrH/s+ajwgiu5wgA==", + "node_modules/@fluentui/react-northstar-fela-renderer": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-northstar-fela-renderer/-/react-northstar-fela-renderer-0.64.0.tgz", + "integrity": "sha512-B+MFyIOXi8LvBauOUKlsyN/YpsnhPGYmBt2S4PYk6b+yIPLHN8c4wr/6LH0t9bOX6pbmIfuVA4Rs2m65s2hDWw==", "dependencies": { "@babel/runtime": "^7.10.4", - "@fluentui/react-northstar-styles-renderer": "^0.60.1", - "@fluentui/styles": "^0.60.1", + "@fluentui/react-northstar-styles-renderer": "^0.64.0", + "@fluentui/styles": "^0.64.0", "css-in-js-utils": "^3.0.0", "fela": "^10.6.1", "fela-plugin-embedded": "^10.6.1", "fela-plugin-fallback-value": "^10.6.1", "fela-plugin-placeholder-prefixer": "^10.6.1", "fela-plugin-rtl": "^10.6.1", + "fela-tools": "^10.6.1", "fela-utils": "^10.6.1", "inline-style-expand-shorthand": "^1.2.0", "lodash": "^4.17.15", @@ -2330,11 +2381,11 @@ "stylis": "^3.5.4" }, "peerDependencies": { - "react": "^16.8.0", - "react-dom": "^16.8.0" + "react": "^16.8.0 || ^17", + "react-dom": "^16.8.0 || ^17" } }, - "node_modules/@fluentui/react-northstar/node_modules/@fluentui/react-bindings/node_modules/@fluentui/react-northstar-fela-renderer/node_modules/react-fela": { + "node_modules/@fluentui/react-northstar-fela-renderer/node_modules/react-fela": { "version": "10.8.2", "resolved": "https://registry.npmjs.org/react-fela/-/react-fela-10.8.2.tgz", "integrity": "sha512-TDIuOzxwtPcMhxlR4be/s1Er5b7zS8D42QOzaZZGMJskfH1ULFSOpdlBsb32ivqacXatbGZzshHDXGV5vKNkhQ==", @@ -2347,7 +2398,7 @@ "react": "^16.3.0" } }, - "node_modules/@fluentui/react-northstar/node_modules/@fluentui/react-bindings/node_modules/@fluentui/react-northstar-fela-renderer/node_modules/react-fela/node_modules/fela-bindings": { + "node_modules/@fluentui/react-northstar-fela-renderer/node_modules/react-fela/node_modules/fela-bindings": { "version": "10.8.2", "resolved": "https://registry.npmjs.org/fela-bindings/-/fela-bindings-10.8.2.tgz", "integrity": "sha512-NeZaTD8XaR2HmZKdVy0X2eTsTXeN9w/9ys0sd101djI4lD7rjfU6NroUB5YeGtOV/drehs7ufbzI/rStVUYx1g==", @@ -2362,117 +2413,550 @@ "fela": "*" } }, - "node_modules/@fluentui/react-northstar/node_modules/@fluentui/react-component-nesting-registry": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-component-nesting-registry/-/react-component-nesting-registry-0.60.1.tgz", - "integrity": "sha512-N+yEv2uC1/qxzYQu4oniqM4PjXGZqCc6aYMVjfzOCbpgT5pV4sjN737d5Qx8KyAslH/w6MMMQeCofIwAkVLHGQ==", + "node_modules/@fluentui/react-northstar-styles-renderer": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-northstar-styles-renderer/-/react-northstar-styles-renderer-0.64.0.tgz", + "integrity": "sha512-l5OWMQfcYP2n8rOW6ZtnxzUcRnqDCfQkXdD9n0c1AfsYEVDwG1y3r0c1/bUPXN20ez5lHnXU6NEO/nIfkMGd2g==", "dependencies": { "@babel/runtime": "^7.10.4", - "prop-types": "^15.7.2" + "@fluentui/styles": "^0.64.0" }, "peerDependencies": { - "react": "^16.8.0", - "react-dom": "^16.8.0" + "react": "^16.8.0 || ^17" } }, - "node_modules/@fluentui/react-northstar/node_modules/@fluentui/react-icons-northstar": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-icons-northstar/-/react-icons-northstar-0.60.1.tgz", - "integrity": "sha512-4mtqHMahTzjpG4cj/kMzhTdC3orY6sfij0Wyjb9D72GXtmPSiMADuGJTWFoA4NKJCXjlb2bVBopOrAaktZjBSw==", + "node_modules/@fluentui/react-portal-compat-context": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@fluentui/react-portal-compat-context/-/react-portal-compat-context-9.0.1.tgz", + "integrity": "sha512-KhOcXy2tvzNoAqFowkaRGFiLuRuPjzn6i1W30iMkhgsSVKxa/9jxso86Z8R0eZwA+16RNO/Ia2nX1gqfUac9mw==", "dependencies": { - "@babel/runtime": "^7.10.4", - "@fluentui/accessibility": "^0.60.1", - "@fluentui/react-bindings": "^0.60.1", - "@fluentui/styles": "^0.60.1", - "classnames": "^2.2.6" + "tslib": "^2.1.0" }, "peerDependencies": { - "react": "^16.8.0", - "react-dom": "^16.8.0" + "@types/react": ">=16.8.0 <18.0.0", + "react": ">=16.8.0 <18.0.0" } }, - "node_modules/@fluentui/react-northstar/node_modules/@fluentui/react-northstar-styles-renderer": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-northstar-styles-renderer/-/react-northstar-styles-renderer-0.60.1.tgz", - "integrity": "sha512-l9oxq9X1VVwzDXMkaBsd8jECuLLlgKTC9DYIxmxT07kfLd1aY0Y7JNzx9eGOqvesVs8op+27f8L7sZaSonknSQ==", + "node_modules/@fluentui/react-portal-compat-context/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/@fluentui/react-proptypes": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-proptypes/-/react-proptypes-0.64.0.tgz", + "integrity": "sha512-AniTqvYY59v+GiyNwiWgheKASgJM8CxPpc7RaCmHJ0j2g7aS5UfF6OCzCc/yWHb4q9pyRnQDvG8YOyosmwUwtA==", "dependencies": { "@babel/runtime": "^7.10.4", - "@fluentui/styles": "^0.60.1" - }, - "peerDependencies": { - "react": "^16.8.0" + "lodash": "^4.17.15", + "prop-types": "^15.7.2" } }, - "node_modules/@fluentui/react-northstar/node_modules/@types/react": { - "version": "16.14.23", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.23.tgz", - "integrity": "sha512-WngBZLuSkP4IAgPi0HOsGCHo6dn3CcuLQnCfC17VbA7YBgipZiZoTOhObwl/93DsFW0Y2a/ZXeonpW4DxirEJg==", - "peer": true, + "node_modules/@fluentui/state": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/state/-/state-0.64.0.tgz", + "integrity": "sha512-IbiycpJCIJAG78d9Gcs1R22C92J8ckj+Wll15g4tGZ5Cvoc+7Y8vWXB7t618hVYSW3TwjW3YbPddErWc7aj3pw==", "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "@babel/runtime": "^7.10.4" } }, - "node_modules/@fluentui/react-northstar/node_modules/@types/react-dom": { - "version": "16.9.14", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.14.tgz", - "integrity": "sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A==", - "peer": true, + "node_modules/@fluentui/styles": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/styles/-/styles-0.64.0.tgz", + "integrity": "sha512-WkrFCKDP9Mq++0DsHxoOrglrfUmxeI2py+6WFnJnvJneDm6wcX6VrcUZ4FsVQiykJ8I47luc2vF1w7izdUSxIw==", "dependencies": { - "@types/react": "^16" + "@babel/runtime": "^7.10.4", + "csstype": "^3.0.2", + "lodash": "^4.17.15" } }, - "node_modules/@fluentui/react-northstar/node_modules/@uifabric/utilities": { - "version": "7.33.5", - "resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-7.33.5.tgz", - "integrity": "sha512-I+Oi0deD/xltSluFY8l2EVd/J4mvOaMljxKO2knSD9/KoGDlo/o5GN4gbnVo8nIt76HWHLAk3KtlJKJm6BhbIQ==", + "node_modules/@fluentui/styles/node_modules/csstype": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" + }, + "node_modules/@fluidframework/aqueduct": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/aqueduct/-/aqueduct-1.2.7.tgz", + "integrity": "sha512-gHM7vc867L8FisszALHnDtF5gPxqe55UAAeUNjKCGNYH1hgSrDbeY1F8GBT4GgR13wmu0Lmd4bSL6WXiZDtisg==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-loader": "^1.2.7", + "@fluidframework/container-runtime": "^1.2.7", + "@fluidframework/container-runtime-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/map": "^1.2.7", + "@fluidframework/request-handler": "^1.2.7", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/synthesize": "^1.2.7", + "@fluidframework/view-interfaces": "^1.2.7", + "uuid": "^8.3.1" + } + }, + "node_modules/@fluidframework/azure-client": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/azure-client/-/azure-client-1.0.3.tgz", + "integrity": "sha512-a/+zGf+BzRgwim0oxFiS/xtoFqsjNbc8WfE2tAX2wQb1GIG4fgfHwfadDJXCFp1Cf+4Rz+p+UVkFnyfY71MHAg==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/container-definitions": "^1.2.5", + "@fluidframework/container-loader": "^1.2.5", + "@fluidframework/core-interfaces": "^1.2.5", + "@fluidframework/driver-definitions": "^1.2.5", + "@fluidframework/driver-utils": "^1.2.5", + "@fluidframework/fluid-static": "^1.2.5", + "@fluidframework/map": "^1.2.5", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/routerlicious-driver": "^1.2.5", + "@fluidframework/runtime-utils": "^1.2.5", + "@fluidframework/server-services-client": "^0.1036.4000", + "axios": "^0.26.0", + "uuid": "^8.3.1" + }, + "peerDependencies": { + "fluid-framework": "^1.2.5" + } + }, + "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==" + }, + "node_modules/@fluidframework/common-utils": { + "version": "0.32.1", + "resolved": "https://registry.npmjs.org/@fluidframework/common-utils/-/common-utils-0.32.1.tgz", + "integrity": "sha512-8m7nTGLyzQqjGX9qZmE1L65IfSxrcEo35MtCVmH0qfttfVqEFghxXAgtmrcfvKkg6NUDTmb13hdyNx0hZlky7w==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@types/events": "^3.0.0", + "base64-js": "^1.5.1", + "events": "^3.1.0", + "lodash": "^4.17.21", + "sha.js": "^2.4.11" + } + }, + "node_modules/@fluidframework/container-definitions": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-1.2.7.tgz", + "integrity": "sha512-Uca/O1tbMzvpgOz1B2bQFP2iEVuOD1iAt8ffz6rnEomiIoXSmPSFC+DudBBvwGsXbgaM2U/SkLYGu2ZOx6Z3Sw==", "dependencies": { - "@fluentui/dom-utilities": "^1.1.2", - "@uifabric/merge-styles": "^7.19.2", - "@uifabric/set-version": "^7.0.24", - "prop-types": "^15.7.2", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <17.0.0", - "@types/react-dom": ">=16.8.0 <17.0.0", - "react": ">=16.8.0 <17.0.0", - "react-dom": ">=16.8.0 <17.0.0" + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000" } }, - "node_modules/@fluentui/react-northstar/node_modules/csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "peer": true + "node_modules/@fluidframework/container-loader": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/container-loader/-/container-loader-1.2.7.tgz", + "integrity": "sha512-MDMjZw0x0LxEJZAp+/6x50wo8pR8xMUonye7aRZIsM8KaS9abURNSj3lGvWZwCNrZTpKSFipb9Bxw+E2e08Xuw==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/driver-utils": "^1.2.7", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/telemetry-utils": "^1.2.7", + "abort-controller": "^3.0.0", + "double-ended-queue": "^2.1.0-0", + "lodash": "^4.17.21", + "uuid": "^8.3.1" + } }, - "node_modules/@fluentui/react-proptypes": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-proptypes/-/react-proptypes-0.60.1.tgz", - "integrity": "sha512-JK73QKvZ0CCbZ3vOhnnTc9sEjbqCNxH+WYBzdqCfb5v6ZkDBFho6yYIc//DkBgXu+hQCZqQvcJlKaIblsf8+tA==", + "node_modules/@fluidframework/container-runtime": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-1.2.7.tgz", + "integrity": "sha512-ID+09a4mXQ1MRRzEIzns9EWySyp+2lgGpyuojF4a2rSfZTisppJRFTTdgTuMmblTACN38pX7XbBJAESaaVSRaA==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-runtime-definitions": "^1.2.7", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/driver-utils": "^1.2.7", + "@fluidframework/garbage-collector": "^1.2.7", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/telemetry-utils": "^1.2.7", + "double-ended-queue": "^2.1.0-0", + "uuid": "^8.3.1" + } + }, + "node_modules/@fluidframework/container-runtime-definitions": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-1.2.7.tgz", + "integrity": "sha512-LfXsny0KSouyHcTq1Y9XcK9D5krSgWD2E3RwcYokshCxTob6aWWkNR55JB2yvAEapQJbDpS0BNaBsd5mXxgE1A==", "dependencies": { - "@babel/runtime": "^7.10.4", - "lodash": "^4.17.15", - "prop-types": "^15.7.2" + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@types/node": "^14.18.0" } }, - "node_modules/@fluentui/state": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/state/-/state-0.60.1.tgz", - "integrity": "sha512-SPRVxjH/bV4E4Dak/PnBLs1QK8dCrHapd0C6TRGGSYmnG991xlFNIoKGghDJZJ1O1Yh9ZSk28GZISBdS2DzRxQ==", + "node_modules/@fluidframework/container-runtime-definitions/node_modules/@types/node": { + "version": "14.18.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.31.tgz", + "integrity": "sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==" + }, + "node_modules/@fluidframework/container-utils": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/container-utils/-/container-utils-1.2.7.tgz", + "integrity": "sha512-6LYk9PTfl0AwsU3tDR2gD9ArxqhYcBR3tzj90RRi1JCNBeed1Gci69KxASC4O3qvs8ool3WIBBneydhbLvDAUw==", "dependencies": { - "@babel/runtime": "^7.10.4" + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/telemetry-utils": "^1.2.7" } }, - "node_modules/@fluentui/styles": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/styles/-/styles-0.60.1.tgz", - "integrity": "sha512-vLJA4sn8dZdVY5AI2S9y0jEAHu6hs1blTl6inP3jdg0PDPYKh73XWUYdyON64mNtQKIHCl5zPoeAL57Eu93xlw==", + "node_modules/@fluidframework/core-interfaces": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-1.2.7.tgz", + "integrity": "sha512-fw8wVel2htgRbkCiobmQB1+HpaxMCfqVwTQuXXrKUDr595FHU0j1KdJo39ypo3EANqavC1bZlfeMfES/J6FTaA==" + }, + "node_modules/@fluidframework/datastore": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-1.2.7.tgz", + "integrity": "sha512-uZdCtMV4QLLLFTOPwHCRcj0EnKZtPIFQTm/DCJSPvuUp3hkjrFPEv6PL4JuD7FzJx/+XWdcKBeoO0MSWYekTRQ==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/driver-utils": "^1.2.7", + "@fluidframework/garbage-collector": "^1.2.7", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/telemetry-utils": "^1.2.7", + "lodash": "^4.17.21", + "uuid": "^8.3.1" + } + }, + "node_modules/@fluidframework/datastore-definitions": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-1.2.7.tgz", + "integrity": "sha512-rBFUDZ6tR0ol6gQsHflXTU2psTDw4fcRyX6r12Y0k3bsdN1PmV4VciiZa2+vNZl3LPD4oKsvqLaZkdR6lVyiSA==", "dependencies": { - "@babel/runtime": "^7.10.4", - "csstype": "^2.6.7", - "lodash": "^4.17.15" + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@types/node": "^14.18.0" + } + }, + "node_modules/@fluidframework/datastore-definitions/node_modules/@types/node": { + "version": "14.18.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.31.tgz", + "integrity": "sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==" + }, + "node_modules/@fluidframework/driver-base": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-1.2.7.tgz", + "integrity": "sha512-VBYx+YQNsyW/cZJHPdThBHH3xgWzS002Qb1Jtdw4Xn1s31IUYFq0eDDuUL+CBNT28iK4cMaYq3H+H78DzMvONQ==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/driver-utils": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/telemetry-utils": "^1.2.7" + } + }, + "node_modules/@fluidframework/driver-definitions": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-1.2.7.tgz", + "integrity": "sha512-Vk22el2HLNrd7vDMmOM8Dn9hatzhQ11nWSVcUZhbVj74iiKV81javWTHVvPDsp6V6+OKC5DMb71Mw0Tdj/vFmw==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000" + } + }, + "node_modules/@fluidframework/driver-utils": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-1.2.7.tgz", + "integrity": "sha512-OysiT1vMiiuHaeCMVjajrg90z7yWXETmYcqyWg86mjNZW5PfELXINruAWU8adciDKdFg+Q4gygiEKWAlCJU2QQ==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/gitresources": "^0.1036.5000", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/telemetry-utils": "^1.2.7", + "axios": "^0.26.0", + "uuid": "^8.3.1" + } + }, + "node_modules/@fluidframework/fluid-static": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/fluid-static/-/fluid-static-1.2.7.tgz", + "integrity": "sha512-IpdlLFDaSIoR1w9vM+bCcipcyoKnkn2YEx3ixVWJlc/+kZvwvCFZgyBZJl2XaJXZ8lEUbLXjiruo2tsE0lsNYA==", + "dependencies": { + "@fluidframework/aqueduct": "^1.2.7", + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-loader": "^1.2.7", + "@fluidframework/container-runtime-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/request-handler": "^1.2.7", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7" + } + }, + "node_modules/@fluidframework/garbage-collector": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/garbage-collector/-/garbage-collector-1.2.7.tgz", + "integrity": "sha512-z+50HcDgL6/tMShBIwkai/HgSVxGfolgfneXDGGAvozDxlUyCw67R+epdmqROI40GuVvifh0YqnQtJSgtHFnow==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/runtime-definitions": "^1.2.7" + } + }, + "node_modules/@fluidframework/gitresources": { + "version": "0.1036.5000", + "resolved": "https://registry.npmjs.org/@fluidframework/gitresources/-/gitresources-0.1036.5000.tgz", + "integrity": "sha512-Aq030GDRhPJCr7tVHDxFtWDwc6nd1r9x7k0/D34mVAVuXLyubk5dB2BytopZxfo9b91QXIPmjQfQ2GINTdk16w==" + }, + "node_modules/@fluidframework/map": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-1.2.7.tgz", + "integrity": "sha512-v9W7WJ8KGeaGSIUm/lgOkZpuUblhjtiK2mpMGZnoZmQfJjos/YLvSGGFdx54+FUm2aRYc7z/z/yabiO/npsfAQ==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/driver-utils": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/shared-object-base": "^1.2.7", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@fluidframework/merge-tree": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-1.2.7.tgz", + "integrity": "sha512-XrTK+lNIBsv8j0l5WhZe56C6L/vBRgcjbjsTcGnlyCe/bc8lcX0fiGjMAG1/HvhsWiWwqQHeBZtXSkkXEKDolw==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/shared-object-base": "^1.2.7", + "@fluidframework/telemetry-utils": "^1.2.7" + } + }, + "node_modules/@fluidframework/protocol-base": { + "version": "0.1036.5000", + "resolved": "https://registry.npmjs.org/@fluidframework/protocol-base/-/protocol-base-0.1036.5000.tgz", + "integrity": "sha512-tsDtM6jptTwbqkVtqO6KRYRu6614ZwrzfJJEUM0OmTRk6ds5vdA+vPreG4qrrEO40HHy4y9nHx6AyGL/sMxv4w==", + "dependencies": { + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/gitresources": "^0.1036.5000", + "@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/request-handler": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/request-handler/-/request-handler-1.2.7.tgz", + "integrity": "sha512-+Dw00rUPgXSm/CWOKLuAeT/ASrRHgCOrLeGtrWEBkJolUQy/eiPNpVEsf8Kd0vtEl/t35feQ7hoQVmU5NHPjnw==", + "dependencies": { + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-runtime-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7" + } + }, + "node_modules/@fluidframework/routerlicious-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/routerlicious-driver/-/routerlicious-driver-1.2.7.tgz", + "integrity": "sha512-ovjikQ+NcmFdl+c4h4qfE2xRGgOUjBx+/Uli0N9K/bewYwiCBXOh0hV5HvKOA2Rhf000SvFWjtXClxaLZPtYhw==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/driver-base": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/driver-utils": "^1.2.7", + "@fluidframework/gitresources": "^0.1036.5000", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/server-services-client": "^0.1036.5000", + "@fluidframework/telemetry-utils": "^1.2.7", + "cross-fetch": "^3.1.5", + "json-stringify-safe": "5.0.1", + "querystring": "^0.2.0", + "socket.io-client": "^4.4.1", + "url-parse": "^1.5.8", + "uuid": "^8.3.1" + } + }, + "node_modules/@fluidframework/runtime-definitions": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-1.2.7.tgz", + "integrity": "sha512-oPhahKtW/0CXLyU/PP3SJYjudYIzgZPibMEGrZCiNl9n7ZCCWbt1syzUuEo+Hl4ISvGB7kJur7czEf+EpoJ3Yw==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@types/node": "^14.18.0" + } + }, + "node_modules/@fluidframework/runtime-definitions/node_modules/@types/node": { + "version": "14.18.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.31.tgz", + "integrity": "sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==" + }, + "node_modules/@fluidframework/runtime-utils": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-1.2.7.tgz", + "integrity": "sha512-s+OGN4ui5ZopcTqPSI/wg/fdhvQW09WJsS7Bvln0tSykISSf8Rp6vPDd1FG2JMJj5oTDrUniUqjBcAVvRIbmnQ==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-runtime-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/garbage-collector": "^1.2.7", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/telemetry-utils": "^1.2.7" + } + }, + "node_modules/@fluidframework/sequence": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-1.2.7.tgz", + "integrity": "sha512-43FuttETPMMgvCqA/bG24Xxb4Alk80eI31WivxqJ+Pi2LhSL7iC8yfCmDEkb0M5oWtfJi3Px+PSU1Dx0TCtbhw==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/merge-tree": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/shared-object-base": "^1.2.7", + "@fluidframework/telemetry-utils": "^1.2.7", + "uuid": "^8.3.1" + } + }, + "node_modules/@fluidframework/server-services-client": { + "version": "0.1036.5000", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-client/-/server-services-client-0.1036.5000.tgz", + "integrity": "sha512-TBig0U1Fne0h10H6Sylcf6pe9PrYJy6PkLvTv+MX9ojuWsyPJbbhkPX/L2Gj/wmzDY+psvhA2TSLDZOMnpshpw==", + "dependencies": { + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/gitresources": "^0.1036.5000", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "axios": "^0.26.0", + "crc-32": "1.2.0", + "debug": "^4.1.1", + "json-stringify-safe": "^5.0.1", + "jsrsasign": "^10.2.0", + "jwt-decode": "^3.0.0", + "querystring": "^0.2.0", + "sillyname": "^0.1.0", + "uuid": "^8.3.1" + } + }, + "node_modules/@fluidframework/shared-object-base": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-1.2.7.tgz", + "integrity": "sha512-/MqJMzuWourgAfs9sVxOHofesxFnNz6dffzbXwEqPI8tDyOBNxa8GMLAZT/b2oXu/Dcxg6VSPgwyzg8Rx6aktw==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-runtime": "^1.2.7", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/telemetry-utils": "^1.2.7", + "uuid": "^8.3.1" + } + }, + "node_modules/@fluidframework/synthesize": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/synthesize/-/synthesize-1.2.7.tgz", + "integrity": "sha512-iKBvnU1bLqGzrS/vMCsd3XqqvqDcYDFakjWiYn/A3wtGfwApYwvP89YUF3AHyee29YmpHU7RzS6Ga6bV4F4LWQ==" + }, + "node_modules/@fluidframework/telemetry-utils": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-1.2.7.tgz", + "integrity": "sha512-ehb8dzhXZhzmWzvDgDTF3MCcoMxI8Dsw3kX8OIk5YTlAmiW2KBklKaIg/Q05wt+gf96lfGJHGT7chTGQxYaODw==", + "dependencies": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "debug": "^4.1.1", + "events": "^3.1.0", + "uuid": "^8.3.1" + } + }, + "node_modules/@fluidframework/view-interfaces": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/view-interfaces/-/view-interfaces-1.2.7.tgz", + "integrity": "sha512-6/+2ekl5S3ioEw4c0da4NC8ZwMQmthlKV6ejqd9rZKcCpk49RuOOhZMc22BOtBJF4P0IxfFcSgfXVwOd3u184A==", + "dependencies": { + "@fluidframework/core-interfaces": "^1.2.7" } }, "node_modules/@gar/promisify": { @@ -2482,11 +2966,11 @@ "dev": true }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" }, @@ -2494,6 +2978,15 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -3635,6 +4128,17 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/@microsoft/live-share": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@microsoft/live-share/-/live-share-0.5.1.tgz", + "integrity": "sha512-naeIjERwhbKpAiC3p97jWqJY4TCgCYZw8dwJkee3983VzmXl9v2e2eUWhHAAq+qUi6ZolyJv8eS4RwTEesBkxA==", + "dependencies": { + "@fluidframework/azure-client": "~1.0.2", + "@microsoft/teams-js": "2.0.0-experimental.1", + "fluid-framework": "~1.2.3", + "uuid": "^8.3.2" + } + }, "node_modules/@microsoft/recognizers-text-data-types-timex-expression": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-data-types-timex-expression/-/recognizers-text-data-types-timex-expression-1.3.0.tgz", @@ -3645,9 +4149,9 @@ } }, "node_modules/@microsoft/teams-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@microsoft/teams-js/-/teams-js-2.0.0.tgz", - "integrity": "sha512-13Mag9MkUplbZxK1qu55r8YSNkuOpmmZuha7P8Z26ef5ZnrYm9PM3JCoWgDvBqILxWF2e1Yo/5V2Ic9yD9rU0Q==", + "version": "2.0.0-experimental.1", + "resolved": "https://registry.npmjs.org/@microsoft/teams-js/-/teams-js-2.0.0-experimental.1.tgz", + "integrity": "sha512-gZX2FudbtpzqfT4+7uZoDGS2xGUchfvNxC3xu68IbpS58p3KFXTfvpQEUd7oTRY01PYi96w8AHrj7qy5x4xFcg==", "dependencies": { "debug": "4.3.3" } @@ -3986,6 +4490,11 @@ "@sinonjs/commons": "^1.7.0" } }, + "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==" + }, "node_modules/@storybook/addon-actions": { "version": "6.4.18", "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.4.18.tgz", @@ -10945,6 +11454,11 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" }, + "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==" + }, "node_modules/@types/express": { "version": "4.17.13", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", @@ -11168,9 +11682,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "node_modules/@types/react": { - "version": "17.0.36", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.36.tgz", - "integrity": "sha512-CUFUp01OdfbpN/76v4koqgcpcRGT3sYOq3U3N6q0ZVGcyeP40NUdVU+EWe3hs34RNaTefiYyBzOpxBBidCc5zw==", + "version": "17.0.48", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz", + "integrity": "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -11710,15 +12224,6 @@ "node": ">=10" } }, - "node_modules/@uifabric/merge-styles": { - "version": "7.19.2", - "resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-7.19.2.tgz", - "integrity": "sha512-kTlhwglDqwVgIaJq+0yXgzi65plGhmFcPrfme/rXUGMJZoU+qlGT5jXj5d3kuI59p6VB8jWEg9DAxHozhYeu0g==", - "dependencies": { - "@uifabric/set-version": "^7.0.24", - "tslib": "^1.10.0" - } - }, "node_modules/@uifabric/set-version": { "version": "7.0.24", "resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.24.tgz", @@ -11994,6 +12499,17 @@ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" }, + "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/accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -12247,14 +12763,6 @@ "string-width": "^4.1.0" } }, - "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==", - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -12626,14 +13134,6 @@ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", "dev": true }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", @@ -12715,6 +13215,14 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, "node_modules/axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", @@ -13324,7 +13832,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -15124,6 +15631,21 @@ "node": ">=0.10.0" } }, + "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/create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", @@ -15167,6 +15689,14 @@ "sha.js": "^2.4.8" } }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, "node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -16014,6 +16544,11 @@ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" }, + "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==" + }, "node_modules/downshift": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/downshift/-/downshift-5.0.5.tgz", @@ -16166,6 +16701,46 @@ "objectorarray": "^1.0.5" } }, + "node_modules/engine.io-client": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", + "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "node_modules/engine.io-client/node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "engines": { + "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/engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/enhanced-resolve": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", @@ -16186,17 +16761,6 @@ "node": ">=6" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", @@ -16431,48 +16995,47 @@ } }, "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.21.0.tgz", + "integrity": "sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==", "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.3", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -16480,7 +17043,7 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -16929,13 +17492,10 @@ "node": ">=10" } }, - "node_modules/eslint/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dependencies": { - "@babel/highlight": "^7.10.4" - } + "node_modules/eslint/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==" }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", @@ -16976,32 +17536,64 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/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==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/eslint/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==", + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, "node_modules/eslint/node_modules/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dependencies": { "type-fest": "^0.20.2" }, @@ -17012,12 +17604,68 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/eslint/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==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/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==", + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/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==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/path-key": { @@ -17062,24 +17710,38 @@ } }, "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", + "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/esprima": { @@ -17175,6 +17837,14 @@ "node": ">= 0.6" } }, + "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/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -17243,6 +17913,14 @@ "node": ">= 0.8.0" } }, + "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==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -18031,6 +18709,18 @@ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==" }, + "node_modules/fluid-framework": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fluid-framework/-/fluid-framework-1.2.7.tgz", + "integrity": "sha512-sAvXg4PsPkbXKuPWmr4lM+TWcw/5jkAUzRfqpeJJQKua0pe+NioM2KhanFmdl68FTNESOkFfr1qKcBmEA+xXgA==", + "dependencies": { + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-loader": "^1.2.7", + "@fluidframework/fluid-static": "^1.2.7", + "@fluidframework/map": "^1.2.7", + "@fluidframework/sequence": "^1.2.7" + } + }, "node_modules/flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -18042,9 +18732,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", "funding": [ { "type": "individual", @@ -18617,15 +19307,15 @@ } }, "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "engines": { @@ -18640,6 +19330,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, + "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==" + }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -19409,9 +20104,9 @@ "dev": true }, "node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "engines": { "node": ">= 4" } @@ -19502,9 +20197,9 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/inline-style-expand-shorthand": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/inline-style-expand-shorthand/-/inline-style-expand-shorthand-1.3.0.tgz", - "integrity": "sha512-cYW3cf2Tzi43jjHk8yyHAAnwgVXOC0jdmv7QkHMmha2zI2znhWh8LEC+Enb+PHcZi9afsbcP4JHyr5C08jDRHA==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/inline-style-expand-shorthand/-/inline-style-expand-shorthand-1.4.0.tgz", + "integrity": "sha512-FBxbgh1+ziiPFA09s0JgYtB7gRYfbfVrcO1sTv2JnPwbbz0M35zSYVUR3oyrTfLo/S+sbY4JG1W16hY91Hbh/Q==" }, "node_modules/inline-style-parser": { "version": "0.1.1", @@ -22996,6 +23691,11 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" }, + "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==" + }, "node_modules/json3": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", @@ -23045,6 +23745,14 @@ "node": ">= 0.4.0" } }, + "node_modules/jsrsasign": { + "version": "10.5.27", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.5.27.tgz", + "integrity": "sha512-1F4LmDeJZHYwoVvB44jEo2uZL3XuwYNzXCDOu53Ui6vqofGQ/gCYDmaxfVZtN0TGd92UKXr/BONcfrPonUIcQQ==", + "funding": { + "url": "https://github.com/kjur/jsrsasign#donations" + } + }, "node_modules/jsx-ast-utils": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", @@ -23066,6 +23774,11 @@ "node": ">=8" } }, + "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==" + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -23226,11 +23939,6 @@ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" - }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -23954,7 +24662,6 @@ "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -23973,20 +24680,17 @@ "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" }, "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": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "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": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -24762,8 +25466,7 @@ "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==", - "dev": true + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" }, "node_modules/path-dirname": { "version": "1.0.2", @@ -25325,6 +26028,17 @@ "node": ">= 0.8" } }, + "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==", + "bin": { + "printj": "bin/printj.njs" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/prismjs": { "version": "1.26.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.26.0.tgz", @@ -25348,14 +26062,6 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/promise": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", @@ -25546,7 +26252,6 @@ "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.", - "devOptional": true, "engines": { "node": ">=0.4.x" } @@ -25563,9 +26268,7 @@ "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "optional": true, - "peer": true + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -26110,57 +26813,6 @@ "postcss": "^8.3" } }, - "node_modules/react-scripts/node_modules/@eslint/eslintrc": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", - "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.2.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/react-scripts/node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/react-scripts/node_modules/@humanwhocodes/config-array": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", - "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/react-scripts/node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/react-scripts/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", @@ -26172,11 +26824,6 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/react-scripts/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==" - }, "node_modules/react-scripts/node_modules/autoprefixer": { "version": "10.4.2", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", @@ -26598,65 +27245,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-scripts/node_modules/eslint": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", - "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", - "dependencies": { - "@eslint/eslintrc": "^1.0.5", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "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.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.2.0", - "espree": "^9.3.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/react-scripts/node_modules/eslint-visitor-keys": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", - "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/react-scripts/node_modules/eslint-webpack-plugin": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz", @@ -26680,39 +27268,6 @@ "webpack": "^5.0.0" } }, - "node_modules/react-scripts/node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/react-scripts/node_modules/espree": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", - "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", - "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/react-scripts/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/react-scripts/node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -26793,20 +27348,6 @@ "node": ">=10.13.0" } }, - "node_modules/react-scripts/node_modules/globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/react-scripts/node_modules/gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -26861,14 +27402,6 @@ "postcss": "^8.1.0" } }, - "node_modules/react-scripts/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "engines": { - "node": ">= 4" - } - }, "node_modules/react-scripts/node_modules/immer": { "version": "9.0.12", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz", @@ -26932,17 +27465,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/react-scripts/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==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/react-scripts/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -29379,9 +29901,9 @@ } }, "node_modules/rtl-css-js": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.15.0.tgz", - "integrity": "sha512-99Cu4wNNIhrI10xxUaABHsdDqzalrSRTie4GeCmbGVuehm4oj+fIy8fTzB+16pmKe8Bv9rl+hxIBez6KxExTew==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.0.tgz", + "integrity": "sha512-Oc7PnzwIEU4M0K1J4h/7qUUaljXhQ0kCObRsZjxs2HjkpKsnoTMvSmvJ4sqgJZd0zBoEfAyTdnK/jMIYvrjySQ==", "dependencies": { "@babel/runtime": "^7.1.2" } @@ -29883,7 +30405,6 @@ "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -29954,6 +30475,11 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" }, + "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==" + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -29967,22 +30493,6 @@ "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, "node_modules/snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -30206,6 +30716,32 @@ "urix": "^0.1.0" } }, + "node_modules/socket.io-client": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.2.tgz", + "integrity": "sha512-naqYfFu7CLDiQ1B7AlLhRXKX3gdeaIMfgigwavDzgJoIUYulc1qHH5+2XflTsXTPY7BlPH5rppJyUjhjrKQKLg==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.2.1", + "socket.io-parser": "~4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/sockjs": { "version": "0.3.21", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", @@ -31007,41 +31543,6 @@ "integrity": "sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==", "dev": true }, - "node_modules/table": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/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==" - }, "node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -32099,11 +32600,9 @@ } }, "node_modules/url-parse": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", - "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", - "optional": true, - "peer": true, + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -32225,7 +32724,6 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "peer": true, "bin": { "uuid": "dist/bin/uuid" } @@ -33393,6 +33891,14 @@ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, + "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/xpath": { "version": "0.0.32", "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.32.tgz", @@ -34955,40 +35461,56 @@ "dev": true }, "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, "globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "requires": { "type-fest": "^0.20.2" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } } } }, "@fluentui/accessibility": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/accessibility/-/accessibility-0.60.1.tgz", - "integrity": "sha512-TCcZnE6Z8SZBb4EhzL0pKY4Ygb9os7afS5gL+30Q/utyrNWhCyU7G8xvcuuCNW1Yxu630jZxMMjUOlxcpWsCXg==", + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/accessibility/-/accessibility-0.64.0.tgz", + "integrity": "sha512-/8YkiPjKP5keUxKy+0wfuaYS6pOb7ruJg69pvMv10ZO0ev5m+IO1RsbQSjlbUidD9xPhTTDRCfnj2RGZSw6mSg==", "requires": { "@babel/runtime": "^7.10.4", "lodash": "^4.17.15" @@ -35003,42 +35525,83 @@ "tslib": "^1.10.0" } }, + "@fluentui/react-bindings": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-bindings/-/react-bindings-0.64.0.tgz", + "integrity": "sha512-6m41Jgc6IAso3y7Ju8ZHAd1xBxGJn6as0hoIe9PQyEeTf/Zt51qggQUVDFEr5BnlnPyECy0nqLzJfQJtQ5dt4w==", + "requires": { + "@babel/runtime": "^7.10.4", + "@fluentui/accessibility": "^0.64.0", + "@fluentui/dom-utilities": "^1.1.1", + "@fluentui/react-component-event-listener": "^0.64.0", + "@fluentui/react-component-ref": "^0.64.0", + "@fluentui/react-northstar-fela-renderer": "^0.64.0", + "@fluentui/react-northstar-styles-renderer": "^0.64.0", + "@fluentui/state": "^0.64.0", + "@fluentui/styles": "^0.64.0", + "classnames": "^2.2.6", + "lodash": "^4.17.15", + "prop-types": "^15.7.2", + "react-is": "^16.6.3" + } + }, "@fluentui/react-component-event-listener": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-component-event-listener/-/react-component-event-listener-0.60.1.tgz", - "integrity": "sha512-dU8hVyb78WFk+LJYFxi/IDdeg5LjCtwyUalNrH25APqlOqsL4KTig3PSIxHT6eJsgIqbfP0IzC9/KzXciAyFhg==", + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-component-event-listener/-/react-component-event-listener-0.64.0.tgz", + "integrity": "sha512-9kFbQ8Xo44Bg65JfewcWXe0zjU0MZz+nxDoWtlg0EYNFhvfeBv5UdWl2rbvowWKwhSJAuX8JUtsc7ANvaBFy9A==", "requires": { "@babel/runtime": "^7.10.4" } }, + "@fluentui/react-component-nesting-registry": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-component-nesting-registry/-/react-component-nesting-registry-0.64.0.tgz", + "integrity": "sha512-kU1tISGVBMbYVTxI0RZEsWfbs+iEE4TDwvpYwDYGFpDdIK9xGPKbzba6bg1sQJjSgrVXh/STb77hDqZZIxBrqA==", + "requires": { + "@babel/runtime": "^7.10.4", + "prop-types": "^15.7.2" + } + }, "@fluentui/react-component-ref": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-component-ref/-/react-component-ref-0.60.1.tgz", - "integrity": "sha512-Ar/wAkJGnsa3TQPJTpiCjDASFHHMcOictnHb4IsPnRjCO3nmcWUPtOcIwKm9BLYoPKt1/s+7VfIbG2IZ2QjIRg==", + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-component-ref/-/react-component-ref-0.64.0.tgz", + "integrity": "sha512-g9/ujN3gN2IDQjoRvyxJF/PB65U3MnybSEzcZWzGmDbrO7H82VqPm/MnwB4Z3AB7myP0rOOPSIlj+I97p6ymMw==", "requires": { "@babel/runtime": "^7.10.4", "react-is": "^16.6.3" } }, + "@fluentui/react-icons-northstar": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-icons-northstar/-/react-icons-northstar-0.64.0.tgz", + "integrity": "sha512-34XPiVJbI+ztbn11y+2bLKqxYoSsjqzLDWZfFptmGsKn8aPwcCxZoM11XLD0ix2SBZzjj4KpMkVr9H0PivheBw==", + "requires": { + "@babel/runtime": "^7.10.4", + "@fluentui/accessibility": "^0.64.0", + "@fluentui/react-bindings": "^0.64.0", + "@fluentui/styles": "^0.64.0", + "classnames": "^2.2.6" + } + }, "@fluentui/react-northstar": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-northstar/-/react-northstar-0.60.1.tgz", - "integrity": "sha512-X3wYpaMvroDNTY+LgZU4fx6uDqMKOSO+syREKhPFC53vl5H//JIrhcdoK3gOXMONeEYqlx/BJGBa561Eu+MElw==", + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-northstar/-/react-northstar-0.64.0.tgz", + "integrity": "sha512-cZEQzrAdECk/6ZzACCO+c9XaPb8EptedgAjSI+ytGrUw6izvW5TlwfZTPGLWUqbciDIYRG9neUIvNevEVYIjZA==", "requires": { "@babel/runtime": "^7.10.4", - "@fluentui/accessibility": "^0.60.1", + "@fluentui/accessibility": "^0.64.0", "@fluentui/dom-utilities": "^1.1.1", - "@fluentui/react-bindings": "^0.60.1", - "@fluentui/react-component-event-listener": "^0.60.1", - "@fluentui/react-component-nesting-registry": "^0.60.1", - "@fluentui/react-component-ref": "^0.60.1", - "@fluentui/react-icons-northstar": "^0.60.1", - "@fluentui/react-northstar-styles-renderer": "^0.60.1", - "@fluentui/react-proptypes": "^0.60.1", - "@fluentui/state": "^0.60.1", - "@fluentui/styles": "^0.60.1", + "@fluentui/react-bindings": "^0.64.0", + "@fluentui/react-component-event-listener": "^0.64.0", + "@fluentui/react-component-nesting-registry": "^0.64.0", + "@fluentui/react-component-ref": "^0.64.0", + "@fluentui/react-icons-northstar": "^0.64.0", + "@fluentui/react-northstar-styles-renderer": "^0.64.0", + "@fluentui/react-portal-compat-context": "^9.0.1", + "@fluentui/react-proptypes": "^0.64.0", + "@fluentui/state": "^0.64.0", + "@fluentui/styles": "^0.64.0", "@popperjs/core": "~2.4.3", - "@uifabric/utilities": "^7.32.3", "body-scroll-lock": "^3.1.5", "classnames": "^2.2.6", "compute-scroll-into-view": "1.0.11", @@ -35047,152 +35610,84 @@ "prop-types": "^15.7.2", "react-is": "^16.6.3", "react-transition-group": "^4.4.1" + } + }, + "@fluentui/react-northstar-fela-renderer": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-northstar-fela-renderer/-/react-northstar-fela-renderer-0.64.0.tgz", + "integrity": "sha512-B+MFyIOXi8LvBauOUKlsyN/YpsnhPGYmBt2S4PYk6b+yIPLHN8c4wr/6LH0t9bOX6pbmIfuVA4Rs2m65s2hDWw==", + "requires": { + "@babel/runtime": "^7.10.4", + "@fluentui/react-northstar-styles-renderer": "^0.64.0", + "@fluentui/styles": "^0.64.0", + "css-in-js-utils": "^3.0.0", + "fela": "^10.6.1", + "fela-plugin-embedded": "^10.6.1", + "fela-plugin-fallback-value": "^10.6.1", + "fela-plugin-placeholder-prefixer": "^10.6.1", + "fela-plugin-rtl": "^10.6.1", + "fela-tools": "^10.6.1", + "fela-utils": "^10.6.1", + "inline-style-expand-shorthand": "^1.2.0", + "lodash": "^4.17.15", + "react-fela": "^10.6.1", + "stylis": "^3.5.4" }, "dependencies": { - "@fluentui/react-bindings": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-bindings/-/react-bindings-0.60.1.tgz", - "integrity": "sha512-5YdriOQuD+us1d+zg02JCjeRJi4idn6c9H+/sm9IhvY3cksSJK864ryI3KK4muBjvNLXJ+qCsl9yLM2yes99mg==", - "requires": { - "@babel/runtime": "^7.10.4", - "@fluentui/accessibility": "^0.60.1", - "@fluentui/react-component-event-listener": "^0.60.1", - "@fluentui/react-component-ref": "^0.60.1", - "@fluentui/react-northstar-fela-renderer": "^0.60.1", - "@fluentui/react-northstar-styles-renderer": "^0.60.1", - "@fluentui/state": "^0.60.1", - "@fluentui/styles": "^0.60.1", - "@uifabric/utilities": "^7.32.3", - "classnames": "^2.2.6", - "lodash": "^4.17.15", - "prop-types": "^15.7.2", - "react-is": "^16.6.3", - "scheduler": "^0.20.1" + "react-fela": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/react-fela/-/react-fela-10.8.2.tgz", + "integrity": "sha512-TDIuOzxwtPcMhxlR4be/s1Er5b7zS8D42QOzaZZGMJskfH1ULFSOpdlBsb32ivqacXatbGZzshHDXGV5vKNkhQ==", + "requires": { + "fela-bindings": "^10.8.2", + "fela-dom": "^10.8.2", + "prop-types": "^15.5.8" }, "dependencies": { - "@fluentui/react-northstar-fela-renderer": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-northstar-fela-renderer/-/react-northstar-fela-renderer-0.60.1.tgz", - "integrity": "sha512-xL6G3Cc+nOOF3z+VvSSjw/0415VNLWzFdS/1t9gbo/nRZRo/bH4/zmgNmqnsn0Zk6YNf9exrH/s+ajwgiu5wgA==", + "fela-bindings": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/fela-bindings/-/fela-bindings-10.8.2.tgz", + "integrity": "sha512-NeZaTD8XaR2HmZKdVy0X2eTsTXeN9w/9ys0sd101djI4lD7rjfU6NroUB5YeGtOV/drehs7ufbzI/rStVUYx1g==", "requires": { - "@babel/runtime": "^7.10.4", - "@fluentui/react-northstar-styles-renderer": "^0.60.1", - "@fluentui/styles": "^0.60.1", - "css-in-js-utils": "^3.0.0", - "fela": "^10.6.1", - "fela-plugin-embedded": "^10.6.1", - "fela-plugin-fallback-value": "^10.6.1", - "fela-plugin-placeholder-prefixer": "^10.6.1", - "fela-plugin-rtl": "^10.6.1", - "fela-utils": "^10.6.1", - "inline-style-expand-shorthand": "^1.2.0", - "lodash": "^4.17.15", - "react-fela": "^10.6.1", - "stylis": "^3.5.4" - }, - "dependencies": { - "react-fela": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/react-fela/-/react-fela-10.8.2.tgz", - "integrity": "sha512-TDIuOzxwtPcMhxlR4be/s1Er5b7zS8D42QOzaZZGMJskfH1ULFSOpdlBsb32ivqacXatbGZzshHDXGV5vKNkhQ==", - "requires": { - "fela-bindings": "^10.8.2", - "fela-dom": "^10.8.2", - "prop-types": "^15.5.8" - }, - "dependencies": { - "fela-bindings": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/fela-bindings/-/fela-bindings-10.8.2.tgz", - "integrity": "sha512-NeZaTD8XaR2HmZKdVy0X2eTsTXeN9w/9ys0sd101djI4lD7rjfU6NroUB5YeGtOV/drehs7ufbzI/rStVUYx1g==", - "requires": { - "fast-loops": "^1.0.0", - "fela-dom": "^10.8.2", - "fela-tools": "^10.8.2", - "react-addons-shallow-compare": "^15.6.2", - "shallow-equal": "^1.0.0" - } - } - } - } + "fast-loops": "^1.0.0", + "fela-dom": "^10.8.2", + "fela-tools": "^10.8.2", + "react-addons-shallow-compare": "^15.6.2", + "shallow-equal": "^1.0.0" } } } - }, - "@fluentui/react-component-nesting-registry": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-component-nesting-registry/-/react-component-nesting-registry-0.60.1.tgz", - "integrity": "sha512-N+yEv2uC1/qxzYQu4oniqM4PjXGZqCc6aYMVjfzOCbpgT5pV4sjN737d5Qx8KyAslH/w6MMMQeCofIwAkVLHGQ==", - "requires": { - "@babel/runtime": "^7.10.4", - "prop-types": "^15.7.2" - } - }, - "@fluentui/react-icons-northstar": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-icons-northstar/-/react-icons-northstar-0.60.1.tgz", - "integrity": "sha512-4mtqHMahTzjpG4cj/kMzhTdC3orY6sfij0Wyjb9D72GXtmPSiMADuGJTWFoA4NKJCXjlb2bVBopOrAaktZjBSw==", - "requires": { - "@babel/runtime": "^7.10.4", - "@fluentui/accessibility": "^0.60.1", - "@fluentui/react-bindings": "^0.60.1", - "@fluentui/styles": "^0.60.1", - "classnames": "^2.2.6" - } - }, - "@fluentui/react-northstar-styles-renderer": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-northstar-styles-renderer/-/react-northstar-styles-renderer-0.60.1.tgz", - "integrity": "sha512-l9oxq9X1VVwzDXMkaBsd8jECuLLlgKTC9DYIxmxT07kfLd1aY0Y7JNzx9eGOqvesVs8op+27f8L7sZaSonknSQ==", - "requires": { - "@babel/runtime": "^7.10.4", - "@fluentui/styles": "^0.60.1" - } - }, - "@types/react": { - "version": "16.14.23", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.23.tgz", - "integrity": "sha512-WngBZLuSkP4IAgPi0HOsGCHo6dn3CcuLQnCfC17VbA7YBgipZiZoTOhObwl/93DsFW0Y2a/ZXeonpW4DxirEJg==", - "peer": true, - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-dom": { - "version": "16.9.14", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.14.tgz", - "integrity": "sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A==", - "peer": true, - "requires": { - "@types/react": "^16" - } - }, - "@uifabric/utilities": { - "version": "7.33.5", - "resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-7.33.5.tgz", - "integrity": "sha512-I+Oi0deD/xltSluFY8l2EVd/J4mvOaMljxKO2knSD9/KoGDlo/o5GN4gbnVo8nIt76HWHLAk3KtlJKJm6BhbIQ==", - "requires": { - "@fluentui/dom-utilities": "^1.1.2", - "@uifabric/merge-styles": "^7.19.2", - "@uifabric/set-version": "^7.0.24", - "prop-types": "^15.7.2", - "tslib": "^1.10.0" - } - }, - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "peer": true + } + } + }, + "@fluentui/react-northstar-styles-renderer": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-northstar-styles-renderer/-/react-northstar-styles-renderer-0.64.0.tgz", + "integrity": "sha512-l5OWMQfcYP2n8rOW6ZtnxzUcRnqDCfQkXdD9n0c1AfsYEVDwG1y3r0c1/bUPXN20ez5lHnXU6NEO/nIfkMGd2g==", + "requires": { + "@babel/runtime": "^7.10.4", + "@fluentui/styles": "^0.64.0" + } + }, + "@fluentui/react-portal-compat-context": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@fluentui/react-portal-compat-context/-/react-portal-compat-context-9.0.1.tgz", + "integrity": "sha512-KhOcXy2tvzNoAqFowkaRGFiLuRuPjzn6i1W30iMkhgsSVKxa/9jxso86Z8R0eZwA+16RNO/Ia2nX1gqfUac9mw==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" } } }, "@fluentui/react-proptypes": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-proptypes/-/react-proptypes-0.60.1.tgz", - "integrity": "sha512-JK73QKvZ0CCbZ3vOhnnTc9sEjbqCNxH+WYBzdqCfb5v6ZkDBFho6yYIc//DkBgXu+hQCZqQvcJlKaIblsf8+tA==", + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-proptypes/-/react-proptypes-0.64.0.tgz", + "integrity": "sha512-AniTqvYY59v+GiyNwiWgheKASgJM8CxPpc7RaCmHJ0j2g7aS5UfF6OCzCc/yWHb4q9pyRnQDvG8YOyosmwUwtA==", "requires": { "@babel/runtime": "^7.10.4", "lodash": "^4.17.15", @@ -35200,21 +35695,515 @@ } }, "@fluentui/state": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/state/-/state-0.60.1.tgz", - "integrity": "sha512-SPRVxjH/bV4E4Dak/PnBLs1QK8dCrHapd0C6TRGGSYmnG991xlFNIoKGghDJZJ1O1Yh9ZSk28GZISBdS2DzRxQ==", + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/state/-/state-0.64.0.tgz", + "integrity": "sha512-IbiycpJCIJAG78d9Gcs1R22C92J8ckj+Wll15g4tGZ5Cvoc+7Y8vWXB7t618hVYSW3TwjW3YbPddErWc7aj3pw==", "requires": { "@babel/runtime": "^7.10.4" } }, "@fluentui/styles": { - "version": "0.60.1", - "resolved": "https://registry.npmjs.org/@fluentui/styles/-/styles-0.60.1.tgz", - "integrity": "sha512-vLJA4sn8dZdVY5AI2S9y0jEAHu6hs1blTl6inP3jdg0PDPYKh73XWUYdyON64mNtQKIHCl5zPoeAL57Eu93xlw==", + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@fluentui/styles/-/styles-0.64.0.tgz", + "integrity": "sha512-WkrFCKDP9Mq++0DsHxoOrglrfUmxeI2py+6WFnJnvJneDm6wcX6VrcUZ4FsVQiykJ8I47luc2vF1w7izdUSxIw==", "requires": { "@babel/runtime": "^7.10.4", - "csstype": "^2.6.7", + "csstype": "^3.0.2", "lodash": "^4.17.15" + }, + "dependencies": { + "csstype": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" + } + } + }, + "@fluidframework/aqueduct": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/aqueduct/-/aqueduct-1.2.7.tgz", + "integrity": "sha512-gHM7vc867L8FisszALHnDtF5gPxqe55UAAeUNjKCGNYH1hgSrDbeY1F8GBT4GgR13wmu0Lmd4bSL6WXiZDtisg==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-loader": "^1.2.7", + "@fluidframework/container-runtime": "^1.2.7", + "@fluidframework/container-runtime-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/map": "^1.2.7", + "@fluidframework/request-handler": "^1.2.7", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/synthesize": "^1.2.7", + "@fluidframework/view-interfaces": "^1.2.7", + "uuid": "^8.3.1" + } + }, + "@fluidframework/azure-client": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@fluidframework/azure-client/-/azure-client-1.0.3.tgz", + "integrity": "sha512-a/+zGf+BzRgwim0oxFiS/xtoFqsjNbc8WfE2tAX2wQb1GIG4fgfHwfadDJXCFp1Cf+4Rz+p+UVkFnyfY71MHAg==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/container-definitions": "^1.2.5", + "@fluidframework/container-loader": "^1.2.5", + "@fluidframework/core-interfaces": "^1.2.5", + "@fluidframework/driver-definitions": "^1.2.5", + "@fluidframework/driver-utils": "^1.2.5", + "@fluidframework/fluid-static": "^1.2.5", + "@fluidframework/map": "^1.2.5", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/routerlicious-driver": "^1.2.5", + "@fluidframework/runtime-utils": "^1.2.5", + "@fluidframework/server-services-client": "^0.1036.4000", + "axios": "^0.26.0", + "uuid": "^8.3.1" + } + }, + "@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==" + }, + "@fluidframework/common-utils": { + "version": "0.32.1", + "resolved": "https://registry.npmjs.org/@fluidframework/common-utils/-/common-utils-0.32.1.tgz", + "integrity": "sha512-8m7nTGLyzQqjGX9qZmE1L65IfSxrcEo35MtCVmH0qfttfVqEFghxXAgtmrcfvKkg6NUDTmb13hdyNx0hZlky7w==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@types/events": "^3.0.0", + "base64-js": "^1.5.1", + "events": "^3.1.0", + "lodash": "^4.17.21", + "sha.js": "^2.4.11" + } + }, + "@fluidframework/container-definitions": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-1.2.7.tgz", + "integrity": "sha512-Uca/O1tbMzvpgOz1B2bQFP2iEVuOD1iAt8ffz6rnEomiIoXSmPSFC+DudBBvwGsXbgaM2U/SkLYGu2ZOx6Z3Sw==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000" + } + }, + "@fluidframework/container-loader": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/container-loader/-/container-loader-1.2.7.tgz", + "integrity": "sha512-MDMjZw0x0LxEJZAp+/6x50wo8pR8xMUonye7aRZIsM8KaS9abURNSj3lGvWZwCNrZTpKSFipb9Bxw+E2e08Xuw==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/driver-utils": "^1.2.7", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/telemetry-utils": "^1.2.7", + "abort-controller": "^3.0.0", + "double-ended-queue": "^2.1.0-0", + "lodash": "^4.17.21", + "uuid": "^8.3.1" + } + }, + "@fluidframework/container-runtime": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-1.2.7.tgz", + "integrity": "sha512-ID+09a4mXQ1MRRzEIzns9EWySyp+2lgGpyuojF4a2rSfZTisppJRFTTdgTuMmblTACN38pX7XbBJAESaaVSRaA==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-runtime-definitions": "^1.2.7", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/driver-utils": "^1.2.7", + "@fluidframework/garbage-collector": "^1.2.7", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/telemetry-utils": "^1.2.7", + "double-ended-queue": "^2.1.0-0", + "uuid": "^8.3.1" + } + }, + "@fluidframework/container-runtime-definitions": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-1.2.7.tgz", + "integrity": "sha512-LfXsny0KSouyHcTq1Y9XcK9D5krSgWD2E3RwcYokshCxTob6aWWkNR55JB2yvAEapQJbDpS0BNaBsd5mXxgE1A==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@types/node": "^14.18.0" + }, + "dependencies": { + "@types/node": { + "version": "14.18.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.31.tgz", + "integrity": "sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==" + } + } + }, + "@fluidframework/container-utils": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/container-utils/-/container-utils-1.2.7.tgz", + "integrity": "sha512-6LYk9PTfl0AwsU3tDR2gD9ArxqhYcBR3tzj90RRi1JCNBeed1Gci69KxASC4O3qvs8ool3WIBBneydhbLvDAUw==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/telemetry-utils": "^1.2.7" + } + }, + "@fluidframework/core-interfaces": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-1.2.7.tgz", + "integrity": "sha512-fw8wVel2htgRbkCiobmQB1+HpaxMCfqVwTQuXXrKUDr595FHU0j1KdJo39ypo3EANqavC1bZlfeMfES/J6FTaA==" + }, + "@fluidframework/datastore": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-1.2.7.tgz", + "integrity": "sha512-uZdCtMV4QLLLFTOPwHCRcj0EnKZtPIFQTm/DCJSPvuUp3hkjrFPEv6PL4JuD7FzJx/+XWdcKBeoO0MSWYekTRQ==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/driver-utils": "^1.2.7", + "@fluidframework/garbage-collector": "^1.2.7", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/telemetry-utils": "^1.2.7", + "lodash": "^4.17.21", + "uuid": "^8.3.1" + } + }, + "@fluidframework/datastore-definitions": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-1.2.7.tgz", + "integrity": "sha512-rBFUDZ6tR0ol6gQsHflXTU2psTDw4fcRyX6r12Y0k3bsdN1PmV4VciiZa2+vNZl3LPD4oKsvqLaZkdR6lVyiSA==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@types/node": "^14.18.0" + }, + "dependencies": { + "@types/node": { + "version": "14.18.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.31.tgz", + "integrity": "sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==" + } + } + }, + "@fluidframework/driver-base": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-1.2.7.tgz", + "integrity": "sha512-VBYx+YQNsyW/cZJHPdThBHH3xgWzS002Qb1Jtdw4Xn1s31IUYFq0eDDuUL+CBNT28iK4cMaYq3H+H78DzMvONQ==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/driver-utils": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/telemetry-utils": "^1.2.7" + } + }, + "@fluidframework/driver-definitions": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-1.2.7.tgz", + "integrity": "sha512-Vk22el2HLNrd7vDMmOM8Dn9hatzhQ11nWSVcUZhbVj74iiKV81javWTHVvPDsp6V6+OKC5DMb71Mw0Tdj/vFmw==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000" + } + }, + "@fluidframework/driver-utils": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-1.2.7.tgz", + "integrity": "sha512-OysiT1vMiiuHaeCMVjajrg90z7yWXETmYcqyWg86mjNZW5PfELXINruAWU8adciDKdFg+Q4gygiEKWAlCJU2QQ==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/gitresources": "^0.1036.5000", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/telemetry-utils": "^1.2.7", + "axios": "^0.26.0", + "uuid": "^8.3.1" + } + }, + "@fluidframework/fluid-static": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/fluid-static/-/fluid-static-1.2.7.tgz", + "integrity": "sha512-IpdlLFDaSIoR1w9vM+bCcipcyoKnkn2YEx3ixVWJlc/+kZvwvCFZgyBZJl2XaJXZ8lEUbLXjiruo2tsE0lsNYA==", + "requires": { + "@fluidframework/aqueduct": "^1.2.7", + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-loader": "^1.2.7", + "@fluidframework/container-runtime-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/request-handler": "^1.2.7", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7" + } + }, + "@fluidframework/garbage-collector": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/garbage-collector/-/garbage-collector-1.2.7.tgz", + "integrity": "sha512-z+50HcDgL6/tMShBIwkai/HgSVxGfolgfneXDGGAvozDxlUyCw67R+epdmqROI40GuVvifh0YqnQtJSgtHFnow==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/runtime-definitions": "^1.2.7" + } + }, + "@fluidframework/gitresources": { + "version": "0.1036.5000", + "resolved": "https://registry.npmjs.org/@fluidframework/gitresources/-/gitresources-0.1036.5000.tgz", + "integrity": "sha512-Aq030GDRhPJCr7tVHDxFtWDwc6nd1r9x7k0/D34mVAVuXLyubk5dB2BytopZxfo9b91QXIPmjQfQ2GINTdk16w==" + }, + "@fluidframework/map": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-1.2.7.tgz", + "integrity": "sha512-v9W7WJ8KGeaGSIUm/lgOkZpuUblhjtiK2mpMGZnoZmQfJjos/YLvSGGFdx54+FUm2aRYc7z/z/yabiO/npsfAQ==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/driver-utils": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/shared-object-base": "^1.2.7", + "path-browserify": "^1.0.1" + } + }, + "@fluidframework/merge-tree": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-1.2.7.tgz", + "integrity": "sha512-XrTK+lNIBsv8j0l5WhZe56C6L/vBRgcjbjsTcGnlyCe/bc8lcX0fiGjMAG1/HvhsWiWwqQHeBZtXSkkXEKDolw==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/shared-object-base": "^1.2.7", + "@fluidframework/telemetry-utils": "^1.2.7" + } + }, + "@fluidframework/protocol-base": { + "version": "0.1036.5000", + "resolved": "https://registry.npmjs.org/@fluidframework/protocol-base/-/protocol-base-0.1036.5000.tgz", + "integrity": "sha512-tsDtM6jptTwbqkVtqO6KRYRu6614ZwrzfJJEUM0OmTRk6ds5vdA+vPreG4qrrEO40HHy4y9nHx6AyGL/sMxv4w==", + "requires": { + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/gitresources": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "lodash": "^4.17.21" + } + }, + "@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==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1" + } + }, + "@fluidframework/request-handler": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/request-handler/-/request-handler-1.2.7.tgz", + "integrity": "sha512-+Dw00rUPgXSm/CWOKLuAeT/ASrRHgCOrLeGtrWEBkJolUQy/eiPNpVEsf8Kd0vtEl/t35feQ7hoQVmU5NHPjnw==", + "requires": { + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-runtime-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7" + } + }, + "@fluidframework/routerlicious-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/routerlicious-driver/-/routerlicious-driver-1.2.7.tgz", + "integrity": "sha512-ovjikQ+NcmFdl+c4h4qfE2xRGgOUjBx+/Uli0N9K/bewYwiCBXOh0hV5HvKOA2Rhf000SvFWjtXClxaLZPtYhw==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/driver-base": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/driver-utils": "^1.2.7", + "@fluidframework/gitresources": "^0.1036.5000", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/server-services-client": "^0.1036.5000", + "@fluidframework/telemetry-utils": "^1.2.7", + "cross-fetch": "^3.1.5", + "json-stringify-safe": "5.0.1", + "querystring": "^0.2.0", + "socket.io-client": "^4.4.1", + "url-parse": "^1.5.8", + "uuid": "^8.3.1" + } + }, + "@fluidframework/runtime-definitions": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-1.2.7.tgz", + "integrity": "sha512-oPhahKtW/0CXLyU/PP3SJYjudYIzgZPibMEGrZCiNl9n7ZCCWbt1syzUuEo+Hl4ISvGB7kJur7czEf+EpoJ3Yw==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/driver-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@types/node": "^14.18.0" + }, + "dependencies": { + "@types/node": { + "version": "14.18.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.31.tgz", + "integrity": "sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==" + } + } + }, + "@fluidframework/runtime-utils": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-1.2.7.tgz", + "integrity": "sha512-s+OGN4ui5ZopcTqPSI/wg/fdhvQW09WJsS7Bvln0tSykISSf8Rp6vPDd1FG2JMJj5oTDrUniUqjBcAVvRIbmnQ==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-runtime-definitions": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/garbage-collector": "^1.2.7", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/telemetry-utils": "^1.2.7" + } + }, + "@fluidframework/sequence": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-1.2.7.tgz", + "integrity": "sha512-43FuttETPMMgvCqA/bG24Xxb4Alk80eI31WivxqJ+Pi2LhSL7iC8yfCmDEkb0M5oWtfJi3Px+PSU1Dx0TCtbhw==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/merge-tree": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/shared-object-base": "^1.2.7", + "@fluidframework/telemetry-utils": "^1.2.7", + "uuid": "^8.3.1" + } + }, + "@fluidframework/server-services-client": { + "version": "0.1036.5000", + "resolved": "https://registry.npmjs.org/@fluidframework/server-services-client/-/server-services-client-0.1036.5000.tgz", + "integrity": "sha512-TBig0U1Fne0h10H6Sylcf6pe9PrYJy6PkLvTv+MX9ojuWsyPJbbhkPX/L2Gj/wmzDY+psvhA2TSLDZOMnpshpw==", + "requires": { + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/gitresources": "^0.1036.5000", + "@fluidframework/protocol-base": "^0.1036.5000", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "axios": "^0.26.0", + "crc-32": "1.2.0", + "debug": "^4.1.1", + "json-stringify-safe": "^5.0.1", + "jsrsasign": "^10.2.0", + "jwt-decode": "^3.0.0", + "querystring": "^0.2.0", + "sillyname": "^0.1.0", + "uuid": "^8.3.1" + } + }, + "@fluidframework/shared-object-base": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-1.2.7.tgz", + "integrity": "sha512-/MqJMzuWourgAfs9sVxOHofesxFnNz6dffzbXwEqPI8tDyOBNxa8GMLAZT/b2oXu/Dcxg6VSPgwyzg8Rx6aktw==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-runtime": "^1.2.7", + "@fluidframework/container-utils": "^1.2.7", + "@fluidframework/core-interfaces": "^1.2.7", + "@fluidframework/datastore": "^1.2.7", + "@fluidframework/datastore-definitions": "^1.2.7", + "@fluidframework/protocol-definitions": "^0.1028.2000", + "@fluidframework/runtime-definitions": "^1.2.7", + "@fluidframework/runtime-utils": "^1.2.7", + "@fluidframework/telemetry-utils": "^1.2.7", + "uuid": "^8.3.1" + } + }, + "@fluidframework/synthesize": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/synthesize/-/synthesize-1.2.7.tgz", + "integrity": "sha512-iKBvnU1bLqGzrS/vMCsd3XqqvqDcYDFakjWiYn/A3wtGfwApYwvP89YUF3AHyee29YmpHU7RzS6Ga6bV4F4LWQ==" + }, + "@fluidframework/telemetry-utils": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-1.2.7.tgz", + "integrity": "sha512-ehb8dzhXZhzmWzvDgDTF3MCcoMxI8Dsw3kX8OIk5YTlAmiW2KBklKaIg/Q05wt+gf96lfGJHGT7chTGQxYaODw==", + "requires": { + "@fluidframework/common-definitions": "^0.20.1", + "@fluidframework/common-utils": "^0.32.1", + "debug": "^4.1.1", + "events": "^3.1.0", + "uuid": "^8.3.1" + } + }, + "@fluidframework/view-interfaces": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@fluidframework/view-interfaces/-/view-interfaces-1.2.7.tgz", + "integrity": "sha512-6/+2ekl5S3ioEw4c0da4NC8ZwMQmthlKV6ejqd9rZKcCpk49RuOOhZMc22BOtBJF4P0IxfFcSgfXVwOd3u184A==", + "requires": { + "@fluidframework/core-interfaces": "^1.2.7" } }, "@gar/promisify": { @@ -35224,15 +36213,20 @@ "dev": true }, "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", "requires": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" } }, + "@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==" + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -36140,6 +37134,17 @@ "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", "dev": true }, + "@microsoft/live-share": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@microsoft/live-share/-/live-share-0.5.1.tgz", + "integrity": "sha512-naeIjERwhbKpAiC3p97jWqJY4TCgCYZw8dwJkee3983VzmXl9v2e2eUWhHAAq+qUi6ZolyJv8eS4RwTEesBkxA==", + "requires": { + "@fluidframework/azure-client": "~1.0.2", + "@microsoft/teams-js": "2.0.0-experimental.1", + "fluid-framework": "~1.2.3", + "uuid": "^8.3.2" + } + }, "@microsoft/recognizers-text-data-types-timex-expression": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-data-types-timex-expression/-/recognizers-text-data-types-timex-expression-1.3.0.tgz", @@ -36147,9 +37152,9 @@ "peer": true }, "@microsoft/teams-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@microsoft/teams-js/-/teams-js-2.0.0.tgz", - "integrity": "sha512-13Mag9MkUplbZxK1qu55r8YSNkuOpmmZuha7P8Z26ef5ZnrYm9PM3JCoWgDvBqILxWF2e1Yo/5V2Ic9yD9rU0Q==", + "version": "2.0.0-experimental.1", + "resolved": "https://registry.npmjs.org/@microsoft/teams-js/-/teams-js-2.0.0-experimental.1.tgz", + "integrity": "sha512-gZX2FudbtpzqfT4+7uZoDGS2xGUchfvNxC3xu68IbpS58p3KFXTfvpQEUd7oTRY01PYi96w8AHrj7qy5x4xFcg==", "requires": { "debug": "4.3.3" } @@ -36367,6 +37372,11 @@ "@sinonjs/commons": "^1.7.0" } }, + "@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==" + }, "@storybook/addon-actions": { "version": "6.4.18", "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.4.18.tgz", @@ -41692,6 +42702,11 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" + }, "@types/express": { "version": "4.17.13", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", @@ -41915,9 +42930,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/react": { - "version": "17.0.36", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.36.tgz", - "integrity": "sha512-CUFUp01OdfbpN/76v4koqgcpcRGT3sYOq3U3N6q0ZVGcyeP40NUdVU+EWe3hs34RNaTefiYyBzOpxBBidCc5zw==", + "version": "17.0.48", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz", + "integrity": "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -42294,15 +43309,6 @@ } } }, - "@uifabric/merge-styles": { - "version": "7.19.2", - "resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-7.19.2.tgz", - "integrity": "sha512-kTlhwglDqwVgIaJq+0yXgzi65plGhmFcPrfme/rXUGMJZoU+qlGT5jXj5d3kuI59p6VB8jWEg9DAxHozhYeu0g==", - "requires": { - "@uifabric/set-version": "^7.0.24", - "tslib": "^1.10.0" - } - }, "@uifabric/set-version": { "version": "7.0.24", "resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.24.tgz", @@ -42581,6 +43587,14 @@ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" }, + "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==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -42790,11 +43804,6 @@ "string-width": "^4.1.0" } }, - "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==" - }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -43080,11 +44089,6 @@ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" - }, "async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", @@ -43149,6 +44153,14 @@ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz", "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==" }, + "axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "requires": { + "follow-redirects": "^1.14.8" + } + }, "axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", @@ -43641,8 +44653,7 @@ "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "batch": { "version": "0.6.1", @@ -45067,6 +46078,15 @@ } } }, + "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==", + "requires": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + } + }, "create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", @@ -45112,6 +46132,14 @@ "sha.js": "^2.4.8" } }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "requires": { + "node-fetch": "2.6.7" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -45787,6 +46815,11 @@ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" }, + "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==" + }, "downshift": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/downshift/-/downshift-5.0.5.tgz", @@ -45916,6 +46949,31 @@ "objectorarray": "^1.0.5" } }, + "engine.io-client": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", + "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0" + }, + "dependencies": { + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "requires": {} + } + } + }, + "engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==" + }, "enhanced-resolve": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", @@ -45932,14 +46990,6 @@ } } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "requires": { - "ansi-colors": "^4.1.1" - } - }, "entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", @@ -46124,59 +47174,55 @@ } }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.21.0.tgz", + "integrity": "sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==", "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.3", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "requires": { - "@babel/highlight": "^7.10.4" - } + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "chalk": { "version": "4.1.2", @@ -46202,33 +47248,89 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - } + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "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==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "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==", + "requires": { + "is-glob": "^4.0.3" } }, "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "requires": { "type-fest": "^0.20.2" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "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==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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==", + "requires": { + "p-limit": "^3.0.2" + } }, "path-key": { "version": "3.1.1", @@ -46574,19 +47676,24 @@ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" }, "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", + "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "dependencies": { + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + }, "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" } } }, @@ -46656,6 +47763,11 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "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==" + }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -46712,6 +47824,11 @@ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" }, + "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==" + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -47381,6 +48498,18 @@ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==" }, + "fluid-framework": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fluid-framework/-/fluid-framework-1.2.7.tgz", + "integrity": "sha512-sAvXg4PsPkbXKuPWmr4lM+TWcw/5jkAUzRfqpeJJQKua0pe+NioM2KhanFmdl68FTNESOkFfr1qKcBmEA+xXgA==", + "requires": { + "@fluidframework/container-definitions": "^1.2.7", + "@fluidframework/container-loader": "^1.2.7", + "@fluidframework/fluid-static": "^1.2.7", + "@fluidframework/map": "^1.2.7", + "@fluidframework/sequence": "^1.2.7" + } + }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -47392,9 +48521,9 @@ } }, "follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==" + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" }, "for-in": { "version": "1.0.2", @@ -47795,15 +48924,15 @@ } }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" } }, @@ -47812,6 +48941,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, + "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==" + }, "handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -48384,9 +49518,9 @@ "dev": true }, "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" }, "import-fresh": { "version": "3.3.0", @@ -48452,9 +49586,9 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "inline-style-expand-shorthand": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/inline-style-expand-shorthand/-/inline-style-expand-shorthand-1.3.0.tgz", - "integrity": "sha512-cYW3cf2Tzi43jjHk8yyHAAnwgVXOC0jdmv7QkHMmha2zI2znhWh8LEC+Enb+PHcZi9afsbcP4JHyr5C08jDRHA==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/inline-style-expand-shorthand/-/inline-style-expand-shorthand-1.4.0.tgz", + "integrity": "sha512-FBxbgh1+ziiPFA09s0JgYtB7gRYfbfVrcO1sTv2JnPwbbz0M35zSYVUR3oyrTfLo/S+sbY4JG1W16hY91Hbh/Q==" }, "inline-style-parser": { "version": "0.1.1", @@ -51077,6 +52211,11 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" }, + "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==" + }, "json3": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", @@ -51112,6 +52251,11 @@ "integrity": "sha512-2/R8wkot8NCXrppBT/onp+4mcAUAZqtPxsW6aSJU3hrFAVqKqtFYcat2XJZ7inN4RtATUxfv0UQSYOmvJKiIGA==", "peer": true }, + "jsrsasign": { + "version": "10.5.27", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.5.27.tgz", + "integrity": "sha512-1F4LmDeJZHYwoVvB44jEo2uZL3XuwYNzXCDOu53Ui6vqofGQ/gCYDmaxfVZtN0TGd92UKXr/BONcfrPonUIcQQ==" + }, "jsx-ast-utils": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", @@ -51127,6 +52271,11 @@ "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", "dev": true }, + "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==" + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -51255,11 +52404,6 @@ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" - }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -51849,7 +52993,6 @@ "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, "requires": { "whatwg-url": "^5.0.0" }, @@ -51857,20 +53000,17 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -52486,8 +53626,7 @@ "path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" }, "path-dirname": { "version": "1.0.2", @@ -52885,6 +54024,11 @@ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, + "printj": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" + }, "prismjs": { "version": "1.26.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.26.0.tgz", @@ -52902,11 +54046,6 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, "promise": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", @@ -53067,8 +54206,7 @@ "querystring": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", - "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", - "devOptional": true + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==" }, "querystring-es3": { "version": "0.2.1", @@ -53079,9 +54217,7 @@ "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "optional": true, - "peer": true + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "queue-microtask": { "version": "1.2.3", @@ -53474,54 +54610,11 @@ "postcss-value-parser": "^4.2.0" } }, - "@eslint/eslintrc": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", - "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.2.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - } - } - }, - "@humanwhocodes/config-array": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", - "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==", - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" - }, "ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, "autoprefixer": { "version": "10.4.2", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", @@ -53780,64 +54873,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, - "eslint": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", - "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", - "requires": { - "@eslint/eslintrc": "^1.0.5", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "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.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.2.0", - "espree": "^9.3.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - } - } - }, - "eslint-visitor-keys": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", - "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==" - }, "eslint-webpack-plugin": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz", @@ -53850,21 +54885,6 @@ "schema-utils": "^3.1.1" } }, - "espree": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", - "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", - "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -53918,14 +54938,6 @@ "is-glob": "^4.0.3" } }, - "globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", - "requires": { - "type-fest": "^0.20.2" - } - }, "gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -53960,11 +54972,6 @@ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "requires": {} }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - }, "immer": { "version": "9.0.12", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz", @@ -54005,14 +55012,6 @@ } } }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { - "argparse": "^2.0.1" - } - }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -55630,9 +56629,9 @@ "dev": true }, "rtl-css-js": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.15.0.tgz", - "integrity": "sha512-99Cu4wNNIhrI10xxUaABHsdDqzalrSRTie4GeCmbGVuehm4oj+fIy8fTzB+16pmKe8Bv9rl+hxIBez6KxExTew==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.0.tgz", + "integrity": "sha512-Oc7PnzwIEU4M0K1J4h/7qUUaljXhQ0kCObRsZjxs2HjkpKsnoTMvSmvJ4sqgJZd0zBoEfAyTdnK/jMIYvrjySQ==", "requires": { "@babel/runtime": "^7.1.2" } @@ -56061,7 +57060,6 @@ "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -56117,6 +57115,11 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" }, + "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==" + }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -56127,16 +57130,6 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -56324,6 +57317,26 @@ } } }, + "socket.io-client": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.2.tgz", + "integrity": "sha512-naqYfFu7CLDiQ1B7AlLhRXKX3gdeaIMfgigwavDzgJoIUYulc1qHH5+2XflTsXTPY7BlPH5rppJyUjhjrKQKLg==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.2.1", + "socket.io-parser": "~4.2.0" + } + }, + "socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, "sockjs": { "version": "0.3.21", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", @@ -56972,36 +57985,6 @@ "integrity": "sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==", "dev": true }, - "table": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "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==" - } - } - }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -57784,11 +58767,9 @@ } }, "url-parse": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", - "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", - "optional": true, - "peer": true, + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -57869,8 +58850,7 @@ "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "peer": true + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "uuid-browser": { "version": "3.1.0", @@ -58834,6 +59814,11 @@ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, + "xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" + }, "xpath": { "version": "0.0.32", "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.32.tgz", diff --git a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/package.json b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/package.json index da68da8cbc..e7d308d8d0 100644 --- a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/package.json +++ b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/package.json @@ -3,17 +3,18 @@ "version": "0.1.1", "private": true, "dependencies": { - "@fluentui/react-northstar": "^0.60.1", - "@microsoft/teams-js": "^2.0.0", + "@fluentui/react-northstar": "^0.64.0", + "@microsoft/live-share": "^0.5.1", + "@microsoft/teams-js": "2.0.0-experimental.1", "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", "@types/jest": "^26.0.15", "@types/node": "^12.0.0", - "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", "adaptivecards-templating": "^2.2.0", "classnames": "^2.3.1", + "fluid-framework": "^1.2.3", "lodash": "^4.17.21", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -71,9 +72,10 @@ "@storybook/preset-create-react-app": "^4.0.0", "@storybook/react": "^6.4.18", "@types/lodash": "^4.14.178", + "@types/react": "^17.0.48", "@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/parser": "^5.10.2", - "eslint": "^7.11.0", + "eslint": "^8.0.0", "eslint-config-prettier": "^8.3.0", "eslint-config-react": "^1.1.7", "eslint-config-react-app": "^7.0.0", diff --git a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/Cursor.module.css b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/Cursor.module.css new file mode 100644 index 0000000000..51d1439436 --- /dev/null +++ b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/Cursor.module.css @@ -0,0 +1,14 @@ +.cursor { + position: absolute; + z-index: 9999; + display: flex; +} + +.cursorText { + color: #A33D2A; + max-width: 10rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + font-weight: bold; +} diff --git a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/Cursor.tsx b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/Cursor.tsx new file mode 100644 index 0000000000..a4d9563856 --- /dev/null +++ b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/Cursor.tsx @@ -0,0 +1,30 @@ +import { CursorLocationEvent } from 'hooks'; +import styles from './Cursor.module.css'; + +export function Cursor({ X, Y, displayName }: CursorLocationEvent) { + return ( + <> +
+ +

{displayName ?? 'Error'}

+
+ + ); +} + +function FluentCursor() { + return ( + + + + ); +} diff --git a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/CursorsRenderer.tsx b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/CursorsRenderer.tsx new file mode 100644 index 0000000000..893a5fef9e --- /dev/null +++ b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/CursorsRenderer.tsx @@ -0,0 +1,45 @@ +import { EphemeralPresenceUser } from '@microsoft/live-share'; +import { CursorLocationEvent } from 'hooks'; +import { Cursor } from './Cursor'; + +export interface CursorsRendererProps { + cursors: EphemeralPresenceUser[]; + parentBoundingBox: DOMRect | undefined; +} + +/** + * Takes an array of Cursor locations and renders them on a div. + * + * @param cursors An array of cursor locations events, which containers the user's + * @param parentBoundingBox The DOM details of the bounding box where the cursors will be rendered. + * This is used to ensure that cursors are rendered at the correct offset from the bounding box. + * + * @returns Cursors rendered over the parent div + */ +export function CursorsRenderer({ + cursors, + parentBoundingBox, +}: CursorsRendererProps) { + return ( + <> + {cursors + .map((p) => { + let X = p.data?.X ?? 0; + let Y = p.data?.Y ?? 0; + + if (parentBoundingBox) { + // If the cursor is outside the bounds of the document, limit the rendering to the document. + X = Math.min(X, parentBoundingBox.width) + parentBoundingBox.left; + Y = Y + parentBoundingBox.top; + } + + return + })} + + ); +} diff --git a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/index.ts b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/index.ts new file mode 100644 index 0000000000..883cd00991 --- /dev/null +++ b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Cursor/index.ts @@ -0,0 +1,3 @@ +import { Cursor } from './Cursor'; +import { CursorsRenderer } from './CursorsRenderer'; +export { Cursor, CursorsRenderer }; diff --git a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.module.css b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.module.css new file mode 100644 index 0000000000..c218be8c6c --- /dev/null +++ b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.module.css @@ -0,0 +1,8 @@ +.documentChooser { + margin: 0 auto; +} + +.stageControlsDiv { + position: sticky; + top:0; +} diff --git a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.tsx b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.tsx index a23df3f591..d4db7120f1 100644 --- a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.tsx +++ b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/DocumentStage/DocumentStage.tsx @@ -1,12 +1,25 @@ -import { useEffect, useState } from 'react'; +import { useEffect, useMemo, useRef, useState } from 'react'; import { Flex, Loader } from '@fluentui/react-northstar'; +import { PresenceState } from '@microsoft/live-share'; import { useParams } from 'react-router-dom'; -import { useDefaultColorScheme } from 'hooks'; -import { useAADId } from 'utils/TeamsProvider/hooks'; +import { + useDefaultColorScheme, + useCursorLocationDom, + useCursorLocationsLiveShare, + useLiveShare, + useScrollOffsetDom, + useScrollOffsetLiveShare, + useTakeControl, +} from 'hooks'; +import { useTeamsContext } from 'utils/TeamsProvider/hooks'; import { getDocument } from 'api/documentApi'; import { DocumentChooser } from 'components/Documents'; +import { LiveSharePage } from 'components/LiveSharePage'; +import { CursorsRenderer } from 'components/Cursor'; +import { StageControls } from 'components/StageControls'; import { Document } from 'models'; import { useQuery } from 'react-query'; +import styles from './DocumentStage.module.css'; /** * A component that calls the `getDocument` API, get's the document and @@ -15,9 +28,59 @@ import { useQuery } from 'react-query'; * @returns A component with a Document rendered on the stage */ export function DocumentStage() { + const teamsContext = useTeamsContext(); const params = useParams(); const documentId: string = params.documentId ?? 'unknown'; const pollingInterval = 2000; + var documentStageRef = useRef(null!); + + const { position, setPosition } = useScrollOffsetDom( + documentStageRef.current, + ); + const { cursorLocation } = useCursorLocationDom(documentStageRef.current); + const { + scrollOffsetEvent, + cursorLocationsEvent, + takeControlState, + container, + audience, + } = useLiveShare(); + + const { + takeControlStarted, + localUserInControl, + localUserCanTakeControl, + takeControl, + clearControl, + } = useTakeControl(takeControlState, teamsContext?.user, audience); + + const { + scrollOffsetStarted, + followSuspended, + endSuspension, + sendScrollOffset, + } = useScrollOffsetLiveShare( + scrollOffsetEvent, + setPosition, + takeControlState, + localUserInControl, + teamsContext?.user?.id, + ); + + const { cursorLocationsStarted, sendCursorLocation } = + useCursorLocationsLiveShare( + cursorLocationsEvent, + teamsContext?.user?.displayName ?? teamsContext?.user?.userPrincipalName, + teamsContext?.user?.id, + ); + + const started = useMemo(() => { + return [ + takeControlStarted, + scrollOffsetStarted, + cursorLocationsStarted, + ].every((value) => value === true); + }, [takeControlStarted, scrollOffsetStarted, cursorLocationsStarted]); // We are using https://react-query.tanstack.com/ for handling the calls to our APIs. // Here when the documentId changes, React Query will fetch the document from the API. @@ -30,7 +93,6 @@ export function DocumentStage() { const colorScheme = useDefaultColorScheme(); const stageInlineStyles = { background: colorScheme.background }; - const loggedInAADId = useAADId(); const [showLoader, setShowLoader] = useState(true); const showLoaderTimeout = 5000; @@ -41,27 +103,73 @@ export function DocumentStage() { }, showLoaderTimeout); return () => clearTimeout(timer); - }, []); + }, [setShowLoader]); + + useEffect(() => { + // When position is changed, we need to send the new scrollOffset to the other users via Live Share. + sendScrollOffset(position); + }, [position, sendScrollOffset]); + + useEffect(() => { + sendCursorLocation(cursorLocation); + }, [cursorLocation, sendCursorLocation]); return ( <> - - {error && - ((showLoader && ) || ( -

Error loading document: {error.message ?? error}

- ))} - {data && ( - <> - - - )} -
+ + + + + + {error && + ((showLoader && ) || ( +

Error loading document: {error.message ?? error}

+ ))} + {data && ( +
+ + {cursorLocationsEvent && ( + + p.state === PresenceState.online && + p.data !== undefined && + p.userId !== teamsContext?.user?.id, + )} + parentBoundingBox={documentStageRef.current?.getBoundingClientRect()} + /> + )} +
+ )} +
+
); } diff --git a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Documents/Document.module.css b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Documents/Document.module.css index ad2683e612..f02ea41163 100644 --- a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Documents/Document.module.css +++ b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Documents/Document.module.css @@ -1,4 +1,4 @@ .document { - padding: 1rem; - padding-bottom: 2rem; + padding: 1em 2em 3em 2em; + width: 70em; } diff --git a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Documents/Document.tsx b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Documents/Document.tsx index 02ca9002a6..9d5b61b631 100644 --- a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Documents/Document.tsx +++ b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Documents/Document.tsx @@ -38,7 +38,7 @@ export function Document({ const documentClasses = classnames(styles.document, className); return ( - +
{content}
diff --git a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Documents/DocumentChooser.tsx b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Documents/DocumentChooser.tsx index 99db4d611a..776d179b63 100644 --- a/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Documents/DocumentChooser.tsx +++ b/samples/meetings-share-to-stage-signing/csharp/Source/MeetingSigning.Web/ClientApp/src/components/Documents/DocumentChooser.tsx @@ -53,6 +53,170 @@ export function DocumentChooser({ content="This agreement is by and between Contoso ('Buyer'), and Northwind Traders ('Seller')." as="p" /> + +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Velit ut + tortor pretium viverra. Ut venenatis tellus in metus. Nullam + vehicula ipsum a arcu. Elit pellentesque habitant morbi tristique. + In iaculis nunc sed augue lacus viverra vitae congue. Aliquet nibh + praesent tristique magna sit amet purus gravida. Arcu felis bibendum + ut tristique et egestas quis. Pellentesque nec nam aliquam sem et + tortor consequat id. Vitae turpis massa sed elementum tempus + egestas. Varius sit amet mattis vulputate enim nulla aliquet. Turpis + tincidunt id aliquet risus feugiat in ante metus. Eget nulla + facilisi etiam dignissim diam quis enim lobortis. Risus pretium quam + vulputate dignissim suspendisse in est. Rhoncus est pellentesque + elit ullamcorper dignissim cras tincidunt lobortis. Arcu bibendum at + varius vel pharetra vel turpis. A condimentum vitae sapien + pellentesque habitant morbi tristique senectus. Id faucibus nisl + tincidunt eget nullam non nisi. Aenean pharetra magna ac placerat + vestibulum lectus mauris ultrices. +

+

+ In nibh mauris cursus mattis molestie. Scelerisque in dictum non + consectetur. Dictum at tempor commodo ullamcorper a lacus vestibulum + sed arcu. Scelerisque fermentum dui faucibus in ornare quam. + Volutpat maecenas volutpat blandit aliquam etiam erat. Lacus + suspendisse faucibus interdum posuere lorem ipsum dolor sit amet. + Egestas pretium aenean pharetra magna ac placerat vestibulum. Ipsum + dolor sit amet consectetur adipiscing elit pellentesque habitant. + Consequat id porta nibh venenatis cras sed felis eget velit. Egestas + purus viverra accumsan in nisl nisi scelerisque eu. Mollis aliquam + ut porttitor leo a diam sollicitudin tempor id. Etiam non quam lacus + suspendisse faucibus interdum posuere. Orci eu lobortis elementum + nibh tellus molestie. +

+

+ Laoreet sit amet cursus sit amet dictum. Amet tellus cras adipiscing + enim eu turpis. Integer malesuada nunc vel risus commodo viverra. In + dictum non consectetur a erat nam at. Et magnis dis parturient + montes. Sed risus ultricies tristique nulla aliquet. Ullamcorper + velit sed ullamcorper morbi tincidunt ornare massa eget. Vulputate + sapien nec sagittis aliquam malesuada bibendum arcu vitae elementum. + Turpis in eu mi bibendum neque egestas congue quisque. Egestas + congue quisque egestas diam in arcu cursus. Nisi est sit amet + facilisis magna etiam. +

+

+ Maecenas volutpat blandit aliquam etiam erat. Massa massa ultricies + mi quis. Senectus et netus et malesuada fames ac turpis egestas. + Pellentesque eu tincidunt tortor aliquam nulla facilisi cras. + Malesuada proin libero nunc consequat interdum varius sit amet + mattis. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper + malesuada proin. Blandit volutpat maecenas volutpat blandit. + Fringilla urna porttitor rhoncus dolor purus non enim praesent. Non + tellus orci ac auctor augue mauris augue. Dui accumsan sit amet + nulla facilisi. Ornare suspendisse sed nisi lacus sed viverra tellus + in. Posuere lorem ipsum dolor sit amet. Aliquam ut porttitor leo a + diam sollicitudin tempor id. Tellus integer feugiat scelerisque + varius morbi enim. Mattis ullamcorper velit sed ullamcorper morbi + tincidunt ornare. Malesuada pellentesque elit eget gravida cum + sociis natoque penatibus et. Habitasse platea dictumst quisque + sagittis. Eget nunc scelerisque viverra mauris in aliquam sem + fringilla. Diam ut venenatis tellus in metus vulputate. Leo integer + malesuada nunc vel risus commodo viverra maecenas accumsan. +

+

+ Rhoncus urna neque viverra justo nec ultrices dui. In ante metus + dictum at tempor commodo ullamcorper a. Justo laoreet sit amet + cursus sit amet dictum sit. Feugiat nisl pretium fusce id velit ut. + Faucibus ornare suspendisse sed nisi lacus sed viverra tellus. Sit + amet aliquam id diam maecenas. Ut morbi tincidunt augue interdum + velit euismod in pellentesque. Pretium quam vulputate dignissim + suspendisse in est ante in nibh. Sed enim ut sem viverra aliquet + eget sit amet tellus. Id diam vel quam elementum pulvinar etiam non. + Vulputate sapien nec sagittis aliquam malesuada bibendum arcu vitae + elementum. Ornare suspendisse sed nisi lacus sed viverra. Sed + euismod nisi porta lorem mollis aliquam ut porttitor. Vitae purus + faucibus ornare suspendisse. Laoreet id donec ultrices tincidunt. + Sagittis orci a scelerisque purus. Dignissim enim sit amet venenatis + urna cursus eget nunc scelerisque. Sit amet porttitor eget dolor + morbi non arcu. Netus et malesuada fames ac turpis. Pellentesque + diam volutpat commodo sed egestas egestas fringilla. +

+

+ Vitae tortor condimentum lacinia quis vel eros donec. Turpis egestas + integer eget aliquet nibh. Quisque sagittis purus sit amet. Urna + molestie at elementum eu facilisis sed. Fringilla est ullamcorper + eget nulla facilisi etiam dignissim diam. Aenean et tortor at risus + viverra adipiscing at in. Ut etiam sit amet nisl purus in mollis. + Egestas sed sed risus pretium. Iaculis eu non diam phasellus + vestibulum lorem sed. Tincidunt lobortis feugiat vivamus at augue + eget arcu dictum varius. Malesuada fames ac turpis egestas maecenas + pharetra. Nulla posuere sollicitudin aliquam ultrices sagittis orci. + At in tellus integer feugiat. Ornare lectus sit amet est placerat. + Orci a scelerisque purus semper eget duis at tellus at. Molestie a + iaculis at erat. Tristique nulla aliquet enim tortor at auctor urna. + Cursus metus aliquam eleifend mi in nulla posuere sollicitudin. +

+

+ Netus et malesuada fames ac turpis egestas integer eget. Sodales ut + eu sem integer vitae. Eleifend mi in nulla posuere sollicitudin + aliquam. Mauris in aliquam sem fringilla ut. Auctor urna nunc id + cursus metus aliquam eleifend. Sit amet nulla facilisi morbi tempus + iaculis urna. Sit amet purus gravida quis blandit turpis cursus in. + In hendrerit gravida rutrum quisque non tellus orci. Sed cras ornare + arcu dui vivamus arcu felis bibendum ut. Sit amet consectetur + adipiscing elit. Non curabitur gravida arcu ac tortor dignissim + convallis aenean et. Amet cursus sit amet dictum sit amet justo + donec. Massa sed elementum tempus egestas sed sed risus pretium + quam. Lectus nulla at volutpat diam ut venenatis. Porta non pulvinar + neque laoreet suspendisse interdum consectetur. Amet nisl purus in + mollis. Aliquet lectus proin nibh nisl condimentum id venenatis a + condimentum. Fames ac turpis egestas maecenas pharetra. +

+

+ Velit ut tortor pretium viverra suspendisse potenti nullam ac + tortor. Et malesuada fames ac turpis. Enim praesent elementum + facilisis leo vel fringilla est ullamcorper. Ac placerat vestibulum + lectus mauris ultrices eros. Faucibus vitae aliquet nec ullamcorper + sit amet risus nullam. Netus et malesuada fames ac. At urna + condimentum mattis pellentesque id. Id donec ultrices tincidunt arcu + non sodales neque sodales ut. Mattis molestie a iaculis at erat + pellentesque adipiscing commodo. Tellus molestie nunc non blandit + massa enim nec. Eget mauris pharetra et ultrices neque. Gravida in + fermentum et sollicitudin. Urna id volutpat lacus laoreet non + curabitur. Elementum nisi quis eleifend quam adipiscing vitae proin + sagittis. Massa id neque aliquam vestibulum morbi blandit cursus. Eu + tincidunt tortor aliquam nulla. Fames ac turpis egestas maecenas + pharetra convallis. Malesuada pellentesque elit eget gravida cum + sociis. Dui nunc mattis enim ut tellus elementum sagittis vitae. Sed + tempus urna et pharetra pharetra massa massa. +

+

+ Adipiscing enim eu turpis egestas pretium aenean pharetra. Enim + tortor at auctor urna nunc id. Ut morbi tincidunt augue interdum + velit euismod in pellentesque. Egestas egestas fringilla phasellus + faucibus scelerisque eleifend donec pretium vulputate. In mollis + nunc sed id semper risus. At imperdiet dui accumsan sit. Mi quis + hendrerit dolor magna eget. Consectetur lorem donec massa sapien + faucibus et molestie ac feugiat. Phasellus faucibus scelerisque + eleifend donec. Fringilla urna porttitor rhoncus dolor purus non + enim praesent. Metus aliquam eleifend mi in nulla posuere + sollicitudin aliquam ultrices. Euismod nisi porta lorem mollis + aliquam ut porttitor. Maecenas sed enim ut sem. Ornare suspendisse + sed nisi lacus sed. Aenean pharetra magna ac placerat vestibulum + lectus mauris ultrices. Risus viverra adipiscing at in tellus. + Egestas pretium aenean pharetra magna. Habitasse platea dictumst + vestibulum rhoncus est pellentesque elit ullamcorper dignissim. + Interdum posuere lorem ipsum dolor sit amet consectetur adipiscing. +

+

+ Amet est placerat in egestas erat imperdiet sed euismod. Leo duis ut + diam quam nulla porttitor massa. Nibh ipsum consequat nisl vel + pretium lectus quam. Congue quisque egestas diam in arcu cursus + euismod quis. Risus in hendrerit gravida rutrum quisque non tellus. + Auctor elit sed vulputate mi sit amet mauris commodo quis. Lectus + mauris ultrices eros in cursus turpis massa tincidunt. Pretium nibh + ipsum consequat nisl vel pretium lectus quam. Auctor augue mauris + augue neque gravida in fermentum et. Sit amet cursus sit amet. + Pellentesque massa placerat duis ultricies lacus sed. Non curabitur + gravida arcu ac. Eu non diam phasellus vestibulum lorem sed risus + ultricies tristique. Tortor aliquam nulla facilisi cras. Euismod + lacinia at quis risus sed. Viverra adipiscing at in tellus integer. + Nullam ac tortor vitae purus. +

Item Description - OTY + QTY Unit Price Total @@ -185,6 +349,160 @@ const PurchaseOrderDocument: ReactNode = ( +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Velit ut tortor + pretium viverra. Ut venenatis tellus in metus. Nullam vehicula ipsum a + arcu. Elit pellentesque habitant morbi tristique. In iaculis nunc sed + augue lacus viverra vitae congue. Aliquet nibh praesent tristique magna + sit amet purus gravida. Arcu felis bibendum ut tristique et egestas + quis. Pellentesque nec nam aliquam sem et tortor consequat id. Vitae + turpis massa sed elementum tempus egestas. Varius sit amet mattis + vulputate enim nulla aliquet. Turpis tincidunt id aliquet risus feugiat + in ante metus. Eget nulla facilisi etiam dignissim diam quis enim + lobortis. Risus pretium quam vulputate dignissim suspendisse in est. + Rhoncus est pellentesque elit ullamcorper dignissim cras tincidunt + lobortis. Arcu bibendum at varius vel pharetra vel turpis. A condimentum + vitae sapien pellentesque habitant morbi tristique senectus. Id faucibus + nisl tincidunt eget nullam non nisi. Aenean pharetra magna ac placerat + vestibulum lectus mauris ultrices. +

+

+ In nibh mauris cursus mattis molestie. Scelerisque in dictum non + consectetur. Dictum at tempor commodo ullamcorper a lacus vestibulum sed + arcu. Scelerisque fermentum dui faucibus in ornare quam. Volutpat + maecenas volutpat blandit aliquam etiam erat. Lacus suspendisse faucibus + interdum posuere lorem ipsum dolor sit amet. Egestas pretium aenean + pharetra magna ac placerat vestibulum. Ipsum dolor sit amet consectetur + adipiscing elit pellentesque habitant. Consequat id porta nibh venenatis + cras sed felis eget velit. Egestas purus viverra accumsan in nisl nisi + scelerisque eu. Mollis aliquam ut porttitor leo a diam sollicitudin + tempor id. Etiam non quam lacus suspendisse faucibus interdum posuere. + Orci eu lobortis elementum nibh tellus molestie. +

+

+ Laoreet sit amet cursus sit amet dictum. Amet tellus cras adipiscing + enim eu turpis. Integer malesuada nunc vel risus commodo viverra. In + dictum non consectetur a erat nam at. Et magnis dis parturient montes. + Sed risus ultricies tristique nulla aliquet. Ullamcorper velit sed + ullamcorper morbi tincidunt ornare massa eget. Vulputate sapien nec + sagittis aliquam malesuada bibendum arcu vitae elementum. Turpis in eu + mi bibendum neque egestas congue quisque. Egestas congue quisque egestas + diam in arcu cursus. Nisi est sit amet facilisis magna etiam. +

+

+ Maecenas volutpat blandit aliquam etiam erat. Massa massa ultricies mi + quis. Senectus et netus et malesuada fames ac turpis egestas. + Pellentesque eu tincidunt tortor aliquam nulla facilisi cras. Malesuada + proin libero nunc consequat interdum varius sit amet mattis. Massa + tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. + Blandit volutpat maecenas volutpat blandit. Fringilla urna porttitor + rhoncus dolor purus non enim praesent. Non tellus orci ac auctor augue + mauris augue. Dui accumsan sit amet nulla facilisi. Ornare suspendisse + sed nisi lacus sed viverra tellus in. Posuere lorem ipsum dolor sit + amet. Aliquam ut porttitor leo a diam sollicitudin tempor id. Tellus + integer feugiat scelerisque varius morbi enim. Mattis ullamcorper velit + sed ullamcorper morbi tincidunt ornare. Malesuada pellentesque elit eget + gravida cum sociis natoque penatibus et. Habitasse platea dictumst + quisque sagittis. Eget nunc scelerisque viverra mauris in aliquam sem + fringilla. Diam ut venenatis tellus in metus vulputate. Leo integer + malesuada nunc vel risus commodo viverra maecenas accumsan. +

+

+ Rhoncus urna neque viverra justo nec ultrices dui. In ante metus dictum + at tempor commodo ullamcorper a. Justo laoreet sit amet cursus sit amet + dictum sit. Feugiat nisl pretium fusce id velit ut. Faucibus ornare + suspendisse sed nisi lacus sed viverra tellus. Sit amet aliquam id diam + maecenas. Ut morbi tincidunt augue interdum velit euismod in + pellentesque. Pretium quam vulputate dignissim suspendisse in est ante + in nibh. Sed enim ut sem viverra aliquet eget sit amet tellus. Id diam + vel quam elementum pulvinar etiam non. Vulputate sapien nec sagittis + aliquam malesuada bibendum arcu vitae elementum. Ornare suspendisse sed + nisi lacus sed viverra. Sed euismod nisi porta lorem mollis aliquam ut + porttitor. Vitae purus faucibus ornare suspendisse. Laoreet id donec + ultrices tincidunt. Sagittis orci a scelerisque purus. Dignissim enim + sit amet venenatis urna cursus eget nunc scelerisque. Sit amet porttitor + eget dolor morbi non arcu. Netus et malesuada fames ac turpis. + Pellentesque diam volutpat commodo sed egestas egestas fringilla. +

+

+ Vitae tortor condimentum lacinia quis vel eros donec. Turpis egestas + integer eget aliquet nibh. Quisque sagittis purus sit amet. Urna + molestie at elementum eu facilisis sed. Fringilla est ullamcorper eget + nulla facilisi etiam dignissim diam. Aenean et tortor at risus viverra + adipiscing at in. Ut etiam sit amet nisl purus in mollis. Egestas sed + sed risus pretium. Iaculis eu non diam phasellus vestibulum lorem sed. + Tincidunt lobortis feugiat vivamus at augue eget arcu dictum varius. + Malesuada fames ac turpis egestas maecenas pharetra. Nulla posuere + sollicitudin aliquam ultrices sagittis orci. At in tellus integer + feugiat. Ornare lectus sit amet est placerat. Orci a scelerisque purus + semper eget duis at tellus at. Molestie a iaculis at erat. Tristique + nulla aliquet enim tortor at auctor urna. Cursus metus aliquam eleifend + mi in nulla posuere sollicitudin. +

+

+ Netus et malesuada fames ac turpis egestas integer eget. Sodales ut eu + sem integer vitae. Eleifend mi in nulla posuere sollicitudin aliquam. + Mauris in aliquam sem fringilla ut. Auctor urna nunc id cursus metus + aliquam eleifend. Sit amet nulla facilisi morbi tempus iaculis urna. Sit + amet purus gravida quis blandit turpis cursus in. In hendrerit gravida + rutrum quisque non tellus orci. Sed cras ornare arcu dui vivamus arcu + felis bibendum ut. Sit amet consectetur adipiscing elit. Non curabitur + gravida arcu ac tortor dignissim convallis aenean et. Amet cursus sit + amet dictum sit amet justo donec. Massa sed elementum tempus egestas sed + sed risus pretium quam. Lectus nulla at volutpat diam ut venenatis. + Porta non pulvinar neque laoreet suspendisse interdum consectetur. Amet + nisl purus in mollis. Aliquet lectus proin nibh nisl condimentum id + venenatis a condimentum. Fames ac turpis egestas maecenas pharetra. +

+

+ Velit ut tortor pretium viverra suspendisse potenti nullam ac tortor. Et + malesuada fames ac turpis. Enim praesent elementum facilisis leo vel + fringilla est ullamcorper. Ac placerat vestibulum lectus mauris ultrices + eros. Faucibus vitae aliquet nec ullamcorper sit amet risus nullam. + Netus et malesuada fames ac. At urna condimentum mattis pellentesque id. + Id donec ultrices tincidunt arcu non sodales neque sodales ut. Mattis + molestie a iaculis at erat pellentesque adipiscing commodo. Tellus + molestie nunc non blandit massa enim nec. Eget mauris pharetra et + ultrices neque. Gravida in fermentum et sollicitudin. Urna id volutpat + lacus laoreet non curabitur. Elementum nisi quis eleifend quam + adipiscing vitae proin sagittis. Massa id neque aliquam vestibulum morbi + blandit cursus. Eu tincidunt tortor aliquam nulla. Fames ac turpis + egestas maecenas pharetra convallis. Malesuada pellentesque elit eget + gravida cum sociis. Dui nunc mattis enim ut tellus elementum sagittis + vitae. Sed tempus urna et pharetra pharetra massa massa. +

+

+ Adipiscing enim eu turpis egestas pretium aenean pharetra. Enim tortor + at auctor urna nunc id. Ut morbi tincidunt augue interdum velit euismod + in pellentesque. Egestas egestas fringilla phasellus faucibus + scelerisque eleifend donec pretium vulputate. In mollis nunc sed id + semper risus. At imperdiet dui accumsan sit. Mi quis hendrerit dolor + magna eget. Consectetur lorem donec massa sapien faucibus et molestie ac + feugiat. Phasellus faucibus scelerisque eleifend donec. Fringilla urna + porttitor rhoncus dolor purus non enim praesent. Metus aliquam eleifend + mi in nulla posuere sollicitudin aliquam ultrices. Euismod nisi porta + lorem mollis aliquam ut porttitor. Maecenas sed enim ut sem. Ornare + suspendisse sed nisi lacus sed. Aenean pharetra magna ac placerat + vestibulum lectus mauris ultrices. Risus viverra adipiscing at in + tellus. Egestas pretium aenean pharetra magna. Habitasse platea dictumst + vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Interdum + posuere lorem ipsum dolor sit amet consectetur adipiscing. +

+

+ Amet est placerat in egestas erat imperdiet sed euismod. Leo duis ut + diam quam nulla porttitor massa. Nibh ipsum consequat nisl vel pretium + lectus quam. Congue quisque egestas diam in arcu cursus euismod quis. + Risus in hendrerit gravida rutrum quisque non tellus. Auctor elit sed + vulputate mi sit amet mauris commodo quis. Lectus mauris ultrices eros + in cursus turpis massa tincidunt. Pretium nibh ipsum consequat nisl vel + pretium lectus quam. Auctor augue mauris augue neque gravida in + fermentum et. Sit amet cursus sit amet. Pellentesque massa placerat duis + ultricies lacus sed. Non curabitur gravida arcu ac. Eu non diam + phasellus vestibulum lorem sed risus ultricies tristique. Tortor aliquam + nulla facilisi cras. Euismod lacinia at quis risus sed. Viverra + adipiscing at in tellus integer. Nullam ac tortor vitae purus. +