addDatasetEntry function exported ✓ 100.0%

Last updated: 2026-02-24T21:07:57.500Z

Metrics

LOC: 42 Complexity: 6 Params: 3 Coverage: 100.0% (12/12 lines, 2x executed)

Signature

addDatasetEntry( entry: Omit<DatasetEntry, "id" | "createdAt">, ): : Promise<DatasetEntry | null>

Summary

Adds a single entry to the dataset. Deduplicates by normalised signals — if an identical signals string already exists with the same type, the entry is updated in place.

Source Code

export async function addDatasetEntry(
  entry: Omit<DatasetEntry, "id" | "createdAt">,
): Promise<DatasetEntry | null> {
  const normalized = normalise(entry.signals);
  if (!normalized) {
    log.warn(
      "addDatasetEntry: signals está vazio após normalização — ignorando",
    );
    return null;
  }

  const existing = await getDatasetEntries();

  const dupIdx = existing.findIndex(
    (e) => e.signals === normalized && e.type === entry.type,
  );

  const newEntry: DatasetEntry =
    dupIdx >= 0
      ? {
          ...existing[dupIdx],
          source: entry.source,
          difficulty: entry.difficulty,
          createdAt: Date.now(),
        }
      : {
          id: generateId(),
          signals: normalized,
          type: entry.type,
          source: entry.source,
          difficulty: entry.difficulty,
          createdAt: Date.now(),
        };

  const updated =
    dupIdx >= 0
      ? existing.map((e, i) => (i === dupIdx ? newEntry : e))
      : [...existing, newEntry];

  await chrome.storage.local.set({ [RUNTIME_DATASET_KEY]: updated });
  return newEntry;
}

Dependencies (Outgoing)

graph LR addDatasetEntry["addDatasetEntry"] normalise["normalise"] getDatasetEntries["getDatasetEntries"] generateId["generateId"] addDatasetEntry -->|calls| normalise addDatasetEntry -->|calls| getDatasetEntries addDatasetEntry -->|calls| generateId style addDatasetEntry fill:#dbeafe,stroke:#2563eb,stroke-width:2px click addDatasetEntry "85b3f0de7e9f307e.html" click normalise "e25940e3db982f50.html" click getDatasetEntries "b570d56d841d1c94.html" click generateId "b7d96ccd023f052f.html"
TargetType
normalise calls
getDatasetEntries calls
generateId calls

Impact (Incoming)

graph LR addDatasetEntry["addDatasetEntry"] handle["handle"] LearnedEntry["LearnedEntry"] makeEntry["makeEntry"] getContextHtml["getContextHtml"] handle -->|uses| addDatasetEntry handle -->|uses| addDatasetEntry LearnedEntry -->|uses| addDatasetEntry makeEntry -->|uses| addDatasetEntry getContextHtml -->|uses| addDatasetEntry style addDatasetEntry fill:#dbeafe,stroke:#2563eb,stroke-width:2px click addDatasetEntry "85b3f0de7e9f307e.html" click handle "4ec56f844308ba0c.html" click LearnedEntry "05b9e576ce235a30.html" click makeEntry "51dbe567b29f8f6e.html" click getContextHtml "765515d6b3d443b6.html"
SourceType
handle uses
handle uses
LearnedEntry uses
makeEntry uses
getContextHtml uses