handle function application

Last updated: 2026-03-01T23:25:47.061Z

Metrics

LOC: 58 Complexity: 17 Params: 1

Signature

handle(message: ExtensionMessage): : Promise<unknown>

Architecture violations

View all

  • [warning] max-cyclomatic-complexity: 'handle' has cyclomatic complexity 17 (max 10)

Source Code

async function handle(message: ExtensionMessage): Promise<unknown> {
  switch (message.type) {
    case "GET_SAVED_FORMS":
      return getSavedForms();

    case "DELETE_FORM": {
      const formId = parseStringPayload(message.payload);
      if (!formId) return { error: "Invalid payload for DELETE_FORM" };
      await deleteForm(formId);
      return { success: true };
    }

    case "UPDATE_FORM": {
      const form = parseSavedFormPayload(message.payload);
      if (!form) return { error: "Invalid payload for UPDATE_FORM" };
      await saveForm(form);
      return { success: true };
    }

    case "SET_DEFAULT_FORM": {
      const formId = parseStringPayload(message.payload);
      if (!formId) return { error: "Invalid payload for SET_DEFAULT_FORM" };
      await setDefaultForm(formId);
      return { success: true };
    }

    case "GET_SETTINGS":
      return getSettings();

    case "SAVE_SETTINGS": {
      const settings = parseSettingsPayload(message.payload);
      if (!settings) return { error: "Invalid payload for SAVE_SETTINGS" };
      await saveSettings(settings);
      return { success: true };
    }

    case "GET_IGNORED_FIELDS":
      return getIgnoredFields();

    case "ADD_IGNORED_FIELD": {
      const payload = parseIgnoredFieldPayload(message.payload);
      if (!payload) return { error: "Invalid payload for ADD_IGNORED_FIELD" };
      const ignored = await addIgnoredField(payload);
      return ignored ?? { error: "Failed to add ignored field" };
    }

    case "REMOVE_IGNORED_FIELD": {
      const ignoredId = parseStringPayload(message.payload);
      if (!ignoredId)
        return { error: "Invalid payload for REMOVE_IGNORED_FIELD" };
      await removeIgnoredField(ignoredId);
      return { success: true };
    }

    default:
      return { error: `Unhandled type in storageHandler: ${message.type}` };
  }
}

Dependencies (Outgoing)

graph LR handle["handle"] MessageHandler["MessageHandler"] ExtensionMessage["ExtensionMessage"] MessageType["MessageType"] getSavedForms["getSavedForms"] saveForm["saveForm"] deleteForm["deleteForm"] setDefaultForm["setDefaultForm"] getSettings["getSettings"] saveSettings["saveSettings"] getIgnoredFields["getIgnoredFields"] addIgnoredField["addIgnoredField"] removeIgnoredField["removeIgnoredField"] parseIgnoredFieldPayload["parseIgnoredFieldPayload"] parseSavedFormPayload["parseSavedFormPayload"] parseSettingsPayload["parseSettingsPayload"] parseStringPayload["parseStringPayload"] handle -->|uses| MessageHandler handle -->|uses| ExtensionMessage handle -->|uses| MessageType handle -->|uses| getSavedForms handle -->|uses| saveForm handle -->|uses| deleteForm handle -->|uses| setDefaultForm handle -->|uses| getSettings handle -->|uses| saveSettings handle -->|uses| getIgnoredFields handle -->|uses| addIgnoredField handle -->|uses| removeIgnoredField handle -->|uses| parseIgnoredFieldPayload handle -->|uses| parseSavedFormPayload handle -->|uses| parseSettingsPayload handle -->|uses| parseStringPayload style handle fill:#dbeafe,stroke:#2563eb,stroke-width:2px click handle "02de534415e566f4.html" click MessageHandler "ab334f3bc9eb52d7.html" click ExtensionMessage "c70465261f6c12b8.html" click MessageType "2ef3f4e4b1044d26.html" click getSavedForms "9a1357b95618ee5e.html" click saveForm "639eb913ec8fd306.html" click deleteForm "a61dc3e1000e0f40.html" click setDefaultForm "a474b5e75cb3500a.html" click getSettings "99db54620b94a08b.html" click saveSettings "36c97425aad183c5.html" click getIgnoredFields "4ae1979d28b4e80b.html" click addIgnoredField "4434c375c8a8a862.html" click removeIgnoredField "d8b20d34effbbe04.html" click parseIgnoredFieldPayload "4c0348af194a5acc.html" click parseSavedFormPayload "f35159f3f4ab76f5.html" click parseSettingsPayload "dd27ed55ceea167e.html" click parseStringPayload "a410bc3f13516882.html"

No incoming dependencies.