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
JavaScript
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,
});