loadPretrainedModel function domain exported ~ 54.5%
Last updated: 2026-03-02T11:04:51.015Z
Metrics
LOC: 57
Complexity: 5
Params: 0
Coverage: 54.5% (12/22 lines, 5x executed)
Signature
loadPretrainedModel(): : Promise<void>
Summary
Loads the pre-trained TF.js model. Priority: 1. Runtime-trained model stored in chrome.storage.local (via options page) 2. Bundled model files from public/model/ (ship-time default) Safe to call multiple times — subsequent calls are no-ops.
Source Code
export async function loadPretrainedModel(): Promise<void> {
if (_pretrained) return;
if (_pretrainedLoadPromise) return _pretrainedLoadPromise;
_pretrainedLoadPromise = (async () => {
try {
await loadTfModule();
// Step 1: Try runtime-trained model (user dataset, options page)
const runtimeModel = await loadRuntimeModel();
if (runtimeModel) {
_pretrained = runtimeModel;
await loadLearnedVectors();
log.info(
TF_MESSAGES.modelLoaded.runtime(
runtimeModel.labels.length,
runtimeModel.vocab.size,
_learnedVectors.length,
),
);
return;
}
// Step 2: Fall back to bundled model files
const tf = await loadTfModule();
const base = chrome.runtime.getURL("");
const [model, vocabRaw, labelsRaw] = await Promise.all([
tf.loadLayersModel(`${base}${TF_CONFIG.model.json}`),
fetch(`${base}${TF_CONFIG.model.vocab}`).then(
(r) => r.json() as Promise<Record<string, number>>,
),
fetch(`${base}${TF_CONFIG.model.labels}`).then(
(r) => r.json() as Promise<string[]>,
),
]);
_pretrained = {
model,
vocab: new Map(Object.entries(vocabRaw)),
labels: labelsRaw as FieldType[],
};
await loadLearnedVectors();
log.info(
TF_MESSAGES.modelLoaded.bundled(
labelsRaw.length,
_pretrained.vocab.size,
_learnedVectors.length,
),
);
} catch (err) {
log.error(TF_MESSAGES.modelLoadFailed.error, err);
log.warn(TF_MESSAGES.modelLoadFailed.fallback);
}
})();
return _pretrainedLoadPromise;
}
Dependencies (Outgoing)
| Target | Type |
|---|---|
| loadTfModule | calls |
| loadLearnedVectors | calls |
Impact (Incoming)
| Source | Type |
|---|---|
| FillableElement | uses |
| makeField | uses |
| reloadClassifier | calls |
| resetModelMock | uses |