addIgnoredField function infrastructure exported ✓ 85.7%

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

Metrics

LOC: 34 Complexity: 4 Params: 3 Coverage: 85.7% (12/14 lines, 2x executed)

Signature

addIgnoredField( field: Omit<IgnoredField, "id" | "createdAt">, ): : Promise<IgnoredField | null>

Summary

Adds a field to the ignored list. If a matching entry already exists (same URL pattern + selector), returns the existing entry instead.

Tags

#@param field - The field to ignore (without ID and createdAt)#@returns The created or existing `IgnoredField`, or `null` on failure

Source Code

export async function addIgnoredField(
  field: Omit<IgnoredField, "id" | "createdAt">,
): Promise<IgnoredField | null> {
  let resolvedField: IgnoredField | null = null;

  await updateStorageAtomically(
    STORAGE_KEYS.IGNORED_FIELDS,
    [] as IgnoredField[],
    (fields) => {
      const existing = fields.find(
        (f) =>
          f.urlPattern === field.urlPattern && f.selector === field.selector,
      );
      if (existing) {
        resolvedField = existing;
        return fields;
      }

      const nextField: IgnoredField = {
        ...field,
        id: `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,
        createdAt: Date.now(),
      };
      resolvedField = nextField;
      return [...fields, nextField];
    },
  );

  if (!resolvedField) {
    log.warn("Failed to resolve ignored field — returning null");
    return null;
  }
  return resolvedField;
}

Dependencies (Outgoing)

graph LR addIgnoredField["addIgnoredField"] updateStorageAtomically["updateStorageAtomically"] addIgnoredField -->|calls| updateStorageAtomically style addIgnoredField fill:#dbeafe,stroke:#2563eb,stroke-width:2px click addIgnoredField "4434c375c8a8a862.html" click updateStorageAtomically "bf2f57323401fa98.html"
TargetType
updateStorageAtomically calls

Impact (Incoming)

graph LR addIgnoredField["addIgnoredField"] handle["handle"] makeField["makeField"] handle -->|uses| addIgnoredField makeField -->|uses| addIgnoredField style addIgnoredField fill:#dbeafe,stroke:#2563eb,stroke-width:2px click addIgnoredField "4434c375c8a8a862.html" click handle "02de534415e566f4.html" click makeField "4efd84a92001a881.html"
SourceType
handle uses
makeField uses