UNPKG

@cocalc/project

Version:
49 lines (47 loc) 1.91 kB
"use strict"; /* * 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