Expose serverBasePath on client-side (#58070) (#58185)

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
This commit is contained in:
Josh Dover 2020-02-21 15:03:35 -07:00 committed by GitHub
parent 8fa101af38
commit 6a86b57242
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 86 additions and 16 deletions

View file

@ -19,4 +19,5 @@ export interface IBasePath
| [get](./kibana-plugin-public.ibasepath.get.md) | <code>() =&gt; string</code> | Gets the <code>basePath</code> string. |
| [prepend](./kibana-plugin-public.ibasepath.prepend.md) | <code>(url: string) =&gt; string</code> | Prepends <code>path</code> with the basePath. |
| [remove](./kibana-plugin-public.ibasepath.remove.md) | <code>(url: string) =&gt; string</code> | Removes the prepended basePath from the <code>path</code>. |
| [serverBasePath](./kibana-plugin-public.ibasepath.serverbasepath.md) | <code>string</code> | Returns the server's root basePath as configured, without any namespace prefix.<!-- -->See for getting the basePath value for a specific request |

View file

@ -0,0 +1,15 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [kibana-plugin-public](./kibana-plugin-public.md) &gt; [IBasePath](./kibana-plugin-public.ibasepath.md) &gt; [serverBasePath](./kibana-plugin-public.ibasepath.serverbasepath.md)
## IBasePath.serverBasePath property
Returns the server's root basePath as configured, without any namespace prefix.
See for getting the basePath value for a specific request
<b>Signature:</b>
```typescript
readonly serverBasePath: string;
```

View file

@ -88,4 +88,14 @@ describe('BasePath', () => {
});
});
});
describe('serverBasePath', () => {
it('defaults to basePath', () => {
expect(new BasePath('/foo/bar').serverBasePath).toEqual('/foo/bar');
});
it('returns value when passed into constructor', () => {
expect(new BasePath('/foo/bar', '/foo').serverBasePath).toEqual('/foo');
});
});
});

View file

@ -38,7 +38,10 @@
import { modifyUrl } from '../../utils';
export class BasePath {
constructor(private readonly basePath: string = '') {}
constructor(
private readonly basePath: string = '',
public readonly serverBasePath: string = basePath
) {}
public get = () => {
return this.basePath;

View file

@ -39,7 +39,10 @@ export class HttpService implements CoreService<HttpSetup, HttpStart> {
public setup({ injectedMetadata, fatalErrors }: HttpDeps): HttpSetup {
const kibanaVersion = injectedMetadata.getKibanaVersion();
const basePath = new BasePath(injectedMetadata.getBasePath());
const basePath = new BasePath(
injectedMetadata.getBasePath(),
injectedMetadata.getServerBasePath()
);
const fetchService = new Fetch({ basePath, kibanaVersion });
const loadingCount = this.loadingCount.setup({ fatalErrors });

View file

@ -94,6 +94,13 @@ export interface IBasePath {
* Removes the prepended basePath from the `path`.
*/
remove: (url: string) => string;
/**
* Returns the server's root basePath as configured, without any namespace prefix.
*
* See {@link BasePath.get} for getting the basePath value for a specific request
*/
readonly serverBasePath: string;
}
/**

View file

@ -21,6 +21,7 @@ import { InjectedMetadataService, InjectedMetadataSetup } from './injected_metad
const createSetupContractMock = () => {
const setupContract: jest.Mocked<InjectedMetadataSetup> = {
getBasePath: jest.fn(),
getServerBasePath: jest.fn(),
getKibanaVersion: jest.fn(),
getKibanaBranch: jest.fn(),
getCspConfig: jest.fn(),

View file

@ -54,6 +54,7 @@ export interface InjectedMetadataParams {
buildNumber: number;
branch: string;
basePath: string;
serverBasePath: string;
category?: AppCategory;
csp: {
warnLegacyBrowsers: boolean;
@ -115,6 +116,10 @@ export class InjectedMetadataService {
return this.state.basePath;
},
getServerBasePath: () => {
return this.state.serverBasePath;
},
getKibanaVersion: () => {
return this.state.version;
},
@ -161,6 +166,7 @@ export class InjectedMetadataService {
*/
export interface InjectedMetadataSetup {
getBasePath: () => string;
getServerBasePath: () => string;
getKibanaBuildNumber: () => number;
getKibanaBranch: () => string;
getKibanaVersion: () => string;

View file

@ -718,6 +718,8 @@ export interface IBasePath {
get: () => string;
prepend: (url: string) => string;
remove: (url: string) => string;
// Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "BasePath"
readonly serverBasePath: string;
}
// @public

View file

@ -65,6 +65,7 @@ Object {
"version": Any<String>,
},
"legacyMode": false,
"serverBasePath": "/mock-server-basepath",
"uiPlugins": Array [],
"vars": Object {},
"version": Any<String>,
@ -136,6 +137,7 @@ Object {
"version": Any<String>,
},
"legacyMode": false,
"serverBasePath": "/mock-server-basepath",
"uiPlugins": Array [],
"vars": Object {},
"version": Any<String>,
@ -211,6 +213,7 @@ Object {
"version": Any<String>,
},
"legacyMode": false,
"serverBasePath": "/mock-server-basepath",
"uiPlugins": Array [],
"vars": Object {},
"version": Any<String>,
@ -282,6 +285,7 @@ Object {
"version": Any<String>,
},
"legacyMode": false,
"serverBasePath": "/mock-server-basepath",
"uiPlugins": Array [],
"vars": Object {},
"version": Any<String>,
@ -353,6 +357,7 @@ Object {
"version": Any<String>,
},
"legacyMode": false,
"serverBasePath": "/mock-server-basepath",
"uiPlugins": Array [],
"vars": Object {},
"version": Any<String>,
@ -424,6 +429,7 @@ Object {
"version": Any<String>,
},
"legacyMode": true,
"serverBasePath": "/mock-server-basepath",
"uiPlugins": Array [],
"vars": Object {},
"version": Any<String>,
@ -495,6 +501,7 @@ Object {
"version": Any<String>,
},
"legacyMode": true,
"serverBasePath": "/mock-server-basepath",
"uiPlugins": Array [],
"vars": Object {},
"version": Any<String>,
@ -566,6 +573,7 @@ Object {
"version": Any<String>,
},
"legacyMode": true,
"serverBasePath": "/mock-server-basepath",
"uiPlugins": Array [],
"vars": Object {
"fake": "__TEST_TOKEN__",
@ -639,6 +647,7 @@ Object {
"version": Any<String>,
},
"legacyMode": true,
"serverBasePath": "/mock-server-basepath",
"uiPlugins": Array [],
"vars": Object {},
"version": Any<String>,
@ -710,6 +719,7 @@ Object {
"version": Any<String>,
},
"legacyMode": true,
"serverBasePath": "/mock-server-basepath",
"uiPlugins": Array [],
"vars": Object {
"fake": "__TEST_TOKEN__",

View file

@ -60,6 +60,7 @@ export class RenderingService implements CoreService<RenderingServiceSetup> {
) => {
const { env } = this.coreContext;
const basePath = http.basePath.get(request);
const serverBasePath = http.basePath.serverBasePath;
const settings = {
defaults: uiSettings.getRegistered(),
user: includeUserSettings ? await uiSettings.getUserProvided() : {},
@ -79,6 +80,7 @@ export class RenderingService implements CoreService<RenderingServiceSetup> {
buildNumber: env.packageInfo.buildNum,
branch: env.packageInfo.branch,
basePath,
serverBasePath,
env,
legacyMode: appId !== 'core',
i18n: {

View file

@ -39,6 +39,7 @@ export interface RenderingMetadata {
buildNumber: number;
branch: string;
basePath: string;
serverBasePath: string;
env: Env;
legacyMode: boolean;
i18n: {

View file

@ -14,6 +14,7 @@ exports[`DashboardEmptyScreen renders correctly with readonly mode 1`] = `
"get": [Function],
"prepend": [Function],
"remove": [Function],
"serverBasePath": "",
},
"delete": [MockFunction],
"fetch": [MockFunction],
@ -376,6 +377,7 @@ exports[`DashboardEmptyScreen renders correctly with visualize paragraph 1`] = `
"get": [Function],
"prepend": [Function],
"remove": [Function],
"serverBasePath": "",
},
"delete": [MockFunction],
"fetch": [MockFunction],
@ -735,6 +737,7 @@ exports[`DashboardEmptyScreen renders correctly without visualize paragraph 1`]
"get": [Function],
"prepend": [Function],
"remove": [Function],
"serverBasePath": "",
},
"delete": [MockFunction],
"fetch": [MockFunction],

View file

@ -346,6 +346,7 @@ exports[`QueryStringInput Should disable autoFocus on EuiFieldText when disableA
"get": [Function],
"prepend": [Function],
"remove": [Function],
"serverBasePath": "",
},
"delete": [MockFunction],
"fetch": [MockFunction],
@ -1003,6 +1004,7 @@ exports[`QueryStringInput Should disable autoFocus on EuiFieldText when disableA
"get": [Function],
"prepend": [Function],
"remove": [Function],
"serverBasePath": "",
},
"delete": [MockFunction],
"fetch": [MockFunction],
@ -1642,6 +1644,7 @@ exports[`QueryStringInput Should pass the query language to the language switche
"get": [Function],
"prepend": [Function],
"remove": [Function],
"serverBasePath": "",
},
"delete": [MockFunction],
"fetch": [MockFunction],
@ -2296,6 +2299,7 @@ exports[`QueryStringInput Should pass the query language to the language switche
"get": [Function],
"prepend": [Function],
"remove": [Function],
"serverBasePath": "",
},
"delete": [MockFunction],
"fetch": [MockFunction],
@ -2935,6 +2939,7 @@ exports[`QueryStringInput Should render the given query 1`] = `
"get": [Function],
"prepend": [Function],
"remove": [Function],
"serverBasePath": "",
},
"delete": [MockFunction],
"fetch": [MockFunction],
@ -3589,6 +3594,7 @@ exports[`QueryStringInput Should render the given query 1`] = `
"get": [Function],
"prepend": [Function],
"remove": [Function],
"serverBasePath": "",
},
"delete": [MockFunction],
"fetch": [MockFunction],

View file

@ -43,7 +43,7 @@ describe('apiKeysManagementApp', () => {
expect(setBreadcrumbs).toHaveBeenCalledWith([{ href: '#/some-base-path', text: 'API Keys' }]);
expect(container).toMatchInlineSnapshot(`
<div>
Page: {"notifications":{"toasts":{}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"},"apiKeysAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}}}
Page: {"notifications":{"toasts":{}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"},"apiKeysAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}}}
</div>
`);

View file

@ -53,7 +53,7 @@ describe('roleMappingsManagementApp', () => {
expect(setBreadcrumbs).toHaveBeenCalledWith([{ href: `#${basePath}`, text: 'Role Mappings' }]);
expect(container).toMatchInlineSnapshot(`
<div>
Role Mappings Page: {"notifications":{"toasts":{}},"roleMappingsAPI":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"}}
Role Mappings Page: {"notifications":{"toasts":{}},"roleMappingsAPI":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"}}
</div>
`);
@ -75,7 +75,7 @@ describe('roleMappingsManagementApp', () => {
]);
expect(container).toMatchInlineSnapshot(`
<div>
Role Mapping Edit Page: {"roleMappingsAPI":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"rolesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"notifications":{"toasts":{}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"}}
Role Mapping Edit Page: {"roleMappingsAPI":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"rolesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"notifications":{"toasts":{}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"}}
</div>
`);
@ -98,7 +98,7 @@ describe('roleMappingsManagementApp', () => {
]);
expect(container).toMatchInlineSnapshot(`
<div>
Role Mapping Edit Page: {"name":"someRoleMappingName","roleMappingsAPI":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"rolesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"notifications":{"toasts":{}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"}}
Role Mapping Edit Page: {"name":"someRoleMappingName","roleMappingsAPI":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"rolesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"notifications":{"toasts":{}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"}}
</div>
`);

View file

@ -64,7 +64,7 @@ describe('rolesManagementApp', () => {
expect(setBreadcrumbs).toHaveBeenCalledWith([{ href: `#${basePath}`, text: 'Roles' }]);
expect(container).toMatchInlineSnapshot(`
<div>
Roles Page: {"notifications":{"toasts":{}},"rolesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}}}
Roles Page: {"notifications":{"toasts":{}},"rolesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}}}
</div>
`);
@ -86,7 +86,7 @@ describe('rolesManagementApp', () => {
]);
expect(container).toMatchInlineSnapshot(`
<div>
Role Edit Page: {"action":"edit","rolesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"userAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"indicesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"privilegesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"http":{"basePath":{"basePath":""},"anonymousPaths":{}},"notifications":{"toasts":{}},"fatalErrors":{},"license":{"features$":{"_isScalar":false}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"},"uiCapabilities":{"catalogue":{},"management":{},"navLinks":{}}}
Role Edit Page: {"action":"edit","rolesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"userAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"indicesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"privilegesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}},"notifications":{"toasts":{}},"fatalErrors":{},"license":{"features$":{"_isScalar":false}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"},"uiCapabilities":{"catalogue":{},"management":{},"navLinks":{}}}
</div>
`);
@ -109,7 +109,7 @@ describe('rolesManagementApp', () => {
]);
expect(container).toMatchInlineSnapshot(`
<div>
Role Edit Page: {"action":"edit","roleName":"someRoleName","rolesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"userAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"indicesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"privilegesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"http":{"basePath":{"basePath":""},"anonymousPaths":{}},"notifications":{"toasts":{}},"fatalErrors":{},"license":{"features$":{"_isScalar":false}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"},"uiCapabilities":{"catalogue":{},"management":{},"navLinks":{}}}
Role Edit Page: {"action":"edit","roleName":"someRoleName","rolesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"userAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"indicesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"privilegesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}},"notifications":{"toasts":{}},"fatalErrors":{},"license":{"features$":{"_isScalar":false}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"},"uiCapabilities":{"catalogue":{},"management":{},"navLinks":{}}}
</div>
`);
@ -132,7 +132,7 @@ describe('rolesManagementApp', () => {
]);
expect(container).toMatchInlineSnapshot(`
<div>
Role Edit Page: {"action":"clone","roleName":"someRoleName","rolesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"userAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"indicesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"privilegesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"http":{"basePath":{"basePath":""},"anonymousPaths":{}},"notifications":{"toasts":{}},"fatalErrors":{},"license":{"features$":{"_isScalar":false}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"},"uiCapabilities":{"catalogue":{},"management":{},"navLinks":{}}}
Role Edit Page: {"action":"clone","roleName":"someRoleName","rolesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"userAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"indicesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"privilegesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}},"notifications":{"toasts":{}},"fatalErrors":{},"license":{"features$":{"_isScalar":false}},"docLinks":{"esDocBasePath":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/"},"uiCapabilities":{"catalogue":{},"management":{},"navLinks":{}}}
</div>
`);

View file

@ -58,7 +58,7 @@ describe('usersManagementApp', () => {
expect(setBreadcrumbs).toHaveBeenCalledWith([{ href: `#${basePath}`, text: 'Users' }]);
expect(container).toMatchInlineSnapshot(`
<div>
Users Page: {"notifications":{"toasts":{}},"apiClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}}}
Users Page: {"notifications":{"toasts":{}},"apiClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}}}
</div>
`);
@ -80,7 +80,7 @@ describe('usersManagementApp', () => {
]);
expect(container).toMatchInlineSnapshot(`
<div>
User Edit Page: {"authc":{},"apiClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"rolesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"notifications":{"toasts":{}}}
User Edit Page: {"authc":{},"apiClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"rolesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"notifications":{"toasts":{}}}
</div>
`);
@ -103,7 +103,7 @@ describe('usersManagementApp', () => {
]);
expect(container).toMatchInlineSnapshot(`
<div>
User Edit Page: {"authc":{},"apiClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"rolesAPIClient":{"http":{"basePath":{"basePath":""},"anonymousPaths":{}}},"notifications":{"toasts":{}},"username":"someUserName"}
User Edit Page: {"authc":{},"apiClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"rolesAPIClient":{"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}}},"notifications":{"toasts":{}},"username":"someUserName"}
</div>
`);

View file

@ -81,7 +81,7 @@ describe('spacesManagementApp', () => {
expect(setBreadcrumbs).toHaveBeenCalledWith([{ href: `#${basePath}`, text: 'Spaces' }]);
expect(container).toMatchInlineSnapshot(`
<div>
Spaces Page: {"capabilities":{"catalogue":{},"management":{},"navLinks":{}},"http":{"basePath":{"basePath":""},"anonymousPaths":{}},"notifications":{"toasts":{}},"spacesManager":{"onActiveSpaceChange$":{"_isScalar":false}},"securityEnabled":true}
Spaces Page: {"capabilities":{"catalogue":{},"management":{},"navLinks":{}},"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}},"notifications":{"toasts":{}},"spacesManager":{"onActiveSpaceChange$":{"_isScalar":false}},"securityEnabled":true}
</div>
`);
@ -103,7 +103,7 @@ describe('spacesManagementApp', () => {
]);
expect(container).toMatchInlineSnapshot(`
<div>
Spaces Edit Page: {"capabilities":{"catalogue":{},"management":{},"navLinks":{}},"http":{"basePath":{"basePath":""},"anonymousPaths":{}},"notifications":{"toasts":{}},"spacesManager":{"onActiveSpaceChange$":{"_isScalar":false}},"securityEnabled":true}
Spaces Edit Page: {"capabilities":{"catalogue":{},"management":{},"navLinks":{}},"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}},"notifications":{"toasts":{}},"spacesManager":{"onActiveSpaceChange$":{"_isScalar":false}},"securityEnabled":true}
</div>
`);
@ -126,7 +126,7 @@ describe('spacesManagementApp', () => {
]);
expect(container).toMatchInlineSnapshot(`
<div>
Spaces Edit Page: {"capabilities":{"catalogue":{},"management":{},"navLinks":{}},"http":{"basePath":{"basePath":""},"anonymousPaths":{}},"notifications":{"toasts":{}},"spacesManager":{"onActiveSpaceChange$":{"_isScalar":false}},"spaceId":"some-space","securityEnabled":true}
Spaces Edit Page: {"capabilities":{"catalogue":{},"management":{},"navLinks":{}},"http":{"basePath":{"basePath":"","serverBasePath":""},"anonymousPaths":{}},"notifications":{"toasts":{}},"spacesManager":{"onActiveSpaceChange$":{"_isScalar":false}},"spaceId":"some-space","securityEnabled":true}
</div>
`);