diff --git a/.env.defaults b/.env.defaults index 312257d..be78826 100644 --- a/.env.defaults +++ b/.env.defaults @@ -2,4 +2,6 @@ AZURE_TENANT_ID= AZURE_ORDERER= AZURE_FUNCTION_TOKEN_PROVIDER_URL= -FLUID_CLIENT=azure \ No newline at end of file +FLUID_CLIENT=azure +AZURE_CLIENT_ID= +AZURE_REDIRECT_URI= diff --git a/package-lock.json b/package-lock.json index 141b7a7..a631f37 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,11 +13,11 @@ "@azure/msal-browser": "^3.28.0", "@fluentui/react-components": "^9.61.6", "@fluentui/react-icons": "^2.0.292", - "@fluidframework/azure-client": "^2.23.0", - "@fluidframework/odsp-client": "^2.23.0", - "@fluidframework/presence": "^2.23.0", - "@fluidframework/telemetry-utils": "^2.23.0", - "@fluidframework/test-runtime-utils": "^2.23.0", + "@fluidframework/azure-client": "^2.40.0", + "@fluidframework/odsp-client": "^2.40.0", + "@fluidframework/presence": "^2.40.0", + "@fluidframework/telemetry-utils": "^2.40.0", + "@fluidframework/test-runtime-utils": "^2.40.0", "@microsoft/microsoft-graph-client": "^3.0.7", "@tailwindcss/vite": "^4.0.9", "@tanstack/react-table": "^8.20.6", @@ -25,7 +25,7 @@ "@vitejs/plugin-react": "^4.3.4", "axios": "^1.7.9", "dotenv": "^16.4.7", - "fluid-framework": "^2.23.0", + "fluid-framework": "^2.40.0", "hashids": "^2.2.10", "jsrsasign": "^11.1.0", "react": "^18.3.1", @@ -38,9 +38,9 @@ "devDependencies": { "@eslint/eslintrc": "^3.2.0", "@eslint/js": "^9.18.0", - "@fluidframework/azure-local-service": "^2.23.0", + "@fluidframework/azure-local-service": "^2.40.0", "@fluidframework/build-common": "^2.0.3", - "@fluidframework/devtools": "^2.23.0", + "@fluidframework/devtools": "^2.40.0", "@microsoft/microsoft-graph-types": "^2.40.0", "@playwright/test": "^1.49.1", "@types/debug": "^4.1.7", @@ -2700,13 +2700,13 @@ } }, "node_modules/@fluid-internal/client-utils": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluid-internal/client-utils/-/client-utils-2.31.1.tgz", - "integrity": "sha512-Ay7xC36Suqh0CYdIxGTRygxQkMZWujMujKytVazQlGXzQ+1QP2Wh/meXL7guQVNmuqlMNYAHi2Zmeq31DlmPhA==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluid-internal/client-utils/-/client-utils-2.40.0.tgz", + "integrity": "sha512-ccV+GXpPncc5Ms62uPODyeGCPT8YZwa/Gp/6kHyNeUXGozuwIajCU7cz4iy/3m/132TOm6o3LR3fHmtOcVjHFA==", "license": "MIT", "dependencies": { - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", "@types/events_pkg": "npm:@types/events@^3.0.0", "base64-js": "^1.5.1", "buffer": "^6.0.3", @@ -2715,50 +2715,50 @@ } }, "node_modules/@fluidframework/aqueduct": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/aqueduct/-/aqueduct-2.31.1.tgz", - "integrity": "sha512-S3dob65mHcVm0/Xw0dKQ5YJqSVSHqERGCUPxtBsojU/PbBRQmk+xVRhBRoSndYO3Z7QUoC9cDtKvEgaB/WpzuQ==", - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/container-runtime": "~2.31.1", - "@fluidframework/container-runtime-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/map": "~2.31.1", - "@fluidframework/request-handler": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1", - "@fluidframework/shared-object-base": "~2.31.1", - "@fluidframework/synthesize": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", - "@fluidframework/tree": "~2.31.1" + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/aqueduct/-/aqueduct-2.40.0.tgz", + "integrity": "sha512-Vuc/5j8NdZeStM7txX8/x5JMH2KGd1ARpqu8y3Bnvqi9BLoM8PosbEx8JPZx5QK9II0PGbc9WGYgyDTO/y+zOQ==", + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/container-runtime": "~2.40.0", + "@fluidframework/container-runtime-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/map": "~2.40.0", + "@fluidframework/request-handler": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0", + "@fluidframework/shared-object-base": "~2.40.0", + "@fluidframework/synthesize": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", + "@fluidframework/tree": "~2.40.0" } }, "node_modules/@fluidframework/azure-client": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/azure-client/-/azure-client-2.31.1.tgz", - "integrity": "sha512-SG1mHPji+JZtemMe6PTFdJMihQMTzHA8mu64vDJNw+KA3EQGdi3l4CJ7bhv9N2Pp5gCI3qznZ8X2m4C5QNObLA==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/azure-client/-/azure-client-2.40.0.tgz", + "integrity": "sha512-aHK7JL4Y788Fa9k+0B6Qphw/Ypy+Dbsgxt77xTFopOPauibXaKgt2v1GcCifnnTKFzTOBE5zjW+8KR/NzvrIgw==", "license": "MIT", "dependencies": { - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/container-loader": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/driver-utils": "~2.31.1", - "@fluidframework/fluid-static": "~2.31.1", - "@fluidframework/routerlicious-driver": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1" + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/container-loader": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/driver-utils": "~2.40.0", + "@fluidframework/fluid-static": "~2.40.0", + "@fluidframework/routerlicious-driver": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0" } }, "node_modules/@fluidframework/azure-local-service": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/azure-local-service/-/azure-local-service-2.31.1.tgz", - "integrity": "sha512-deJheqvqsyD9d1RvQldmcK2KcrClQtZFzJNa9YsyW+S18uWzdzQmW8wMXW81oSmnkORHwOu6rgQr9776b68ENg==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/azure-local-service/-/azure-local-service-2.40.0.tgz", + "integrity": "sha512-3LkYPPi50lQWmsDAMGRPxaN02YTGYkogMNqgHr2uM6AcUUp6XMcADohiQqIuhGF4lz7wFF2nqMCMHkayMvGq/w==", "dev": true, "license": "MIT", "dependencies": { @@ -2779,19 +2779,19 @@ } }, "node_modules/@fluidframework/cell": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/cell/-/cell-2.31.1.tgz", - "integrity": "sha512-cbtxG2V2TAANmC+PZXrOJ0w0t3W/qOdCHKtBpcvkHd/xGWkiVpVJpQm+UrJLoA6IgKIIvO6nhRtzysDC+ityAw==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/cell/-/cell-2.40.0.tgz", + "integrity": "sha512-6ZA1LPrrTFkaBMHf0GdLqwrZqy3kTDkdBsFqQsTa4i5XNoPS05qoZ5Ka5inAVesSiUPtqwxMH5BMjOdCxicA3w==", "dev": true, "license": "MIT", "dependencies": { - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/driver-utils": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/shared-object-base": "~2.31.1" + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/driver-utils": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/shared-object-base": "~2.40.0" } }, "node_modules/@fluidframework/common-definitions": { @@ -2816,28 +2816,28 @@ } }, "node_modules/@fluidframework/container-definitions": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-2.31.1.tgz", - "integrity": "sha512-Jd3CtHalfp1BT/1GZoWhheJuzDv+lKUidKyy9fdJ2td8zeIT/NY0So52//D0BKS5w2Bh/+IaeD5Rb3/Ynnd80A==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/container-definitions/-/container-definitions-2.40.0.tgz", + "integrity": "sha512-iD46JuBKZqeSeUQcmKzXaJ8GuPnsBOmkXmZNKQFnVk2dzuktjhWGQ1rxu72EZMfFMTJj7QOsuMVc+Z578lALuw==", "license": "MIT", "dependencies": { - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1" + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0" } }, "node_modules/@fluidframework/container-loader": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/container-loader/-/container-loader-2.31.1.tgz", - "integrity": "sha512-6F8h4zLtLwh7g8HiTqPbfanp2C9FetIuAQ9u+F7kp+dYUhxA1F4i5i1iKJtjMEEWhLE+zv9htUO3mC889NUzUQ==", - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/driver-utils": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/container-loader/-/container-loader-2.40.0.tgz", + "integrity": "sha512-jygQ6i7s+M5C4QrGH+HAYNo7rZ7FYvtFAwGvJFHyK1GGcfdn1dk2NztbxFXw4W6hWcGeOcFJZwjHS29KUKOV5w==", + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/driver-utils": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", "@types/events_pkg": "npm:@types/events@^3.0.0", "@ungap/structured-clone": "^1.2.0", "debug": "^4.3.4", @@ -2860,39 +2860,40 @@ } }, "node_modules/@fluidframework/container-runtime": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-2.31.1.tgz", - "integrity": "sha512-ZOwf6XsEXR17mTVfqRzOp+p5H+bA49y4XyxvvA7yeo0agfJDH9jsbjCNVqkqsXpw/sgF/dAa7irHz+YRiniDDw==", - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/container-runtime-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/driver-utils": "~2.31.1", - "@fluidframework/id-compressor": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime/-/container-runtime-2.40.0.tgz", + "integrity": "sha512-a13g/6NnHjmeiZASen8toBBXULa/OK25kvCP3qVnP1hAf046w85ghbNcDm4HbqLkLeDyyPazgphRx9BTp/fx7A==", + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/container-runtime-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/driver-utils": "~2.40.0", + "@fluidframework/id-compressor": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", "@tylerbu/sorted-btree-es6": "^1.8.0", "double-ended-queue": "^2.1.0-0", "lz4js": "^0.2.0", + "semver-ts": "^1.0.3", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/container-runtime-definitions": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-2.31.1.tgz", - "integrity": "sha512-rsdoqxKyo3+tUnE/vJ2dgXRXGzAIuEJf139N1S3B3hDQRVAZu2dsmP2lr+xzDuk5NUoJ98eCgEZOYN+aeF1CCg==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/container-runtime-definitions/-/container-runtime-definitions-2.40.0.tgz", + "integrity": "sha512-OTyKrUITzBe2ANBBPp0uWvQrrLbfhoIq1Kt22ZIVRgzQAS6D2y5skC9kp7Nvk3d7tGRtFUkc1T3qnuaz19sR7w==", "license": "MIT", "dependencies": { - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1" + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0" } }, "node_modules/@fluidframework/container-runtime/node_modules/uuid": { @@ -2909,64 +2910,64 @@ } }, "node_modules/@fluidframework/core-interfaces": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.31.1.tgz", - "integrity": "sha512-irpu3sXBsZ8zo+d0ro9NaFQZoOH85/kwPnLcNsEHyF2KG2IBPDbKSlX7F18Vj/75OtQ2DVluUyyEMj9hy/HQYw==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/core-interfaces/-/core-interfaces-2.40.0.tgz", + "integrity": "sha512-735WxXYQEVe2ZPvQW1BrgAb60Mf4ufVCMMFTnphToE1YTaYA37KI+RjUqpnv6tTSwB5FDkZmPr4kJzi0Gbog2g==", "license": "MIT" }, "node_modules/@fluidframework/core-utils": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/core-utils/-/core-utils-2.31.1.tgz", - "integrity": "sha512-SlsafmhZuL0MMfNSVLcm0w0g2ssLvEisGZkeXkq643CMQgVHwQNfErMXMVO5oJsMpcTYXOT53zsXipdxaj3xJg==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/core-utils/-/core-utils-2.40.0.tgz", + "integrity": "sha512-JbQ89gtOarR80fOlYlebewsUZ0deGdmelfqsuCOQLSmwvcODlpMPuP3AbvJDKMaFapxrIw8svBpPu0YD4Hs9SA==", "license": "MIT" }, "node_modules/@fluidframework/counter": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/counter/-/counter-2.31.1.tgz", - "integrity": "sha512-I15Ni0IuQdGRpomSUMj1a5konga903aFhV9aBvPBhyhdiRLX77NAk+YlDhwv12lAEWVnrK31F+Vv/pXC+PZcuQ==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/counter/-/counter-2.40.0.tgz", + "integrity": "sha512-OF2cuc5uf3YbUCk/B+79rzyZylmTHfSgfyukiZEiIIw3SM474+UGUNzHZ1s8DyY7lQbqGIXGrXtDxwSIFVJB0A==", "dev": true, "license": "MIT", "dependencies": { - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/driver-utils": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/shared-object-base": "~2.31.1" + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/driver-utils": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/shared-object-base": "~2.40.0" } }, "node_modules/@fluidframework/datastore": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-2.31.1.tgz", - "integrity": "sha512-mijJHIPdb4z5SLcj/npy5l1f9BwJpX6sTCmP2a/vcdWEEr14mIOWuf7KuCLmMu9mZZ28k73HSfxO287w44w6vQ==", - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/driver-utils": "~2.31.1", - "@fluidframework/id-compressor": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore/-/datastore-2.40.0.tgz", + "integrity": "sha512-9T7bYR8VyXYUPj87B0/65aomqWw/wmJeSGAa3z6bNHzKTm9qoZx9/L0JfevDGjfahtR5+2PYXwoMtTMGJnWADw==", + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/driver-utils": "~2.40.0", + "@fluidframework/id-compressor": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/datastore-definitions": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-2.31.1.tgz", - "integrity": "sha512-1er5bFjAVRxN37z8SE9RmG1DCM5bNXHvaPS0C/aDq1qsWbstfypoMZLasDWATBpPTbG+Fim12i2nrsT/aqCJIA==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/datastore-definitions/-/datastore-definitions-2.40.0.tgz", + "integrity": "sha512-jV/BY2ur2P4h5uPEzSrAgXBownJmCixPDi7/4L1JH/HIFPUYAsXkgB1Sjf/d0EMg4aILCkjrRvwrrC2TJ1I9HA==", "license": "MIT", "dependencies": { - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/id-compressor": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1" + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/id-compressor": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0" } }, "node_modules/@fluidframework/datastore/node_modules/uuid": { @@ -2983,76 +2984,77 @@ } }, "node_modules/@fluidframework/devtools": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/devtools/-/devtools-2.31.1.tgz", - "integrity": "sha512-tWHrf7aPsDxkMJDhWZ0ybMRmZBZ1PZZiXeJp41FUtlbOxpgymBKWMB9YkntP2Uby6rG+RRixTQMM3Vs91r7O8w==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/devtools/-/devtools-2.40.0.tgz", + "integrity": "sha512-n70v7kCe/X9cLjn10xmlDegyH7+HjnUjjE5uj/21I43JcgVdbBz2OgiGLEuxCr+eQSGPkyK4t/vEJrQH5okjnA==", "dev": true, "license": "MIT", "dependencies": { - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/devtools-core": "~2.31.1", - "@fluidframework/fluid-static": "~2.31.1" + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/devtools-core": "~2.40.0", + "@fluidframework/fluid-static": "~2.40.0" } }, "node_modules/@fluidframework/devtools-core": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/devtools-core/-/devtools-core-2.31.1.tgz", - "integrity": "sha512-XCdbOs/GOnyyIAsnaA7Ab5ysgRwuyy8LaZnhuCyAM2KovtE0BW5W20pVkVeQPeKOp5BRmWuyjM4Sn1khKQkwAg==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/devtools-core/-/devtools-core-2.40.0.tgz", + "integrity": "sha512-5PGgha5+YV9IL5APVlO4wg0swnOs0jhiVk3NWoeRAqBjDJY2FTBs69v6xKmPMIbafNZv2wFpHg9y7BZt4XiQpw==", "dev": true, "license": "MIT", "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/cell": "~2.31.1", - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/container-loader": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/counter": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/map": "~2.31.1", - "@fluidframework/matrix": "~2.31.1", - "@fluidframework/sequence": "~2.31.1", - "@fluidframework/shared-object-base": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", - "@fluidframework/tree": "~2.31.1" + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/aqueduct": "~2.40.0", + "@fluidframework/cell": "~2.40.0", + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/container-loader": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/counter": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/map": "~2.40.0", + "@fluidframework/matrix": "~2.40.0", + "@fluidframework/sequence": "~2.40.0", + "@fluidframework/shared-object-base": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", + "@fluidframework/tree": "~2.40.0" } }, "node_modules/@fluidframework/driver-base": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-2.31.1.tgz", - "integrity": "sha512-cwTb3++iRJlz9USKXlF3SRJrV6bzHrIKboM9kDV4F8jT1V4CWmcbw4aE6o6JymsKNvDm0hHh9qzQj8H3bZYV6w==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-base/-/driver-base-2.40.0.tgz", + "integrity": "sha512-6+YKDg8nsxu70WiHQw3AqbIYp/YkauVEmfEc057OHPHxD6anrUbgRzbIEs8Mzi2Sy+mL7A/fyqqZNwaBZUpTfA==", "license": "MIT", "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/driver-utils": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1" + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/driver-utils": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0" } }, "node_modules/@fluidframework/driver-definitions": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.31.1.tgz", - "integrity": "sha512-kn0P7az4AwCRzriAy4O36zFDlqwQvqPBbye+0veKBnRHQ2SnYDMb/eMD+29u7noYyM1BNNY4Bo3yUx7IEHBaLw==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-definitions/-/driver-definitions-2.40.0.tgz", + "integrity": "sha512-6OKKPEwiTA7+pS2gl81CEhIRRRPj9swkKRXunA5qolEOKiNJNl5boud4naSMu3BDQfndmifKbzFB5yIILhyPBw==", "license": "MIT", "dependencies": { - "@fluidframework/core-interfaces": "~2.31.1" + "@fluidframework/core-interfaces": "~2.40.0" } }, "node_modules/@fluidframework/driver-utils": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-2.31.1.tgz", - "integrity": "sha512-skKx6z68B6k+Dp8FyE5g8orOaC3h9YZZv/2/ifq72vKCD9UymeKkcRxrcjNgtD75GwRhT0qMSwgLBfK7oSJ80A==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/driver-utils/-/driver-utils-2.40.0.tgz", + "integrity": "sha512-dq+dXBwZcnJdtV1iV24/MqtmT1ng10XSRj/NeEARguWCOxeW7bkIgFCQZhhsiPWp0O8YGdgyjDH9CqGhkPvsbg==", "license": "MIT", "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", - "axios": "^1.7.7", + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", + "axios": "^1.8.4", "lz4js": "^0.2.0", "uuid": "^9.0.0" } @@ -3071,25 +3073,25 @@ } }, "node_modules/@fluidframework/fluid-static": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/fluid-static/-/fluid-static-2.31.1.tgz", - "integrity": "sha512-u7EQgSWKKMJ7HK+n4PNciBnqyJ2RqdHiMn/OD5qQb/HmxrlMoxb0E68tuBE8+Y/Hlp9RMdx0Dhss61RGwwtGqQ==", - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/aqueduct": "~2.31.1", - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/container-loader": "~2.31.1", - "@fluidframework/container-runtime": "~2.31.1", - "@fluidframework/container-runtime-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/request-handler": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1", - "@fluidframework/shared-object-base": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1" + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/fluid-static/-/fluid-static-2.40.0.tgz", + "integrity": "sha512-CmCB/8Xar0/QWe5O9QAKhdkoDX1LHJiTxjoU1ZaRDpJkauRSrwdzLwDtllUFtmPjJ1Y11fcfwo61VB8GfQWTHA==", + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/aqueduct": "~2.40.0", + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/container-loader": "~2.40.0", + "@fluidframework/container-runtime": "~2.40.0", + "@fluidframework/container-runtime-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/request-handler": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0", + "@fluidframework/shared-object-base": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0" } }, "node_modules/@fluidframework/gitresources": { @@ -3099,15 +3101,15 @@ "license": "MIT" }, "node_modules/@fluidframework/id-compressor": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/id-compressor/-/id-compressor-2.31.1.tgz", - "integrity": "sha512-2+jEKShJsZYBhRZdSqpAsET1hlk7owvudj1pZZe2sFLuWsIpuwRSjExGJYXtHIFmQHJVOU1N3arjObyC/f6xow==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/id-compressor/-/id-compressor-2.40.0.tgz", + "integrity": "sha512-itBXlCRKjHdg/S58Tdmc9IDisncPCe4XT9vBb5Kn/vD9enJGO5NgqiY9gmmxpHrhcpIoCvgltuSi6Ey7YEbCrQ==", "license": "MIT", "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", "@tylerbu/sorted-btree-es6": "^1.8.0", "uuid": "^9.0.0" } @@ -3126,43 +3128,43 @@ } }, "node_modules/@fluidframework/map": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-2.31.1.tgz", - "integrity": "sha512-MnS8jTdIWIoe/Zwg+SgWyjEn3h+HomvolLh5Sx1c2mzN4qxpmFZthrjrX1muUanYT/sh2YS9qwy+ZxDOyWv0RA==", - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/driver-utils": "~2.31.1", - "@fluidframework/merge-tree": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1", - "@fluidframework/shared-object-base": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/map/-/map-2.40.0.tgz", + "integrity": "sha512-hOLpnA6J4LYF2oOjWUP0PCvymJyMQcd4UXjc0y75oN8C0oCxxgjynPZ/LzG4wPhyWzSUARW956d0oDYLglzssQ==", + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/driver-utils": "~2.40.0", + "@fluidframework/merge-tree": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0", + "@fluidframework/shared-object-base": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", "path-browserify": "^1.0.1" } }, "node_modules/@fluidframework/matrix": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/matrix/-/matrix-2.31.1.tgz", - "integrity": "sha512-cW6eLwyHx/9XzLyRVF0zhfqjBmflu+Sz5aG6MpiaSNjOmBXagAaEz4Mw9pyYpCbKsowXsUmFQQMEkaHIPXEoqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/driver-utils": "~2.31.1", - "@fluidframework/merge-tree": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1", - "@fluidframework/shared-object-base": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/matrix/-/matrix-2.40.0.tgz", + "integrity": "sha512-F3TPVYK1wNbrQvJtFvM5JuzSz1jYWVNTFM3dNle2O58HQVr1UMhU3goVIlzycfP/nOYGO0nj5UVoKiogQ2lWBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/driver-utils": "~2.40.0", + "@fluidframework/merge-tree": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0", + "@fluidframework/shared-object-base": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", "@tiny-calc/nano": "0.0.0-alpha.5", "double-ended-queue": "^2.1.0-0", "tslib": "^1.10.0" @@ -3176,40 +3178,40 @@ "license": "0BSD" }, "node_modules/@fluidframework/merge-tree": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-2.31.1.tgz", - "integrity": "sha512-NkKuiCMd4GEWhr8dylbeWikDHXL9klOLygoMTAzPI5eNdP0AB2DLt1GHgQImEU2Z8EAx8Nu5ncv35QPS/oZMPQ==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/merge-tree/-/merge-tree-2.40.0.tgz", + "integrity": "sha512-qGeTpScS3axkrvGlFYxIHY2jS6M0fPjs0pabykFvsqW59Jyyeg2FDG0VT3chxo3m0ETAVjNXr7zC3cfBjmihkw==", "license": "MIT", "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1", - "@fluidframework/shared-object-base": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1" + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0", + "@fluidframework/shared-object-base": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0" } }, "node_modules/@fluidframework/odsp-client": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/odsp-client/-/odsp-client-2.31.1.tgz", - "integrity": "sha512-tJvPRoYlDotHDR8mvm+PKkw/8wIp7bvPKgUkPfEj9DA8ntrhX4wFYaEZ9nAAG6BRd8yxbqERmRDA/yklLfZGJw==", - "license": "MIT", - "dependencies": { - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/container-loader": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/fluid-static": "~2.31.1", - "@fluidframework/map": "~2.31.1", - "@fluidframework/odsp-doclib-utils": "~2.31.1", - "@fluidframework/odsp-driver": "~2.31.1", - "@fluidframework/odsp-driver-definitions": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/odsp-client/-/odsp-client-2.40.0.tgz", + "integrity": "sha512-3WYg94YYxHIxLYwwjO2+1POK2xH/MJyS5L52gUoos+JdkCqnzV/uTFCTVv5xeF8gKEErKzDg/x3Q/0qpXXAzyA==", + "license": "MIT", + "dependencies": { + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/container-loader": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/fluid-static": "~2.40.0", + "@fluidframework/map": "~2.40.0", + "@fluidframework/odsp-doclib-utils": "~2.40.0", + "@fluidframework/odsp-driver": "~2.40.0", + "@fluidframework/odsp-driver-definitions": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", "uuid": "^9.0.0" } }, @@ -3227,47 +3229,47 @@ } }, "node_modules/@fluidframework/odsp-doclib-utils": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/odsp-doclib-utils/-/odsp-doclib-utils-2.31.1.tgz", - "integrity": "sha512-Zy6yDLaUXraOW742DnktJjv6PVUtpU8FOLQlFiH8mkPHMvF1f1aKENfbsEMj0ulntq9Y1F6KjaUc5j9mDr6yGA==", - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/driver-utils": "~2.31.1", - "@fluidframework/odsp-driver-definitions": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/odsp-doclib-utils/-/odsp-doclib-utils-2.40.0.tgz", + "integrity": "sha512-K59/l80PaVDlsHsDBQycD+k0txBzHnoO21Kq4jcjR/2H5WmPWVMZAnTSZ3XcAA7q1VlQCmhdzhwn1LVFZ+0Ocw==", + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/driver-utils": "~2.40.0", + "@fluidframework/odsp-driver-definitions": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", "isomorphic-fetch": "^3.0.0" } }, "node_modules/@fluidframework/odsp-driver": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/odsp-driver/-/odsp-driver-2.31.1.tgz", - "integrity": "sha512-QwbcMeTJsunY43zW5lGH90WTW8tKxWSka3dR9/UYa7XkppU833EdVTdi2g+eYQ2lhyVBbj1X3yyz4K1j9sqydg==", - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/driver-base": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/driver-utils": "~2.31.1", - "@fluidframework/odsp-doclib-utils": "~2.31.1", - "@fluidframework/odsp-driver-definitions": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/odsp-driver/-/odsp-driver-2.40.0.tgz", + "integrity": "sha512-2d0wTFodmlB21/vVgy7VGxj3b8h9cJJn471DkDMOKsMvweiosJYRT0DiCdSZNElbIXscfBpxg3dEEM2zBNuTVg==", + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/driver-base": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/driver-utils": "~2.40.0", + "@fluidframework/odsp-doclib-utils": "~2.40.0", + "@fluidframework/odsp-driver-definitions": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", "socket.io-client": "~4.7.5", "uuid": "^9.0.0" } }, "node_modules/@fluidframework/odsp-driver-definitions": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/odsp-driver-definitions/-/odsp-driver-definitions-2.31.1.tgz", - "integrity": "sha512-tgtYqU29FMy23O+9S867qwJEWBR7795PfexAieq1C+XXkV0m0mGDomTWwxNz8+C5kLjdH8p3CMZdgW3Stw57yg==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/odsp-driver-definitions/-/odsp-driver-definitions-2.40.0.tgz", + "integrity": "sha512-9hOcJ7xjt6r+1tl8v8qvYel/j0nZIyVQcE8mkwkTh99Jky/gbRwCAIXIwjuAf0JrXVUHCSDVcSyUczgPNpwPvA==", "license": "MIT", "dependencies": { - "@fluidframework/driver-definitions": "~2.31.1" + "@fluidframework/driver-definitions": "~2.40.0" } }, "node_modules/@fluidframework/odsp-driver/node_modules/uuid": { @@ -3284,25 +3286,25 @@ } }, "node_modules/@fluidframework/presence": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/presence/-/presence-2.31.1.tgz", - "integrity": "sha512-tD9vT2zSUDM+L4MqlyGvQCeiGq/TTLO8GkNp62xLxIqMovIrhZh7Nkoc2dMqkFI2+udgCJqbcrEvs5hyqZQw1Q==", - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/container-loader": "~2.31.1", - "@fluidframework/container-runtime-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/fluid-static": "~2.31.1", - "@fluidframework/id-compressor": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1", - "@fluidframework/shared-object-base": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1" + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/presence/-/presence-2.40.0.tgz", + "integrity": "sha512-iJb+7/KfMEZup1946bD6mvBc/helqVlIYcxBu+bkfHRvcS5wrNOigAnId+tUDo6jZLKnsO26aaYpqJNcS0tpBQ==", + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/container-loader": "~2.40.0", + "@fluidframework/container-runtime-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/fluid-static": "~2.40.0", + "@fluidframework/id-compressor": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0", + "@fluidframework/shared-object-base": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0" } }, "node_modules/@fluidframework/protocol-base": { @@ -3324,32 +3326,32 @@ "license": "MIT" }, "node_modules/@fluidframework/request-handler": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/request-handler/-/request-handler-2.31.1.tgz", - "integrity": "sha512-m3jm7be8/ymIeJnjoQ/84KR53hrcM+izlzKNgD3IOg7tkbUF0WeveK1JG5LiDth6IppnP0kHbr8MqXOFWdFRiQ==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/request-handler/-/request-handler-2.40.0.tgz", + "integrity": "sha512-krJEo1VltcFxL9zml39VU3hRzJRzhb6np4SXD8vSWw6UfnnxtRBtpag3q6pCB+lKvGTO0dCAECvWqh4dvfpbwg==", "license": "MIT", "dependencies": { - "@fluidframework/container-runtime-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1" + "@fluidframework/container-runtime-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0" } }, "node_modules/@fluidframework/routerlicious-driver": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/routerlicious-driver/-/routerlicious-driver-2.31.1.tgz", - "integrity": "sha512-u5bv4L5JkOCAuQ9Ln4RjDcLH/aUUcsDxoCTd/Wr8fXymqe8cHqmBgLv5JXP5A7VqAtar6OPrA4uIoDgsuy03Ig==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/routerlicious-driver/-/routerlicious-driver-2.40.0.tgz", + "integrity": "sha512-y+2dzuQDTZUXg5hn/Fw2DRHByoWu32f/K6f6gbMcQSBP9xKZjBuNoEpBrW3s9flPIAMZErguEmbfdv7ByDE6aw==", "license": "MIT", "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/driver-base": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/driver-utils": "~2.31.1", + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/driver-base": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/driver-utils": "~2.40.0", "@fluidframework/server-services-client": "^5.0.0", - "@fluidframework/telemetry-utils": "~2.31.1", + "@fluidframework/telemetry-utils": "~2.40.0", "cross-fetch": "^3.1.5", "json-stringify-safe": "5.0.1", "socket.io-client": "~4.7.5", @@ -3370,52 +3372,52 @@ } }, "node_modules/@fluidframework/runtime-definitions": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-2.31.1.tgz", - "integrity": "sha512-O3H228M9+NRDqe0F7k/Hx/gVA0czB4/RIRU75h5/RyuTKAiBVh8c5oIyg3LbfFgWQ8MvghX3AZyeFUOzM2hfDw==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-definitions/-/runtime-definitions-2.40.0.tgz", + "integrity": "sha512-LQil7PPNxA/zc0OZQ8Q10HuE6Vczrt5BoYP++38w/k1yYFS5LI+vajr0LDKpaD1R5Yxg52+dyhzMvsdWmDwVig==", "license": "MIT", "dependencies": { - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/id-compressor": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1" + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/id-compressor": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0" } }, "node_modules/@fluidframework/runtime-utils": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-2.31.1.tgz", - "integrity": "sha512-BvBXpt4EvWyXxCiSxmqNQLdU6i5LjK8Hqo9iZHv8hO1pboOQ6SU0pYdd7dQaPOCWVUVoO29ID3ioSDnuZn+tvg==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/runtime-utils/-/runtime-utils-2.40.0.tgz", + "integrity": "sha512-njgzS/FUEQx313Drq0VM3NwQLGancHXwv6HPPhDWATRGliuGlToji23k83+ZXnnSrDN1HIO7EhkD7GEVrxWmAg==", "license": "MIT", "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/container-runtime-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/driver-utils": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1" + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/container-runtime-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/driver-utils": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0" } }, "node_modules/@fluidframework/sequence": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-2.31.1.tgz", - "integrity": "sha512-Jd5SOsRsaRcoBrajOfK4YHRDW9cqARS16AYgL260N7CUXLyKdRF5kg4LIVYrJUqIuasYJvFeG2Y2zpknV2ZGCw==", - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/merge-tree": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1", - "@fluidframework/shared-object-base": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/sequence/-/sequence-2.40.0.tgz", + "integrity": "sha512-FI+ImIZsJPLKTFV3qjayvQCS4RPULN+QrqEEZichi3pD8N7Fe+qvj5Q1yK0WUZMHLQARlT0txtw5FuL4K5l7eA==", + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/merge-tree": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0", + "@fluidframework/shared-object-base": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", "double-ended-queue": "^2.1.0-0", "uuid": "^9.0.0" } @@ -3837,22 +3839,22 @@ } }, "node_modules/@fluidframework/shared-object-base": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-2.31.1.tgz", - "integrity": "sha512-FX057D7be/BcEMWl8RdV21MgQiyPW5fs6githFRrKrmjNixFX6Ax2hVB2KBzUUx6DNL14y7X6N9NAAenDIKZFg==", - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/container-runtime": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/shared-object-base/-/shared-object-base-2.40.0.tgz", + "integrity": "sha512-GnwUyLOQcx3HbkY/ddrzdg0vtMqscCMk/ejZQhCioMW431P/+626gblnLU6a3sKtu8Qp6OJJqp0aZzaqqjuyRQ==", + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/id-compressor": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", "uuid": "^9.0.0" } }, @@ -3870,24 +3872,24 @@ } }, "node_modules/@fluidframework/synthesize": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/synthesize/-/synthesize-2.31.1.tgz", - "integrity": "sha512-FlLtF8d14D90MLSjKR4mPpjCtV+0rUrRRcdHZHshXFXaKh5ZSPxOst3Oi+/Gt/JCr1XyakR0tvekWmS+fi8TJg==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/synthesize/-/synthesize-2.40.0.tgz", + "integrity": "sha512-n04sjV9SaLxVgf5GDdoIAKeUanEQLKvwui+TTn6Wk0icvyikA3/2r92IxIjNeAur7umbiN7bCTnf3Ep9Qt6tGg==", "license": "MIT", "dependencies": { - "@fluidframework/core-utils": "~2.31.1" + "@fluidframework/core-utils": "~2.40.0" } }, "node_modules/@fluidframework/telemetry-utils": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-2.31.1.tgz", - "integrity": "sha512-FB7w8CdtwImYyyObGZEAs1fBmOs5M5WL2FPNKiJdJVahWAxLQNb8RozgB3XCTtwcLQGRxUfoNMhyWinngdKjWA==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/telemetry-utils/-/telemetry-utils-2.40.0.tgz", + "integrity": "sha512-/FIxn47ZCT7SE71h/UdHIFbhs4LtHZULnHIAncQhwtsnZtVxZf04SIvVEelcTlwNgjAA4WYch8HDExPNttxPoQ==", "license": "MIT", "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", "debug": "^4.3.4", "uuid": "^9.0.0" } @@ -3906,23 +3908,23 @@ } }, "node_modules/@fluidframework/test-runtime-utils": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/test-runtime-utils/-/test-runtime-utils-2.31.1.tgz", - "integrity": "sha512-YR4m7/PmaCl9BT76NPueb0qhahJ+DClk33zc/3xUHJIZT7wVq+KNG1rItAM1kk7R/6s4qycXL4RKTUw78eTQrQ==", - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/container-runtime-definitions": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/id-compressor": "~2.31.1", - "@fluidframework/routerlicious-driver": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/test-runtime-utils/-/test-runtime-utils-2.40.0.tgz", + "integrity": "sha512-Xf6OxXlEVtzVWYTPcrjPkSCXkN863IVfhyD1awpO4cT5Jukyo+uxr3xCR9JiPt3nhqayzMyHSX1DPXXtBjXq6g==", + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/container-runtime-definitions": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/id-compressor": "~2.40.0", + "@fluidframework/routerlicious-driver": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", "jsrsasign": "^11.0.0", "uuid": "^9.0.0" } @@ -3941,22 +3943,22 @@ } }, "node_modules/@fluidframework/tree": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@fluidframework/tree/-/tree-2.31.1.tgz", - "integrity": "sha512-w7PcUtGvjSDTlV+qBc366exsghuj686gAYViDJ3aO3Pv9OCVtPEPvjhajdtU7++EOZFHNoM3SczthK1Ivp1z3Q==", - "license": "MIT", - "dependencies": { - "@fluid-internal/client-utils": "~2.31.1", - "@fluidframework/container-runtime": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/datastore-definitions": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/id-compressor": "~2.31.1", - "@fluidframework/runtime-definitions": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1", - "@fluidframework/shared-object-base": "~2.31.1", - "@fluidframework/telemetry-utils": "~2.31.1", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@fluidframework/tree/-/tree-2.40.0.tgz", + "integrity": "sha512-K2CujqH2BzlTRIZdAS7W2LdkBXhH+FRhl/AFlAwPXRhQOghmzOh/yoGoAw8krVz5tnQKfwULDPrgRr/T4wlZAg==", + "license": "MIT", + "dependencies": { + "@fluid-internal/client-utils": "~2.40.0", + "@fluidframework/container-runtime": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/datastore-definitions": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/id-compressor": "~2.40.0", + "@fluidframework/runtime-definitions": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0", + "@fluidframework/shared-object-base": "~2.40.0", + "@fluidframework/telemetry-utils": "~2.40.0", "@sinclair/typebox": "^0.34.13", "@tylerbu/sorted-btree-es6": "^1.8.0", "@types/ungap__structured-clone": "^1.2.0", @@ -7934,22 +7936,22 @@ "license": "ISC" }, "node_modules/fluid-framework": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/fluid-framework/-/fluid-framework-2.31.1.tgz", - "integrity": "sha512-E/y+t5aFNUk8QnQX0eQL42EpAMsUwtqd4mfC1nccOTWb+fVfZHrtLUNHPlcs92NyPV300S/QvLcoDRWEP3bvSA==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/fluid-framework/-/fluid-framework-2.40.0.tgz", + "integrity": "sha512-bmGJKJQv++XO0A0UNT7li4bnq22/foZEvhd8SsLN8VcmzOB5jQ6lR0RJUUijhMAGjW/pgJ9mKVCCV8zZ8BKuJQ==", "license": "MIT", "dependencies": { - "@fluidframework/container-definitions": "~2.31.1", - "@fluidframework/container-loader": "~2.31.1", - "@fluidframework/core-interfaces": "~2.31.1", - "@fluidframework/core-utils": "~2.31.1", - "@fluidframework/driver-definitions": "~2.31.1", - "@fluidframework/fluid-static": "~2.31.1", - "@fluidframework/map": "~2.31.1", - "@fluidframework/runtime-utils": "~2.31.1", - "@fluidframework/sequence": "~2.31.1", - "@fluidframework/shared-object-base": "~2.31.1", - "@fluidframework/tree": "~2.31.1" + "@fluidframework/container-definitions": "~2.40.0", + "@fluidframework/container-loader": "~2.40.0", + "@fluidframework/core-interfaces": "~2.40.0", + "@fluidframework/core-utils": "~2.40.0", + "@fluidframework/driver-definitions": "~2.40.0", + "@fluidframework/fluid-static": "~2.40.0", + "@fluidframework/map": "~2.40.0", + "@fluidframework/runtime-utils": "~2.40.0", + "@fluidframework/sequence": "~2.40.0", + "@fluidframework/shared-object-base": "~2.40.0", + "@fluidframework/tree": "~2.40.0" } }, "node_modules/fn.name": { @@ -11460,6 +11462,15 @@ "node": ">=10" } }, + "node_modules/semver-ts": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/semver-ts/-/semver-ts-1.0.3.tgz", + "integrity": "sha512-RMf2+Nbd0Hiq5u8LADzqnSRb09Vu1UKOLFw9P9nm8XY3JPeFjv3DLVYBZjPWFHUxBVz7ktIVGR3xFjYilHlXng==", + "license": "ISC", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", @@ -12314,6 +12325,48 @@ "dev": true, "license": "MIT" }, + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinylicious": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/tinylicious/-/tinylicious-5.0.0.tgz", @@ -12795,14 +12848,17 @@ } }, "node_modules/vite": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.5.tgz", - "integrity": "sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", "license": "MIT", "dependencies": { "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", "postcss": "^8.5.3", - "rollup": "^4.30.1" + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" }, "bin": { "vite": "bin/vite.js" @@ -12865,6 +12921,20 @@ } } }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/vite/node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -12879,6 +12949,18 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/watchpack": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", diff --git a/package.json b/package.json index 9b74bc5..80c7bd6 100644 --- a/package.json +++ b/package.json @@ -28,11 +28,11 @@ "@azure/msal-browser": "^3.28.0", "@fluentui/react-components": "^9.61.6", "@fluentui/react-icons": "^2.0.292", - "@fluidframework/azure-client": "^2.23.0", - "@fluidframework/odsp-client": "^2.23.0", - "@fluidframework/presence": "^2.23.0", - "@fluidframework/telemetry-utils": "^2.23.0", - "@fluidframework/test-runtime-utils": "^2.23.0", + "@fluidframework/azure-client": "^2.40.0", + "@fluidframework/odsp-client": "^2.40.0", + "@fluidframework/presence": "^2.40.0", + "@fluidframework/telemetry-utils": "^2.40.0", + "@fluidframework/test-runtime-utils": "^2.40.0", "@microsoft/microsoft-graph-client": "^3.0.7", "@tailwindcss/vite": "^4.0.9", "@tanstack/react-table": "^8.20.6", @@ -40,7 +40,7 @@ "@vitejs/plugin-react": "^4.3.4", "axios": "^1.7.9", "dotenv": "^16.4.7", - "fluid-framework": "^2.23.0", + "fluid-framework": "^2.40.0", "hashids": "^2.2.10", "jsrsasign": "^11.1.0", "react": "^18.3.1", @@ -53,9 +53,9 @@ "devDependencies": { "@eslint/eslintrc": "^3.2.0", "@eslint/js": "^9.18.0", - "@fluidframework/azure-local-service": "^2.23.0", + "@fluidframework/azure-local-service": "^2.40.0", "@fluidframework/build-common": "^2.0.3", - "@fluidframework/devtools": "^2.23.0", + "@fluidframework/devtools": "^2.40.0", "@microsoft/microsoft-graph-types": "^2.40.0", "@playwright/test": "^1.49.1", "@types/debug": "^4.1.7", diff --git a/src/app_load.tsx b/src/app_load.tsx index 89160a0..1c55b1b 100644 --- a/src/app_load.tsx +++ b/src/app_load.tsx @@ -10,7 +10,7 @@ import { loadFluidData } from "./infra/fluid.js"; import { IFluidContainer } from "fluid-framework"; import { FluentProvider, webLightTheme } from "@fluentui/react-components"; -import { acquirePresenceViaDataObject } from "@fluidframework/presence/alpha"; +import { getPresenceViaDataObject } from "@fluidframework/presence/alpha"; import { createTableSelectionManager } from "./utils/selection.js"; import { createUsersManager } from "./utils/users.js"; import { UserInfo } from "./utils/Interfaces/UsersManager.js"; @@ -70,10 +70,10 @@ export async function loadApp(props: { } // Get the Presence data object from the container - const presence = acquirePresenceViaDataObject(container.initialObjects.presence); + const presence = getPresenceViaDataObject(container.initialObjects.presence); // Create a workspace for the selection manager - const workspace = presence.getStates("workspace:main", {}); + const workspace = presence.states.getWorkspace("workspace:main", {}); // Create the current UserInfo object const userInfo: UserInfo = { diff --git a/src/output.css b/src/output.css index 00f6589..f97d651 100644 --- a/src/output.css +++ b/src/output.css @@ -2,699 +2,777 @@ @layer properties; @layer theme, base, components, utilities; @layer theme { - :root, :host { - --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", - "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", - "Courier New", monospace; - --color-red-800: oklch(44.4% 0.177 26.899); - --color-blue-600: oklch(54.6% 0.245 262.881); - --color-gray-100: oklch(96.7% 0.003 264.542); - --color-gray-200: oklch(92.8% 0.006 264.531); - --color-gray-400: oklch(70.7% 0.022 261.325); - --color-gray-600: oklch(44.6% 0.03 256.802); - --color-gray-800: oklch(27.8% 0.033 256.848); - --color-black: #000; - --color-white: #fff; - --spacing: 0.25rem; - --text-base: 1rem; - --text-base--line-height: calc(1.5 / 1); - --radius-sm: 0.25rem; - --radius-md: 0.375rem; - --default-font-family: var(--font-sans); - --default-mono-font-family: var(--font-mono); - } + :root, + :host { + --font-sans: + ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", + "Segoe UI Symbol", "Noto Color Emoji"; + --font-mono: + ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", + monospace; + --color-red-800: oklch(44.4% 0.177 26.899); + --color-blue-600: oklch(54.6% 0.245 262.881); + --color-gray-100: oklch(96.7% 0.003 264.542); + --color-gray-200: oklch(92.8% 0.006 264.531); + --color-gray-400: oklch(70.7% 0.022 261.325); + --color-gray-600: oklch(44.6% 0.03 256.802); + --color-gray-800: oklch(27.8% 0.033 256.848); + --color-black: #000; + --color-white: #fff; + --spacing: 0.25rem; + --text-base: 1rem; + --text-base--line-height: calc(1.5 / 1); + --radius-sm: 0.25rem; + --radius-md: 0.375rem; + --default-font-family: var(--font-sans); + --default-mono-font-family: var(--font-mono); + } } @layer base { - *, ::after, ::before, ::backdrop, ::file-selector-button { - box-sizing: border-box; - margin: 0; - padding: 0; - border: 0 solid; - } - html, :host { - line-height: 1.5; - -webkit-text-size-adjust: 100%; - tab-size: 4; - font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"); - font-feature-settings: var(--default-font-feature-settings, normal); - font-variation-settings: var(--default-font-variation-settings, normal); - -webkit-tap-highlight-color: transparent; - } - hr { - height: 0; - color: inherit; - border-top-width: 1px; - } - abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - } - h1, h2, h3, h4, h5, h6 { - font-size: inherit; - font-weight: inherit; - } - a { - color: inherit; - -webkit-text-decoration: inherit; - text-decoration: inherit; - } - b, strong { - font-weight: bolder; - } - code, kbd, samp, pre { - font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); - font-feature-settings: var(--default-mono-font-feature-settings, normal); - font-variation-settings: var(--default-mono-font-variation-settings, normal); - font-size: 1em; - } - small { - font-size: 80%; - } - sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; - } - sub { - bottom: -0.25em; - } - sup { - top: -0.5em; - } - table { - text-indent: 0; - border-color: inherit; - border-collapse: collapse; - } - :-moz-focusring { - outline: auto; - } - progress { - vertical-align: baseline; - } - summary { - display: list-item; - } - ol, ul, menu { - list-style: none; - } - img, svg, video, canvas, audio, iframe, embed, object { - display: block; - vertical-align: middle; - } - img, video { - max-width: 100%; - height: auto; - } - button, input, select, optgroup, textarea, ::file-selector-button { - font: inherit; - font-feature-settings: inherit; - font-variation-settings: inherit; - letter-spacing: inherit; - color: inherit; - border-radius: 0; - background-color: transparent; - opacity: 1; - } - :where(select:is([multiple], [size])) optgroup { - font-weight: bolder; - } - :where(select:is([multiple], [size])) optgroup option { - padding-inline-start: 20px; - } - ::file-selector-button { - margin-inline-end: 4px; - } - ::placeholder { - opacity: 1; - } - @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) { - ::placeholder { - color: currentcolor; - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, currentcolor 50%, transparent); - } - } - } - textarea { - resize: vertical; - } - ::-webkit-search-decoration { - -webkit-appearance: none; - } - ::-webkit-date-and-time-value { - min-height: 1lh; - text-align: inherit; - } - ::-webkit-datetime-edit { - display: inline-flex; - } - ::-webkit-datetime-edit-fields-wrapper { - padding: 0; - } - ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field { - padding-block: 0; - } - :-moz-ui-invalid { - box-shadow: none; - } - button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button { - appearance: button; - } - ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { - height: auto; - } - [hidden]:where(:not([hidden="until-found"])) { - display: none !important; - } + *, + ::after, + ::before, + ::backdrop, + ::file-selector-button { + box-sizing: border-box; + margin: 0; + padding: 0; + border: 0 solid; + } + html, + :host { + line-height: 1.5; + -webkit-text-size-adjust: 100%; + tab-size: 4; + font-family: var( + --default-font-family, + ui-sans-serif, + system-ui, + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji" + ); + font-feature-settings: var(--default-font-feature-settings, normal); + font-variation-settings: var(--default-font-variation-settings, normal); + -webkit-tap-highlight-color: transparent; + } + hr { + height: 0; + color: inherit; + border-top-width: 1px; + } + abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + } + h1, + h2, + h3, + h4, + h5, + h6 { + font-size: inherit; + font-weight: inherit; + } + a { + color: inherit; + -webkit-text-decoration: inherit; + text-decoration: inherit; + } + b, + strong { + font-weight: bolder; + } + code, + kbd, + samp, + pre { + font-family: var( + --default-mono-font-family, + ui-monospace, + SFMono-Regular, + Menlo, + Monaco, + Consolas, + "Liberation Mono", + "Courier New", + monospace + ); + font-feature-settings: var(--default-mono-font-feature-settings, normal); + font-variation-settings: var(--default-mono-font-variation-settings, normal); + font-size: 1em; + } + small { + font-size: 80%; + } + sub, + sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + sub { + bottom: -0.25em; + } + sup { + top: -0.5em; + } + table { + text-indent: 0; + border-color: inherit; + border-collapse: collapse; + } + :-moz-focusring { + outline: auto; + } + progress { + vertical-align: baseline; + } + summary { + display: list-item; + } + ol, + ul, + menu { + list-style: none; + } + img, + svg, + video, + canvas, + audio, + iframe, + embed, + object { + display: block; + vertical-align: middle; + } + img, + video { + max-width: 100%; + height: auto; + } + button, + input, + select, + optgroup, + textarea, + ::file-selector-button { + font: inherit; + font-feature-settings: inherit; + font-variation-settings: inherit; + letter-spacing: inherit; + color: inherit; + border-radius: 0; + background-color: transparent; + opacity: 1; + } + :where(select:is([multiple], [size])) optgroup { + font-weight: bolder; + } + :where(select:is([multiple], [size])) optgroup option { + padding-inline-start: 20px; + } + ::file-selector-button { + margin-inline-end: 4px; + } + ::placeholder { + opacity: 1; + } + @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) { + ::placeholder { + color: currentcolor; + @supports (color: color-mix(in lab, red, red)) { + color: color-mix(in oklab, currentcolor 50%, transparent); + } + } + } + textarea { + resize: vertical; + } + ::-webkit-search-decoration { + -webkit-appearance: none; + } + ::-webkit-date-and-time-value { + min-height: 1lh; + text-align: inherit; + } + ::-webkit-datetime-edit { + display: inline-flex; + } + ::-webkit-datetime-edit-fields-wrapper { + padding: 0; + } + ::-webkit-datetime-edit, + ::-webkit-datetime-edit-year-field, + ::-webkit-datetime-edit-month-field, + ::-webkit-datetime-edit-day-field, + ::-webkit-datetime-edit-hour-field, + ::-webkit-datetime-edit-minute-field, + ::-webkit-datetime-edit-second-field, + ::-webkit-datetime-edit-millisecond-field, + ::-webkit-datetime-edit-meridiem-field { + padding-block: 0; + } + :-moz-ui-invalid { + box-shadow: none; + } + button, + input:where([type="button"], [type="reset"], [type="submit"]), + ::file-selector-button { + appearance: button; + } + ::-webkit-inner-spin-button, + ::-webkit-outer-spin-button { + height: auto; + } + [hidden]:where(:not([hidden="until-found"])) { + display: none !important; + } } @layer utilities { - .pointer-events-none { - pointer-events: none; - } - .absolute { - position: absolute; - } - .relative { - position: relative; - } - .static { - position: static; - } - .sticky { - position: sticky; - } - .inset-0 { - inset: calc(var(--spacing) * 0); - } - .top-0 { - top: calc(var(--spacing) * 0); - } - .isolate { - isolation: isolate; - } - .z-0 { - z-index: 0; - } - .z-1 { - z-index: 1; - } - .z-2 { - z-index: 2; - } - .z-40 { - z-index: 40; - } - .container { - width: 100%; - @media (width >= 40rem) { - max-width: 40rem; - } - @media (width >= 48rem) { - max-width: 48rem; - } - @media (width >= 64rem) { - max-width: 64rem; - } - @media (width >= 80rem) { - max-width: 80rem; - } - @media (width >= 96rem) { - max-width: 96rem; - } - } - .m-2 { - margin: calc(var(--spacing) * 2); - } - .m-4 { - margin: calc(var(--spacing) * 4); - } - .mx-auto { - margin-inline: auto; - } - .mt-2 { - margin-top: calc(var(--spacing) * 2); - } - .mr-2 { - margin-right: calc(var(--spacing) * 2); - } - .mr-8 { - margin-right: calc(var(--spacing) * 8); - } - .ml-2 { - margin-left: calc(var(--spacing) * 2); - } - .flex { - display: flex; - } - .grid { - display: grid; - } - .hidden { - display: none; - } - .inline { - display: inline; - } - .inline-flex { - display: inline-flex; - } - .table { - display: table; - } - .h-4 { - height: calc(var(--spacing) * 4); - } - .h-6 { - height: calc(var(--spacing) * 6); - } - .h-12 { - height: calc(var(--spacing) * 12); - } - .h-\[48px\] { - height: 48px; - } - .h-\[calc\(100vh-96px\)\] { - height: calc(100vh - 96px); - } - .h-full { - height: 100%; - } - .h-screen { - height: 100vh; - } - .min-h-\[36px\] { - min-height: 36px; - } - .w-4 { - width: calc(var(--spacing) * 4); - } - .w-12 { - width: calc(var(--spacing) * 12); - } - .w-24 { - width: calc(var(--spacing) * 24); - } - .w-full { - width: 100%; - } - .flex-shrink { - flex-shrink: 1; - } - .shrink-0 { - flex-shrink: 0; - } - .flex-grow { - flex-grow: 1; - } - .grow { - flex-grow: 1; - } - .grow-0 { - flex-grow: 0; - } - .table-auto { - table-layout: auto; - } - .border-collapse { - border-collapse: collapse; - } - .transform { - transform: var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z) var(--tw-skew-x) var(--tw-skew-y); - } - .resize { - resize: both; - } - .flex-col { - flex-direction: column; - } - .flex-row { - flex-direction: row; - } - .items-center { - align-items: center; - } - .justify-between { - justify-content: space-between; - } - .justify-center { - justify-content: center; - } - .gap-4 { - gap: calc(var(--spacing) * 4); - } - .gap-x-1 { - column-gap: calc(var(--spacing) * 1); - } - .truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - .overflow-auto { - overflow: auto; - } - .overflow-hidden { - overflow: hidden; - } - .overscroll-none { - overscroll-behavior: none; - } - .rounded-full { - border-radius: calc(infinity * 1px); - } - .rounded-md { - border-radius: var(--radius-md); - } - .rounded-sm { - border-radius: var(--radius-sm); - } - .border { - border-style: var(--tw-border-style); - border-width: 1px; - } - .border-2 { - border-style: var(--tw-border-style); - border-width: 2px; - } - .border-r-1 { - border-right-style: var(--tw-border-style); - border-right-width: 1px; - } - .border-r-2 { - border-right-style: var(--tw-border-style); - border-right-width: 2px; - } - .border-b-2 { - border-bottom-style: var(--tw-border-style); - border-bottom-width: 2px; - } - .border-black { - border-color: var(--color-black); - } - .border-gray-100 { - border-color: var(--color-gray-100); - } - .border-gray-200 { - border-color: var(--color-gray-200); - } - .bg-black { - background-color: var(--color-black); - } - .bg-gray-200 { - background-color: var(--color-gray-200); - } - .bg-gray-600 { - background-color: var(--color-gray-600); - } - .bg-transparent { - background-color: transparent; - } - .p-1 { - padding: calc(var(--spacing) * 1); - } - .p-2 { - padding: calc(var(--spacing) * 2); - } - .text-base { - font-size: var(--text-base); - line-height: var(--tw-leading, var(--text-base--line-height)); - } - .text-nowrap { - text-wrap: nowrap; - } - .text-wrap { - text-wrap: wrap; - } - .text-gray-400 { - color: var(--color-gray-400); - } - .text-white { - color: var(--color-white); - } - .underline { - text-decoration-line: underline; - } - .opacity-50 { - opacity: 50%; - } - .shadow-sm { - --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - .outline { - outline-style: var(--tw-outline-style); - outline-width: 1px; - } - .outline-2 { - outline-style: var(--tw-outline-style); - outline-width: 2px; - } - .-outline-offset-2 { - outline-offset: calc(2px * -1); - } - .outline-blue-600 { - outline-color: var(--color-blue-600); - } - .outline-red-800 { - outline-color: var(--color-red-800); - } - .filter { - filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); - } - .outline-none { - --tw-outline-style: none; - outline-style: none; - } - .odd\:bg-gray-100 { - &:nth-child(odd) { - background-color: var(--color-gray-100); - } - } - .even\:bg-white { - &:nth-child(even) { - background-color: var(--color-white); - } - } - .hover\:bg-black { - &:hover { - @media (hover: hover) { - background-color: var(--color-black); - } - } - } - .hover\:bg-gray-400 { - &:hover { - @media (hover: hover) { - background-color: var(--color-gray-400); - } - } - } - .hover\:text-gray-800 { - &:hover { - @media (hover: hover) { - color: var(--color-gray-800); - } - } - } + .pointer-events-none { + pointer-events: none; + } + .absolute { + position: absolute; + } + .relative { + position: relative; + } + .static { + position: static; + } + .sticky { + position: sticky; + } + .inset-0 { + inset: calc(var(--spacing) * 0); + } + .top-0 { + top: calc(var(--spacing) * 0); + } + .isolate { + isolation: isolate; + } + .z-0 { + z-index: 0; + } + .z-1 { + z-index: 1; + } + .z-2 { + z-index: 2; + } + .z-40 { + z-index: 40; + } + .container { + width: 100%; + @media (width >= 40rem) { + max-width: 40rem; + } + @media (width >= 48rem) { + max-width: 48rem; + } + @media (width >= 64rem) { + max-width: 64rem; + } + @media (width >= 80rem) { + max-width: 80rem; + } + @media (width >= 96rem) { + max-width: 96rem; + } + } + .m-2 { + margin: calc(var(--spacing) * 2); + } + .m-4 { + margin: calc(var(--spacing) * 4); + } + .mx-auto { + margin-inline: auto; + } + .mt-2 { + margin-top: calc(var(--spacing) * 2); + } + .mr-2 { + margin-right: calc(var(--spacing) * 2); + } + .mr-8 { + margin-right: calc(var(--spacing) * 8); + } + .ml-2 { + margin-left: calc(var(--spacing) * 2); + } + .flex { + display: flex; + } + .grid { + display: grid; + } + .hidden { + display: none; + } + .inline { + display: inline; + } + .inline-flex { + display: inline-flex; + } + .table { + display: table; + } + .h-4 { + height: calc(var(--spacing) * 4); + } + .h-6 { + height: calc(var(--spacing) * 6); + } + .h-12 { + height: calc(var(--spacing) * 12); + } + .h-\[48px\] { + height: 48px; + } + .h-\[calc\(100vh-96px\)\] { + height: calc(100vh - 96px); + } + .h-full { + height: 100%; + } + .h-screen { + height: 100vh; + } + .min-h-\[36px\] { + min-height: 36px; + } + .w-4 { + width: calc(var(--spacing) * 4); + } + .w-12 { + width: calc(var(--spacing) * 12); + } + .w-24 { + width: calc(var(--spacing) * 24); + } + .w-full { + width: 100%; + } + .flex-shrink { + flex-shrink: 1; + } + .shrink-0 { + flex-shrink: 0; + } + .flex-grow { + flex-grow: 1; + } + .grow { + flex-grow: 1; + } + .grow-0 { + flex-grow: 0; + } + .table-auto { + table-layout: auto; + } + .border-collapse { + border-collapse: collapse; + } + .transform { + transform: var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z) var(--tw-skew-x) + var(--tw-skew-y); + } + .resize { + resize: both; + } + .flex-col { + flex-direction: column; + } + .flex-row { + flex-direction: row; + } + .items-center { + align-items: center; + } + .justify-between { + justify-content: space-between; + } + .justify-center { + justify-content: center; + } + .gap-4 { + gap: calc(var(--spacing) * 4); + } + .gap-x-1 { + column-gap: calc(var(--spacing) * 1); + } + .truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .overflow-auto { + overflow: auto; + } + .overflow-hidden { + overflow: hidden; + } + .overscroll-none { + overscroll-behavior: none; + } + .rounded-full { + border-radius: calc(infinity * 1px); + } + .rounded-md { + border-radius: var(--radius-md); + } + .rounded-sm { + border-radius: var(--radius-sm); + } + .border { + border-style: var(--tw-border-style); + border-width: 1px; + } + .border-2 { + border-style: var(--tw-border-style); + border-width: 2px; + } + .border-r-1 { + border-right-style: var(--tw-border-style); + border-right-width: 1px; + } + .border-r-2 { + border-right-style: var(--tw-border-style); + border-right-width: 2px; + } + .border-b-2 { + border-bottom-style: var(--tw-border-style); + border-bottom-width: 2px; + } + .border-black { + border-color: var(--color-black); + } + .border-gray-100 { + border-color: var(--color-gray-100); + } + .border-gray-200 { + border-color: var(--color-gray-200); + } + .bg-black { + background-color: var(--color-black); + } + .bg-gray-200 { + background-color: var(--color-gray-200); + } + .bg-gray-600 { + background-color: var(--color-gray-600); + } + .bg-transparent { + background-color: transparent; + } + .p-1 { + padding: calc(var(--spacing) * 1); + } + .p-2 { + padding: calc(var(--spacing) * 2); + } + .text-base { + font-size: var(--text-base); + line-height: var(--tw-leading, var(--text-base--line-height)); + } + .text-nowrap { + text-wrap: nowrap; + } + .text-wrap { + text-wrap: wrap; + } + .text-gray-400 { + color: var(--color-gray-400); + } + .text-white { + color: var(--color-white); + } + .underline { + text-decoration-line: underline; + } + .opacity-50 { + opacity: 50%; + } + .shadow-sm { + --tw-shadow: + 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), + 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); + box-shadow: + var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), + var(--tw-ring-shadow), var(--tw-shadow); + } + .outline { + outline-style: var(--tw-outline-style); + outline-width: 1px; + } + .outline-2 { + outline-style: var(--tw-outline-style); + outline-width: 2px; + } + .-outline-offset-2 { + outline-offset: calc(2px * -1); + } + .outline-blue-600 { + outline-color: var(--color-blue-600); + } + .outline-red-800 { + outline-color: var(--color-red-800); + } + .filter { + filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) + var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) + var(--tw-drop-shadow,); + } + .outline-none { + --tw-outline-style: none; + outline-style: none; + } + .odd\:bg-gray-100 { + &:nth-child(odd) { + background-color: var(--color-gray-100); + } + } + .even\:bg-white { + &:nth-child(even) { + background-color: var(--color-white); + } + } + .hover\:bg-black { + &:hover { + @media (hover: hover) { + background-color: var(--color-black); + } + } + } + .hover\:bg-gray-400 { + &:hover { + @media (hover: hover) { + background-color: var(--color-gray-400); + } + } + } + .hover\:text-gray-800 { + &:hover { + @media (hover: hover) { + color: var(--color-gray-800); + } + } + } } @layer base { - *, ::after, ::before, ::backdrop, ::file-selector-button { - border-color: var(--color-gray-200, currentColor); - } + *, + ::after, + ::before, + ::backdrop, + ::file-selector-button { + border-color: var(--color-gray-200, currentColor); + } } @property --tw-rotate-x { - syntax: "*"; - inherits: false; - initial-value: rotateX(0); + syntax: "*"; + inherits: false; + initial-value: rotateX(0); } @property --tw-rotate-y { - syntax: "*"; - inherits: false; - initial-value: rotateY(0); + syntax: "*"; + inherits: false; + initial-value: rotateY(0); } @property --tw-rotate-z { - syntax: "*"; - inherits: false; - initial-value: rotateZ(0); + syntax: "*"; + inherits: false; + initial-value: rotateZ(0); } @property --tw-skew-x { - syntax: "*"; - inherits: false; - initial-value: skewX(0); + syntax: "*"; + inherits: false; + initial-value: skewX(0); } @property --tw-skew-y { - syntax: "*"; - inherits: false; - initial-value: skewY(0); + syntax: "*"; + inherits: false; + initial-value: skewY(0); } @property --tw-border-style { - syntax: "*"; - inherits: false; - initial-value: solid; + syntax: "*"; + inherits: false; + initial-value: solid; } @property --tw-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; } @property --tw-shadow-color { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-shadow-alpha { - syntax: ""; - inherits: false; - initial-value: 100%; + syntax: ""; + inherits: false; + initial-value: 100%; } @property --tw-inset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; } @property --tw-inset-shadow-color { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-inset-shadow-alpha { - syntax: ""; - inherits: false; - initial-value: 100%; + syntax: ""; + inherits: false; + initial-value: 100%; } @property --tw-ring-color { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; } @property --tw-inset-ring-color { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-inset-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; } @property --tw-ring-inset { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-ring-offset-width { - syntax: ""; - inherits: false; - initial-value: 0px; + syntax: ""; + inherits: false; + initial-value: 0px; } @property --tw-ring-offset-color { - syntax: "*"; - inherits: false; - initial-value: #fff; + syntax: "*"; + inherits: false; + initial-value: #fff; } @property --tw-ring-offset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; } @property --tw-outline-style { - syntax: "*"; - inherits: false; - initial-value: solid; + syntax: "*"; + inherits: false; + initial-value: solid; } @property --tw-blur { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-brightness { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-contrast { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-grayscale { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-hue-rotate { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-invert { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-opacity { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-saturate { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-sepia { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-drop-shadow { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-drop-shadow-color { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @property --tw-drop-shadow-alpha { - syntax: ""; - inherits: false; - initial-value: 100%; + syntax: ""; + inherits: false; + initial-value: 100%; } @property --tw-drop-shadow-size { - syntax: "*"; - inherits: false; + syntax: "*"; + inherits: false; } @layer properties { - @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { - *, ::before, ::after, ::backdrop { - --tw-rotate-x: rotateX(0); - --tw-rotate-y: rotateY(0); - --tw-rotate-z: rotateZ(0); - --tw-skew-x: skewX(0); - --tw-skew-y: skewY(0); - --tw-border-style: solid; - --tw-shadow: 0 0 #0000; - --tw-shadow-color: initial; - --tw-shadow-alpha: 100%; - --tw-inset-shadow: 0 0 #0000; - --tw-inset-shadow-color: initial; - --tw-inset-shadow-alpha: 100%; - --tw-ring-color: initial; - --tw-ring-shadow: 0 0 #0000; - --tw-inset-ring-color: initial; - --tw-inset-ring-shadow: 0 0 #0000; - --tw-ring-inset: initial; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-offset-shadow: 0 0 #0000; - --tw-outline-style: solid; - --tw-blur: initial; - --tw-brightness: initial; - --tw-contrast: initial; - --tw-grayscale: initial; - --tw-hue-rotate: initial; - --tw-invert: initial; - --tw-opacity: initial; - --tw-saturate: initial; - --tw-sepia: initial; - --tw-drop-shadow: initial; - --tw-drop-shadow-color: initial; - --tw-drop-shadow-alpha: 100%; - --tw-drop-shadow-size: initial; - } - } + @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or + ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) { + *, + ::before, + ::after, + ::backdrop { + --tw-rotate-x: rotateX(0); + --tw-rotate-y: rotateY(0); + --tw-rotate-z: rotateZ(0); + --tw-skew-x: skewX(0); + --tw-skew-y: skewY(0); + --tw-border-style: solid; + --tw-shadow: 0 0 #0000; + --tw-shadow-color: initial; + --tw-shadow-alpha: 100%; + --tw-inset-shadow: 0 0 #0000; + --tw-inset-shadow-color: initial; + --tw-inset-shadow-alpha: 100%; + --tw-ring-color: initial; + --tw-ring-shadow: 0 0 #0000; + --tw-inset-ring-color: initial; + --tw-inset-ring-shadow: 0 0 #0000; + --tw-ring-inset: initial; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-offset-shadow: 0 0 #0000; + --tw-outline-style: solid; + --tw-blur: initial; + --tw-brightness: initial; + --tw-contrast: initial; + --tw-grayscale: initial; + --tw-hue-rotate: initial; + --tw-invert: initial; + --tw-opacity: initial; + --tw-saturate: initial; + --tw-sepia: initial; + --tw-drop-shadow: initial; + --tw-drop-shadow-color: initial; + --tw-drop-shadow-alpha: 100%; + --tw-drop-shadow-size: initial; + } + } } diff --git a/src/react/ux.tsx b/src/react/ux.tsx index 518168f..cb47af7 100644 --- a/src/react/ux.tsx +++ b/src/react/ux.tsx @@ -236,13 +236,13 @@ export const Facepile = (props: Partial) => { {inlineItems.map((user) => ( ))} @@ -251,7 +251,7 @@ export const Facepile = (props: Partial) => { {overflowItems.map((user) => ( ))} diff --git a/src/utils/Interfaces/UsersManager.ts b/src/utils/Interfaces/UsersManager.ts index 42ce7dc..36fb1e1 100644 --- a/src/utils/Interfaces/UsersManager.ts +++ b/src/utils/Interfaces/UsersManager.ts @@ -1,4 +1,4 @@ -import { ISessionClient } from "@fluidframework/presence/alpha"; +import { Attendee } from "@fluidframework/presence/alpha"; import { PresenceManager } from "./PresenceManager.js"; export interface UsersManager @@ -36,7 +36,7 @@ export interface UsersManager export type User = { value: TUserInfo; // The user information - client: ISessionClient; // The session client associated with the user + attendee: Attendee; // The session attendee associated with the user }; export type UserInfo = { diff --git a/src/utils/selection.ts b/src/utils/selection.ts index a8ac99a..02ce3a1 100644 --- a/src/utils/selection.ts +++ b/src/utils/selection.ts @@ -5,12 +5,12 @@ */ import { - type IPresence as Presence, - Latest as latestStateFactory, - LatestValueManagerEvents as LatestStateEvents, - PresenceStates as Workspace, - LatestValueManager as LatestState, - ClientSessionId, + type Presence, + StateFactory, + LatestRawEvents as LatestStateEvents, + StatesWorkspace as Workspace, + LatestRaw as LatestState, + AttendeeId, ClientConnectionId, } from "@fluidframework/presence/alpha"; import { Listenable } from "fluid-framework"; @@ -35,8 +35,8 @@ export function createTableSelectionManager(props: { workspace: Workspace<{}>, private presence: Presence, ) { - workspace.add(name, latestStateFactory(this.initialState)); - this.state = workspace.props[name]; + workspace.add(name, StateFactory.latest({ local: this.initialState })); + this.state = workspace.states[name]; } public get events(): Listenable>> { @@ -44,14 +44,14 @@ export function createTableSelectionManager(props: { } public clients = { - getAttendee: (clientId: ClientConnectionId | ClientSessionId) => { - return this.presence.getAttendee(clientId); + getAttendee: (clientId: ClientConnectionId | AttendeeId) => { + return this.presence.attendees.getAttendee(clientId); }, getAttendees: () => { - return this.presence.getAttendees(); + return this.presence.attendees.getAttendees(); }, getMyself: () => { - return this.presence.getMyself(); + return this.presence.attendees.getMyself(); }, events: this.presence.events, }; @@ -64,10 +64,10 @@ export function createTableSelectionManager(props: { /** Test if the given id is selected by any remote client */ public testRemoteSelection(sel: TableSelection): string[] { const remoteSelectedClients: string[] = []; - for (const cv of this.state.clientValues()) { - if (cv.client.getConnectionStatus() === "Connected") { + for (const cv of this.state.getRemotes()) { + if (cv.attendee.getConnectionStatus() === "Connected") { if (this._testForInclusion(sel, cv.value.selected)) { - remoteSelectedClients.push(cv.client.sessionId); + remoteSelectedClients.push(cv.attendee.attendeeId); } } } @@ -128,13 +128,13 @@ export function createTableSelectionManager(props: { /** Get the current remote selection map where the key is the selected item id and the value is an array of client ids */ public getRemoteSelected(): Map { const remoteSelected = new Map(); - for (const cv of this.state.clientValues()) { - if (cv.client.getConnectionStatus() === "Connected") { + for (const cv of this.state.getRemotes()) { + if (cv.attendee.getConnectionStatus() === "Connected") { for (const sel of cv.value.selected) { if (!remoteSelected.has(sel)) { remoteSelected.set(sel, []); } - remoteSelected.get(sel)?.push(cv.client.sessionId); + remoteSelected.get(sel)?.push(cv.attendee.attendeeId); } } } diff --git a/src/utils/users.ts b/src/utils/users.ts index adc96fc..07a6481 100644 --- a/src/utils/users.ts +++ b/src/utils/users.ts @@ -3,14 +3,14 @@ // with the given presence and workspace. import { - type IPresence as Presence, - Latest as latestStateFactory, - LatestValueManagerEvents as LatestStateEvents, - PresenceStates as Workspace, - LatestValueManager as LatestState, - ClientSessionId, + type Presence, + StateFactory, + LatestRawEvents as LatestStateEvents, + StatesWorkspace as Workspace, + LatestRaw as LatestState, + type AttendeeId, ClientConnectionId, - SessionClientStatus, + AttendeeStatus, } from "@fluidframework/presence/alpha"; import { UsersManager, User, UserInfo } from "./Interfaces/UsersManager.js"; import { Listenable } from "fluid-framework"; @@ -32,8 +32,8 @@ export function createUsersManager(props: { workspace: Workspace<{}>, private presence: Presence, ) { - workspace.add(name, latestStateFactory(this.initialState)); - this.state = workspace.props[name]; + workspace.add(name, StateFactory.latest({ local: this.initialState })); + this.state = workspace.states[name]; } public get events(): Listenable> { @@ -41,31 +41,31 @@ export function createUsersManager(props: { } public clients = { - getAttendee: (clientId: ClientConnectionId | ClientSessionId) => { - return this.presence.getAttendee(clientId); + getAttendee: (clientId: ClientConnectionId | AttendeeId) => { + return this.presence.attendees.getAttendee(clientId); }, getAttendees: () => { - return this.presence.getAttendees(); + return this.presence.attendees.getAttendees(); }, getMyself: () => { - return this.presence.getMyself(); + return this.presence.attendees.getMyself(); }, events: this.presence.events, }; getUsers(): readonly User[] { - return [...this.state.clientValues()]; + return [...this.state.getRemotes()]; } getConnectedUsers(): readonly User[] { return this.getUsers().filter( - (user) => user.client.getConnectionStatus() === SessionClientStatus.Connected, + (user) => user.attendee.getConnectionStatus() === AttendeeStatus.Connected, ); } getDisconnectedUsers(): readonly User[] { return this.getUsers().filter( - (user) => user.client.getConnectionStatus() === SessionClientStatus.Disconnected, + (user) => user.attendee.getConnectionStatus() === AttendeeStatus.Disconnected, ); } @@ -74,7 +74,7 @@ export function createUsersManager(props: { } getMyself(): User { - return { value: this.state.local, client: this.presence.getMyself() }; + return { value: this.state.local, attendee: this.presence.attendees.getMyself() }; } }