UNPKG

nbtx

Version:

Jupyter Notebook Translators: Transform Jupyter notebook JSON files (*.ipynb) to and from more compact data structures for use in web applications or other contexts where loading component parts (e.g. images, data, etc.) is preferred.

30 lines (29 loc) 1.23 kB
import { ensureString } from './utils.js'; function ensureStringEnsureNewlines(maybeString) { return typeof maybeString === 'string' ? maybeString : maybeString === null || maybeString === void 0 ? void 0 : maybeString.join('\n'); } async function minifyStringOutput(output, fieldName, outputCache, opts) { if (!output[fieldName]) { throw Error(`Bad Field name ${fieldName} for output type ${output.output_type}`); } const text = opts.ensureNewlines ? ensureStringEnsureNewlines(output[fieldName]) : ensureString(output[fieldName]); if (text && text.length <= opts.maxCharacters) { return { ...output, [fieldName]: text }; } const hash = opts.computeHash(text); outputCache[hash] = [text, { contentType: 'text/plain', encoding: 'utf8' }]; return { ...output, hash, [fieldName]: `${text.slice(0, opts.truncateTo - 3)}...`, }; } export const minifyStreamOutput = async (output, outputCache, opts) => minifyStringOutput(output, 'text', outputCache, opts); export const minifyErrorOutput = async (output, outputCache, opts) => minifyStringOutput(output, 'traceback', outputCache, { ensureNewlines: true, ...opts, });