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: { moduleNameMapper: {
"^.*[.](svg|png|gif|less|css)$": "<rootDir>/mockModule", "^.*[.](svg|png|gif|less|css)$": "<rootDir>/mockModule",
"@nteract/stateful-components/(.*)$": "<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 "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", "^dnd-core$": "dnd-core/dist/cjs",
"^react-dnd$": "react-dnd/dist/cjs", "^react-dnd$": "react-dnd/dist/cjs",

816
package-lock.json generated
View File

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

View File

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

View File

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

View File

@ -61,7 +61,7 @@ export function queryDocuments(
query: string, query: string,
continuationToken?: string continuationToken?: string
): Promise<QueryResponse> { ): Promise<QueryResponse> {
const databaseAccount = userContext.databaseAccount; const { databaseAccount } = userContext;
const resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint; const resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint;
const params = { const params = {
db: databaseId, db: databaseId,
@ -121,7 +121,7 @@ export function readDocument(
collection: Collection, collection: Collection,
documentId: DocumentId documentId: DocumentId
): Promise<DataModels.DocumentId> { ): Promise<DataModels.DocumentId> {
const databaseAccount = userContext.databaseAccount; const { databaseAccount } = userContext;
const resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint; const resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint;
const idComponents = documentId.self.split("/"); const idComponents = documentId.self.split("/");
const path = idComponents.slice(0, 4).join("/"); const path = idComponents.slice(0, 4).join("/");
@ -167,7 +167,7 @@ export function createDocument(
partitionKeyProperty: string, partitionKeyProperty: string,
documentContent: unknown documentContent: unknown
): Promise<DataModels.DocumentId> { ): Promise<DataModels.DocumentId> {
const databaseAccount = userContext.databaseAccount; const { databaseAccount } = userContext;
const resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint; const resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint;
const params = { const params = {
db: databaseId, db: databaseId,
@ -206,7 +206,7 @@ export function updateDocument(
documentId: DocumentId, documentId: DocumentId,
documentContent: string documentContent: string
): Promise<DataModels.DocumentId> { ): Promise<DataModels.DocumentId> {
const databaseAccount = userContext.databaseAccount; const { databaseAccount } = userContext;
const resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint; const resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint;
const idComponents = documentId.self.split("/"); const idComponents = documentId.self.split("/");
const path = idComponents.slice(0, 5).join("/"); 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> { 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 resourceEndpoint = databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint;
const idComponents = documentId.self.split("/"); const idComponents = documentId.self.split("/");
const path = idComponents.slice(0, 5).join("/"); const path = idComponents.slice(0, 5).join("/");
@ -289,7 +289,7 @@ export function deleteDocument(databaseId: string, collection: Collection, docum
export function createMongoCollectionWithProxy( export function createMongoCollectionWithProxy(
params: DataModels.CreateCollectionParams params: DataModels.CreateCollectionParams
): Promise<DataModels.Collection> { ): Promise<DataModels.Collection> {
const databaseAccount = userContext.databaseAccount; const { databaseAccount } = userContext;
const shardKey: string = params.partitionKey?.paths[0]; const shardKey: string = params.partitionKey?.paths[0];
const mongoParams: DataModels.MongoParameters = { const mongoParams: DataModels.MongoParameters = {
resourceUrl: databaseAccount.properties.mongoEndpoint || databaseAccount.properties.documentEndpoint, 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 DataModels from "../Contracts/DataModels";
import * as ViewModels from "../Contracts/ViewModels"; import * as ViewModels from "../Contracts/ViewModels";
import { getAuthorizationHeader } from "../Utils/AuthorizationUtils";
import { userContext } from "../UserContext"; import { userContext } from "../UserContext";
import { configContext, Platform } from "../ConfigContext"; import { getAuthorizationHeader } from "../Utils/AuthorizationUtils";
const notificationsPath = () => { const notificationsPath = () => {
switch (configContext.platform) { switch (configContext.platform) {
@ -20,9 +20,7 @@ export const fetchPortalNotifications = async (): Promise<DataModels.Notificatio
return []; return [];
} }
const databaseAccount = userContext.databaseAccount; const { databaseAccount, resourceGroup, subscriptionId } = userContext;
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const url = `${configContext.BACKEND_ENDPOINT}${notificationsPath()}?accountName=${ const url = `${configContext.BACKEND_ENDPOINT}${notificationsPath()}?accountName=${
databaseAccount.name databaseAccount.name
}&subscriptionId=${subscriptionId}&resourceGroup=${resourceGroup}`; }&subscriptionId=${subscriptionId}&resourceGroup=${resourceGroup}`;

View File

@ -182,11 +182,8 @@ export class QueriesClient {
} }
public getResourceId(): string { public getResourceId(): string {
const databaseAccount = userContext.databaseAccount; const { databaseAccount, subscriptionId = "", resourceGroup = "" } = userContext;
const databaseAccountName = (databaseAccount && databaseAccount.name) || ""; const databaseAccountName = databaseAccount?.name || "";
const subscriptionId = userContext.subscriptionId || "";
const resourceGroup = userContext.resourceGroup || "";
return `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.DocumentDb/databaseAccounts/${databaseAccountName}`; 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 createCollectionWithARM = async (params: DataModels.CreateCollectionParams): Promise<DataModels.Collection> => {
const defaultExperience = userContext.apiType; const { apiType } = userContext;
switch (defaultExperience) { switch (apiType) {
case "SQL": case "SQL":
return createSqlContainer(params); return createSqlContainer(params);
case "Mongo": case "Mongo":
@ -75,7 +75,7 @@ const createCollectionWithARM = async (params: DataModels.CreateCollectionParams
case "Tables": case "Tables":
return createTable(params); return createTable(params);
default: 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> { async function createDatabaseWithARM(params: DataModels.CreateDatabaseParams): Promise<DataModels.Database> {
const defaultExperience = userContext.apiType; const { apiType } = userContext;
switch (defaultExperience) {
switch (apiType) {
case "SQL": case "SQL":
return createSqlDatabase(params); return createSqlDatabase(params);
case "Mongo": case "Mongo":
@ -59,7 +60,7 @@ async function createDatabaseWithARM(params: DataModels.CreateDatabaseParams): P
case "Gremlin": case "Gremlin":
return createGremlineDatabase(params); return createGremlineDatabase(params);
default: 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> { function deleteCollectionWithARM(databaseId: string, collectionId: string): Promise<void> {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, apiType, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
const defaultExperience = userContext.apiType;
switch (defaultExperience) { switch (apiType) {
case "SQL": case "SQL":
return deleteSqlContainer(subscriptionId, resourceGroup, accountName, databaseId, collectionId); return deleteSqlContainer(subscriptionId, resourceGroup, accountName, databaseId, collectionId);
case "Mongo": case "Mongo":
@ -44,6 +42,6 @@ function deleteCollectionWithARM(databaseId: string, collectionId: string): Prom
case "Tables": case "Tables":
return deleteTable(subscriptionId, resourceGroup, accountName, collectionId); return deleteTable(subscriptionId, resourceGroup, accountName, collectionId);
default: 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> { function deleteDatabaseWithARM(databaseId: string): Promise<void> {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, apiType, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
const defaultExperience = userContext.apiType;
switch (defaultExperience) { switch (apiType) {
case "SQL": case "SQL":
return deleteSqlDatabase(subscriptionId, resourceGroup, accountName, databaseId); return deleteSqlDatabase(subscriptionId, resourceGroup, accountName, databaseId);
case "Mongo": case "Mongo":
@ -45,6 +43,6 @@ function deleteDatabaseWithARM(databaseId: string): Promise<void> {
case "Gremlin": case "Gremlin":
return deleteGremlinDatabase(subscriptionId, resourceGroup, accountName, databaseId); return deleteGremlinDatabase(subscriptionId, resourceGroup, accountName, databaseId);
default: 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 { AuthType } from "../../AuthType";
import { armRequest } from "../../Utils/arm/request";
import { configContext } from "../../ConfigContext"; import { configContext } from "../../ConfigContext";
import { handleError } from "../ErrorHandlingUtils";
import { userContext } from "../../UserContext"; import { userContext } from "../../UserContext";
import { armRequest } from "../../Utils/arm/request";
import { handleError } from "../ErrorHandlingUtils";
interface TimeSeriesData { interface TimeSeriesData {
data: { data: {
@ -45,9 +45,9 @@ export const getCollectionUsageSizeInKB = async (databaseName: string, container
return undefined; return undefined;
} }
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
const filter = `DatabaseName eq '${databaseName}' and CollectionName eq '${containerName}'`; const filter = `DatabaseName eq '${databaseName}' and CollectionName eq '${containerName}'`;
const metricNames = "DataUsage,IndexUsage"; const metricNames = "DataUsage,IndexUsage";
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/providers/microsoft.insights/metrics`; 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 readCollectionOfferWithARM = async (databaseId: string, collectionId: string): Promise<Offer> => {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, apiType, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
const defaultExperience = userContext.apiType;
let rpResponse; let rpResponse;
try { try {
switch (defaultExperience) { switch (apiType) {
case "SQL": case "SQL":
rpResponse = await getSqlContainerThroughput( rpResponse = await getSqlContainerThroughput(
subscriptionId, subscriptionId,
@ -76,7 +74,7 @@ const readCollectionOfferWithARM = async (databaseId: string, collectionId: stri
rpResponse = await getTableThroughput(subscriptionId, resourceGroup, accountName, collectionId); rpResponse = await getTableThroughput(subscriptionId, resourceGroup, accountName, collectionId);
break; break;
default: default:
throw new Error(`Unsupported default experience type: ${defaultExperience}`); throw new Error(`Unsupported default experience type: ${apiType}`);
} }
} catch (error) { } catch (error) {
if (error.code !== "NotFound") { 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[]> { async function readCollectionsWithARM(databaseId: string): Promise<DataModels.Collection[]> {
let rpResponse; 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": case "SQL":
rpResponse = await listSqlContainers(subscriptionId, resourceGroup, accountName, databaseId); rpResponse = await listSqlContainers(subscriptionId, resourceGroup, accountName, databaseId);
break; break;
@ -51,7 +50,7 @@ async function readCollectionsWithARM(databaseId: string): Promise<DataModels.Co
rpResponse = await listTables(subscriptionId, resourceGroup, accountName); rpResponse = await listTables(subscriptionId, resourceGroup, accountName);
break; break;
default: 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); 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 readDatabaseOfferWithARM = async (databaseId: string): Promise<Offer> => {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, apiType, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
const defaultExperience = userContext.apiType;
let rpResponse; let rpResponse;
try { try {
switch (defaultExperience) { switch (apiType) {
case "SQL": case "SQL":
rpResponse = await getSqlDatabaseThroughput(subscriptionId, resourceGroup, accountName, databaseId); rpResponse = await getSqlDatabaseThroughput(subscriptionId, resourceGroup, accountName, databaseId);
break; break;
@ -48,7 +46,7 @@ const readDatabaseOfferWithARM = async (databaseId: string): Promise<Offer> => {
rpResponse = await getGremlinDatabaseThroughput(subscriptionId, resourceGroup, accountName, databaseId); rpResponse = await getGremlinDatabaseThroughput(subscriptionId, resourceGroup, accountName, databaseId);
break; break;
default: default:
throw new Error(`Unsupported default experience type: ${defaultExperience}`); throw new Error(`Unsupported default experience type: ${apiType}`);
} }
} catch (error) { } catch (error) {
if (error.code !== "NotFound") { if (error.code !== "NotFound") {

View File

@ -29,12 +29,10 @@ export async function readDatabases(): Promise<DataModels.Database[]> {
async function readDatabasesWithARM(): Promise<DataModels.Database[]> { async function readDatabasesWithARM(): Promise<DataModels.Database[]> {
let rpResponse; let rpResponse;
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, apiType, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
const defaultExperience = userContext.apiType;
switch (defaultExperience) { switch (apiType) {
case "SQL": case "SQL":
rpResponse = await listSqlDatabases(subscriptionId, resourceGroup, accountName); rpResponse = await listSqlDatabases(subscriptionId, resourceGroup, accountName);
break; break;
@ -48,7 +46,7 @@ async function readDatabasesWithARM(): Promise<DataModels.Database[]> {
rpResponse = await listGremlinDatabases(subscriptionId, resourceGroup, accountName); rpResponse = await listGremlinDatabases(subscriptionId, resourceGroup, accountName);
break; break;
default: 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); 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 { userContext } from "../../UserContext";
import { getMongoDBCollection } from "../../Utils/arm/generatedClients/2020-04-01/mongoDBResources"; import { getMongoDBCollection } from "../../Utils/arm/generatedClients/2020-04-01/mongoDBResources";
import { MongoDBCollectionResource } from "../../Utils/arm/generatedClients/2020-04-01/types"; import { MongoDBCollectionResource } from "../../Utils/arm/generatedClients/2020-04-01/types";
import { logConsoleProgress } from "../../Utils/NotificationConsoleUtils"; import { logConsoleProgress } from "../../Utils/NotificationConsoleUtils";
import { handleError } from "../ErrorHandlingUtils"; import { handleError } from "../ErrorHandlingUtils";
import { AuthType } from "../../AuthType";
export async function readMongoDBCollectionThroughRP( export async function readMongoDBCollectionThroughRP(
databaseId: string, databaseId: string,
@ -13,9 +13,9 @@ export async function readMongoDBCollectionThroughRP(
return undefined; return undefined;
} }
let collection: MongoDBCollectionResource; let collection: MongoDBCollectionResource;
const subscriptionId = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup; const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const accountName = userContext.databaseAccount.name; const accountName = databaseAccount.name;
const clearMessage = logConsoleProgress(`Reading container ${collectionId}`); const clearMessage = logConsoleProgress(`Reading container ${collectionId}`);
try { try {

View File

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

View File

@ -63,12 +63,10 @@ async function updateCollectionWithARM(
collectionId: string, collectionId: string,
newCollection: Partial<Collection> newCollection: Partial<Collection>
): Promise<Collection> { ): Promise<Collection> {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, apiType, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
const defaultExperience = userContext.apiType;
switch (defaultExperience) { switch (apiType) {
case "SQL": case "SQL":
return updateSqlContainer(databaseId, collectionId, subscriptionId, resourceGroup, accountName, newCollection); return updateSqlContainer(databaseId, collectionId, subscriptionId, resourceGroup, accountName, newCollection);
case "Cassandra": case "Cassandra":
@ -87,7 +85,7 @@ async function updateCollectionWithARM(
newCollection newCollection
); );
default: 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 updateSqlContainerOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
if (params.migrateToAutoPilot) { if (params.migrateToAutoPilot) {
await migrateSqlContainerToAutoscale( await migrateSqlContainerToAutoscale(
@ -178,9 +177,8 @@ const updateSqlContainerOffer = async (params: UpdateOfferParams): Promise<void>
}; };
const updateMongoCollectionOffer = async (params: UpdateOfferParams): Promise<void> => { const updateMongoCollectionOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
if (params.migrateToAutoPilot) { if (params.migrateToAutoPilot) {
await migrateMongoDBCollectionToAutoscale( await migrateMongoDBCollectionToAutoscale(
@ -212,9 +210,8 @@ const updateMongoCollectionOffer = async (params: UpdateOfferParams): Promise<vo
}; };
const updateCassandraTableOffer = async (params: UpdateOfferParams): Promise<void> => { const updateCassandraTableOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
if (params.migrateToAutoPilot) { if (params.migrateToAutoPilot) {
await migrateCassandraTableToAutoscale( await migrateCassandraTableToAutoscale(
@ -246,9 +243,8 @@ const updateCassandraTableOffer = async (params: UpdateOfferParams): Promise<voi
}; };
const updateGremlinGraphOffer = async (params: UpdateOfferParams): Promise<void> => { const updateGremlinGraphOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
if (params.migrateToAutoPilot) { if (params.migrateToAutoPilot) {
await migrateGremlinGraphToAutoscale( await migrateGremlinGraphToAutoscale(
@ -280,9 +276,8 @@ const updateGremlinGraphOffer = async (params: UpdateOfferParams): Promise<void>
}; };
const updateTableOffer = async (params: UpdateOfferParams): Promise<void> => { const updateTableOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
if (params.migrateToAutoPilot) { if (params.migrateToAutoPilot) {
await migrateTableToAutoscale(subscriptionId, resourceGroup, accountName, params.collectionId); 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 updateSqlDatabaseOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
if (params.migrateToAutoPilot) { if (params.migrateToAutoPilot) {
await migrateSqlDatabaseToAutoscale(subscriptionId, resourceGroup, accountName, params.databaseId); 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 updateMongoDatabaseOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
if (params.migrateToAutoPilot) { if (params.migrateToAutoPilot) {
await migrateMongoDBDatabaseToAutoscale(subscriptionId, resourceGroup, accountName, params.databaseId); 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 updateCassandraKeyspaceOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
if (params.migrateToAutoPilot) { if (params.migrateToAutoPilot) {
await migrateCassandraKeyspaceToAutoscale(subscriptionId, resourceGroup, accountName, params.databaseId); 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 updateGremlinDatabaseOffer = async (params: UpdateOfferParams): Promise<void> => {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const accountName = databaseAccount.name;
const accountName = userContext.databaseAccount.name;
if (params.migrateToAutoPilot) { if (params.migrateToAutoPilot) {
await migrateGremlinDatabaseToAutoscale(subscriptionId, resourceGroup, accountName, params.databaseId); await migrateGremlinDatabaseToAutoscale(subscriptionId, resourceGroup, accountName, params.databaseId);

View File

@ -20,11 +20,13 @@ export async function updateStoredProcedure(
): Promise<StoredProcedureDefinition & Resource> { ): Promise<StoredProcedureDefinition & Resource> {
const clearMessage = logConsoleProgress(`Updating stored procedure ${storedProcedure.id}`); const clearMessage = logConsoleProgress(`Updating stored procedure ${storedProcedure.id}`);
try { 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( const getResponse = await getSqlStoredProcedure(
userContext.subscriptionId, subscriptionId,
userContext.resourceGroup, resourceGroup,
userContext.databaseAccount.name, databaseAccount.name,
databaseId, databaseId,
collectionId, collectionId,
storedProcedure.id storedProcedure.id
@ -38,9 +40,9 @@ export async function updateStoredProcedure(
}, },
}; };
const rpResponse = await createUpdateSqlStoredProcedure( const rpResponse = await createUpdateSqlStoredProcedure(
userContext.subscriptionId, subscriptionId,
userContext.resourceGroup, resourceGroup,
userContext.databaseAccount.name, databaseAccount.name,
databaseId, databaseId,
collectionId, collectionId,
storedProcedure.id, storedProcedure.id,

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -4,6 +4,7 @@ import React from "react";
import * as Constants from "../../../../Common/Constants"; import * as Constants from "../../../../Common/Constants";
import * as DataModels from "../../../../Contracts/DataModels"; import * as DataModels from "../../../../Contracts/DataModels";
import * as SharedConstants from "../../../../Shared/Constants"; import * as SharedConstants from "../../../../Shared/Constants";
import { updateUserContext } from "../../../../UserContext";
import Explorer from "../../../Explorer"; import Explorer from "../../../Explorer";
import { throughputUnit } from "../SettingsRenderUtils"; import { throughputUnit } from "../SettingsRenderUtils";
import { collection, container } from "../TestUtils"; import { collection, container } from "../TestUtils";
@ -80,24 +81,25 @@ describe("ScaleComponent", () => {
it("autoScale enabled", () => { it("autoScale enabled", () => {
const newContainer = new Explorer(); const newContainer = new Explorer();
updateUserContext({
newContainer.databaseAccount({ databaseAccount: {
id: undefined, id: undefined,
name: undefined, name: undefined,
location: undefined, location: undefined,
type: undefined, type: undefined,
kind: "documentdb", kind: "documentdb",
properties: { properties: {
documentEndpoint: undefined, documentEndpoint: undefined,
tableEndpoint: undefined, tableEndpoint: undefined,
gremlinEndpoint: undefined, gremlinEndpoint: undefined,
cassandraEndpoint: undefined, cassandraEndpoint: undefined,
capabilities: [ capabilities: [
{ {
name: Constants.CapabilityNames.EnableAutoScale.toLowerCase(), name: Constants.CapabilityNames.EnableAutoScale.toLowerCase(),
description: undefined, description: undefined,
}, },
], ],
},
}, },
}); });
const props = { ...baseProps, container: newContainer }; const props = { ...baseProps, container: newContainer };

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -4,43 +4,38 @@ import { updateUserContext } from "../../UserContext";
import Explorer from "../Explorer"; import Explorer from "../Explorer";
import AddCollectionPane from "./AddCollectionPane"; import AddCollectionPane from "./AddCollectionPane";
const mockDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
location: "",
name: "mock",
properties: {
documentEndpoint: "",
cassandraEndpoint: "",
gremlinEndpoint: "",
tableEndpoint: "",
enableFreeTier: false,
},
type: undefined,
};
const mockFreeTierDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
location: "",
name: "mock",
properties: {
documentEndpoint: "",
cassandraEndpoint: "",
gremlinEndpoint: "",
tableEndpoint: "",
enableFreeTier: true,
},
type: undefined,
};
describe("Add Collection Pane", () => { describe("Add Collection Pane", () => {
describe("isValid()", () => { describe("isValid()", () => {
let explorer: Explorer;
const mockDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
location: "",
name: "mock",
properties: {
documentEndpoint: "",
cassandraEndpoint: "",
gremlinEndpoint: "",
tableEndpoint: "",
enableFreeTier: false,
},
type: undefined,
};
const mockFreeTierDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
location: "",
name: "mock",
properties: {
documentEndpoint: "",
cassandraEndpoint: "",
gremlinEndpoint: "",
tableEndpoint: "",
enableFreeTier: true,
},
type: undefined,
};
beforeEach(() => {
explorer = new Explorer();
});
it("should be true if graph API and partition key is not /id nor /label", () => { it("should be true if graph API and partition key is not /id nor /label", () => {
updateUserContext({ updateUserContext({
databaseAccount: { databaseAccount: {
@ -49,6 +44,7 @@ describe("Add Collection Pane", () => {
}, },
} as DatabaseAccount, } as DatabaseAccount,
}); });
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane; const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
addCollectionPane.partitionKey("/blah"); addCollectionPane.partitionKey("/blah");
expect(addCollectionPane.isValid()).toBe(true); expect(addCollectionPane.isValid()).toBe(true);
@ -62,6 +58,7 @@ describe("Add Collection Pane", () => {
}, },
} as DatabaseAccount, } as DatabaseAccount,
}); });
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane; const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
addCollectionPane.partitionKey("/id"); addCollectionPane.partitionKey("/id");
expect(addCollectionPane.isValid()).toBe(false); expect(addCollectionPane.isValid()).toBe(false);
@ -78,6 +75,7 @@ describe("Add Collection Pane", () => {
}, },
} as DatabaseAccount, } as DatabaseAccount,
}); });
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane; const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
addCollectionPane.partitionKey("/id"); addCollectionPane.partitionKey("/id");
@ -88,7 +86,8 @@ describe("Add Collection Pane", () => {
}); });
it("should display free tier text in upsell messaging", () => { 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; const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
expect(addCollectionPane.isFreeTierAccount()).toBe(true); expect(addCollectionPane.isFreeTierAccount()).toBe(true);
expect(addCollectionPane.upsellMessage()).toContain("With free tier"); expect(addCollectionPane.upsellMessage()).toContain("With free tier");
@ -97,7 +96,8 @@ describe("Add Collection Pane", () => {
}); });
it("should display standard texr in upsell messaging", () => { it("should display standard texr in upsell messaging", () => {
explorer.databaseAccount(mockDatabaseAccount); updateUserContext({ databaseAccount: mockDatabaseAccount });
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane; const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
expect(addCollectionPane.isFreeTierAccount()).toBe(false); expect(addCollectionPane.isFreeTierAccount()).toBe(false);
expect(addCollectionPane.upsellMessage()).toContain("Start at"); 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.collectionWithThroughputInShared = ko.observable<boolean>(false);
this.databaseIds = ko.observableArray<string>(); this.databaseIds = ko.observableArray<string>();
this.uniqueKeys = ko.observableArray<DynamicListItem>(); this.uniqueKeys = ko.observableArray<DynamicListItem>();
this.isSharedAutoPilotSelected = ko.observable<boolean>();
this.isAutoPilotSelected = ko.observable<boolean>();
if (this.container) { if (this.container) {
this.container.databases.subscribe((newDatabases: ViewModels.Database[]) => { this.container.databases.subscribe((newDatabases: ViewModels.Database[]) => {
@ -177,7 +179,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
return ""; return "";
} }
const account = this.container.databaseAccount(); const { databaseAccount: account } = userContext;
if (!account) { if (!account) {
return ""; return "";
} }
@ -235,7 +237,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
return ""; return "";
} }
const account = this.container.databaseAccount(); const { databaseAccount: account } = userContext;
if (!account) { if (!account) {
return ""; return "";
} }
@ -523,10 +525,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
}); });
this.isFreeTierAccount = ko.computed<boolean>(() => { this.isFreeTierAccount = ko.computed<boolean>(() => {
const databaseAccount = this.container && this.container.databaseAccount && this.container.databaseAccount(); return userContext?.databaseAccount?.properties?.enableFreeTier;
const isFreeTierAccount =
databaseAccount && databaseAccount.properties && databaseAccount.properties.enableFreeTier;
return isFreeTierAccount;
}); });
this.showUpsellMessage = ko.pureComputed(() => { this.showUpsellMessage = ko.pureComputed(() => {
@ -596,9 +595,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
}); });
this._isSynapseLinkEnabled = ko.computed(() => { this._isSynapseLinkEnabled = ko.computed(() => {
const databaseAccount = const databaseAccount = userContext?.databaseAccount || ({} as DataModels.DatabaseAccount);
(this.container && this.container.databaseAccount && this.container.databaseAccount()) ||
({} as DataModels.DatabaseAccount);
const properties = databaseAccount.properties || ({} as DataModels.DatabaseAccountExtendedProperties); const properties = databaseAccount.properties || ({} as DataModels.DatabaseAccountExtendedProperties);
// TODO: remove check for capability once all accounts have been migrated // TODO: remove check for capability once all accounts have been migrated
@ -641,7 +638,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
} }
public getSharedThroughputDefault(): boolean { public getSharedThroughputDefault(): boolean {
const subscriptionType = userContext.subscriptionType; const { subscriptionType } = userContext;
if (subscriptionType === SubscriptionType.EA || this.container.isServerlessEnabled()) { if (subscriptionType === SubscriptionType.EA || this.container.isServerlessEnabled()) {
return false; return false;
} }
@ -809,7 +806,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
let indexingPolicy: DataModels.IndexingPolicy; let indexingPolicy: DataModels.IndexingPolicy;
let createMongoWildcardIndex: boolean; let createMongoWildcardIndex: boolean;
// todo - remove mongo indexing policy ticket # 616274 // todo - remove mongo indexing policy ticket # 616274
if (userContext.apiType === "Mongo" && this.container.isEnableMongoCapabilityPresent()) { if (userContext.apiType === "Mongo") {
createMongoWildcardIndex = this.shouldCreateMongoWildcardIndex(); createMongoWildcardIndex = this.shouldCreateMongoWildcardIndex();
} else if (this.showIndexingOptionsForSharedThroughput()) { } else if (this.showIndexingOptionsForSharedThroughput()) {
if (this.useIndexingForSharedThroughput()) { if (this.useIndexingForSharedThroughput()) {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -3,6 +3,7 @@ import * as React from "react";
import { ReactAdapter } from "../../Bindings/ReactBindingHandler"; import { ReactAdapter } from "../../Bindings/ReactBindingHandler";
import * as DataModels from "../../Contracts/DataModels"; import * as DataModels from "../../Contracts/DataModels";
import * as ViewModels from "../../Contracts/ViewModels"; import * as ViewModels from "../../Contracts/ViewModels";
import { userContext } from "../../UserContext";
import { CommandButtonComponentProps } from "../Controls/CommandButton/CommandButtonComponent"; import { CommandButtonComponentProps } from "../Controls/CommandButton/CommandButtonComponent";
import { NotebookTerminalComponent } from "../Controls/Notebook/NotebookTerminalComponent"; import { NotebookTerminalComponent } from "../Controls/Notebook/NotebookTerminalComponent";
import Explorer from "../Explorer"; import Explorer from "../Explorer";
@ -47,7 +48,7 @@ export default class TerminalTab extends TabsBase {
this.container = options.container; this.container = options.container;
this.notebookTerminalComponentAdapter = new NotebookTerminalComponentAdapter( this.notebookTerminalComponentAdapter = new NotebookTerminalComponentAdapter(
() => this.getNotebookServerInfo(options), () => this.getNotebookServerInfo(options),
() => this.getContainer().databaseAccount() () => userContext?.databaseAccount
); );
this.notebookTerminalComponentAdapter.parameters = ko.computed<boolean>(() => { this.notebookTerminalComponentAdapter.parameters = ko.computed<boolean>(() => {
if (this.isTemplateReady() && this.container.isNotebookEnabled()) { 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.showUserDefinedFunctions = ko.observable<boolean>(showScriptsMenus);
this.showConflicts = ko.observable<boolean>( this.showConflicts = ko.observable<boolean>(
container && userContext?.databaseAccount?.properties.enableMultipleWriteLocations && data && !!data.conflictResolutionPolicy
container.databaseAccount &&
container.databaseAccount() &&
container.databaseAccount().properties &&
container.databaseAccount().properties.enableMultipleWriteLocations &&
data &&
!!data.conflictResolutionPolicy
); );
this.isStoredProceduresExpanded = ko.observable<boolean>(false); this.isStoredProceduresExpanded = ko.observable<boolean>(false);
@ -1008,7 +1002,7 @@ export default class Collection implements ViewModels.Collection {
Logger.logError( Logger.logError(
JSON.stringify({ JSON.stringify({
error: getErrorMessage(error), error: getErrorMessage(error),
accountName: this.container && this.container.databaseAccount(), accountName: userContext?.databaseAccount,
databaseName: this.databaseId, databaseName: this.databaseId,
collectionName: this.id(), collectionName: this.id(),
}), }),

View File

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

View File

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

View File

@ -1,6 +1,4 @@
import ko from "knockout";
import { HttpStatusCodes } from "../Common/Constants"; import { HttpStatusCodes } from "../Common/Constants";
import * as DataModels from "../Contracts/DataModels";
import Explorer from "../Explorer/Explorer"; import Explorer from "../Explorer/Explorer";
import { ConsoleDataType } from "../Explorer/Menus/NotificationConsole/NotificationConsoleComponent"; import { ConsoleDataType } from "../Explorer/Menus/NotificationConsole/NotificationConsoleComponent";
import NotebookManager from "../Explorer/Notebook/NotebookManager"; import NotebookManager from "../Explorer/Notebook/NotebookManager";
@ -8,27 +6,13 @@ import { JunoClient } from "../Juno/JunoClient";
import { IGitHubConnectorParams } from "./GitHubConnector"; import { IGitHubConnectorParams } from "./GitHubConnector";
import { GitHubOAuthService } from "./GitHubOAuthService"; 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", () => { describe("GitHubOAuthService", () => {
let junoClient: JunoClient; let junoClient: JunoClient;
let gitHubOAuthService: GitHubOAuthService; let gitHubOAuthService: GitHubOAuthService;
let originalDataExplorer: Explorer; let originalDataExplorer: Explorer;
beforeEach(() => { beforeEach(() => {
junoClient = new JunoClient(ko.observable<DataModels.DatabaseAccount>(sampleDatabaseAccount)); junoClient = new JunoClient();
gitHubOAuthService = new GitHubOAuthService(junoClient); gitHubOAuthService = new GitHubOAuthService(junoClient);
originalDataExplorer = window.dataExplorer; originalDataExplorer = window.dataExplorer;
window.dataExplorer = { window.dataExplorer = {

View File

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

View File

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

View File

@ -17,14 +17,12 @@ export default class AuthHeadersUtil {
} }
private static _generateResourceUrl(): string { private static _generateResourceUrl(): string {
const databaseAccount = userContext.databaseAccount; const { databaseAccount, resourceGroup, subscriptionId } = userContext;
const subscriptionId: string = userContext.subscriptionId;
const resourceGroup = userContext.resourceGroup;
const apiKind: DataModels.ApiKind = DefaultExperienceUtility.getApiKindFromDefaultExperience(userContext.apiType); const apiKind: DataModels.ApiKind = DefaultExperienceUtility.getApiKindFromDefaultExperience(userContext.apiType);
const accountEndpoint = (databaseAccount && databaseAccount.properties.documentEndpoint) || ""; const accountEndpoint = databaseAccount?.properties?.documentEndpoint || "";
const sid = subscriptionId || ""; const sid = subscriptionId || "";
const rg = resourceGroup || ""; const rg = resourceGroup || "";
const dba = (databaseAccount && databaseAccount.name) || ""; const dba = databaseAccount?.name || "";
const resourceUrl = encodeURIComponent(accountEndpoint); const resourceUrl = encodeURIComponent(accountEndpoint);
const rid = ""; const rid = "";
const rtype = ""; 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 { SessionStorageUtility } from "../../Shared/StorageUtility";
import { userContext } from "../../UserContext";
import { get } from "../../Utils/arm/generatedClients/2020-04-01/databaseAccounts";
import { RefreshResult } from "../SelfServeTypes"; import { RefreshResult } from "../SelfServeTypes";
export enum Regions { export enum Regions {
NorthCentralUS = "NorthCentralUS", NorthCentralUS = "NorthCentralUS",
@ -67,9 +67,9 @@ export const onRefreshSelfServeExample = async (): Promise<RefreshResult> => {
const refreshCountString = SessionStorageUtility.getEntry("refreshCount"); const refreshCountString = SessionStorageUtility.getEntry("refreshCount");
const refreshCount = refreshCountString ? parseInt(refreshCountString) : 0; const refreshCount = refreshCountString ? parseInt(refreshCountString) : 0;
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const resourceGroup = userContext.resourceGroup; const databaseAccountName = databaseAccount.name;
const databaseAccountName = userContext.databaseAccount.name;
const databaseAccountGetResults = await get(subscriptionId, resourceGroup, databaseAccountName); const databaseAccountGetResults = await get(subscriptionId, resourceGroup, databaseAccountName);
const isUpdateInProgress = databaseAccountGetResults.properties.provisioningState !== "Succeeded"; const isUpdateInProgress = databaseAccountGetResults.properties.provisioningState !== "Succeeded";

View File

@ -189,8 +189,8 @@ const getInput = (value: DecoratorProperties): AnyDisplay => {
}; };
export const generateBladeLink = (blade: BladeType): string => { export const generateBladeLink = (blade: BladeType): string => {
const subscriptionId = userContext.subscriptionId; const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const resourceGroupName = userContext.resourceGroup; const databaseAccountName = databaseAccount.name;
const databaseAccountName = userContext.databaseAccount.name;
return `${document.referrer}#@microsoft.onmicrosoft.com/resource/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDb/databaseAccounts/${databaseAccountName}/${blade}`; 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); const explorer = new Explorer(explorerParams);
explorer.configure({ explorer.configure({
databaseAccount: account, databaseAccount: account,
subscriptionId,
resourceGroup,
masterKey: keys.primaryMasterKey,
authorizationToken: `Bearer ${config.authorizationToken}`,
}); });
return explorer; return explorer;
} }
@ -127,7 +123,6 @@ function configureHostedWithConnectionString(config: ConnectionString, explorerP
const explorer = new Explorer(explorerParams); const explorer = new Explorer(explorerParams);
explorer.configure({ explorer.configure({
databaseAccount, databaseAccount,
masterKey: config.masterKey,
}); });
return explorer; return explorer;
} }
@ -183,7 +178,6 @@ function configureEmulator(explorerParams: ExplorerParams): Explorer {
authType: AuthType.MasterKey, authType: AuthType.MasterKey,
}); });
const explorer = new Explorer(explorerParams); const explorer = new Explorer(explorerParams);
explorer.databaseAccount(emulatorAccount);
explorer.isAccountReady(true); explorer.isAccountReady(true);
return explorer; return explorer;
} }