@cocalc/project
Version:
CoCalc: project daemon
49 lines (47 loc) • 1.91 kB
JavaScript
;
/*
* This file is part of CoCalc: Copyright © 2020 Sagemath, Inc.
* License: AGPLv3 s.t. "Commons Clause" – see LICENSE.md for details
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.get_kernel_data = void 0;
/*
Use nteracts kernelspecs module to get data about all installed Jupyter kernels.
The result is cached for 5s to avoid wasted effort in case of a flurry of calls.
Specs: https://jupyter-client.readthedocs.io/en/stable/kernels.html#kernel-specs
*/
const kernelspecs_1 = require("kernelspecs");
const misc_1 = require("@cocalc/util/misc");
const lru_cache_1 = __importDefault(require("lru-cache"));
const cache = new lru_cache_1.default({ maxAge: 5000 });
async function get_kernel_data() {
let kernel_data = cache.get("kernel_data");
if (kernel_data != null) {
return kernel_data;
}
const ks = await (0, kernelspecs_1.findAll)();
kernel_data = { kernelspecs: ks };
const v = [];
for (const kernel in kernel_data.kernelspecs) {
const value = kernel_data.kernelspecs[kernel];
v.push({
name: kernel,
display_name: value.spec.display_name,
language: value.spec.language,
interrupt_mode: value.spec.interrupt_mode,
env: value.spec.env,
metadata: value.spec.metadata,
// kernelspecs incorrectly calls it resources_dir instead of resource_dir.
// See https://github.com/nteract/kernelspecs/issues/25
resource_dir: value.resource_dir ?? value.resources_dir,
});
}
v.sort((0, misc_1.field_cmp)("display_name"));
cache.set("kernel_data", v);
return v;
}
exports.get_kernel_data = get_kernel_data;
//# sourceMappingURL=kernel-data.js.map