Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
switchMap((action: LIST_KERNELSPECS) => {
const host = store.getState().app.host;
// Normalizing to match rx-jupyter vs. host record
const serverConfig = {
endpoint: host.serverUrl,
token: host.token,
crossDomain: false
};
// $FlowFixMe: WTF
return kernelspecs.list(serverConfig).pipe(
tap(xhr => {
if (xhr.status !== 200) {
throw new Error(xhr.response);
}
}),
map(xhr => {
return {
type: "KERNELSPECS_LISTED",
payload: xhr.response
};
}),
catchError((xhrError: any) => of(genericAjaxFail(xhrError)))
);
})
);
mergeMap((action: FetchKernelspecs) => {
const {
payload: { hostRef, kernelspecsRef }
} = action;
const state = store.getState();
const host = selectors.currentHost(state);
if (host.type !== "jupyter") {
// Dismiss any usage that isn't targeting a jupyter server
return empty();
}
const serverConfig = selectors.serverConfig(host);
return kernelspecs.list(serverConfig).pipe(
map(data => {
const defaultKernelName = data.response.default;
const kernelspecs = {};
Object.keys(data.response.kernelspecs).forEach(key => {
const value = data.response.kernelspecs[key];
kernelspecs[key] = {
name: value.name,
resources: value.resources,
argv: value.spec.argv,
displayName: value.spec.display_name,
env: value.spec.env,
interruptMode: value.spec.interrupt_mode,
language: value.spec.language,
metadata: value.spec.metadata
};
});
mergeMap((action: actions.FetchKernelspecs) => {
const {
payload: { hostRef, kernelspecsRef }
} = action;
const state = state$.value;
const host = selectors.currentHost(state);
if (host.type !== "jupyter") {
// Dismiss any usage that isn't targeting a jupyter server
return empty();
}
const serverConfig: ServerConfig = selectors.serverConfig(host);
return kernelspecs.list(serverConfig).pipe(
map(data => {
const defaultKernelName = data.response.default;
const kernelspecs: { [key: string]: KernelspecProps } = {};
Object.keys(data.response.kernelspecs).forEach(key => {
const value = data.response.kernelspecs[key];
kernelspecs[key] = {
name: value.name,
resources: value.resources,
argv: value.spec.argv,
displayName: value.spec.display_name,
env: value.spec.env,
interruptMode: value.spec.interrupt_mode,
language: value.spec.language,
metadata: value.spec.metadata
};
});
mergeMap(({ payload: { serverId } }) => {
const { config } = state$.value.entities.serversById[serverId].server;
return kernelspecs.list(config).pipe(
mergeMap(data => {
const kernelName = data.response.default;
return of(
actions.fetchKernelSpecsFulfilled({
serverId,
response: data.response
}),
actions.setActiveKernel({ serverId, kernelName })
);
}),
catchError(error =>
of(actions.fetchKernelSpecsFailed({ serverId, error }))
)
);
})
);