Remove Explorer.databaseAccount (#717)

Co-authored-by: Steve Faulkner <southpolesteve@gmail.com>
This commit is contained in:
Hardikkumar Nai 2021-05-06 03:24:50 +05:30 committed by GitHub
parent fdd12b41c4
commit 8c05ac740c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
67 changed files with 1077 additions and 1046 deletions

View File

@ -69,6 +69,7 @@ module.exports = {
moduleNameMapper: {
"^.*[.](svg|png|gif|less|css)$": "<rootDir>/mockModule",
"@nteract/stateful-components/(.*)$": "<rootDir>/mockModule",
"monaco-editor/(.*)$": "<rootDir>/__mocks__/monaco-editor",
"office-ui-fabric-react/lib/(.*)$": "office-ui-fabric-react/lib-commonjs/$1", // https://github.com/OfficeDev/office-ui-fabric-react/wiki/Fabric-6-Release-Notes
"^dnd-core$": "dnd-core/dist/cjs",
"^react-dnd$": "react-dnd/dist/cjs",

768
package-lock.json generated
View File

@ -2110,76 +2110,37 @@
}
},
"@fluentui/date-time-utilities": {
"version": "7.9.0",
"resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-7.9.0.tgz",
"integrity": "sha512-D8p5WWeonqRO1EgIvo7WSlX1rcm87r2VQd62zTJPQImx8rpwc77CRI+iAvfxyVHRZMdt4Qk6Jq99dUaudPWaZw==",
"version": "7.9.1",
"resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-7.9.1.tgz",
"integrity": "sha512-o8iU1VIY+QsqVRWARKiky29fh4KR1xaKSgMClXIi65qkt8EDDhjmlzL0KVDEoDA2GWukwb/1PpaVCWDg4v3cUQ==",
"requires": {
"@uifabric/set-version": "^7.0.23",
"@uifabric/set-version": "^7.0.24",
"tslib": "^1.10.0"
}
},
"@fluentui/dom-utilities": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-1.1.1.tgz",
"integrity": "sha512-w40gi8fzCpwa7U8cONiuu8rszPStkVOL/weDf5pCbYEb1gdaV7MDPSNkgM6IV0Kz+k017noDgK9Fv4ru1Dwz1g==",
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-1.1.2.tgz",
"integrity": "sha512-XqPS7l3YoMwxdNlaYF6S2Mp0K3FmVIOIy2K3YkMc+eRxu9wFK6emr2Q/3rBhtG5u/On37NExRT7/5CTLnoi9gw==",
"requires": {
"@uifabric/set-version": "^7.0.23",
"@uifabric/set-version": "^7.0.24",
"tslib": "^1.10.0"
}
},
"@fluentui/keyboard-key": {
"version": "0.2.12",
"resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.2.12.tgz",
"integrity": "sha512-t3yIbbPKJubb22vQ/FIWwS9vFAzaPYzFxKWPHVWLtxs/P+5yL+LD3B16DRtYreWAdl9CZvEbos58ChLZ0KHwSQ==",
"version": "0.2.17",
"resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.2.17.tgz",
"integrity": "sha512-iT1bU56rKrKEOfODoW6fScY11qj3iaYrZ+z11T6fo5+TDm84UGkkXjLXJTE57ZJzg0/gbccHQWYv+chY7bJN8Q==",
"requires": {
"tslib": "^1.10.0"
}
},
"@fluentui/react-focus": {
"version": "7.17.1",
"resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-7.17.1.tgz",
"integrity": "sha512-Nulq2pE4pX6Pf+tGZl8uLp8VfqUzx3elC5v7QvYSBdjnZK8ykitdsa+Sd3PKYWW2EMlzVRSptlzbuJ6JyEDQKQ==",
"requires": {
"@fluentui/keyboard-key": "^0.2.12",
"@uifabric/merge-styles": "^7.19.1",
"@uifabric/set-version": "^7.0.23",
"@uifabric/styling": "^7.16.19",
"@uifabric/utilities": "^7.33.2",
"tslib": "^1.10.0"
},
"dependencies": {
"@uifabric/styling": {
"version": "7.16.19",
"resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.16.19.tgz",
"integrity": "sha512-T5fjUCx0LbzUC8Myw15YCaBjdGbSrihWSiPHtLVW77k59yWAW947XnH73QngE8xU7kyKPH3AhQrUEBMB2NjHag==",
"requires": {
"@fluentui/theme": "^1.7.1",
"@microsoft/load-themed-styles": "^1.10.26",
"@uifabric/merge-styles": "^7.19.1",
"@uifabric/set-version": "^7.0.23",
"@uifabric/utilities": "^7.33.2",
"tslib": "^1.10.0"
}
}
}
},
"@fluentui/react-window-provider": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-1.0.1.tgz",
"integrity": "sha512-5hvruDyF0uE8+6YN6Y+d2sEzexBadxUNxUjDcDreTPsmtHPwF5FPBYLhoD7T84L5U4YNvKxKh25tYJm6E0GE2w==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-1.0.2.tgz",
"integrity": "sha512-fGSgL3Vp/+6t1Ysfz21FWZmqsU+iFVxOigvHnm5uKVyyRPwtaabv/F6kQ2y5isLMI2YmJaUd2i0cDJKu8ggrvw==",
"requires": {
"@uifabric/set-version": "^7.0.23",
"tslib": "^1.10.0"
}
},
"@fluentui/theme": {
"version": "1.7.1",
"resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-1.7.1.tgz",
"integrity": "sha512-cwx8gJ0O9d+Z8g6Lq7BgDgH8XPfSloUSy0GN3fWHJGrDCBPcnmz6/GKbbvxw9PZ2t1iNcAzJEJNT6NyuOOobPA==",
"requires": {
"@uifabric/merge-styles": "^7.19.1",
"@uifabric/set-version": "^7.0.23",
"@uifabric/utilities": "^7.33.2",
"@uifabric/set-version": "^7.0.24",
"tslib": "^1.10.0"
}
},
@ -5850,131 +5811,37 @@
}
},
"@uifabric/azure-themes": {
"version": "7.6.7",
"resolved": "https://registry.npmjs.org/@uifabric/azure-themes/-/azure-themes-7.6.7.tgz",
"integrity": "sha512-KlfcjxoVn66wamYjWxZY1b7ezMIcX08ZbDZNKMvh/C9zchTqQ8P/cFAcfiBrxhKL3HJtb0CBFkhd3lYcQD76jg==",
"version": "7.7.32",
"resolved": "https://registry.npmjs.org/@uifabric/azure-themes/-/azure-themes-7.7.32.tgz",
"integrity": "sha512-S7mym3EQ/WjRu0+VHLv6HP06BvaszaEl1jXvI8IiP19aWn+AYWEtdB0BjTA8/SUc1PXrRWG/wZgucOgLvKncDA==",
"requires": {
"@fluentui/theme": "^1.7.1",
"@uifabric/merge-styles": "^7.19.1",
"@uifabric/set-version": "^7.0.23",
"office-ui-fabric-react": "^7.157.0",
"@fluentui/theme": "^1.7.4",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"office-ui-fabric-react": "^7.168.2",
"tslib": "^1.10.0"
},
"dependencies": {
"@uifabric/styling": {
"version": "7.16.19",
"resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.16.19.tgz",
"integrity": "sha512-T5fjUCx0LbzUC8Myw15YCaBjdGbSrihWSiPHtLVW77k59yWAW947XnH73QngE8xU7kyKPH3AhQrUEBMB2NjHag==",
"@fluentui/react-focus": {
"version": "7.17.6",
"resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-7.17.6.tgz",
"integrity": "sha512-JkLWNDe567lhvbnIhbYv9nUWYDIVN06utc3krs0UZBI+A0YZtQmftBtY0ghXo4PSjgozZocdu9sYkkgZOgyRLg==",
"requires": {
"@fluentui/theme": "^1.7.1",
"@microsoft/load-themed-styles": "^1.10.26",
"@uifabric/merge-styles": "^7.19.1",
"@uifabric/set-version": "^7.0.23",
"@uifabric/utilities": "^7.33.2",
"@fluentui/keyboard-key": "^0.2.12",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/styling": "^7.19.0",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"office-ui-fabric-react": {
"version": "7.157.0",
"resolved": "https://registry.npmjs.org/office-ui-fabric-react/-/office-ui-fabric-react-7.157.0.tgz",
"integrity": "sha512-nS0RfhQKho2S2hiUxHcgM47AZUK1EzbjkdWkofNHQk8q0PwJkQPTUjTbSuxhQNLzXHiaQJz930ZYUvRCZvlL1w==",
"requires": {
"@fluentui/date-time-utilities": "^7.9.0",
"@fluentui/react-focus": "^7.17.1",
"@fluentui/react-window-provider": "^1.0.1",
"@microsoft/load-themed-styles": "^1.10.26",
"@uifabric/foundation": "^7.9.21",
"@uifabric/icons": "^7.5.18",
"@uifabric/merge-styles": "^7.19.1",
"@uifabric/react-hooks": "^7.13.9",
"@uifabric/set-version": "^7.0.23",
"@uifabric/styling": "^7.16.19",
"@uifabric/utilities": "^7.33.2",
"prop-types": "^15.7.2",
"tslib": "^1.10.0"
}
}
}
},
"@uifabric/file-type-icons": {
"version": "7.6.24",
"resolved": "https://registry.npmjs.org/@uifabric/file-type-icons/-/file-type-icons-7.6.24.tgz",
"integrity": "sha512-dmBpfWrWovw/TtwUtamfY4UqwsSqzTGm0Npvo/9b0mkIANrO6MGuz8M4MqvAWbzi/vq0dlGP5FF+ShkhtmrMnw==",
"requires": {
"@uifabric/set-version": "^7.0.23",
"@uifabric/styling": "^7.16.19",
"tslib": "^1.10.0"
},
"dependencies": {
"@uifabric/styling": {
"version": "7.16.19",
"resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.16.19.tgz",
"integrity": "sha512-T5fjUCx0LbzUC8Myw15YCaBjdGbSrihWSiPHtLVW77k59yWAW947XnH73QngE8xU7kyKPH3AhQrUEBMB2NjHag==",
"requires": {
"@fluentui/theme": "^1.7.1",
"@microsoft/load-themed-styles": "^1.10.26",
"@uifabric/merge-styles": "^7.19.1",
"@uifabric/set-version": "^7.0.23",
"@uifabric/utilities": "^7.33.2",
"tslib": "^1.10.0"
}
}
}
},
"@uifabric/foundation": {
"version": "7.9.21",
"resolved": "https://registry.npmjs.org/@uifabric/foundation/-/foundation-7.9.21.tgz",
"integrity": "sha512-z58pcC0hJr6S0iYLxNFoqfrfLIMxbSxFHRirk5LDT2HXbiVIYbJwbK4O0InS+sz3chdx8GGSdIUz7muXeT/D+A==",
"requires": {
"@uifabric/merge-styles": "^7.19.1",
"@uifabric/set-version": "^7.0.23",
"@uifabric/styling": "^7.16.19",
"@uifabric/utilities": "^7.33.2",
"tslib": "^1.10.0"
},
"dependencies": {
"@uifabric/styling": {
"version": "7.16.19",
"resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.16.19.tgz",
"integrity": "sha512-T5fjUCx0LbzUC8Myw15YCaBjdGbSrihWSiPHtLVW77k59yWAW947XnH73QngE8xU7kyKPH3AhQrUEBMB2NjHag==",
"requires": {
"@fluentui/theme": "^1.7.1",
"@microsoft/load-themed-styles": "^1.10.26",
"@uifabric/merge-styles": "^7.19.1",
"@uifabric/set-version": "^7.0.23",
"@uifabric/utilities": "^7.33.2",
"tslib": "^1.10.0"
}
}
}
},
"@uifabric/icons": {
"version": "7.5.18",
"resolved": "https://registry.npmjs.org/@uifabric/icons/-/icons-7.5.18.tgz",
"integrity": "sha512-gLPEccWlTER9NiXcOHZ+dSJ3tgLAQ4mTf3hTlKV7e7dKBTl95jzcemG5S2NJQ7xWPTH3+5K1Bpd+nqZo9EJw3w==",
"requires": {
"@uifabric/set-version": "^7.0.23",
"@uifabric/styling": "^7.16.19",
"tslib": "^1.10.0"
},
"dependencies": {
"@fluentui/dom-utilities": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-1.1.2.tgz",
"integrity": "sha512-XqPS7l3YoMwxdNlaYF6S2Mp0K3FmVIOIy2K3YkMc+eRxu9wFK6emr2Q/3rBhtG5u/On37NExRT7/5CTLnoi9gw==",
"@fluentui/react-window-provider": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-1.0.2.tgz",
"integrity": "sha512-fGSgL3Vp/+6t1Ysfz21FWZmqsU+iFVxOigvHnm5uKVyyRPwtaabv/F6kQ2y5isLMI2YmJaUd2i0cDJKu8ggrvw==",
"requires": {
"@uifabric/set-version": "^7.0.24",
"tslib": "^1.10.0"
},
"dependencies": {
"@uifabric/set-version": {
"version": "7.0.24",
"resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.24.tgz",
"integrity": "sha512-t0Pt21dRqdC707/ConVJC0WvcQ/KF7tKLU8AZY7YdjgJpMHi1c0C427DB4jfUY19I92f60LOQyhJ4efH+KpFEg==",
"requires": {
"tslib": "^1.10.0"
}
}
}
},
"@fluentui/theme": {
@ -5986,22 +5853,59 @@
"@uifabric/set-version": "^7.0.24",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"dependencies": {
"@uifabric/merge-styles": {
"version": "7.19.2",
"resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-7.19.2.tgz",
"integrity": "sha512-kTlhwglDqwVgIaJq+0yXgzi65plGhmFcPrfme/rXUGMJZoU+qlGT5jXj5d3kuI59p6VB8jWEg9DAxHozhYeu0g==",
"@types/react": {
"version": "16.14.5",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.5.tgz",
"integrity": "sha512-YRRv9DNZhaVTVRh9Wmmit7Y0UFhEVqXqCSw3uazRWMxa2x85hWQZ5BN24i7GXZbaclaLXEcodEeIHsjBA8eAMw==",
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
"csstype": "^3.0.2"
}
},
"@types/react-dom": {
"version": "16.9.12",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.12.tgz",
"integrity": "sha512-i7NPZZpPte3jtVOoW+eLB7G/jsX5OM6GqQnH+lC0nq0rqwlK0x8WcMEvYDgFWqWhWMlTltTimzdMax6wYfZssA==",
"requires": {
"@types/react": "^16"
}
},
"@uifabric/foundation": {
"version": "7.9.26",
"resolved": "https://registry.npmjs.org/@uifabric/foundation/-/foundation-7.9.26.tgz",
"integrity": "sha512-1FLTb+jlH/Tuel2L9wT/zLl5ZW6W4Lbjrs5VUVjv81vWxzznvPnTf8+Ew0qkzaH7xDuMNMl7okswhV0IfJyheg==",
"requires": {
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/styling": "^7.19.0",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"@uifabric/set-version": {
"version": "7.0.24",
"resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.24.tgz",
"integrity": "sha512-t0Pt21dRqdC707/ConVJC0WvcQ/KF7tKLU8AZY7YdjgJpMHi1c0C427DB4jfUY19I92f60LOQyhJ4efH+KpFEg==",
"@uifabric/react-hooks": {
"version": "7.14.0",
"resolved": "https://registry.npmjs.org/@uifabric/react-hooks/-/react-hooks-7.14.0.tgz",
"integrity": "sha512-Ndu/DEKHF4gFXEZa2AGgSkdWaj+njVrsSyXbkWRh2UZReFWnH1LMko9p/ZCwk1i9kAd5CUmyIfURUzIEya9YCg==",
"requires": {
"@fluentui/react-window-provider": "^1.0.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"@uifabric/styling": {
"version": "7.19.0",
"resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.19.0.tgz",
"integrity": "sha512-fXComDtGV7dHF4rP4cLHwI6fC+1f/nvPavpMBz4IQdySwixta9TVMKbzt0OA6i0mJztqZCVAd27F/sl9R/JmcQ==",
"requires": {
"@fluentui/theme": "^1.7.4",
"@microsoft/load-themed-styles": "^1.10.26",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
@ -6016,30 +5920,111 @@
"prop-types": "^15.7.2",
"tslib": "^1.10.0"
}
}
}
},
"@uifabric/styling": {
"version": "7.16.19",
"resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.16.19.tgz",
"integrity": "sha512-T5fjUCx0LbzUC8Myw15YCaBjdGbSrihWSiPHtLVW77k59yWAW947XnH73QngE8xU7kyKPH3AhQrUEBMB2NjHag==",
"csstype": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
"integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
},
"office-ui-fabric-react": {
"version": "7.168.2",
"resolved": "https://registry.npmjs.org/office-ui-fabric-react/-/office-ui-fabric-react-7.168.2.tgz",
"integrity": "sha512-ssN6/6K4Z/PdT2ExE1q61B34w6LqfQrqTvrlq/NfSvDk7USxXvP3+rd7HQAUrynSsWx2MnNeYt23d34sSHLCKw==",
"requires": {
"@fluentui/theme": "^1.7.1",
"@fluentui/date-time-utilities": "^7.9.1",
"@fluentui/react-focus": "^7.17.6",
"@fluentui/react-window-provider": "^1.0.2",
"@microsoft/load-themed-styles": "^1.10.26",
"@uifabric/merge-styles": "^7.19.1",
"@uifabric/set-version": "^7.0.23",
"@uifabric/utilities": "^7.33.2",
"@uifabric/foundation": "^7.9.26",
"@uifabric/icons": "^7.5.23",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/react-hooks": "^7.14.0",
"@uifabric/set-version": "^7.0.24",
"@uifabric/styling": "^7.19.0",
"@uifabric/utilities": "^7.33.5",
"prop-types": "^15.7.2",
"tslib": "^1.10.0"
}
}
}
},
"@uifabric/merge-styles": {
"version": "7.19.1",
"resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-7.19.1.tgz",
"integrity": "sha512-yqUwmk62Kgu216QNPE9vOfS3h0kiSbTvoqM5QcZi+IzpqsBOlzZx3A9Er9UiDaqHRd5lsYF5pO/jeUULmBWF/A==",
"@uifabric/icons": {
"version": "7.5.23",
"resolved": "https://registry.npmjs.org/@uifabric/icons/-/icons-7.5.23.tgz",
"integrity": "sha512-eIvUbH0EWgFgdfgFfINgqS2ZVZTyJ/9n5nR4bmcyAe75wsKxm4ser4WIT9IvaBF6+HFVfjUF/v6+VMD7y2LBng==",
"requires": {
"@uifabric/set-version": "^7.0.23",
"@uifabric/set-version": "^7.0.24",
"@uifabric/styling": "^7.19.0",
"tslib": "^1.10.0"
},
"dependencies": {
"@fluentui/theme": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-1.7.4.tgz",
"integrity": "sha512-o4eo7lstLxxXl1g2RR9yz18Yt8yjQO/LbQuZjsiAfv/4Bf0CRnb+3j1F7gxIdBWAchKj9gzaMpIFijfI98pvYQ==",
"requires": {
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"@types/react": {
"version": "16.14.5",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.5.tgz",
"integrity": "sha512-YRRv9DNZhaVTVRh9Wmmit7Y0UFhEVqXqCSw3uazRWMxa2x85hWQZ5BN24i7GXZbaclaLXEcodEeIHsjBA8eAMw==",
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
"csstype": "^3.0.2"
}
},
"@types/react-dom": {
"version": "16.9.12",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.12.tgz",
"integrity": "sha512-i7NPZZpPte3jtVOoW+eLB7G/jsX5OM6GqQnH+lC0nq0rqwlK0x8WcMEvYDgFWqWhWMlTltTimzdMax6wYfZssA==",
"requires": {
"@types/react": "^16"
}
},
"@uifabric/styling": {
"version": "7.19.0",
"resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.19.0.tgz",
"integrity": "sha512-fXComDtGV7dHF4rP4cLHwI6fC+1f/nvPavpMBz4IQdySwixta9TVMKbzt0OA6i0mJztqZCVAd27F/sl9R/JmcQ==",
"requires": {
"@fluentui/theme": "^1.7.4",
"@microsoft/load-themed-styles": "^1.10.26",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"@uifabric/utilities": {
"version": "7.33.5",
"resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-7.33.5.tgz",
"integrity": "sha512-I+Oi0deD/xltSluFY8l2EVd/J4mvOaMljxKO2knSD9/KoGDlo/o5GN4gbnVo8nIt76HWHLAk3KtlJKJm6BhbIQ==",
"requires": {
"@fluentui/dom-utilities": "^1.1.2",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"prop-types": "^15.7.2",
"tslib": "^1.10.0"
}
},
"csstype": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
"integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
}
}
},
"@uifabric/merge-styles": {
"version": "7.19.2",
"resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-7.19.2.tgz",
"integrity": "sha512-kTlhwglDqwVgIaJq+0yXgzi65plGhmFcPrfme/rXUGMJZoU+qlGT5jXj5d3kuI59p6VB8jWEg9DAxHozhYeu0g==",
"requires": {
"@uifabric/set-version": "^7.0.24",
"tslib": "^1.10.0"
}
},
@ -6058,23 +6043,83 @@
"@uifabric/utilities": "^7.23.0",
"office-ui-fabric-react": "^7.121.10",
"tslib": "^1.10.0"
},
"dependencies": {
"@fluentui/theme": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-1.7.4.tgz",
"integrity": "sha512-o4eo7lstLxxXl1g2RR9yz18Yt8yjQO/LbQuZjsiAfv/4Bf0CRnb+3j1F7gxIdBWAchKj9gzaMpIFijfI98pvYQ==",
"requires": {
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"@uifabric/file-type-icons": {
"version": "7.6.30",
"resolved": "https://registry.npmjs.org/@uifabric/file-type-icons/-/file-type-icons-7.6.30.tgz",
"integrity": "sha512-NpZ5kKFxmT60EvHzKSD9XpKYDLBCJDZw3ae3WhW4k2z67RKo5yOZ76hzN9y3UWW3E0qMw9r2+zFF7JukjQYHtw==",
"requires": {
"@uifabric/set-version": "^7.0.24",
"@uifabric/styling": "^7.19.0",
"tslib": "^1.10.0"
}
},
"@uifabric/foundation": {
"version": "7.9.26",
"resolved": "https://registry.npmjs.org/@uifabric/foundation/-/foundation-7.9.26.tgz",
"integrity": "sha512-1FLTb+jlH/Tuel2L9wT/zLl5ZW6W4Lbjrs5VUVjv81vWxzznvPnTf8+Ew0qkzaH7xDuMNMl7okswhV0IfJyheg==",
"requires": {
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/styling": "^7.19.0",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"@uifabric/styling": {
"version": "7.19.0",
"resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.19.0.tgz",
"integrity": "sha512-fXComDtGV7dHF4rP4cLHwI6fC+1f/nvPavpMBz4IQdySwixta9TVMKbzt0OA6i0mJztqZCVAd27F/sl9R/JmcQ==",
"requires": {
"@fluentui/theme": "^1.7.4",
"@microsoft/load-themed-styles": "^1.10.26",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"@uifabric/utilities": {
"version": "7.33.5",
"resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-7.33.5.tgz",
"integrity": "sha512-I+Oi0deD/xltSluFY8l2EVd/J4mvOaMljxKO2knSD9/KoGDlo/o5GN4gbnVo8nIt76HWHLAk3KtlJKJm6BhbIQ==",
"requires": {
"@fluentui/dom-utilities": "^1.1.2",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"prop-types": "^15.7.2",
"tslib": "^1.10.0"
}
}
}
},
"@uifabric/react-hooks": {
"version": "7.13.9",
"resolved": "https://registry.npmjs.org/@uifabric/react-hooks/-/react-hooks-7.13.9.tgz",
"integrity": "sha512-VtDg2b3ypYXX7MLp1STk1Fj6ZIeZktXnm0hu1Os/pGvq6xkuLRly5XP6ZSHitm8K7ZcMo48CcNL8smmiXprBQg==",
"version": "7.14.0",
"resolved": "https://registry.npmjs.org/@uifabric/react-hooks/-/react-hooks-7.14.0.tgz",
"integrity": "sha512-Ndu/DEKHF4gFXEZa2AGgSkdWaj+njVrsSyXbkWRh2UZReFWnH1LMko9p/ZCwk1i9kAd5CUmyIfURUzIEya9YCg==",
"requires": {
"@fluentui/react-window-provider": "^1.0.1",
"@uifabric/set-version": "^7.0.23",
"@uifabric/utilities": "^7.33.2",
"@fluentui/react-window-provider": "^1.0.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"@uifabric/set-version": {
"version": "7.0.23",
"resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.23.tgz",
"integrity": "sha512-9E+YKtnH2kyMKnK9XZZsqyM8OCxEJIIfxtaThTlQpYOzrWAGJxQADFbZ7+Usi0U2xHnWNPFROjq+B9ocEzhqMA==",
"version": "7.0.24",
"resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.24.tgz",
"integrity": "sha512-t0Pt21dRqdC707/ConVJC0WvcQ/KF7tKLU8AZY7YdjgJpMHi1c0C427DB4jfUY19I92f60LOQyhJ4efH+KpFEg==",
"requires": {
"tslib": "^1.10.0"
}
@ -6089,49 +6134,177 @@
"@uifabric/set-version": "^7.0.15",
"@uifabric/utilities": "^7.23.0",
"tslib": "^1.10.0"
},
"dependencies": {
"@types/react": {
"version": "16.14.5",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.5.tgz",
"integrity": "sha512-YRRv9DNZhaVTVRh9Wmmit7Y0UFhEVqXqCSw3uazRWMxa2x85hWQZ5BN24i7GXZbaclaLXEcodEeIHsjBA8eAMw==",
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
"csstype": "^3.0.2"
}
},
"@types/react-dom": {
"version": "16.9.12",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.12.tgz",
"integrity": "sha512-i7NPZZpPte3jtVOoW+eLB7G/jsX5OM6GqQnH+lC0nq0rqwlK0x8WcMEvYDgFWqWhWMlTltTimzdMax6wYfZssA==",
"requires": {
"@types/react": "^16"
}
},
"@uifabric/utilities": {
"version": "7.33.5",
"resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-7.33.5.tgz",
"integrity": "sha512-I+Oi0deD/xltSluFY8l2EVd/J4mvOaMljxKO2knSD9/KoGDlo/o5GN4gbnVo8nIt76HWHLAk3KtlJKJm6BhbIQ==",
"requires": {
"@fluentui/dom-utilities": "^1.1.2",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"prop-types": "^15.7.2",
"tslib": "^1.10.0"
}
},
"csstype": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
"integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
}
}
},
"@uifabric/theme-samples": {
"version": "7.2.6",
"resolved": "https://registry.npmjs.org/@uifabric/theme-samples/-/theme-samples-7.2.6.tgz",
"integrity": "sha512-oDBKF1I9E9kd75Jmi/WYkd7oMNMMpmkdcrasjnLGjAr8uQUCHIZAWL6Kf0R7EHdvqOupX7LrDZtj4BBBAICfmw==",
"version": "7.2.34",
"resolved": "https://registry.npmjs.org/@uifabric/theme-samples/-/theme-samples-7.2.34.tgz",
"integrity": "sha512-olraurYMgXOA3ytPcm8oBcXj/eWZ04pAtpENkHQVujR6Ok4qqka1neVchTW7IBUgw+X+Rl/ampT7sqq77h2JYw==",
"requires": {
"@fluentui/theme": "^1.7.1",
"@uifabric/set-version": "^7.0.23",
"@uifabric/variants": "^7.2.32",
"office-ui-fabric-react": "^7.157.0",
"@fluentui/theme": "^1.7.4",
"@uifabric/set-version": "^7.0.24",
"@uifabric/variants": "^7.2.35",
"office-ui-fabric-react": "^7.168.2",
"tslib": "^1.10.0"
},
"dependencies": {
"@uifabric/styling": {
"version": "7.16.19",
"resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.16.19.tgz",
"integrity": "sha512-T5fjUCx0LbzUC8Myw15YCaBjdGbSrihWSiPHtLVW77k59yWAW947XnH73QngE8xU7kyKPH3AhQrUEBMB2NjHag==",
"@fluentui/react-focus": {
"version": "7.17.6",
"resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-7.17.6.tgz",
"integrity": "sha512-JkLWNDe567lhvbnIhbYv9nUWYDIVN06utc3krs0UZBI+A0YZtQmftBtY0ghXo4PSjgozZocdu9sYkkgZOgyRLg==",
"requires": {
"@fluentui/theme": "^1.7.1",
"@microsoft/load-themed-styles": "^1.10.26",
"@uifabric/merge-styles": "^7.19.1",
"@uifabric/set-version": "^7.0.23",
"@uifabric/utilities": "^7.33.2",
"@fluentui/keyboard-key": "^0.2.12",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/styling": "^7.19.0",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"office-ui-fabric-react": {
"version": "7.157.0",
"resolved": "https://registry.npmjs.org/office-ui-fabric-react/-/office-ui-fabric-react-7.157.0.tgz",
"integrity": "sha512-nS0RfhQKho2S2hiUxHcgM47AZUK1EzbjkdWkofNHQk8q0PwJkQPTUjTbSuxhQNLzXHiaQJz930ZYUvRCZvlL1w==",
"@fluentui/react-window-provider": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-1.0.2.tgz",
"integrity": "sha512-fGSgL3Vp/+6t1Ysfz21FWZmqsU+iFVxOigvHnm5uKVyyRPwtaabv/F6kQ2y5isLMI2YmJaUd2i0cDJKu8ggrvw==",
"requires": {
"@fluentui/date-time-utilities": "^7.9.0",
"@fluentui/react-focus": "^7.17.1",
"@fluentui/react-window-provider": "^1.0.1",
"@uifabric/set-version": "^7.0.24",
"tslib": "^1.10.0"
}
},
"@fluentui/theme": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-1.7.4.tgz",
"integrity": "sha512-o4eo7lstLxxXl1g2RR9yz18Yt8yjQO/LbQuZjsiAfv/4Bf0CRnb+3j1F7gxIdBWAchKj9gzaMpIFijfI98pvYQ==",
"requires": {
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"@types/react": {
"version": "16.14.5",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.5.tgz",
"integrity": "sha512-YRRv9DNZhaVTVRh9Wmmit7Y0UFhEVqXqCSw3uazRWMxa2x85hWQZ5BN24i7GXZbaclaLXEcodEeIHsjBA8eAMw==",
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
"csstype": "^3.0.2"
}
},
"@types/react-dom": {
"version": "16.9.12",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.12.tgz",
"integrity": "sha512-i7NPZZpPte3jtVOoW+eLB7G/jsX5OM6GqQnH+lC0nq0rqwlK0x8WcMEvYDgFWqWhWMlTltTimzdMax6wYfZssA==",
"requires": {
"@types/react": "^16"
}
},
"@uifabric/foundation": {
"version": "7.9.26",
"resolved": "https://registry.npmjs.org/@uifabric/foundation/-/foundation-7.9.26.tgz",
"integrity": "sha512-1FLTb+jlH/Tuel2L9wT/zLl5ZW6W4Lbjrs5VUVjv81vWxzznvPnTf8+Ew0qkzaH7xDuMNMl7okswhV0IfJyheg==",
"requires": {
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/styling": "^7.19.0",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"@uifabric/react-hooks": {
"version": "7.14.0",
"resolved": "https://registry.npmjs.org/@uifabric/react-hooks/-/react-hooks-7.14.0.tgz",
"integrity": "sha512-Ndu/DEKHF4gFXEZa2AGgSkdWaj+njVrsSyXbkWRh2UZReFWnH1LMko9p/ZCwk1i9kAd5CUmyIfURUzIEya9YCg==",
"requires": {
"@fluentui/react-window-provider": "^1.0.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"@uifabric/styling": {
"version": "7.19.0",
"resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.19.0.tgz",
"integrity": "sha512-fXComDtGV7dHF4rP4cLHwI6fC+1f/nvPavpMBz4IQdySwixta9TVMKbzt0OA6i0mJztqZCVAd27F/sl9R/JmcQ==",
"requires": {
"@fluentui/theme": "^1.7.4",
"@microsoft/load-themed-styles": "^1.10.26",
"@uifabric/foundation": "^7.9.21",
"@uifabric/icons": "^7.5.18",
"@uifabric/merge-styles": "^7.19.1",
"@uifabric/react-hooks": "^7.13.9",
"@uifabric/set-version": "^7.0.23",
"@uifabric/styling": "^7.16.19",
"@uifabric/utilities": "^7.33.2",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"@uifabric/utilities": {
"version": "7.33.5",
"resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-7.33.5.tgz",
"integrity": "sha512-I+Oi0deD/xltSluFY8l2EVd/J4mvOaMljxKO2knSD9/KoGDlo/o5GN4gbnVo8nIt76HWHLAk3KtlJKJm6BhbIQ==",
"requires": {
"@fluentui/dom-utilities": "^1.1.2",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"prop-types": "^15.7.2",
"tslib": "^1.10.0"
}
},
"csstype": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
"integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
},
"office-ui-fabric-react": {
"version": "7.168.2",
"resolved": "https://registry.npmjs.org/office-ui-fabric-react/-/office-ui-fabric-react-7.168.2.tgz",
"integrity": "sha512-ssN6/6K4Z/PdT2ExE1q61B34w6LqfQrqTvrlq/NfSvDk7USxXvP3+rd7HQAUrynSsWx2MnNeYt23d34sSHLCKw==",
"requires": {
"@fluentui/date-time-utilities": "^7.9.1",
"@fluentui/react-focus": "^7.17.6",
"@fluentui/react-window-provider": "^1.0.2",
"@microsoft/load-themed-styles": "^1.10.26",
"@uifabric/foundation": "^7.9.26",
"@uifabric/icons": "^7.5.23",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/react-hooks": "^7.14.0",
"@uifabric/set-version": "^7.0.24",
"@uifabric/styling": "^7.19.0",
"@uifabric/utilities": "^7.33.5",
"prop-types": "^15.7.2",
"tslib": "^1.10.0"
}
@ -6139,25 +6312,73 @@
}
},
"@uifabric/utilities": {
"version": "7.33.2",
"resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-7.33.2.tgz",
"integrity": "sha512-v2c3IUJdpru/hoGNOwIW549O5D4XBAc5sLpB7RREGI5ywoWuIJlNyYtBEGOwhAY62J2blj11qi86Ep+oZDM/Kw==",
"version": "7.33.5",
"resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-7.33.5.tgz",
"integrity": "sha512-I+Oi0deD/xltSluFY8l2EVd/J4mvOaMljxKO2knSD9/KoGDlo/o5GN4gbnVo8nIt76HWHLAk3KtlJKJm6BhbIQ==",
"requires": {
"@fluentui/dom-utilities": "^1.1.1",
"@uifabric/merge-styles": "^7.19.1",
"@uifabric/set-version": "^7.0.23",
"@fluentui/dom-utilities": "^1.1.2",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"prop-types": "^15.7.2",
"tslib": "^1.10.0"
}
},
"@uifabric/variants": {
"version": "7.2.32",
"resolved": "https://registry.npmjs.org/@uifabric/variants/-/variants-7.2.32.tgz",
"integrity": "sha512-ffyizuMGyF/8SnPqBvdQ5IceiN5nVQkrUI0+GhCuKmZC7IDlW+srjfzzjHZ9QLmnb3N5e/qlCrjbhfgFvTfZ6w==",
"version": "7.2.35",
"resolved": "https://registry.npmjs.org/@uifabric/variants/-/variants-7.2.35.tgz",
"integrity": "sha512-pK9n0QM3wYuE/f7scOhkW0jsSx1BPU6RePeuMJcoriCgK6zeN66p5ySwh+UhjuEtoGaSfVxeFve02hWNTfO8vg==",
"requires": {
"@fluentui/theme": "^1.7.1",
"@uifabric/set-version": "^7.0.23",
"@fluentui/theme": "^1.7.4",
"@uifabric/set-version": "^7.0.24",
"tslib": "^1.10.0"
},
"dependencies": {
"@fluentui/theme": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-1.7.4.tgz",
"integrity": "sha512-o4eo7lstLxxXl1g2RR9yz18Yt8yjQO/LbQuZjsiAfv/4Bf0CRnb+3j1F7gxIdBWAchKj9gzaMpIFijfI98pvYQ==",
"requires": {
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"@uifabric/utilities": "^7.33.5",
"tslib": "^1.10.0"
}
},
"@types/react": {
"version": "16.14.5",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.5.tgz",
"integrity": "sha512-YRRv9DNZhaVTVRh9Wmmit7Y0UFhEVqXqCSw3uazRWMxa2x85hWQZ5BN24i7GXZbaclaLXEcodEeIHsjBA8eAMw==",
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
"csstype": "^3.0.2"
}
},
"@types/react-dom": {
"version": "16.9.12",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.12.tgz",
"integrity": "sha512-i7NPZZpPte3jtVOoW+eLB7G/jsX5OM6GqQnH+lC0nq0rqwlK0x8WcMEvYDgFWqWhWMlTltTimzdMax6wYfZssA==",
"requires": {
"@types/react": "^16"
}
},
"@uifabric/utilities": {
"version": "7.33.5",
"resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-7.33.5.tgz",
"integrity": "sha512-I+Oi0deD/xltSluFY8l2EVd/J4mvOaMljxKO2knSD9/KoGDlo/o5GN4gbnVo8nIt76HWHLAk3KtlJKJm6BhbIQ==",
"requires": {
"@fluentui/dom-utilities": "^1.1.2",
"@uifabric/merge-styles": "^7.19.2",
"@uifabric/set-version": "^7.0.24",
"prop-types": "^15.7.2",
"tslib": "^1.10.0"
}
},
"csstype": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
"integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
}
}
},
"@ungap/url-search-params": {
@ -7261,9 +7482,9 @@
"integrity": "sha1-SfiW1uhYpKSZ34XDj7OZua/4QPg="
},
"bl": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
"integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==",
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"optional": true,
"requires": {
"buffer": "^5.5.0",
@ -7939,9 +8160,9 @@
},
"dependencies": {
"anymatch": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
"integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
"dev": true,
"optional": true,
"requires": {
@ -19353,9 +19574,9 @@
}
},
"node-abi": {
"version": "2.19.3",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.3.tgz",
"integrity": "sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg==",
"version": "2.26.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.26.0.tgz",
"integrity": "sha512-ag/Vos/mXXpWLLAYWsAoQdgS+gW7IwvgMLOgqopm/DbzAjazLltzgzpVMsFlgmo9TzG5hGXeaBZx2AI731RIsQ==",
"optional": true,
"requires": {
"semver": "^5.4.1"
@ -20065,24 +20286,6 @@
"tslib": "^1.10.0"
},
"dependencies": {
"@fluentui/date-time-utilities": {
"version": "7.9.1",
"resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-7.9.1.tgz",
"integrity": "sha512-o8iU1VIY+QsqVRWARKiky29fh4KR1xaKSgMClXIi65qkt8EDDhjmlzL0KVDEoDA2GWukwb/1PpaVCWDg4v3cUQ==",
"requires": {
"@uifabric/set-version": "^7.0.24",
"tslib": "^1.10.0"
}
},
"@fluentui/dom-utilities": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-1.1.2.tgz",
"integrity": "sha512-XqPS7l3YoMwxdNlaYF6S2Mp0K3FmVIOIy2K3YkMc+eRxu9wFK6emr2Q/3rBhtG5u/On37NExRT7/5CTLnoi9gw==",
"requires": {
"@uifabric/set-version": "^7.0.24",
"tslib": "^1.10.0"
}
},
"@fluentui/react-focus": {
"version": "7.17.6",
"resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-7.17.6.tgz",
@ -20128,25 +20331,6 @@
"tslib": "^1.10.0"
}
},
"@uifabric/icons": {
"version": "7.5.23",
"resolved": "https://registry.npmjs.org/@uifabric/icons/-/icons-7.5.23.tgz",
"integrity": "sha512-eIvUbH0EWgFgdfgFfINgqS2ZVZTyJ/9n5nR4bmcyAe75wsKxm4ser4WIT9IvaBF6+HFVfjUF/v6+VMD7y2LBng==",
"requires": {
"@uifabric/set-version": "^7.0.24",
"@uifabric/styling": "^7.19.0",
"tslib": "^1.10.0"
}
},
"@uifabric/merge-styles": {
"version": "7.19.2",
"resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-7.19.2.tgz",
"integrity": "sha512-kTlhwglDqwVgIaJq+0yXgzi65plGhmFcPrfme/rXUGMJZoU+qlGT5jXj5d3kuI59p6VB8jWEg9DAxHozhYeu0g==",
"requires": {
"@uifabric/set-version": "^7.0.24",
"tslib": "^1.10.0"
}
},
"@uifabric/react-hooks": {
"version": "7.14.0",
"resolved": "https://registry.npmjs.org/@uifabric/react-hooks/-/react-hooks-7.14.0.tgz",
@ -20158,14 +20342,6 @@
"tslib": "^1.10.0"
}
},
"@uifabric/set-version": {
"version": "7.0.24",
"resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.24.tgz",
"integrity": "sha512-t0Pt21dRqdC707/ConVJC0WvcQ/KF7tKLU8AZY7YdjgJpMHi1c0C427DB4jfUY19I92f60LOQyhJ4efH+KpFEg==",
"requires": {
"tslib": "^1.10.0"
}
},
"@uifabric/styling": {
"version": "7.19.0",
"resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.19.0.tgz",

View File

@ -43,6 +43,7 @@
"@types/mkdirp": "1.0.1",
"@types/node-fetch": "2.5.7",
"@uifabric/react-cards": "0.109.110",
"@uifabric/react-hooks": "7.14.0",
"@uifabric/styling": "7.13.7",
"applicationinsights": "1.8.0",
"bootstrap": "3.4.1",

View File

@ -43,12 +43,7 @@ export const endpoint = () => {
const location = _global.parent ? _global.parent.location : _global.location;
return configContext.EMULATOR_ENDPOINT || location.origin;
}
return (
userContext.endpoint ||
(userContext.databaseAccount &&
userContext.databaseAccount.properties &&
userContext.databaseAccount.properties.documentEndpoint)
);
return userContext.endpoint || userContext?.databaseAccount?.properties?.documentEndpoint;
};
export async function getTokenFromAuthService(verb: string, resourceType: string, resourceId?: string): Promise<any> {

View File

@ -61,7 +61,7 @@ export function queryDocuments(
query: string,
continuationToken?: string
): Promise<QueryResponse> {
const databaseAccount = userContext.databaseAccount;
const { databaseAccount } = userContext;
const resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint;
const params = {
db: databaseId,
@ -121,7 +121,7 @@ export function readDocument(
collection: Collection,
documentId: DocumentId
): Promise<DataModels.DocumentId> {
const databaseAccount = userContext.databaseAccount;
const { databaseAccount } = userContext;
const resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint;
const idComponents = documentId.self.split("/");
const path = idComponents.slice(0, 4).join("/");
@ -167,7 +167,7 @@ export function createDocument(
partitionKeyProperty: string,
documentContent: unknown
): Promise<DataModels.DocumentId> {
const databaseAccount = userContext.databaseAccount;
const { databaseAccount } = userContext;
const resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint;
const params = {
db: databaseId,
@ -206,7 +206,7 @@ export function updateDocument(
documentId: DocumentId,
documentContent: string
): Promise<DataModels.DocumentId> {
const databaseAccount = userContext.databaseAccount;
const { databaseAccount } = userContext;
const resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint;
const idComponents = documentId.self.split("/");
const path = idComponents.slice(0, 5).join("/");
@ -247,7 +247,7 @@ export function updateDocument(
}
export function deleteDocument(databaseId: string, collection: Collection, documentId: DocumentId): Promise<void> {
const databaseAccount = userContext.databaseAccount;
const { databaseAccount } = userContext;
const resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint;
const idComponents = documentId.self.split("/");
const path = idComponents.slice(0, 5).join("/");
@ -289,7 +289,7 @@ export function deleteDocument(databaseId: string, collection: Collection, docum
export function createMongoCollectionWithProxy(
params: DataModels.CreateCollectionParams
): Promise<DataModels.Collection> {
const databaseAccount = userContext.databaseAccount;
const { databaseAccount } = userContext;
const shardKey: string = params.partitionKey?.paths[0];
const mongoParams: DataModels.MongoParameters = {
resourceUrl: databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint,

View File

@ -1,8 +1,8 @@
import { configContext, Platform } from "../ConfigContext";
import * as DataModels from "../Contracts/DataModels";
import * as ViewModels from "../Contracts/ViewModels";
import { getAuthorizationHeader } from "../Utils/AuthorizationUtils";
import { userContext } from "../UserContext";
import { configContext, Platform } from "../ConfigContext";
import { getAuthorizationHeader } from "../Utils/AuthorizationUtils";
const notificationsPath = () => {
switch (configContext.platform) {
@ -20,9 +20,7 @@ export const fetchPortalNotifications = async (): Promise<DataModels.Notificatio
return [];
}
const databaseAccount = userContext.databaseAccount;
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const { databaseAccount, resourceGroup, subscriptionId } = userContext;
const url = `${configContext.BACKEND_ENDPOINT}${notificationsPath()}?accountName=${
databaseAccount.name
}&subscriptionId=${subscriptionId}&resourceGroup=${resourceGroup}`;

View File

@ -182,11 +182,8 @@ export class QueriesClient {
}
public getResourceId(): string {
const databaseAccount = userContext.databaseAccount;
const databaseAccountName = (databaseAccount && databaseAccount.name) || "";
const subscriptionId = userContext.subscriptionId || "";
const resourceGroup = userContext.resourceGroup || "";
const { databaseAccount, subscriptionId = "", resourceGroup = "" } = userContext;
const databaseAccountName = databaseAccount?.name || "";
return `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.DocumentDb/databaseAccounts/${databaseAccountName}`;
}

View File

@ -62,8 +62,8 @@ export const createCollection = async (params: DataModels.CreateCollectionParams
};
const createCollectionWithARM = async (params: DataModels.CreateCollectionParams): Promise<DataModels.Collection> => {
const defaultExperience = userContext.apiType;
switch (defaultExperience) {
const { apiType } = userContext;
switch (apiType) {
case "SQL":
return createSqlContainer(params);
case "Mongo":
@ -75,7 +75,7 @@ const createCollectionWithARM = async (params: DataModels.CreateCollectionParams
case "Tables":
return createTable(params);
default:
throw new Error(`Unsupported default experience type: ${defaultExperience}`);
throw new Error(`Unsupported default experience type: ${apiType}`);
}
};

View File

@ -48,8 +48,9 @@ export async function createDatabase(params: DataModels.CreateDatabaseParams): P
}
async function createDatabaseWithARM(params: DataModels.CreateDatabaseParams): Promise<DataModels.Database> {
const defaultExperience = userContext.apiType;
switch (defaultExperience) {
const { apiType } = userContext;
switch (apiType) {
case "SQL":
return createSqlDatabase(params);
case "Mongo":
@ -59,7 +60,7 @@ async function createDatabaseWithARM(params: DataModels.CreateDatabaseParams): P
case "Gremlin":
return createGremlineDatabase(params);
default:
throw new Error(`Unsupported default experience type: ${defaultExperience}`);
throw new Error(`Unsupported default experience type: ${apiType}`);
}
}

View File

@ -27,12 +27,10 @@ export async function deleteCollection(databaseId: string, collectionId: string)
}
function deleteCollectionWithARM(databaseId: string, collectionId: string): Promise<void> {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const defaultExperience = userContext.apiType;
const { subscriptionId, resourceGroup, apiType, databaseAccount } = userContext;
const accountName = databaseAccount.name;
switch (defaultExperience) {
switch (apiType) {
case "SQL":
return deleteSqlContainer(subscriptionId, resourceGroup, accountName, databaseId, collectionId);
case "Mongo":
@ -44,6 +42,6 @@ function deleteCollectionWithARM(databaseId: string, collectionId: string): Prom
case "Tables":
return deleteTable(subscriptionId, resourceGroup, accountName, collectionId);
default:
throw new Error(`Unsupported default experience type: ${defaultExperience}`);
throw new Error(`Unsupported default experience type: ${apiType}`);
}
}

View File

@ -30,12 +30,10 @@ export async function deleteDatabase(databaseId: string): Promise<void> {
}
function deleteDatabaseWithARM(databaseId: string): Promise<void> {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const defaultExperience = userContext.apiType;
const { subscriptionId, resourceGroup, apiType, databaseAccount } = userContext;
const accountName = databaseAccount.name;
switch (defaultExperience) {
switch (apiType) {
case "SQL":
return deleteSqlDatabase(subscriptionId, resourceGroup, accountName, databaseId);
case "Mongo":
@ -45,6 +43,6 @@ function deleteDatabaseWithARM(databaseId: string): Promise<void> {
case "Gremlin":
return deleteGremlinDatabase(subscriptionId, resourceGroup, accountName, databaseId);
default:
throw new Error(`Unsupported default experience type: ${defaultExperience}`);
throw new Error(`Unsupported default experience type: ${apiType}`);
}
}

View File

@ -1,8 +1,8 @@
import { AuthType } from "../../AuthType";
import { armRequest } from "../../Utils/arm/request";
import { configContext } from "../../ConfigContext";
import { handleError } from "../ErrorHandlingUtils";
import { userContext } from "../../UserContext";
import { armRequest } from "../../Utils/arm/request";
import { handleError } from "../ErrorHandlingUtils";
interface TimeSeriesData {
data: {
@ -45,9 +45,9 @@ export const getCollectionUsageSizeInKB = async (databaseName: string, container
return undefined;
}
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const accountName = databaseAccount.name;
const filter = `DatabaseName eq '${databaseName}' and CollectionName eq '${containerName}'`;
const metricNames = "DataUsage,IndexUsage";
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/providers/microsoft.insights/metrics`;

View File

@ -28,14 +28,12 @@ export const readCollectionOffer = async (params: ReadCollectionOfferParams): Pr
};
const readCollectionOfferWithARM = async (databaseId: string, collectionId: string): Promise<Offer> => {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const defaultExperience = userContext.apiType;
const { subscriptionId, resourceGroup, apiType, databaseAccount } = userContext;
const accountName = databaseAccount.name;
let rpResponse;
try {
switch (defaultExperience) {
switch (apiType) {
case "SQL":
rpResponse = await getSqlContainerThroughput(
subscriptionId,
@ -76,7 +74,7 @@ const readCollectionOfferWithARM = async (databaseId: string, collectionId: stri
rpResponse = await getTableThroughput(subscriptionId, resourceGroup, accountName, collectionId);
break;
default:
throw new Error(`Unsupported default experience type: ${defaultExperience}`);
throw new Error(`Unsupported default experience type: ${apiType}`);
}
} catch (error) {
if (error.code !== "NotFound") {

View File

@ -29,12 +29,11 @@ export async function readCollections(databaseId: string): Promise<DataModels.Co
async function readCollectionsWithARM(databaseId: string): Promise<DataModels.Collection[]> {
let rpResponse;
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const defaultExperience = userContext.apiType;
switch (defaultExperience) {
const { subscriptionId, resourceGroup, apiType, databaseAccount } = userContext;
const accountName = databaseAccount.name;
switch (apiType) {
case "SQL":
rpResponse = await listSqlContainers(subscriptionId, resourceGroup, accountName, databaseId);
break;
@ -51,7 +50,7 @@ async function readCollectionsWithARM(databaseId: string): Promise<DataModels.Co
rpResponse = await listTables(subscriptionId, resourceGroup, accountName);
break;
default:
throw new Error(`Unsupported default experience type: ${defaultExperience}`);
throw new Error(`Unsupported default experience type: ${apiType}`);
}
return rpResponse?.value?.map((collection) => collection.properties?.resource as DataModels.Collection);

View File

@ -27,14 +27,12 @@ export const readDatabaseOffer = async (params: ReadDatabaseOfferParams): Promis
};
const readDatabaseOfferWithARM = async (databaseId: string): Promise<Offer> => {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const defaultExperience = userContext.apiType;
const { subscriptionId, resourceGroup, apiType, databaseAccount } = userContext;
const accountName = databaseAccount.name;
let rpResponse;
try {
switch (defaultExperience) {
switch (apiType) {
case "SQL":
rpResponse = await getSqlDatabaseThroughput(subscriptionId, resourceGroup, accountName, databaseId);
break;
@ -48,7 +46,7 @@ const readDatabaseOfferWithARM = async (databaseId: string): Promise<Offer> => {
rpResponse = await getGremlinDatabaseThroughput(subscriptionId, resourceGroup, accountName, databaseId);
break;
default:
throw new Error(`Unsupported default experience type: ${defaultExperience}`);
throw new Error(`Unsupported default experience type: ${apiType}`);
}
} catch (error) {
if (error.code !== "NotFound") {

View File

@ -29,12 +29,10 @@ export async function readDatabases(): Promise<DataModels.Database[]> {
async function readDatabasesWithARM(): Promise<DataModels.Database[]> {
let rpResponse;
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const defaultExperience = userContext.apiType;
const { subscriptionId, resourceGroup, apiType, databaseAccount } = userContext;
const accountName = databaseAccount.name;
switch (defaultExperience) {
switch (apiType) {
case "SQL":
rpResponse = await listSqlDatabases(subscriptionId, resourceGroup, accountName);
break;
@ -48,7 +46,7 @@ async function readDatabasesWithARM(): Promise<DataModels.Database[]> {
rpResponse = await listGremlinDatabases(subscriptionId, resourceGroup, accountName);
break;
default:
throw new Error(`Unsupported default experience type: ${defaultExperience}`);
throw new Error(`Unsupported default experience type: ${apiType}`);
}
return rpResponse?.value?.map((database) => database.properties?.resource as DataModels.Database);

View File

@ -1,9 +1,9 @@
import { AuthType } from "../../AuthType";
import { userContext } from "../../UserContext";
import { getMongoDBCollection } from "../../Utils/arm/generatedClients/2020-04-01/mongoDBResources";
import { MongoDBCollectionResource } from "../../Utils/arm/generatedClients/2020-04-01/types";
import { logConsoleProgress } from "../../Utils/NotificationConsoleUtils";
import { handleError } from "../ErrorHandlingUtils";
import { AuthType } from "../../AuthType";
export async function readMongoDBCollectionThroughRP(
databaseId: string,
@ -13,9 +13,9 @@ export async function readMongoDBCollectionThroughRP(
return undefined;
}
let collection: MongoDBCollectionResource;
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const accountName = databaseAccount.name;
const clearMessage = logConsoleProgress(`Reading container ${collectionId}`);
try {

View File

@ -11,12 +11,13 @@ export async function readUserDefinedFunctions(
collectionId: string
): Promise<(UserDefinedFunctionDefinition & Resource)[]> {
const clearMessage = logConsoleProgress(`Querying user defined functions for container ${collectionId}`);
const { authType, useSDKOperations, apiType, subscriptionId, resourceGroup, databaseAccount } = userContext;
try {
if (userContext.authType === AuthType.AAD && !userContext.useSDKOperations && userContext.apiType === "SQL") {
if (authType === AuthType.AAD && !useSDKOperations && apiType === "SQL") {
const rpResponse = await listSqlUserDefinedFunctions(
userContext.subscriptionId,
userContext.resourceGroup,
userContext.databaseAccount.name,
subscriptionId,
resourceGroup,
databaseAccount.name,
databaseId,
collectionId
);

View File

@ -63,12 +63,10 @@ async function updateCollectionWithARM(
collectionId: string,
newCollection: Partial<Collection>
): Promise<Collection> {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const defaultExperience = userContext.apiType;
const { subscriptionId, resourceGroup, apiType, databaseAccount } = userContext;
const accountName = databaseAccount.name;
switch (defaultExperience) {
switch (apiType) {
case "SQL":
return updateSqlContainer(databaseId, collectionId, subscriptionId, resourceGroup, accountName, newCollection);
case "Cassandra":
@ -87,7 +85,7 @@ async function updateCollectionWithARM(
newCollection
);
default:
throw new Error(`Unsupported default experience type: ${defaultExperience}`);
throw new Error(`Unsupported default experience type: ${apiType}`);
}
}

View File

@ -144,9 +144,8 @@ const updateDatabaseOfferWithARM = async (params: UpdateOfferParams): Promise<Of
};
const updateSqlContainerOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const accountName = databaseAccount.name;
if (params.migrateToAutoPilot) {
await migrateSqlContainerToAutoscale(
@ -178,9 +177,8 @@ const updateSqlContainerOffer = async (params: UpdateOfferParams): Promise<void>
};
const updateMongoCollectionOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const accountName = databaseAccount.name;
if (params.migrateToAutoPilot) {
await migrateMongoDBCollectionToAutoscale(
@ -212,9 +210,8 @@ const updateMongoCollectionOffer = async (params: UpdateOfferParams): Promise<vo
};
const updateCassandraTableOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const accountName = databaseAccount.name;
if (params.migrateToAutoPilot) {
await migrateCassandraTableToAutoscale(
@ -246,9 +243,8 @@ const updateCassandraTableOffer = async (params: UpdateOfferParams): Promise<voi
};
const updateGremlinGraphOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const accountName = databaseAccount.name;
if (params.migrateToAutoPilot) {
await migrateGremlinGraphToAutoscale(
@ -280,9 +276,8 @@ const updateGremlinGraphOffer = async (params: UpdateOfferParams): Promise<void>
};
const updateTableOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const accountName = databaseAccount.name;
if (params.migrateToAutoPilot) {
await migrateTableToAutoscale(subscriptionId, resourceGroup, accountName, params.collectionId);
@ -295,9 +290,8 @@ const updateTableOffer = async (params: UpdateOfferParams): Promise<void> => {
};
const updateSqlDatabaseOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const accountName = databaseAccount.name;
if (params.migrateToAutoPilot) {
await migrateSqlDatabaseToAutoscale(subscriptionId, resourceGroup, accountName, params.databaseId);
@ -310,9 +304,8 @@ const updateSqlDatabaseOffer = async (params: UpdateOfferParams): Promise<void>
};
const updateMongoDatabaseOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const accountName = databaseAccount.name;
if (params.migrateToAutoPilot) {
await migrateMongoDBDatabaseToAutoscale(subscriptionId, resourceGroup, accountName, params.databaseId);
@ -325,9 +318,8 @@ const updateMongoDatabaseOffer = async (params: UpdateOfferParams): Promise<void
};
const updateCassandraKeyspaceOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const accountName = databaseAccount.name;
if (params.migrateToAutoPilot) {
await migrateCassandraKeyspaceToAutoscale(subscriptionId, resourceGroup, accountName, params.databaseId);
@ -340,9 +332,8 @@ const updateCassandraKeyspaceOffer = async (params: UpdateOfferParams): Promise<
};
const updateGremlinDatabaseOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const accountName = userContext.databaseAccount.name;
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const accountName = databaseAccount.name;
if (params.migrateToAutoPilot) {
await migrateGremlinDatabaseToAutoscale(subscriptionId, resourceGroup, accountName, params.databaseId);

View File

@ -20,11 +20,13 @@ export async function updateStoredProcedure(
): Promise<StoredProcedureDefinition & Resource> {
const clearMessage = logConsoleProgress(`Updating stored procedure ${storedProcedure.id}`);
try {
if (userContext.authType === AuthType.AAD && !userContext.useSDKOperations && userContext.apiType === "SQL") {
const { authType, useSDKOperations, apiType, subscriptionId, resourceGroup, databaseAccount } = userContext;
if (authType === AuthType.AAD && !useSDKOperations && apiType === "SQL") {
const getResponse = await getSqlStoredProcedure(
userContext.subscriptionId,
userContext.resourceGroup,
userContext.databaseAccount.name,
subscriptionId,
resourceGroup,
databaseAccount.name,
databaseId,
collectionId,
storedProcedure.id
@ -38,9 +40,9 @@ export async function updateStoredProcedure(
},
};
const rpResponse = await createUpdateSqlStoredProcedure(
userContext.subscriptionId,
userContext.resourceGroup,
userContext.databaseAccount.name,
subscriptionId,
resourceGroup,
databaseAccount.name,
databaseId,
collectionId,
storedProcedure.id,

View File

@ -16,12 +16,13 @@ export async function updateTrigger(
trigger: TriggerDefinition
): Promise<TriggerDefinition> {
const clearMessage = logConsoleProgress(`Updating trigger ${trigger.id}`);
const { authType, useSDKOperations, apiType, subscriptionId, resourceGroup, databaseAccount } = userContext;
try {
if (userContext.authType === AuthType.AAD && !userContext.useSDKOperations && userContext.apiType === "SQL") {
if (authType === AuthType.AAD && !useSDKOperations && apiType === "SQL") {
const getResponse = await getSqlTrigger(
userContext.subscriptionId,
userContext.resourceGroup,
userContext.databaseAccount.name,
subscriptionId,
resourceGroup,
databaseAccount.name,
databaseId,
collectionId,
trigger.id
@ -35,9 +36,9 @@ export async function updateTrigger(
},
};
const rpResponse = await createUpdateSqlTrigger(
userContext.subscriptionId,
userContext.resourceGroup,
userContext.databaseAccount.name,
subscriptionId,
resourceGroup,
databaseAccount.name,
databaseId,
collectionId,
trigger.id,

View File

@ -19,12 +19,13 @@ export async function updateUserDefinedFunction(
userDefinedFunction: UserDefinedFunctionDefinition
): Promise<UserDefinedFunctionDefinition & Resource> {
const clearMessage = logConsoleProgress(`Updating user defined function ${userDefinedFunction.id}`);
const { authType, useSDKOperations, apiType, subscriptionId, resourceGroup, databaseAccount } = userContext;
try {
if (userContext.authType === AuthType.AAD && !userContext.useSDKOperations && userContext.apiType === "SQL") {
if (authType === AuthType.AAD && !useSDKOperations && apiType === "SQL") {
const getResponse = await getSqlUserDefinedFunction(
userContext.subscriptionId,
userContext.resourceGroup,
userContext.databaseAccount.name,
subscriptionId,
resourceGroup,
databaseAccount.name,
databaseId,
collectionId,
userDefinedFunction.id
@ -38,9 +39,9 @@ export async function updateUserDefinedFunction(
},
};
const rpResponse = await createUpdateSqlUserDefinedFunction(
userContext.subscriptionId,
userContext.resourceGroup,
userContext.databaseAccount.name,
subscriptionId,
resourceGroup,
databaseAccount.name,
databaseId,
collectionId,
userDefinedFunction.id,

View File

@ -350,11 +350,11 @@ exports[`test render renders with filters 1`] = `
}
>
<div
className="ms-ScrollablePane root-40"
className="ms-ScrollablePane root-72"
data-is-scrollable="true"
>
<div
className="stickyAbove-42"
className="stickyAbove-74"
style={
Object {
"height": 0,
@ -365,7 +365,7 @@ exports[`test render renders with filters 1`] = `
}
/>
<div
className="ms-ScrollablePane--contentContainer contentContainer-41"
className="ms-ScrollablePane--contentContainer contentContainer-73"
data-is-scrollable={true}
>
<Sticky
@ -691,18 +691,18 @@ exports[`test render renders with filters 1`] = `
validateOnLoad={true}
>
<div
className="ms-TextField directoryListFilterTextBox root-46"
className="ms-TextField directoryListFilterTextBox root-78"
>
<div
className="ms-TextField-wrapper"
>
<div
className="ms-TextField-fieldGroup fieldGroup-47"
className="ms-TextField-fieldGroup fieldGroup-79"
>
<input
aria-invalid={false}
aria-label="Directory filter text box"
className="ms-TextField-field field-48"
className="ms-TextField-field field-80"
id="TextField0"
onBlur={[Function]}
onChange={[Function]}
@ -1900,7 +1900,7 @@ exports[`test render renders with filters 1`] = `
>
<button
aria-disabled={true}
className="ms-Button ms-Button--default is-disabled directoryListButton root-57"
className="ms-Button ms-Button--default is-disabled directoryListButton root-89"
data-is-focusable={false}
disabled={true}
onClick={[Function]}
@ -1912,7 +1912,7 @@ exports[`test render renders with filters 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-58"
className="ms-Button-flexContainer flexContainer-90"
data-automationid="splitbuttonprimary"
>
<div
@ -1943,7 +1943,7 @@ exports[`test render renders with filters 1`] = `
</List>
</div>
<div
className="stickyBelow-43"
className="stickyBelow-75"
style={
Object {
"bottom": "0px",
@ -1954,7 +1954,7 @@ exports[`test render renders with filters 1`] = `
}
>
<div
className="stickyBelowItems-44"
className="stickyBelowItems-76"
/>
</div>
</div>

View File

@ -9,7 +9,7 @@ describe("CodeOfConductComponent", () => {
let codeOfConductProps: CodeOfConductComponentProps;
beforeEach(() => {
const junoClient = new JunoClient(undefined);
const junoClient = new JunoClient();
junoClient.acceptCodeOfConduct = jest.fn().mockReturnValue({
status: HttpStatusCodes.OK,
data: true,

View File

@ -154,13 +154,13 @@ describe("SettingsComponent", () => {
expect(settingsComponentInstance.hasConflictResolution()).toEqual(undefined);
const newContainer = new Explorer();
newContainer.databaseAccount = ko.observable({
updateUserContext({
databaseAccount: {
id: undefined,
name: undefined,
location: undefined,
type: undefined,
kind: undefined,
tags: undefined,
properties: {
documentEndpoint: undefined,
tableEndpoint: undefined,
@ -168,6 +168,7 @@ describe("SettingsComponent", () => {
cassandraEndpoint: undefined,
enableMultipleWriteLocations: true,
},
},
});
const newCollection = { ...collection };
newCollection.container = newContainer;

View File

@ -233,11 +233,7 @@ export class SettingsComponent extends React.Component<SettingsComponentProps, S
}
public loadMongoIndexes = async (): Promise<void> => {
if (
userContext.apiType === "Mongo" &&
this.container.isEnableMongoCapabilityPresent() &&
this.container.databaseAccount()
) {
if (userContext.apiType === "Mongo" && userContext?.databaseAccount) {
this.mongoDBCollectionResource = await readMongoDBCollectionThroughRP(
this.collection.databaseId,
this.collection.id()
@ -300,8 +296,7 @@ export class SettingsComponent extends React.Component<SettingsComponentProps, S
this.container && userContext.apiType === "Cassandra" && hasDatabaseSharedThroughput(this.collection);
public hasConflictResolution = (): boolean =>
this.container?.databaseAccount &&
this.container.databaseAccount()?.properties?.enableMultipleWriteLocations &&
userContext?.databaseAccount?.properties?.enableMultipleWriteLocations &&
this.collection.conflictResolutionPolicy &&
!!this.collection.conflictResolutionPolicy();
@ -876,7 +871,7 @@ export class SettingsComponent extends React.Component<SettingsComponentProps, S
mongoIndexingPolicyComponentProps: MongoIndexingPolicyComponentProps
): JSX.Element => {
if (userContext.authType === AuthType.AAD) {
if (this.container.isEnableMongoCapabilityPresent()) {
if (userContext.apiType === "Mongo") {
return <MongoIndexingPolicyComponent {...mongoIndexingPolicyComponentProps} />;
}
return undefined;

View File

@ -4,6 +4,7 @@ import React from "react";
import * as Constants from "../../../../Common/Constants";
import * as DataModels from "../../../../Contracts/DataModels";
import * as SharedConstants from "../../../../Shared/Constants";
import { updateUserContext } from "../../../../UserContext";
import Explorer from "../../../Explorer";
import { throughputUnit } from "../SettingsRenderUtils";
import { collection, container } from "../TestUtils";
@ -80,8 +81,8 @@ describe("ScaleComponent", () => {
it("autoScale enabled", () => {
const newContainer = new Explorer();
newContainer.databaseAccount({
updateUserContext({
databaseAccount: {
id: undefined,
name: undefined,
location: undefined,
@ -99,6 +100,7 @@ describe("ScaleComponent", () => {
},
],
},
},
});
const props = { ...baseProps, container: newContainer };
const scaleComponent = new ScaleComponent(props);

View File

@ -54,8 +54,7 @@ export class ScaleComponent extends React.Component<ScaleComponentProps> {
}
public isAutoScaleEnabled = (): boolean => {
const accountCapabilities: DataModels.Capability[] = this.props.container?.databaseAccount()?.properties
?.capabilities;
const accountCapabilities: DataModels.Capability[] = userContext?.databaseAccount?.properties?.capabilities;
const enableAutoScaleCapability =
accountCapabilities &&
accountCapabilities.find((capability: DataModels.Capability) => {
@ -170,7 +169,7 @@ export class ScaleComponent extends React.Component<ScaleComponentProps> {
private getThroughputInputComponent = (): JSX.Element => (
<ThroughputInputAutoPilotV3Component
databaseAccount={this.props.container.databaseAccount()}
databaseAccount={userContext?.databaseAccount}
databaseName={this.databaseId}
collectionName={this.collectionId}
throughput={this.props.throughput}
@ -199,8 +198,7 @@ export class ScaleComponent extends React.Component<ScaleComponentProps> {
);
private isFreeTierAccount(): boolean {
const databaseAccount = this.props.container?.databaseAccount();
return databaseAccount?.properties?.enableFreeTier;
return userContext?.databaseAccount?.properties?.enableFreeTier;
}
private getFreeTierInfoMessage(): JSX.Element {

View File

@ -422,7 +422,6 @@ exports[`SettingsComponent renders 1`] = `
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@ -1216,7 +1215,6 @@ exports[`SettingsComponent renders 1`] = `
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLeftPaneExpanded": [Function],
@ -1234,7 +1232,6 @@ exports[`SettingsComponent renders 1`] = `
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],
@ -1707,7 +1704,6 @@ exports[`SettingsComponent renders 1`] = `
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@ -2501,7 +2497,6 @@ exports[`SettingsComponent renders 1`] = `
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLeftPaneExpanded": [Function],
@ -2519,7 +2514,6 @@ exports[`SettingsComponent renders 1`] = `
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],
@ -3005,7 +2999,6 @@ exports[`SettingsComponent renders 1`] = `
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@ -3799,7 +3792,6 @@ exports[`SettingsComponent renders 1`] = `
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLeftPaneExpanded": [Function],
@ -3817,7 +3809,6 @@ exports[`SettingsComponent renders 1`] = `
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],
@ -4290,7 +4281,6 @@ exports[`SettingsComponent renders 1`] = `
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@ -5084,7 +5074,6 @@ exports[`SettingsComponent renders 1`] = `
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLeftPaneExpanded": [Function],
@ -5102,7 +5091,6 @@ exports[`SettingsComponent renders 1`] = `
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],

View File

@ -216,7 +216,7 @@ export class ThroughputInput extends React.Component<ThroughputInputProps, Throu
}
private getCostAcknowledgeText(): string {
const databaseAccount = userContext.databaseAccount;
const { databaseAccount } = userContext;
if (!databaseAccount || !databaseAccount.properties) {
return "";
}
@ -259,8 +259,8 @@ interface CostEstimateTextProps {
const CostEstimateText: React.FunctionComponent<CostEstimateTextProps> = (props: CostEstimateTextProps) => {
const { requestUnits, isAutoscale } = props;
const databaseAccount = userContext.databaseAccount;
if (!databaseAccount || !databaseAccount.properties) {
const { databaseAccount } = userContext;
if (!databaseAccount?.properties) {
return <></>;
}

View File

@ -80,7 +80,7 @@ export class ContainerSampleGenerator {
if (!queries || queries.length < 1) {
return;
}
const account = userContext.databaseAccount;
const { databaseAccount: account } = userContext;
const databaseId = collection.databaseId;
const gremlinClient = new GremlinClient();
gremlinClient.initialize({

View File

@ -31,7 +31,7 @@ import { ExplorerSettings } from "../Shared/ExplorerSettings";
import { Action, ActionModifiers } from "../Shared/Telemetry/TelemetryConstants";
import * as TelemetryProcessor from "../Shared/Telemetry/TelemetryProcessor";
import { ArcadiaResourceManager } from "../SparkClusterManager/ArcadiaResourceManager";
import { userContext } from "../UserContext";
import { updateUserContext, userContext } from "../UserContext";
import { getCollectionName } from "../Utils/APITypeUtils";
import { decryptJWTToken, getAuthorizationHeader } from "../Utils/AuthorizationUtils";
import { stringToBlob } from "../Utils/BlobUtils";
@ -109,18 +109,8 @@ export default class Explorer {
public refreshTreeTitle: ko.Observable<string>;
public collapsedResourceTreeWidth: number = ExplorerMetrics.CollapsedResourceTreeWidth;
/**
* @deprecated
* Use userContext.databaseAccount instead
* */
public databaseAccount: ko.Observable<DataModels.DatabaseAccount>;
public collectionCreationDefaults: ViewModels.CollectionCreationDefaults = SharedConstants.CollectionCreationDefaults;
public isFixedCollectionWithSharedThroughputSupported: ko.Computed<boolean>;
/**
* @deprecated
* Compare a string with userContext.apiType instead: userContext.apiType === "Mongo"
* */
public isEnableMongoCapabilityPresent: ko.Computed<boolean>;
public isServerlessEnabled: ko.Computed<boolean>;
public isAccountReady: ko.Observable<boolean>;
public canSaveQueries: ko.Computed<boolean>;
@ -231,7 +221,6 @@ export default class Explorer {
this.deleteDatabaseText = ko.observable<string>("Delete Database");
this.refreshTreeTitle = ko.observable<string>("Refresh collections");
this.databaseAccount = ko.observable<DataModels.DatabaseAccount>();
this.isAccountReady = ko.observable<boolean>(false);
this._isInitializingNotebooks = false;
this.arcadiaToken = ko.observable<string>();
@ -266,7 +255,7 @@ export default class Explorer {
async () => {
this.isNotebookEnabled(
userContext.authType !== AuthType.ResourceToken &&
((await this._containsDefaultNotebookWorkspace(this.databaseAccount())) ||
((await this._containsDefaultNotebookWorkspace(userContext.databaseAccount)) ||
userContext.features.enableNotebooks)
);
TelemetryProcessor.trace(Action.NotebookEnabled, ActionModifiers.Mark, {
@ -275,7 +264,7 @@ export default class Explorer {
});
if (this.isNotebookEnabled()) {
await this.initNotebooks(this.databaseAccount());
await this.initNotebooks(userContext.databaseAccount);
const workspaces = await this._getArcadiaWorkspaces();
this.arcadiaWorkspaces(workspaces);
} else if (this.notebookToImport) {
@ -377,36 +366,20 @@ export default class Explorer {
return true;
}
if (this.databaseAccount && !this.databaseAccount()) {
if (!userContext.databaseAccount) {
return false;
}
return this.isEnableMongoCapabilityPresent();
return userContext.apiType === "Mongo";
});
this.isServerlessEnabled = ko.computed(
() =>
this.databaseAccount &&
this.databaseAccount()?.properties?.capabilities?.find(
userContext.databaseAccount?.properties?.capabilities?.find(
(item) => item.name === Constants.CapabilityNames.EnableServerless
) !== undefined
);
this.isEnableMongoCapabilityPresent = ko.computed(() => {
const capabilities = this.databaseAccount && this.databaseAccount()?.properties?.capabilities;
if (!capabilities) {
return false;
}
for (let i = 0; i < capabilities.length; i++) {
if (typeof capabilities[i] === "object" && capabilities[i].name === Constants.CapabilityNames.EnableMongo) {
return true;
}
}
return false;
});
this.isHostedDataExplorerEnabled = ko.computed<boolean>(
() =>
configContext.platform === Platform.Portal &&
@ -672,11 +645,11 @@ export default class Explorer {
this.isSynapseLinkUpdating(true);
this._closeSynapseLinkModalDialog();
const resourceProviderClient = new ResourceProviderClientFactory().getOrCreate(this.databaseAccount().id);
const resourceProviderClient = new ResourceProviderClientFactory().getOrCreate(userContext.databaseAccount.id);
try {
const databaseAccount: DataModels.DatabaseAccount = await resourceProviderClient.patchAsync(
this.databaseAccount().id,
userContext.databaseAccount.id,
"2019-12-12",
{
properties: {
@ -687,7 +660,7 @@ export default class Explorer {
clearInProgressMessage();
logConsoleInfo("Enabled Azure Synapse Link for this account");
TelemetryProcessor.traceSuccess(Action.EnableAzureSynapseLink, {}, startTime);
this.databaseAccount(databaseAccount);
updateUserContext({ databaseAccount });
} catch (error) {
clearInProgressMessage();
logConsoleError(`Enabling Azure Synapse Link for this account failed. ${getErrorMessage(error)}`);
@ -1010,14 +983,14 @@ export default class Explorer {
}
private async ensureNotebookWorkspaceRunning() {
if (!this.databaseAccount()) {
if (!userContext.databaseAccount) {
return;
}
let clearMessage;
try {
const notebookWorkspace = await this.notebookWorkspaceManager.getNotebookWorkspaceAsync(
this.databaseAccount().id,
userContext.databaseAccount.id,
"default"
);
if (
@ -1027,7 +1000,7 @@ export default class Explorer {
notebookWorkspace.properties.status.toLowerCase() === "stopped"
) {
clearMessage = NotificationConsoleUtils.logConsoleProgress("Initializing notebook workspace");
await this.notebookWorkspaceManager.startNotebookWorkspaceAsync(this.databaseAccount().id, "default");
await this.notebookWorkspaceManager.startNotebookWorkspaceAsync(userContext.databaseAccount.id, "default");
}
} catch (error) {
handleError(error, "Explorer/ensureNotebookWorkspaceRunning", "Failed to initialize notebook workspace");
@ -1112,21 +1085,10 @@ export default class Explorer {
if (process.env.NODE_ENV === "development") {
sessionStorage.setItem("portalDataExplorerInitMessage", JSON.stringify(inputs));
}
const databaseAccount = inputs.databaseAccount || null;
if (inputs.defaultCollectionThroughput) {
this.collectionCreationDefaults = inputs.defaultCollectionThroughput;
}
this.databaseAccount(databaseAccount);
this.setFeatureFlagsFromFlights(inputs.flights);
TelemetryProcessor.traceSuccess(
Action.LoadDatabaseAccount,
{
dataExplorerArea: Constants.Areas.ResourceTree,
},
inputs.loadDatabaseAccountTimestamp
);
this.isAccountReady(true);
}
}
@ -1616,7 +1578,7 @@ export default class Explorer {
}
private async _refreshNotebooksEnabledStateForAccount(): Promise<void> {
const authType = userContext.authType;
const { databaseAccount, authType } = userContext;
if (
authType === AuthType.EncryptedToken ||
authType === AuthType.ResourceToken ||
@ -1626,7 +1588,6 @@ export default class Explorer {
return;
}
const databaseAccount = this.databaseAccount();
const firstWriteLocation =
databaseAccount?.properties?.writeLocations &&
databaseAccount?.properties?.writeLocations[0]?.locationName.toLowerCase();
@ -1665,9 +1626,8 @@ export default class Explorer {
}
public _refreshSparkEnabledStateForAccount = async (): Promise<void> => {
const subscriptionId = userContext.subscriptionId;
const { subscriptionId, authType } = userContext;
const armEndpoint = configContext.ARM_ENDPOINT;
const authType = userContext.authType;
if (!subscriptionId || !armEndpoint || authType === AuthType.EncryptedToken) {
// explorer is not aware of the database account yet
this.isSparkEnabledForAccount(false);
@ -1694,9 +1654,8 @@ export default class Explorer {
};
public _isAfecFeatureRegistered = async (featureName: string): Promise<boolean> => {
const subscriptionId = userContext.subscriptionId;
const { subscriptionId, authType } = userContext;
const armEndpoint = configContext.ARM_ENDPOINT;
const authType = userContext.authType;
if (!featureName || !subscriptionId || !armEndpoint || authType === AuthType.EncryptedToken) {
// explorer is not aware of the database account yet
return false;
@ -2008,7 +1967,7 @@ export default class Explorer {
}
public async handleOpenFileAction(path: string): Promise<void> {
if (this.isAccountReady() && !(await this._containsDefaultNotebookWorkspace(this.databaseAccount()))) {
if (this.isAccountReady() && !(await this._containsDefaultNotebookWorkspace(userContext.databaseAccount))) {
this.closeAllPanes();
this._openSetupNotebooksPaneForQuickstart();
}

View File

@ -9,6 +9,7 @@ import * as React from "react";
import { ReactAdapter } from "../../../Bindings/ReactBindingHandler";
import { StyleConstants } from "../../../Common/Constants";
import * as ViewModels from "../../../Contracts/ViewModels";
import { userContext } from "../../../UserContext";
import { CommandButtonComponentProps } from "../../Controls/CommandButton/CommandButtonComponent";
import Explorer from "../../Explorer";
import * as CommandBarComponentButtonFactory from "./CommandBarComponentButtonFactory";
@ -39,7 +40,7 @@ export class CommandBarComponentAdapter implements ReactAdapter {
container.isResourceTokenCollectionNodeSelected,
container.isHostedDataExplorerEnabled,
container.isSynapseLinkUpdating,
container.databaseAccount,
userContext?.databaseAccount,
this.isNotebookTabActive,
container.isServerlessEnabled,
];

View File

@ -239,21 +239,11 @@ function createOpenSynapseLinkDialogButton(container: Explorer): CommandButtonCo
return undefined;
}
if (
container.databaseAccount &&
container.databaseAccount() &&
container.databaseAccount().properties &&
container.databaseAccount().properties.enableAnalyticalStorage
) {
if (userContext?.databaseAccount?.properties?.enableAnalyticalStorage) {
return undefined;
}
const capabilities =
(container.databaseAccount &&
container.databaseAccount() &&
container.databaseAccount().properties &&
container.databaseAccount().properties.capabilities) ||
[];
const capabilities = userContext?.databaseAccount?.properties?.capabilities || [];
if (capabilities.some((capability) => capability.name === Constants.CapabilityNames.EnableStorageAnalytics)) {
return undefined;
}

View File

@ -5,6 +5,7 @@ import * as Constants from "../../Common/Constants";
import { getErrorMessage } from "../../Common/ErrorHandlingUtils";
import * as Logger from "../../Common/Logger";
import * as DataModels from "../../Contracts/DataModels";
import { userContext } from "../../UserContext";
import { logConsoleProgress } from "../../Utils/NotificationConsoleUtils";
export class NotebookContainerClient {
@ -130,14 +131,15 @@ export class NotebookContainerClient {
private async recreateNotebookWorkspaceAsync(): Promise<void> {
const explorer = window.dataExplorer;
if (!explorer || !explorer.databaseAccount() || !explorer.databaseAccount().id) {
const { databaseAccount } = userContext;
if (!databaseAccount?.id) {
throw new Error("DataExplorer not initialized");
}
const notebookWorkspaceManager = explorer.notebookWorkspaceManager;
try {
await notebookWorkspaceManager.deleteNotebookWorkspaceAsync(explorer.databaseAccount().id, "default");
await notebookWorkspaceManager.createNotebookWorkspaceAsync(explorer.databaseAccount().id, "default");
await notebookWorkspaceManager.deleteNotebookWorkspaceAsync(databaseAccount?.id, "default");
await notebookWorkspaceManager.createNotebookWorkspaceAsync(databaseAccount?.id, "default");
} catch (error) {
Logger.logError(getErrorMessage(error), "NotebookContainerClient/recreateNotebookWorkspaceAsync");
return Promise.reject(error);

View File

@ -17,6 +17,7 @@ import { GitHubOAuthService } from "../../GitHub/GitHubOAuthService";
import { JunoClient } from "../../Juno/JunoClient";
import { Action, ActionModifiers } from "../../Shared/Telemetry/TelemetryConstants";
import * as TelemetryProcessor from "../../Shared/Telemetry/TelemetryProcessor";
import { userContext } from "../../UserContext";
import { getFullName } from "../../Utils/UserUtils";
import Explorer from "../Explorer";
import { ContextualPaneBase } from "../Panes/ContextualPaneBase";
@ -56,7 +57,7 @@ export default class NotebookManager {
public initialize(params: NotebookManagerOptions): void {
this.params = params;
this.junoClient = new JunoClient(this.params.container.databaseAccount);
this.junoClient = new JunoClient();
this.gitHubOAuthService = new GitHubOAuthService(this.junoClient);
this.gitHubClient = new GitHubClient(this.onGitHubClientError);
@ -73,7 +74,7 @@ export default class NotebookManager {
this.notebookClient = new NotebookContainerClient(
this.params.container.notebookServerInfo,
() => this.params.container.initNotebooks(this.params.container.databaseAccount()),
() => this.params.container.initNotebooks(userContext?.databaseAccount),
(update: MemoryUsageInfo) => this.params.container.memoryUsageInfo(update)
);

View File

@ -4,9 +4,6 @@ import { updateUserContext } from "../../UserContext";
import Explorer from "../Explorer";
import AddCollectionPane from "./AddCollectionPane";
describe("Add Collection Pane", () => {
describe("isValid()", () => {
let explorer: Explorer;
const mockDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
@ -37,10 +34,8 @@ describe("Add Collection Pane", () => {
type: undefined,
};
beforeEach(() => {
explorer = new Explorer();
});
describe("Add Collection Pane", () => {
describe("isValid()", () => {
it("should be true if graph API and partition key is not /id nor /label", () => {
updateUserContext({
databaseAccount: {
@ -49,6 +44,7 @@ describe("Add Collection Pane", () => {
},
} as DatabaseAccount,
});
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
addCollectionPane.partitionKey("/blah");
expect(addCollectionPane.isValid()).toBe(true);
@ -62,6 +58,7 @@ describe("Add Collection Pane", () => {
},
} as DatabaseAccount,
});
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
addCollectionPane.partitionKey("/id");
expect(addCollectionPane.isValid()).toBe(false);
@ -78,6 +75,7 @@ describe("Add Collection Pane", () => {
},
} as DatabaseAccount,
});
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
addCollectionPane.partitionKey("/id");
@ -88,7 +86,8 @@ describe("Add Collection Pane", () => {
});
it("should display free tier text in upsell messaging", () => {
explorer.databaseAccount(mockFreeTierDatabaseAccount);
updateUserContext({ databaseAccount: mockFreeTierDatabaseAccount });
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
expect(addCollectionPane.isFreeTierAccount()).toBe(true);
expect(addCollectionPane.upsellMessage()).toContain("With free tier");
@ -97,7 +96,8 @@ describe("Add Collection Pane", () => {
});
it("should display standard texr in upsell messaging", () => {
explorer.databaseAccount(mockDatabaseAccount);
updateUserContext({ databaseAccount: mockDatabaseAccount });
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
expect(addCollectionPane.isFreeTierAccount()).toBe(false);
expect(addCollectionPane.upsellMessage()).toContain("Start at");

View File

@ -108,6 +108,8 @@ export default class AddCollectionPane extends ContextualPaneBase {
this.collectionWithThroughputInShared = ko.observable<boolean>(false);
this.databaseIds = ko.observableArray<string>();
this.uniqueKeys = ko.observableArray<DynamicListItem>();
this.isSharedAutoPilotSelected = ko.observable<boolean>();
this.isAutoPilotSelected = ko.observable<boolean>();
if (this.container) {
this.container.databases.subscribe((newDatabases: ViewModels.Database[]) => {
@ -177,7 +179,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
return "";
}
const account = this.container.databaseAccount();
const { databaseAccount: account } = userContext;
if (!account) {
return "";
}
@ -235,7 +237,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
return "";
}
const account = this.container.databaseAccount();
const { databaseAccount: account } = userContext;
if (!account) {
return "";
}
@ -523,10 +525,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
});
this.isFreeTierAccount = ko.computed<boolean>(() => {
const databaseAccount = this.container && this.container.databaseAccount && this.container.databaseAccount();
const isFreeTierAccount =
databaseAccount && databaseAccount.properties && databaseAccount.properties.enableFreeTier;
return isFreeTierAccount;
return userContext?.databaseAccount?.properties?.enableFreeTier;
});
this.showUpsellMessage = ko.pureComputed(() => {
@ -596,9 +595,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
});
this._isSynapseLinkEnabled = ko.computed(() => {
const databaseAccount =
(this.container && this.container.databaseAccount && this.container.databaseAccount()) ||
({} as DataModels.DatabaseAccount);
const databaseAccount = userContext?.databaseAccount || ({} as DataModels.DatabaseAccount);
const properties = databaseAccount.properties || ({} as DataModels.DatabaseAccountExtendedProperties);
// TODO: remove check for capability once all accounts have been migrated
@ -641,7 +638,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
}
public getSharedThroughputDefault(): boolean {
const subscriptionType = userContext.subscriptionType;
const { subscriptionType } = userContext;
if (subscriptionType === SubscriptionType.EA || this.container.isServerlessEnabled()) {
return false;
}
@ -809,7 +806,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
let indexingPolicy: DataModels.IndexingPolicy;
let createMongoWildcardIndex: boolean;
// todo - remove mongo indexing policy ticket # 616274
if (userContext.apiType === "Mongo" && this.container.isEnableMongoCapabilityPresent()) {
if (userContext.apiType === "Mongo") {
createMongoWildcardIndex = this.shouldCreateMongoWildcardIndex();
} else if (this.showIndexingOptionsForSharedThroughput()) {
if (this.useIndexingForSharedThroughput()) {

View File

@ -525,7 +525,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
}}
>
<Stack className="panelGroupSpacing" id="collapsibleSectionContent">
{this.props.explorer.isEnableMongoCapabilityPresent() && (
{userContext.databaseAccount.properties.capabilities.find((c) => c.name === "EnableMongo") && (
<Stack className="panelGroupSpacing">
<Stack horizontal>
<span className="mandatoryStar">*&nbsp;</span>
@ -841,7 +841,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
}
private isSynapseLinkEnabled(): boolean {
const properties = userContext.databaseAccount?.properties;
const { properties } = userContext.databaseAccount;
if (!properties) {
return false;

View File

@ -5,9 +5,6 @@ import { updateUserContext } from "../../UserContext";
import Explorer from "../Explorer";
import AddDatabasePane from "./AddDatabasePane";
describe("Add Database Pane", () => {
describe("getSharedThroughputDefault()", () => {
let explorer: Explorer;
const mockDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
@ -38,14 +35,13 @@ describe("Add Database Pane", () => {
type: undefined,
};
beforeEach(() => {
explorer = new Explorer();
});
describe("Add Database Pane", () => {
describe("getSharedThroughputDefault()", () => {
it("should be true if subscription type is Benefits", () => {
updateUserContext({
subscriptionType: SubscriptionType.Benefits,
});
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.getSharedThroughputDefault()).toBe(true);
});
@ -54,6 +50,7 @@ describe("Add Database Pane", () => {
updateUserContext({
subscriptionType: SubscriptionType.EA,
});
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.getSharedThroughputDefault()).toBe(false);
});
@ -62,6 +59,7 @@ describe("Add Database Pane", () => {
updateUserContext({
subscriptionType: SubscriptionType.Free,
});
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.getSharedThroughputDefault()).toBe(true);
});
@ -70,6 +68,7 @@ describe("Add Database Pane", () => {
updateUserContext({
subscriptionType: SubscriptionType.Internal,
});
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.getSharedThroughputDefault()).toBe(true);
});
@ -78,12 +77,14 @@ describe("Add Database Pane", () => {
updateUserContext({
subscriptionType: SubscriptionType.PAYG,
});
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.getSharedThroughputDefault()).toBe(true);
});
it("should display free tier text in upsell messaging", () => {
explorer.databaseAccount(mockFreeTierDatabaseAccount);
updateUserContext({ databaseAccount: mockFreeTierDatabaseAccount });
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.isFreeTierAccount()).toBe(true);
expect(addDatabasePane.upsellMessage()).toContain("With free tier");
@ -92,7 +93,8 @@ describe("Add Database Pane", () => {
});
it("should display standard texr in upsell messaging", () => {
explorer.databaseAccount(mockDatabaseAccount);
updateUserContext({ databaseAccount: mockDatabaseAccount });
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.isFreeTierAccount()).toBe(false);
expect(addDatabasePane.upsellMessage()).toContain("Start at");

View File

@ -112,18 +112,13 @@ export default class AddDatabasePane extends ContextualPaneBase {
return "";
}
const account = this.container.databaseAccount();
const { databaseAccount: account } = userContext;
if (!account) {
return "";
}
const regions =
(account &&
account.properties &&
account.properties.readLocations &&
account.properties.readLocations.length) ||
1;
const multimaster = (account && account.properties && account.properties.enableMultipleWriteLocations) || false;
const regions = account?.properties?.readLocations?.length || 1;
const multimaster = account?.properties?.enableMultipleWriteLocations || false;
let estimatedSpendAcknowledge: string;
let estimatedSpend: string;
@ -175,10 +170,7 @@ export default class AddDatabasePane extends ContextualPaneBase {
});
this.isFreeTierAccount = ko.computed<boolean>(() => {
const databaseAccount = this.container && this.container.databaseAccount && this.container.databaseAccount();
const isFreeTierAccount =
databaseAccount && databaseAccount.properties && databaseAccount.properties.enableFreeTier;
return isFreeTierAccount;
return userContext?.databaseAccount?.properties?.enableFreeTier;
});
this.showUpsellMessage = ko.pureComputed(() => {
@ -336,7 +328,7 @@ export default class AddDatabasePane extends ContextualPaneBase {
}
public getSharedThroughputDefault(): boolean {
const subscriptionType = userContext.subscriptionType;
const { subscriptionType } = userContext;
if (subscriptionType === SubscriptionType.EA || this.container.isServerlessEnabled()) {
return false;

View File

@ -78,10 +78,7 @@ export default class CassandraAddCollectionPane extends ContextualPaneBase {
this.canExceedMaximumValue = ko.pureComputed(() => this.container.canExceedMaximumValue());
this.isFreeTierAccount = ko.computed<boolean>(() => {
const databaseAccount = this.container && this.container.databaseAccount && this.container.databaseAccount();
const isFreeTierAccount =
databaseAccount && databaseAccount.properties && databaseAccount.properties.enableFreeTier;
return isFreeTierAccount;
return userContext?.databaseAccount?.properties?.enableFreeTier;
});
this.tableId = ko.observable<string>("");
@ -116,7 +113,7 @@ export default class CassandraAddCollectionPane extends ContextualPaneBase {
this.resetData();
this.requestUnitsUsageCostDedicated = ko.computed(() => {
const account = this.container.databaseAccount();
const { databaseAccount: account } = userContext;
if (!account) {
return "";
}
@ -165,18 +162,13 @@ export default class CassandraAddCollectionPane extends ContextualPaneBase {
});
this.requestUnitsUsageCostShared = ko.computed(() => {
const account = this.container.databaseAccount();
const { databaseAccount: account } = userContext;
if (!account) {
return "";
}
const regions =
(account &&
account.properties &&
account.properties.readLocations &&
account.properties.readLocations.length) ||
1;
const multimaster = (account && account.properties && account.properties.enableMultipleWriteLocations) || false;
const regions = account?.properties?.readLocations?.length || 1;
const multimaster = account?.properties?.enableMultipleWriteLocations || false;
let estimatedSpend: string;
let estimatedSharedSpendAcknowledge: string;
if (!this.isSharedAutoPilotSelected()) {
@ -365,18 +357,19 @@ export default class CassandraAddCollectionPane extends ContextualPaneBase {
createTableQuery: createTableQuery,
};
const startKey: number = TelemetryProcessor.traceStart(Action.CreateCollection, addCollectionPaneStartMessage);
const { databaseAccount } = userContext;
if (toCreateKeyspace) {
createTableAndKeyspacePromise = (<CassandraAPIDataClient>this.container.tableDataClient).createTableAndKeyspace(
this.container.databaseAccount().properties.cassandraEndpoint,
this.container.databaseAccount().id,
databaseAccount?.properties.cassandraEndpoint,
databaseAccount?.id,
this.container,
createTableQuery,
createKeyspaceQuery
);
} else {
createTableAndKeyspacePromise = (<CassandraAPIDataClient>this.container.tableDataClient).createTableAndKeyspace(
this.container.databaseAccount().properties.cassandraEndpoint,
this.container.databaseAccount().id,
databaseAccount?.properties.cassandraEndpoint,
databaseAccount?.id,
this.container,
createTableQuery
);

View File

@ -1071,7 +1071,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
>
<button
aria-label="Close pane"
className="ms-Button ms-Button--icon closePaneBtn root-140"
className="ms-Button ms-Button--icon closePaneBtn root-172"
data-is-focusable={true}
onClick={[Function]}
onKeyDown={[Function]}
@ -1084,16 +1084,16 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-141"
className="ms-Button-flexContainer flexContainer-173"
data-automationid="splitbuttonprimary"
>
<Component
className="ms-Button-icon icon-143"
className="ms-Button-icon icon-175"
iconName="Cancel"
>
<i
aria-hidden={true}
className="ms-Icon root-37 css-148 ms-Button-icon icon-143"
className="ms-Icon root-37 css-180 ms-Button-icon icon-175"
data-icon-name="Cancel"
role="presentation"
style={
@ -1163,7 +1163,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
variant="small"
>
<span
className="css-149"
className="css-181"
>
Confirm by typing the
container
@ -1468,18 +1468,18 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
value=""
>
<div
className="ms-TextField root-151"
className="ms-TextField root-183"
>
<div
className="ms-TextField-wrapper"
>
<div
className="ms-TextField-fieldGroup fieldGroup-152"
className="ms-TextField-fieldGroup fieldGroup-184"
>
<input
aria-invalid={false}
autoFocus={true}
className="ms-TextField-field field-153"
className="ms-TextField-field field-185"
id="confirmCollectionId"
onBlur={[Function]}
onChange={[Function]}
@ -1502,7 +1502,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
variant="small"
>
<span
className="css-162"
className="css-194"
>
Help us improve Azure Cosmos DB!
</span>
@ -1512,7 +1512,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
variant="small"
>
<span
className="css-162"
className="css-194"
>
What is the reason why you are deleting this
container
@ -1819,17 +1819,17 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
value=""
>
<div
className="ms-TextField ms-TextField--multiline root-151"
className="ms-TextField ms-TextField--multiline root-183"
>
<div
className="ms-TextField-wrapper"
>
<div
className="ms-TextField-fieldGroup fieldGroup-163"
className="ms-TextField-fieldGroup fieldGroup-195"
>
<textarea
aria-invalid={false}
className="ms-TextField-field field-164"
className="ms-TextField-field field-196"
id="deleteCollectionFeedbackInput"
onBlur={[Function]}
onChange={[Function]}
@ -3563,7 +3563,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
>
<button
aria-label="Submit"
className="ms-Button ms-Button--primary genericPaneSubmitBtn root-166"
className="ms-Button ms-Button--primary genericPaneSubmitBtn root-198"
data-is-focusable={true}
onClick={[Function]}
onKeyDown={[Function]}
@ -3581,14 +3581,14 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-141"
className="ms-Button-flexContainer flexContainer-173"
data-automationid="splitbuttonprimary"
>
<span
className="ms-Button-textContainer textContainer-142"
className="ms-Button-textContainer textContainer-174"
>
<span
className="ms-Button-label label-167"
className="ms-Button-label label-199"
id="id__9"
key="id__9"
>

View File

@ -1062,7 +1062,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<button
aria-label="Close pane"
className="ms-Button ms-Button--icon closePaneBtn root-40"
className="ms-Button ms-Button--icon closePaneBtn root-72"
data-is-focusable={true}
onClick={[Function]}
onKeyDown={[Function]}
@ -1075,16 +1075,16 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-41"
className="ms-Button-flexContainer flexContainer-73"
data-automationid="splitbuttonprimary"
>
<Component
className="ms-Button-icon icon-43"
className="ms-Button-icon icon-75"
iconName="Cancel"
>
<i
aria-hidden={true}
className="ms-Icon root-37 css-48 ms-Button-icon icon-43"
className="ms-Icon root-37 css-80 ms-Button-icon icon-75"
data-icon-name="Cancel"
role="presentation"
style={
@ -1429,7 +1429,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
}
>
<label
className="ms-Label root-49"
className="ms-Label root-81"
>
Partition key value
</label>
@ -1439,7 +1439,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
horizontal={true}
>
<div
className="ms-Stack css-50"
className="ms-Stack css-82"
>
<StyledWithResponsiveMode
key=".0:$.0"
@ -2336,7 +2336,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
}
>
<label
className="ms-Label ms-Dropdown-label root-67"
className="ms-Label ms-Dropdown-label root-99"
id="Dropdown3-label"
>
Key
@ -2348,7 +2348,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
aria-expanded="false"
aria-haspopup="listbox"
aria-labelledby="Dropdown3-label Dropdown3-option"
className="ms-Dropdown dropdown-51"
className="ms-Dropdown dropdown-83"
data-is-focusable={true}
id="Dropdown3"
onBlur={[Function]}
@ -2368,23 +2368,23 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
aria-posinset={1}
aria-selected={true}
aria-setsize={2}
className="ms-Dropdown-title title-52"
className="ms-Dropdown-title title-84"
id="Dropdown3-option"
role="option"
>
String
</span>
<span
className="ms-Dropdown-caretDownWrapper caretDownWrapper-53"
className="ms-Dropdown-caretDownWrapper caretDownWrapper-85"
>
<StyledIconBase
aria-hidden={true}
className="ms-Dropdown-caretDown caretDown-54"
className="ms-Dropdown-caretDown caretDown-86"
iconName="ChevronDown"
>
<IconBase
aria-hidden={true}
className="ms-Dropdown-caretDown caretDown-54"
className="ms-Dropdown-caretDown caretDown-86"
iconName="ChevronDown"
styles={[Function]}
theme={
@ -2663,7 +2663,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<i
aria-hidden={true}
className="ms-Dropdown-caretDown caretDown-68"
className="ms-Dropdown-caretDown caretDown-100"
data-icon-name="ChevronDown"
>
@ -2969,7 +2969,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
validateOnLoad={true}
>
<div
className="ms-TextField root-70"
className="ms-TextField root-102"
>
<div
className="ms-TextField-wrapper"
@ -3258,7 +3258,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
}
>
<label
className="ms-Label root-49"
className="ms-Label root-81"
htmlFor="confirmCollectionId"
id="TextFieldLabel6"
>
@ -3267,13 +3267,13 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
</LabelBase>
</StyledLabelBase>
<div
className="ms-TextField-fieldGroup fieldGroup-71"
className="ms-TextField-fieldGroup fieldGroup-103"
>
<input
aria-invalid={false}
aria-labelledby="TextFieldLabel6"
autoFocus={true}
className="ms-TextField-field field-72"
className="ms-TextField-field field-104"
id="confirmCollectionId"
onBlur={[Function]}
onChange={[Function]}
@ -3581,7 +3581,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
}
>
<label
className="ms-Label root-49"
className="ms-Label root-81"
>
Enter input parameters (if any)
</label>
@ -3591,7 +3591,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
horizontal={true}
>
<div
className="ms-Stack css-50"
className="ms-Stack css-82"
>
<StyledWithResponsiveMode
key=".0:$.0"
@ -4488,7 +4488,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
}
>
<label
className="ms-Label ms-Dropdown-label root-67"
className="ms-Label ms-Dropdown-label root-99"
id="Dropdown7-label"
>
Key
@ -4500,7 +4500,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
aria-expanded="false"
aria-haspopup="listbox"
aria-labelledby="Dropdown7-label Dropdown7-option"
className="ms-Dropdown dropdown-51"
className="ms-Dropdown dropdown-83"
data-is-focusable={true}
id="Dropdown7"
onBlur={[Function]}
@ -4520,23 +4520,23 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
aria-posinset={1}
aria-selected={true}
aria-setsize={2}
className="ms-Dropdown-title title-52"
className="ms-Dropdown-title title-84"
id="Dropdown7-option"
role="option"
>
String
</span>
<span
className="ms-Dropdown-caretDownWrapper caretDownWrapper-53"
className="ms-Dropdown-caretDownWrapper caretDownWrapper-85"
>
<StyledIconBase
aria-hidden={true}
className="ms-Dropdown-caretDown caretDown-54"
className="ms-Dropdown-caretDown caretDown-86"
iconName="ChevronDown"
>
<IconBase
aria-hidden={true}
className="ms-Dropdown-caretDown caretDown-54"
className="ms-Dropdown-caretDown caretDown-86"
iconName="ChevronDown"
styles={[Function]}
theme={
@ -4815,7 +4815,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<i
aria-hidden={true}
className="ms-Dropdown-caretDown caretDown-68"
className="ms-Dropdown-caretDown caretDown-100"
data-icon-name="ChevronDown"
>
@ -5123,7 +5123,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
value=""
>
<div
className="ms-TextField root-70"
className="ms-TextField root-102"
>
<div
className="ms-TextField-wrapper"
@ -5412,7 +5412,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
}
>
<label
className="ms-Label root-49"
className="ms-Label root-81"
htmlFor="confirmCollectionId"
id="TextFieldLabel10"
>
@ -5421,13 +5421,13 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
</LabelBase>
</StyledLabelBase>
<div
className="ms-TextField-fieldGroup fieldGroup-71"
className="ms-TextField-fieldGroup fieldGroup-103"
>
<input
aria-invalid={false}
aria-labelledby="TextFieldLabel10"
autoFocus={true}
className="ms-TextField-field field-72"
className="ms-TextField-field field-104"
id="confirmCollectionId"
onBlur={[Function]}
onChange={[Function]}
@ -5735,7 +5735,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
width={20}
>
<div
className="ms-Image addRemoveIconLabel root-81"
className="ms-Image addRemoveIconLabel root-113"
style={
Object {
"height": 30,
@ -5745,7 +5745,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<img
alt="Delete param"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-82"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-114"
id="deleteparam"
key="fabricImage"
onClick={[Function]}
@ -6050,7 +6050,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
width={20}
>
<div
className="ms-Image addRemoveIconLabel root-81"
className="ms-Image addRemoveIconLabel root-113"
style={
Object {
"height": 30,
@ -6060,7 +6060,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<img
alt="Add param"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-82"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-114"
id="addparam"
key="fabricImage"
onClick={[Function]}
@ -6079,7 +6079,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
onClick={[Function]}
>
<div
className="ms-Stack css-50"
className="ms-Stack css-82"
onClick={[Function]}
>
<StyledImageBase
@ -6371,7 +6371,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
width={20}
>
<div
className="ms-Image root-81"
className="ms-Image root-113"
style={
Object {
"height": 30,
@ -6381,7 +6381,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<img
alt="Add param"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-82"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-114"
key="fabricImage"
onError={[Function]}
onLoad={[Function]}
@ -6395,7 +6395,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
key=".0:$.1"
>
<span
className="addNewParamStyle css-83"
className="addNewParamStyle css-115"
>
Add New Param
</span>
@ -8121,7 +8121,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<button
aria-label="Submit"
className="ms-Button ms-Button--primary genericPaneSubmitBtn root-84"
className="ms-Button ms-Button--primary genericPaneSubmitBtn root-116"
data-is-focusable={true}
onClick={[Function]}
onKeyDown={[Function]}
@ -8139,14 +8139,14 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-41"
className="ms-Button-flexContainer flexContainer-73"
data-automationid="splitbuttonprimary"
>
<span
className="ms-Button-textContainer textContainer-42"
className="ms-Button-textContainer textContainer-74"
>
<span
className="ms-Button-label label-85"
className="ms-Button-label label-117"
id="id__11"
key="id__11"
>

View File

@ -411,7 +411,6 @@ exports[`GitHub Repos Panel should render Default properly 1`] = `
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@ -1205,7 +1204,6 @@ exports[`GitHub Repos Panel should render Default properly 1`] = `
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLeftPaneExpanded": [Function],
@ -1223,7 +1221,6 @@ exports[`GitHub Repos Panel should render Default properly 1`] = `
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],

View File

@ -1704,7 +1704,7 @@ exports[`Setup Notebooks Panel should render Default properly 1`] = `
>
<button
aria-label="Complete setup"
className="ms-Button ms-Button--primary btncreatecoll1 btnSetupQueries root-40"
className="ms-Button ms-Button--primary btncreatecoll1 btnSetupQueries root-72"
data-is-focusable={true}
id="completeSetupBtn"
onClick={[Function]}
@ -1716,14 +1716,14 @@ exports[`Setup Notebooks Panel should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-41"
className="ms-Button-flexContainer flexContainer-73"
data-automationid="splitbuttonprimary"
>
<span
className="ms-Button-textContainer textContainer-42"
className="ms-Button-textContainer textContainer-74"
>
<span
className="ms-Button-label label-44"
className="ms-Button-label label-76"
id="id__0"
key="id__0"
>

View File

@ -401,7 +401,6 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@ -1195,7 +1194,6 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLeftPaneExpanded": [Function],
@ -1213,7 +1211,6 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],

View File

@ -1066,7 +1066,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
>
<button
aria-label="Close pane"
className="ms-Button ms-Button--icon closePaneBtn root-40"
className="ms-Button ms-Button--icon closePaneBtn root-72"
data-is-focusable={true}
onClick={[Function]}
onKeyDown={[Function]}
@ -1079,16 +1079,16 @@ exports[`Table query select Panel should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-41"
className="ms-Button-flexContainer flexContainer-73"
data-automationid="splitbuttonprimary"
>
<Component
className="ms-Button-icon icon-43"
className="ms-Button-icon icon-75"
iconName="Cancel"
>
<i
aria-hidden={true}
className="ms-Icon root-37 css-48 ms-Button-icon icon-43"
className="ms-Icon root-37 css-80 ms-Button-icon icon-75"
data-icon-name="Cancel"
role="presentation"
style={
@ -1148,7 +1148,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
>
<Text>
<span
className="css-49"
className="css-81"
>
Select the columns that you want to query.
</span>
@ -1444,14 +1444,14 @@ exports[`Table query select Panel should render Default properly 1`] = `
}
>
<div
className="ms-Checkbox is-checked is-enabled root-50"
className="ms-Checkbox is-checked is-enabled root-82"
>
<Component />
<input
aria-checked="true"
aria-label="Available Columns"
checked={true}
className="input-51"
className="input-83"
id="availableCheckbox"
onBlur={[Function]}
onChange={[Function]}
@ -1459,18 +1459,18 @@ exports[`Table query select Panel should render Default properly 1`] = `
type="checkbox"
/>
<label
className="ms-Checkbox-label label-52"
className="ms-Checkbox-label label-84"
htmlFor="availableCheckbox"
>
<div
className="ms-Checkbox-checkbox checkbox-53"
className="ms-Checkbox-checkbox checkbox-85"
>
<StyledIconBase
className="ms-Checkbox-checkmark checkmark-54"
className="ms-Checkbox-checkmark checkmark-86"
iconName="CheckMark"
>
<IconBase
className="ms-Checkbox-checkmark checkmark-54"
className="ms-Checkbox-checkmark checkmark-86"
iconName="CheckMark"
styles={[Function]}
theme={
@ -1749,7 +1749,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
>
<i
aria-hidden={true}
className="ms-Checkbox-checkmark checkmark-56"
className="ms-Checkbox-checkmark checkmark-88"
data-icon-name="CheckMark"
>
@ -1759,7 +1759,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
</div>
<span
aria-hidden="true"
className="ms-Checkbox-text text-55"
className="ms-Checkbox-text text-87"
>
Available Columns
</span>
@ -2056,7 +2056,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
}
>
<div
className="ms-Checkbox is-checked is-enabled root-50"
className="ms-Checkbox is-checked is-enabled root-82"
>
<Component />
<input
@ -2064,7 +2064,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
aria-disabled={false}
aria-label=""
checked={true}
className="input-51"
className="input-83"
disabled={false}
id="checkbox-3"
onBlur={[Function]}
@ -2073,18 +2073,18 @@ exports[`Table query select Panel should render Default properly 1`] = `
type="checkbox"
/>
<label
className="ms-Checkbox-label label-52"
className="ms-Checkbox-label label-84"
htmlFor="checkbox-3"
>
<div
className="ms-Checkbox-checkbox checkbox-53"
className="ms-Checkbox-checkbox checkbox-85"
>
<StyledIconBase
className="ms-Checkbox-checkmark checkmark-54"
className="ms-Checkbox-checkmark checkmark-86"
iconName="CheckMark"
>
<IconBase
className="ms-Checkbox-checkmark checkmark-54"
className="ms-Checkbox-checkmark checkmark-86"
iconName="CheckMark"
styles={[Function]}
theme={
@ -2363,7 +2363,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
>
<i
aria-hidden={true}
className="ms-Checkbox-checkmark checkmark-56"
className="ms-Checkbox-checkmark checkmark-88"
data-icon-name="CheckMark"
>
@ -4095,7 +4095,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
>
<button
aria-label="Submit"
className="ms-Button ms-Button--primary genericPaneSubmitBtn root-63"
className="ms-Button ms-Button--primary genericPaneSubmitBtn root-95"
data-is-focusable={true}
onClick={[Function]}
onKeyDown={[Function]}
@ -4113,14 +4113,14 @@ exports[`Table query select Panel should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-41"
className="ms-Button-flexContainer flexContainer-73"
data-automationid="splitbuttonprimary"
>
<span
className="ms-Button-textContainer textContainer-42"
className="ms-Button-textContainer textContainer-74"
>
<span
className="ms-Button-label label-64"
className="ms-Button-label label-96"
id="id__4"
key="id__4"
>

View File

@ -955,11 +955,11 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
<Portal
containerInfo={
<div
class="ms-Layer ms-Layer--fixed root-54"
class="ms-Layer ms-Layer--fixed root-86"
data-portal-element="true"
>
<div
class="ms-Fabric ms-Layer-content content-56"
class="ms-Fabric ms-Layer-content content-88"
>
<div
aria-labelledby="Panel0-headerText"
@ -970,14 +970,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
>
<div
aria-hidden="false"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-42"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-74"
style="height: 736px;"
>
<div
class="ms-Overlay overlay-58"
class="ms-Overlay overlay-90"
/>
<div
class="ms-Panel-main main-44"
class="ms-Panel-main main-76"
style="width: 700px;"
>
<div
@ -987,18 +987,18 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
tabindex="0"
/>
<div
class="ms-Panel-commands commands-45"
class="ms-Panel-commands commands-77"
data-is-visible="true"
>
<div
class="ms-Panel-navigation navigation-46"
class="ms-Panel-navigation navigation-78"
>
<div
class="ms-Panel-header header-48"
class="ms-Panel-header header-80"
>
<div
aria-level="1"
class="ms-Panel-headerText panelHeader headerText-49"
class="ms-Panel-headerText panelHeader headerText-81"
id="Panel0-headerText"
role="heading"
>
@ -1007,19 +1007,19 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
</div>
<button
aria-label="Close"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-59"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-91"
data-is-focusable="true"
data-is-visible="true"
title="Close"
type="button"
>
<span
class="ms-Button-flexContainer flexContainer-60"
class="ms-Button-flexContainer flexContainer-92"
data-automationid="splitbuttonprimary"
>
<i
aria-hidden="true"
class="ms-Icon root-37 css-67 ms-Button-icon icon-62"
class="ms-Icon root-37 css-99 ms-Button-icon icon-94"
data-icon-name="Cancel"
role="presentation"
style="font-family: \\"FabricMDL2Icons\\";"
@ -1031,14 +1031,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
</div>
</div>
<div
class="ms-Panel-contentInner contentInner-47"
class="ms-Panel-contentInner contentInner-79"
>
<div
class="ms-Panel-scrollableContent scrollableContent-50"
class="ms-Panel-scrollableContent scrollableContent-82"
data-is-scrollable="true"
>
<div
class="ms-Panel-content content-51"
class="ms-Panel-content content-83"
>
<form
class="panelFormWrapper"
@ -1050,20 +1050,20 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
class="panelMainContent"
>
<div
class="ms-Stack addButtonEntiy css-68"
class="ms-Stack addButtonEntiy css-100"
>
<div
class="ms-Image root-69"
class="ms-Image root-101"
style="width: 16px; height: 30px;"
>
<img
alt="Add Entity"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-70"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-102"
src=""
/>
</div>
<span
class="addNewParamStyle css-71"
class="addNewParamStyle css-103"
>
Add Property
</span>
@ -1101,7 +1101,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
}
>
<StyledFabricBase
className="ms-Layer-content content-55"
className="ms-Layer-content content-87"
onBlur={[Function]}
onChange={[Function]}
onClick={[Function]}
@ -1135,7 +1135,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
onTouchStart={[Function]}
>
<FabricBase
className="ms-Layer-content content-55"
className="ms-Layer-content content-87"
onBlur={[Function]}
onChange={[Function]}
onClick={[Function]}
@ -1443,7 +1443,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
}
>
<div
className="ms-Fabric ms-Layer-content content-56"
className="ms-Fabric ms-Layer-content content-88"
onBlur={[Function]}
onChange={[Function]}
onClick={[Function]}
@ -1498,7 +1498,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
>
<div
aria-hidden={false}
className="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-42"
className="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-74"
style={
Object {
"height": "736px",
@ -1507,13 +1507,13 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
>
<StyledOverlayBase
allowTouchBodyScroll={false}
className="overlay-43"
className="overlay-75"
isDarkThemed={false}
onClick={[Function]}
>
<OverlayBase
allowTouchBodyScroll={false}
className="overlay-43"
className="overlay-75"
isDarkThemed={false}
onClick={[Function]}
styles={[Function]}
@ -1792,13 +1792,13 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
}
>
<div
className="ms-Overlay overlay-58"
className="ms-Overlay overlay-90"
onClick={[Function]}
/>
</OverlayBase>
</StyledOverlayBase>
<FocusTrapZone
className="ms-Panel-main main-44"
className="ms-Panel-main main-76"
isClickableOutsideFocusTrap={true}
style={
Object {
@ -1807,7 +1807,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
}
>
<div
className="ms-Panel-main main-44"
className="ms-Panel-main main-76"
onBlur={[Function]}
onFocus={[Function]}
onFocusCapture={[Function]}
@ -1830,18 +1830,18 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
tabIndex={0}
/>
<div
className="ms-Panel-commands commands-45"
className="ms-Panel-commands commands-77"
data-is-visible={true}
>
<div
className="ms-Panel-navigation navigation-46"
className="ms-Panel-navigation navigation-78"
>
<div
className="ms-Panel-header header-48"
className="ms-Panel-header header-80"
>
<div
aria-level={1}
className="ms-Panel-headerText panelHeader headerText-49"
className="ms-Panel-headerText panelHeader headerText-81"
id="Panel0-headerText"
role="heading"
>
@ -2903,7 +2903,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
>
<button
aria-label="Close"
className="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-59"
className="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-91"
data-is-focusable={true}
data-is-visible={true}
onClick={[Function]}
@ -2916,16 +2916,16 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-60"
className="ms-Button-flexContainer flexContainer-92"
data-automationid="splitbuttonprimary"
>
<Component
className="ms-Button-icon icon-62"
className="ms-Button-icon icon-94"
iconName="Cancel"
>
<i
aria-hidden={true}
className="ms-Icon root-37 css-67 ms-Button-icon icon-62"
className="ms-Icon root-37 css-99 ms-Button-icon icon-94"
data-icon-name="Cancel"
role="presentation"
style={
@ -2946,14 +2946,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
</div>
</div>
<div
className="ms-Panel-contentInner contentInner-47"
className="ms-Panel-contentInner contentInner-79"
>
<div
className="ms-Panel-scrollableContent scrollableContent-50"
className="ms-Panel-scrollableContent scrollableContent-82"
data-is-scrollable={true}
>
<div
className="ms-Panel-content content-51"
className="ms-Panel-content content-83"
>
<form
className="panelFormWrapper"
@ -2970,7 +2970,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
onClick={[Function]}
>
<div
className="ms-Stack addButtonEntiy css-68"
className="ms-Stack addButtonEntiy css-100"
onClick={[Function]}
>
<StyledImageBase
@ -3262,7 +3262,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
width={16}
>
<div
className="ms-Image root-69"
className="ms-Image root-101"
style={
Object {
"height": 30,
@ -3272,7 +3272,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
>
<img
alt="Add Entity"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-70"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-102"
key="fabricImage"
onError={[Function]}
onLoad={[Function]}
@ -3286,7 +3286,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
key=".0:$.1"
>
<span
className="addNewParamStyle css-71"
className="addNewParamStyle css-103"
>
Add Property
</span>
@ -3335,7 +3335,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
rootRef={
Object {
"current": <div
class="ms-Fabric ms-Layer-content content-56"
class="ms-Fabric ms-Layer-content content-88"
>
<div
aria-labelledby="Panel0-headerText"
@ -3346,14 +3346,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
>
<div
aria-hidden="false"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-42"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-74"
style="height: 736px;"
>
<div
class="ms-Overlay overlay-58"
class="ms-Overlay overlay-90"
/>
<div
class="ms-Panel-main main-44"
class="ms-Panel-main main-76"
style="width: 700px;"
>
<div
@ -3363,18 +3363,18 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
tabindex="0"
/>
<div
class="ms-Panel-commands commands-45"
class="ms-Panel-commands commands-77"
data-is-visible="true"
>
<div
class="ms-Panel-navigation navigation-46"
class="ms-Panel-navigation navigation-78"
>
<div
class="ms-Panel-header header-48"
class="ms-Panel-header header-80"
>
<div
aria-level="1"
class="ms-Panel-headerText panelHeader headerText-49"
class="ms-Panel-headerText panelHeader headerText-81"
id="Panel0-headerText"
role="heading"
>
@ -3383,19 +3383,19 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
</div>
<button
aria-label="Close"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-59"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-91"
data-is-focusable="true"
data-is-visible="true"
title="Close"
type="button"
>
<span
class="ms-Button-flexContainer flexContainer-60"
class="ms-Button-flexContainer flexContainer-92"
data-automationid="splitbuttonprimary"
>
<i
aria-hidden="true"
class="ms-Icon root-37 css-67 ms-Button-icon icon-62"
class="ms-Icon root-37 css-99 ms-Button-icon icon-94"
data-icon-name="Cancel"
role="presentation"
style="font-family: \\"FabricMDL2Icons\\";"
@ -3407,14 +3407,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
</div>
</div>
<div
class="ms-Panel-contentInner contentInner-47"
class="ms-Panel-contentInner contentInner-79"
>
<div
class="ms-Panel-scrollableContent scrollableContent-50"
class="ms-Panel-scrollableContent scrollableContent-82"
data-is-scrollable="true"
>
<div
class="ms-Panel-content content-51"
class="ms-Panel-content content-83"
>
<form
class="panelFormWrapper"
@ -3426,20 +3426,20 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
class="panelMainContent"
>
<div
class="ms-Stack addButtonEntiy css-68"
class="ms-Stack addButtonEntiy css-100"
>
<div
class="ms-Image root-69"
class="ms-Image root-101"
style="width: 16px; height: 30px;"
>
<img
alt="Add Entity"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-70"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-102"
src=""
/>
</div>
<span
class="addNewParamStyle css-71"
class="addNewParamStyle css-103"
>
Add Property
</span>

View File

@ -956,11 +956,11 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
<Portal
containerInfo={
<div
class="ms-Layer ms-Layer--fixed root-54"
class="ms-Layer ms-Layer--fixed root-86"
data-portal-element="true"
>
<div
class="ms-Fabric ms-Layer-content content-56"
class="ms-Fabric ms-Layer-content content-88"
>
<div
aria-labelledby="Panel0-headerText"
@ -971,14 +971,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
>
<div
aria-hidden="false"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-42"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-74"
style="height: 736px;"
>
<div
class="ms-Overlay overlay-58"
class="ms-Overlay overlay-90"
/>
<div
class="ms-Panel-main main-44"
class="ms-Panel-main main-76"
style="width: 700px;"
>
<div
@ -988,18 +988,18 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
tabindex="0"
/>
<div
class="ms-Panel-commands commands-45"
class="ms-Panel-commands commands-77"
data-is-visible="true"
>
<div
class="ms-Panel-navigation navigation-46"
class="ms-Panel-navigation navigation-78"
>
<div
class="ms-Panel-header header-48"
class="ms-Panel-header header-80"
>
<div
aria-level="1"
class="ms-Panel-headerText panelHeader headerText-49"
class="ms-Panel-headerText panelHeader headerText-81"
id="Panel0-headerText"
role="heading"
>
@ -1008,19 +1008,19 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
</div>
<button
aria-label="Close"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-59"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-91"
data-is-focusable="true"
data-is-visible="true"
title="Close"
type="button"
>
<span
class="ms-Button-flexContainer flexContainer-60"
class="ms-Button-flexContainer flexContainer-92"
data-automationid="splitbuttonprimary"
>
<i
aria-hidden="true"
class="ms-Icon root-37 css-67 ms-Button-icon icon-62"
class="ms-Icon root-37 css-99 ms-Button-icon icon-94"
data-icon-name="Cancel"
role="presentation"
style="font-family: \\"FabricMDL2Icons\\";"
@ -1032,14 +1032,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
</div>
</div>
<div
class="ms-Panel-contentInner contentInner-47"
class="ms-Panel-contentInner contentInner-79"
>
<div
class="ms-Panel-scrollableContent scrollableContent-50"
class="ms-Panel-scrollableContent scrollableContent-82"
data-is-scrollable="true"
>
<div
class="ms-Panel-content content-51"
class="ms-Panel-content content-83"
>
<form
class="panelFormWrapper"
@ -1051,20 +1051,20 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
class="panelMainContent"
>
<div
class="ms-Stack addButtonEntiy css-68"
class="ms-Stack addButtonEntiy css-100"
>
<div
class="ms-Image root-69"
class="ms-Image root-101"
style="width: 16px; height: 30px;"
>
<img
alt="Add Entity"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-70"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-102"
src=""
/>
</div>
<span
class="addNewParamStyle css-71"
class="addNewParamStyle css-103"
>
Add Property
</span>
@ -1102,7 +1102,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
}
>
<StyledFabricBase
className="ms-Layer-content content-55"
className="ms-Layer-content content-87"
onBlur={[Function]}
onChange={[Function]}
onClick={[Function]}
@ -1136,7 +1136,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
onTouchStart={[Function]}
>
<FabricBase
className="ms-Layer-content content-55"
className="ms-Layer-content content-87"
onBlur={[Function]}
onChange={[Function]}
onClick={[Function]}
@ -1444,7 +1444,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
}
>
<div
className="ms-Fabric ms-Layer-content content-56"
className="ms-Fabric ms-Layer-content content-88"
onBlur={[Function]}
onChange={[Function]}
onClick={[Function]}
@ -1499,7 +1499,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
>
<div
aria-hidden={false}
className="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-42"
className="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-74"
style={
Object {
"height": "736px",
@ -1508,13 +1508,13 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
>
<StyledOverlayBase
allowTouchBodyScroll={false}
className="overlay-43"
className="overlay-75"
isDarkThemed={false}
onClick={[Function]}
>
<OverlayBase
allowTouchBodyScroll={false}
className="overlay-43"
className="overlay-75"
isDarkThemed={false}
onClick={[Function]}
styles={[Function]}
@ -1793,13 +1793,13 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
}
>
<div
className="ms-Overlay overlay-58"
className="ms-Overlay overlay-90"
onClick={[Function]}
/>
</OverlayBase>
</StyledOverlayBase>
<FocusTrapZone
className="ms-Panel-main main-44"
className="ms-Panel-main main-76"
isClickableOutsideFocusTrap={true}
style={
Object {
@ -1808,7 +1808,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
}
>
<div
className="ms-Panel-main main-44"
className="ms-Panel-main main-76"
onBlur={[Function]}
onFocus={[Function]}
onFocusCapture={[Function]}
@ -1831,18 +1831,18 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
tabIndex={0}
/>
<div
className="ms-Panel-commands commands-45"
className="ms-Panel-commands commands-77"
data-is-visible={true}
>
<div
className="ms-Panel-navigation navigation-46"
className="ms-Panel-navigation navigation-78"
>
<div
className="ms-Panel-header header-48"
className="ms-Panel-header header-80"
>
<div
aria-level={1}
className="ms-Panel-headerText panelHeader headerText-49"
className="ms-Panel-headerText panelHeader headerText-81"
id="Panel0-headerText"
role="heading"
>
@ -2904,7 +2904,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
>
<button
aria-label="Close"
className="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-59"
className="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-91"
data-is-focusable={true}
data-is-visible={true}
onClick={[Function]}
@ -2917,16 +2917,16 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-60"
className="ms-Button-flexContainer flexContainer-92"
data-automationid="splitbuttonprimary"
>
<Component
className="ms-Button-icon icon-62"
className="ms-Button-icon icon-94"
iconName="Cancel"
>
<i
aria-hidden={true}
className="ms-Icon root-37 css-67 ms-Button-icon icon-62"
className="ms-Icon root-37 css-99 ms-Button-icon icon-94"
data-icon-name="Cancel"
role="presentation"
style={
@ -2947,14 +2947,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
</div>
</div>
<div
className="ms-Panel-contentInner contentInner-47"
className="ms-Panel-contentInner contentInner-79"
>
<div
className="ms-Panel-scrollableContent scrollableContent-50"
className="ms-Panel-scrollableContent scrollableContent-82"
data-is-scrollable={true}
>
<div
className="ms-Panel-content content-51"
className="ms-Panel-content content-83"
>
<form
className="panelFormWrapper"
@ -2971,7 +2971,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
onClick={[Function]}
>
<div
className="ms-Stack addButtonEntiy css-68"
className="ms-Stack addButtonEntiy css-100"
onClick={[Function]}
>
<StyledImageBase
@ -3263,7 +3263,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
width={16}
>
<div
className="ms-Image root-69"
className="ms-Image root-101"
style={
Object {
"height": 30,
@ -3273,7 +3273,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
>
<img
alt="Add Entity"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-70"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-102"
key="fabricImage"
onError={[Function]}
onLoad={[Function]}
@ -3287,7 +3287,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
key=".0:$.1"
>
<span
className="addNewParamStyle css-71"
className="addNewParamStyle css-103"
>
Add Property
</span>
@ -3336,7 +3336,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
rootRef={
Object {
"current": <div
class="ms-Fabric ms-Layer-content content-56"
class="ms-Fabric ms-Layer-content content-88"
>
<div
aria-labelledby="Panel0-headerText"
@ -3347,14 +3347,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
>
<div
aria-hidden="false"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-42"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-74"
style="height: 736px;"
>
<div
class="ms-Overlay overlay-58"
class="ms-Overlay overlay-90"
/>
<div
class="ms-Panel-main main-44"
class="ms-Panel-main main-76"
style="width: 700px;"
>
<div
@ -3364,18 +3364,18 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
tabindex="0"
/>
<div
class="ms-Panel-commands commands-45"
class="ms-Panel-commands commands-77"
data-is-visible="true"
>
<div
class="ms-Panel-navigation navigation-46"
class="ms-Panel-navigation navigation-78"
>
<div
class="ms-Panel-header header-48"
class="ms-Panel-header header-80"
>
<div
aria-level="1"
class="ms-Panel-headerText panelHeader headerText-49"
class="ms-Panel-headerText panelHeader headerText-81"
id="Panel0-headerText"
role="heading"
>
@ -3384,19 +3384,19 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
</div>
<button
aria-label="Close"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-59"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-91"
data-is-focusable="true"
data-is-visible="true"
title="Close"
type="button"
>
<span
class="ms-Button-flexContainer flexContainer-60"
class="ms-Button-flexContainer flexContainer-92"
data-automationid="splitbuttonprimary"
>
<i
aria-hidden="true"
class="ms-Icon root-37 css-67 ms-Button-icon icon-62"
class="ms-Icon root-37 css-99 ms-Button-icon icon-94"
data-icon-name="Cancel"
role="presentation"
style="font-family: \\"FabricMDL2Icons\\";"
@ -3408,14 +3408,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
</div>
</div>
<div
class="ms-Panel-contentInner contentInner-47"
class="ms-Panel-contentInner contentInner-79"
>
<div
class="ms-Panel-scrollableContent scrollableContent-50"
class="ms-Panel-scrollableContent scrollableContent-82"
data-is-scrollable="true"
>
<div
class="ms-Panel-content content-51"
class="ms-Panel-content content-83"
>
<form
class="panelFormWrapper"
@ -3427,20 +3427,20 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
class="panelMainContent"
>
<div
class="ms-Stack addButtonEntiy css-68"
class="ms-Stack addButtonEntiy css-100"
>
<div
class="ms-Image root-69"
class="ms-Image root-101"
style="width: 16px; height: 30px;"
>
<img
alt="Add Entity"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-70"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-102"
src=""
/>
</div>
<span
class="addNewParamStyle css-71"
class="addNewParamStyle css-103"
>
Add Property
</span>

View File

@ -399,7 +399,6 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@ -1193,7 +1192,6 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLastCollection": [Function],
@ -1214,7 +1212,6 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],
@ -1298,7 +1295,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
verticalAlign="center"
>
<div
className="ms-Stack panelInfoErrorContainer css-140"
className="ms-Stack panelInfoErrorContainer css-172"
>
<StyledIconBase
className="panelWarningIcon"
@ -1585,7 +1582,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
>
<i
aria-hidden={true}
className="panelWarningIcon root-142"
className="panelWarningIcon root-174"
data-icon-name="WarningSolid"
>
@ -1601,7 +1598,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
variant="small"
>
<span
className="panelWarningErrorMessage css-143"
className="panelWarningErrorMessage css-175"
>
Warning! The action you are about to take cannot be undone. Continuing will permanently delete this resource and all of its children resources.
@ -1626,7 +1623,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
variant="small"
>
<span
className="css-143"
className="css-175"
>
Confirm by typing the database id
</span>
@ -1927,18 +1924,18 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
validateOnLoad={true}
>
<div
className="ms-TextField root-145"
className="ms-TextField root-177"
>
<div
className="ms-TextField-wrapper"
>
<div
className="ms-TextField-fieldGroup fieldGroup-146"
className="ms-TextField-fieldGroup fieldGroup-178"
>
<input
aria-invalid={false}
autoFocus={true}
className="ms-TextField-field field-147"
className="ms-TextField-field field-179"
id="confirmDatabaseId"
onBlur={[Function]}
onChange={[Function]}
@ -1961,7 +1958,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
variant="small"
>
<span
className="css-164"
className="css-196"
>
Help us improve Azure Cosmos DB!
</span>
@ -1971,7 +1968,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
variant="small"
>
<span
className="css-164"
className="css-196"
>
What is the reason why you are deleting this database?
</span>
@ -2274,17 +2271,17 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
validateOnLoad={true}
>
<div
className="ms-TextField ms-TextField--multiline root-145"
className="ms-TextField ms-TextField--multiline root-177"
>
<div
className="ms-TextField-wrapper"
>
<div
className="ms-TextField-fieldGroup fieldGroup-165"
className="ms-TextField-fieldGroup fieldGroup-197"
>
<textarea
aria-invalid={false}
className="ms-TextField-field field-166"
className="ms-TextField-field field-198"
id="deleteDatabaseFeedbackInput"
onBlur={[Function]}
onChange={[Function]}
@ -3976,7 +3973,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
variantClassName="ms-Button--primary"
>
<button
className="ms-Button ms-Button--primary root-156"
className="ms-Button ms-Button--primary root-188"
data-is-focusable={true}
id="sidePanelOkButton"
onClick={[Function]}
@ -3988,14 +3985,14 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
type="submit"
>
<span
className="ms-Button-flexContainer flexContainer-157"
className="ms-Button-flexContainer flexContainer-189"
data-automationid="splitbuttonprimary"
>
<span
className="ms-Button-textContainer textContainer-158"
className="ms-Button-textContainer textContainer-190"
>
<span
className="ms-Button-label label-160"
className="ms-Button-label label-192"
id="id__3"
key="id__3"
>

View File

@ -255,7 +255,7 @@ export class CassandraAPIDataClient extends TableDataClient {
const clearMessage =
shouldNotify && NotificationConsoleUtils.logConsoleProgress(`Querying rows for table ${collection.id()}`);
try {
const authType = userContext.authType;
const { authType, databaseAccount } = userContext;
const apiEndpoint: string =
authType === AuthType.EncryptedToken
? Constants.CassandraBackend.guestQueryApi
@ -263,12 +263,9 @@ export class CassandraAPIDataClient extends TableDataClient {
const data: any = await $.ajax(`${configContext.BACKEND_ENDPOINT}/${apiEndpoint}`, {
type: "POST",
data: {
accountName:
collection && collection.container.databaseAccount && collection.container.databaseAccount().name,
cassandraEndpoint: this.trimCassandraEndpoint(
collection.container.databaseAccount().properties.cassandraEndpoint
),
resourceId: collection.container.databaseAccount().id,
accountName: databaseAccount?.name,
cassandraEndpoint: this.trimCassandraEndpoint(databaseAccount?.properties.cassandraEndpoint),
resourceId: databaseAccount?.id,
keyspaceId: collection.databaseId,
tableId: collection.id(),
query,
@ -399,21 +396,20 @@ export class CassandraAPIDataClient extends TableDataClient {
return Q.resolve(collection.cassandraKeys);
}
const clearInProgressMessage = logConsoleProgress(`Fetching keys for table ${collection.id()}`);
const authType = userContext.authType;
const { authType, databaseAccount } = userContext;
const apiEndpoint: string =
authType === AuthType.EncryptedToken
? Constants.CassandraBackend.guestKeysApi
: Constants.CassandraBackend.keysApi;
let endpoint = `${configContext.BACKEND_ENDPOINT}/${apiEndpoint}`;
const deferred = Q.defer<CassandraTableKeys>();
$.ajax(endpoint, {
type: "POST",
data: {
accountName: collection && collection.container.databaseAccount && collection.container.databaseAccount().name,
cassandraEndpoint: this.trimCassandraEndpoint(
collection.container.databaseAccount().properties.cassandraEndpoint
),
resourceId: collection.container.databaseAccount().id,
accountName: databaseAccount?.name,
cassandraEndpoint: this.trimCassandraEndpoint(databaseAccount?.properties.cassandraEndpoint),
resourceId: databaseAccount?.id,
keyspaceId: collection.databaseId,
tableId: collection.id(),
},
@ -440,21 +436,20 @@ export class CassandraAPIDataClient extends TableDataClient {
return Q.resolve(collection.cassandraSchema);
}
const clearInProgressMessage = logConsoleProgress(`Fetching schema for table ${collection.id()}`);
const authType = userContext.authType;
const { databaseAccount, authType } = userContext;
const apiEndpoint: string =
authType === AuthType.EncryptedToken
? Constants.CassandraBackend.guestSchemaApi
: Constants.CassandraBackend.schemaApi;
let endpoint = `${configContext.BACKEND_ENDPOINT}/${apiEndpoint}`;
const deferred = Q.defer<CassandraTableKey[]>();
$.ajax(endpoint, {
type: "POST",
data: {
accountName: collection && collection.container.databaseAccount && collection.container.databaseAccount().name,
cassandraEndpoint: this.trimCassandraEndpoint(
collection.container.databaseAccount().properties.cassandraEndpoint
),
resourceId: collection.container.databaseAccount().id,
accountName: databaseAccount?.name,
cassandraEndpoint: this.trimCassandraEndpoint(databaseAccount?.properties.cassandraEndpoint),
resourceId: databaseAccount?.id,
keyspaceId: collection.databaseId,
tableId: collection.id(),
},
@ -478,7 +473,7 @@ export class CassandraAPIDataClient extends TableDataClient {
private createOrDeleteQuery(cassandraEndpoint: string, resourceId: string, query: string): Q.Promise<any> {
const deferred = Q.defer();
const authType = userContext.authType;
const { authType, databaseAccount } = userContext;
const apiEndpoint: string =
authType === AuthType.EncryptedToken
? Constants.CassandraBackend.guestCreateOrDeleteApi
@ -486,7 +481,7 @@ export class CassandraAPIDataClient extends TableDataClient {
$.ajax(`${configContext.BACKEND_ENDPOINT}/${apiEndpoint}`, {
type: "POST",
data: {
accountName: userContext.databaseAccount?.name,
accountName: databaseAccount?.name,
cassandraEndpoint: this.trimCassandraEndpoint(cassandraEndpoint),
resourceId: resourceId,
query: query,

View File

@ -23,10 +23,10 @@ export default class MongoShellTab extends TabsBase {
this._logTraces = new Map();
this._container = options.collection.container;
this.url = ko.computed<string>(() => {
const account = userContext.databaseAccount;
const resourceId = account && account.id;
const accountName = account && account.name;
const mongoEndpoint = account && (account.properties.mongoEndpoint || account.properties.documentEndpoint);
const { databaseAccount: account } = userContext;
const resourceId = account?.id;
const accountName = account?.name;
const mongoEndpoint = account?.properties?.mongoEndpoint || account?.properties?.documentEndpoint;
this._runtimeEndpoint = configContext.platform === Platform.Hosted ? configContext.BACKEND_ENDPOINT : "";
const extensionEndpoint: string = configContext.BACKEND_ENDPOINT || this._runtimeEndpoint || "";
@ -86,13 +86,12 @@ export default class MongoShellTab extends TabsBase {
if (!isReadyMessage(event)) {
return;
}
const { databaseAccount } = userContext;
const authorization: string = userContext.authorizationToken || "";
const resourceId = this._container.databaseAccount().id;
const accountName = this._container.databaseAccount().name;
const documentEndpoint =
this._container.databaseAccount().properties.mongoEndpoint ||
this._container.databaseAccount().properties.documentEndpoint;
const resourceId = databaseAccount?.id;
const accountName = databaseAccount?.name;
const documentEndpoint = databaseAccount?.properties.mongoEndpoint || databaseAccount?.properties.documentEndpoint;
const mongoEndpoint =
documentEndpoint.substr(
Constants.MongoDBAccounts.protocol.length + 3,

View File

@ -29,7 +29,7 @@ export default class NotebookTabBase extends TabsBase {
if (!NotebookTabBase.clientManager) {
NotebookTabBase.clientManager = new NotebookClientV2({
connectionInfo: this.container.notebookServerInfo(),
databaseAccountName: this.container.databaseAccount().name,
databaseAccountName: userContext?.databaseAccount?.name,
defaultExperience: userContext.apiType,
contentProvider: this.container.notebookManager?.notebookContentProvider,
});

View File

@ -1,6 +1,6 @@
import * as ko from "knockout";
import * as DataModels from "../../Contracts/DataModels";
import * as ViewModels from "../../Contracts/ViewModels";
import { updateUserContext } from "../../UserContext";
import Explorer from "../Explorer";
import DocumentId from "../Tree/DocumentId";
import DocumentsTab from "./DocumentsTab";
@ -17,13 +17,15 @@ describe("Tabs manager tests", () => {
beforeAll(() => {
explorer = new Explorer();
explorer.databaseAccount = ko.observable<DataModels.DatabaseAccount>({
updateUserContext({
databaseAccount: {
id: "test",
name: "test",
location: "",
type: "",
kind: "",
properties: undefined,
},
});
database = {

View File

@ -3,6 +3,7 @@ import * as React from "react";
import { ReactAdapter } from "../../Bindings/ReactBindingHandler";
import * as DataModels from "../../Contracts/DataModels";
import * as ViewModels from "../../Contracts/ViewModels";
import { userContext } from "../../UserContext";
import { CommandButtonComponentProps } from "../Controls/CommandButton/CommandButtonComponent";
import { NotebookTerminalComponent } from "../Controls/Notebook/NotebookTerminalComponent";
import Explorer from "../Explorer";
@ -47,7 +48,7 @@ export default class TerminalTab extends TabsBase {
this.container = options.container;
this.notebookTerminalComponentAdapter = new NotebookTerminalComponentAdapter(
() => this.getNotebookServerInfo(options),
() => this.getContainer().databaseAccount()
() => userContext?.databaseAccount
);
this.notebookTerminalComponentAdapter.parameters = ko.computed<boolean>(() => {
if (this.isTemplateReady() && this.container.isNotebookEnabled()) {

View File

@ -195,13 +195,7 @@ export default class Collection implements ViewModels.Collection {
this.showUserDefinedFunctions = ko.observable<boolean>(showScriptsMenus);
this.showConflicts = ko.observable<boolean>(
container &&
container.databaseAccount &&
container.databaseAccount() &&
container.databaseAccount().properties &&
container.databaseAccount().properties.enableMultipleWriteLocations &&
data &&
!!data.conflictResolutionPolicy
userContext?.databaseAccount?.properties.enableMultipleWriteLocations && data && !!data.conflictResolutionPolicy
);
this.isStoredProceduresExpanded = ko.observable<boolean>(false);
@ -1008,7 +1002,7 @@ export default class Collection implements ViewModels.Collection {
Logger.logError(
JSON.stringify({
error: getErrorMessage(error),
accountName: this.container && this.container.databaseAccount(),
accountName: userContext?.databaseAccount,
databaseName: this.databaseId,
collectionName: this.id(),
}),

View File

@ -248,7 +248,7 @@ export default class Database implements ViewModels.Database {
Logger.logError(
JSON.stringify({
error: getErrorMessage(error),
accountName: this.container && this.container.databaseAccount(),
accountName: userContext?.databaseAccount,
databaseName: this.id(),
collectionName: this.id(),
}),

View File

@ -306,10 +306,7 @@ export class ResourceTreeAdapter implements ReactAdapter {
// This is a rewrite of showConflicts
const showConflicts =
this.container.databaseAccount &&
this.container.databaseAccount() &&
this.container.databaseAccount().properties &&
this.container.databaseAccount().properties.enableMultipleWriteLocations &&
userContext?.databaseAccount?.properties.enableMultipleWriteLocations &&
collection.rawDataModel &&
!!collection.rawDataModel.conflictResolutionPolicy;

View File

@ -1,6 +1,4 @@
import ko from "knockout";
import { HttpStatusCodes } from "../Common/Constants";
import * as DataModels from "../Contracts/DataModels";
import Explorer from "../Explorer/Explorer";
import { ConsoleDataType } from "../Explorer/Menus/NotificationConsole/NotificationConsoleComponent";
import NotebookManager from "../Explorer/Notebook/NotebookManager";
@ -8,27 +6,13 @@ import { JunoClient } from "../Juno/JunoClient";
import { IGitHubConnectorParams } from "./GitHubConnector";
import { GitHubOAuthService } from "./GitHubOAuthService";
const sampleDatabaseAccount: DataModels.DatabaseAccount = {
id: "id",
name: "name",
location: "location",
type: "type",
kind: "kind",
properties: {
documentEndpoint: "documentEndpoint",
gremlinEndpoint: "gremlinEndpoint",
tableEndpoint: "tableEndpoint",
cassandraEndpoint: "cassandraEndpoint",
},
};
describe("GitHubOAuthService", () => {
let junoClient: JunoClient;
let gitHubOAuthService: GitHubOAuthService;
let originalDataExplorer: Explorer;
beforeEach(() => {
junoClient = new JunoClient(ko.observable<DataModels.DatabaseAccount>(sampleDatabaseAccount));
junoClient = new JunoClient();
gitHubOAuthService = new GitHubOAuthService(junoClient);
originalDataExplorer = window.dataExplorer;
window.dataExplorer = {

View File

@ -1,4 +1,3 @@
import ko from "knockout";
import { HttpHeaders, HttpStatusCodes } from "../Common/Constants";
import { DatabaseAccount } from "../Contracts/DataModels";
import { updateUserContext, userContext } from "../UserContext";
@ -35,7 +34,7 @@ const samplePinnedRepos: IPinnedRepo[] = [
];
describe("Pinned repos", () => {
const junoClient = new JunoClient(ko.observable<DatabaseAccount>(sampleDatabaseAccount));
const junoClient = new JunoClient();
beforeEach(() => {
window.fetch = jest.fn().mockImplementation(() => {
@ -72,7 +71,7 @@ describe("Pinned repos", () => {
});
describe("GitHub", () => {
const junoClient = new JunoClient(ko.observable<DatabaseAccount>(sampleDatabaseAccount));
const junoClient = new JunoClient();
afterEach(() => {
jest.resetAllMocks();
@ -131,11 +130,16 @@ describe("GitHub", () => {
});
describe("Gallery", () => {
const junoClient = new JunoClient(ko.observable<DatabaseAccount>(sampleDatabaseAccount));
const junoClient = new JunoClient();
const originalSubscriptionId = userContext.subscriptionId;
beforeAll(() => {
updateUserContext({ subscriptionId: sampleSubscriptionId });
updateUserContext({
databaseAccount: {
name: "name",
} as DatabaseAccount,
subscriptionId: sampleSubscriptionId,
});
});
afterEach(() => {
@ -202,7 +206,6 @@ describe("Gallery", () => {
status: HttpStatusCodes.OK,
json: () => undefined as any,
});
const response = await junoClient.increaseNotebookViews(id);
expect(response.status).toBe(HttpStatusCodes.OK);

View File

@ -70,7 +70,7 @@ export interface IPublishNotebookRequest {
export class JunoClient {
private cachedPinnedRepos: ko.Observable<IPinnedRepo[]>;
constructor(private databaseAccount?: ko.Observable<DataModels.DatabaseAccount>) {
constructor() {
this.cachedPinnedRepos = ko.observable<IPinnedRepo[]>([]);
}
@ -500,7 +500,7 @@ export class JunoClient {
}
private getAccount(): string {
return this.databaseAccount().name;
return userContext?.databaseAccount?.name;
}
private getSubscriptionId(): string {

View File

@ -17,14 +17,12 @@ export default class AuthHeadersUtil {
}
private static _generateResourceUrl(): string {
const databaseAccount = userContext.databaseAccount;
const subscriptionId: string = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const { databaseAccount, resourceGroup, subscriptionId } = userContext;
const apiKind: DataModels.ApiKind = DefaultExperienceUtility.getApiKindFromDefaultExperience(userContext.apiType);
const accountEndpoint = (databaseAccount && databaseAccount.properties.documentEndpoint) || "";
const accountEndpoint = databaseAccount?.properties?.documentEndpoint || "";
const sid = subscriptionId || "";
const rg = resourceGroup || "";
const dba = (databaseAccount && databaseAccount.name) || "";
const dba = databaseAccount?.name || "";
const resourceUrl = encodeURIComponent(accountEndpoint);
const rid = "";
const rtype = "";

View File

@ -1,6 +1,6 @@
import { get } from "../../Utils/arm/generatedClients/2020-04-01/databaseAccounts";
import { userContext } from "../../UserContext";
import { SessionStorageUtility } from "../../Shared/StorageUtility";
import { userContext } from "../../UserContext";
import { get } from "../../Utils/arm/generatedClients/2020-04-01/databaseAccounts";
import { RefreshResult } from "../SelfServeTypes";
export enum Regions {
NorthCentralUS = "NorthCentralUS",
@ -67,9 +67,9 @@ export const onRefreshSelfServeExample = async (): Promise<RefreshResult> => {
const refreshCountString = SessionStorageUtility.getEntry("refreshCount");
const refreshCount = refreshCountString ? parseInt(refreshCountString) : 0;
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const databaseAccountName = userContext.databaseAccount.name;
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const databaseAccountName = databaseAccount.name;
const databaseAccountGetResults = await get(subscriptionId, resourceGroup, databaseAccountName);
const isUpdateInProgress = databaseAccountGetResults.properties.provisioningState !== "Succeeded";

View File

@ -189,8 +189,8 @@ const getInput = (value: DecoratorProperties): AnyDisplay => {
};
export const generateBladeLink = (blade: BladeType): string => {
const subscriptionId = userContext.subscriptionId;
const resourceGroupName = userContext.resourceGroup;
const databaseAccountName = userContext.databaseAccount.name;
return `${document.referrer}#@microsoft.onmicrosoft.com/resource/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDb/databaseAccounts/${databaseAccountName}/${blade}`;
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const databaseAccountName = databaseAccount.name;
return `${document.referrer}#@microsoft.onmicrosoft.com/resource/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.DocumentDb/databaseAccounts/${databaseAccountName}/${blade}`;
};

View File

@ -98,10 +98,6 @@ async function configureHostedWithAAD(config: AAD, explorerParams: ExplorerParam
const explorer = new Explorer(explorerParams);
explorer.configure({
databaseAccount: account,
subscriptionId,
resourceGroup,
masterKey: keys.primaryMasterKey,
authorizationToken: `Bearer ${config.authorizationToken}`,
});
return explorer;
}
@ -127,7 +123,6 @@ function configureHostedWithConnectionString(config: ConnectionString, explorerP
const explorer = new Explorer(explorerParams);
explorer.configure({
databaseAccount,
masterKey: config.masterKey,
});
return explorer;
}
@ -183,7 +178,6 @@ function configureEmulator(explorerParams: ExplorerParams): Explorer {
authType: AuthType.MasterKey,
});
const explorer = new Explorer(explorerParams);
explorer.databaseAccount(emulatorAccount);
explorer.isAccountReady(true);
return explorer;
}