Files
nodewarden/webapp/src/lib/import-formats.ts
T

108 lines
3.1 KiB
TypeScript

import type { CiphersImportPayload } from '@/lib/api/vault';
import type { ImportSourceId } from '@/lib/import-format-sources';
import {
parseArcCsv,
parseAscendoCsv,
parseBlackberryCsv,
parseBlurCsv,
parseButtercupCsv,
parseCodebookCsv,
parseDashlaneCsv,
parseDashlaneJson,
parseEncryptrCsv,
parseKeePassXCsv,
parseKeePassXml,
parseLastPassCsv,
} from '@/lib/import-formats-csv-misc';
import {
parseAvastCsv,
parseAvastJson,
parseAviraCsv,
parseBitwardenCsv,
parseChromeCsv,
parseFirefoxCsv,
parseSafariCsv,
} from '@/lib/import-formats-browser';
import {
parseMSecureCsv,
parseMykiCsv,
parseNetwrixCsv,
parseNordpassCsv,
parsePasskyJson,
parsePassmanJson,
parsePasswordBossJson,
parsePsonoJson,
parseRoboFormCsv,
parseZohoVaultCsv,
} from '@/lib/import-formats-advanced';
import { parseOnePassword1Pif, parseOnePassword1PuxJson, parseOnePasswordCsv } from '@/lib/import-formats-onepassword';
import {
parseEnpassCsv,
parseEnpassJson,
parseKeeperCsv,
parseKeeperJson,
parseLogMeOnceCsv,
parseMeldiumCsv,
parseProtonPassJson,
} from '@/lib/import-formats-password-managers';
const IMPORT_SOURCE_PARSERS: Record<ImportSourceId, (textRaw: string) => CiphersImportPayload> = {
bitwarden_json: () => {
throw new Error('bitwarden_json is handled by dedicated JSON flow');
},
bitwarden_zip: () => {
throw new Error('bitwarden_zip is handled by dedicated zip flow');
},
nodewarden_json: () => {
throw new Error('nodewarden_json is handled by dedicated JSON flow');
},
bitwarden_csv: parseBitwardenCsv,
onepassword_1pux: parseOnePassword1PuxJson,
onepassword_1pif: parseOnePassword1Pif,
onepassword_mac_csv: (textRaw) => parseOnePasswordCsv(textRaw, true),
onepassword_win_csv: (textRaw) => parseOnePasswordCsv(textRaw, false),
protonpass_json: parseProtonPassJson,
avira_csv: parseAviraCsv,
avast_csv: parseAvastCsv,
avast_json: parseAvastJson,
chrome: parseChromeCsv,
edge: parseChromeCsv,
brave: parseChromeCsv,
opera: parseChromeCsv,
vivaldi: parseChromeCsv,
firefox_csv: parseFirefoxCsv,
safari_csv: parseSafariCsv,
lastpass: parseLastPassCsv,
dashlane_csv: parseDashlaneCsv,
dashlane_json: parseDashlaneJson,
keepass_xml: parseKeePassXml,
keepassx_csv: parseKeePassXCsv,
arc_csv: parseArcCsv,
ascendo_csv: parseAscendoCsv,
blackberry_csv: parseBlackberryCsv,
blur_csv: parseBlurCsv,
buttercup_csv: parseButtercupCsv,
codebook_csv: parseCodebookCsv,
encryptr_csv: parseEncryptrCsv,
enpass_csv: parseEnpassCsv,
enpass_json: parseEnpassJson,
keeper_csv: parseKeeperCsv,
keeper_json: parseKeeperJson,
logmeonce_csv: parseLogMeOnceCsv,
meldium_csv: parseMeldiumCsv,
msecure_csv: parseMSecureCsv,
myki_csv: parseMykiCsv,
netwrix_csv: parseNetwrixCsv,
nordpass_csv: parseNordpassCsv,
roboform_csv: parseRoboFormCsv,
zohovault_csv: parseZohoVaultCsv,
passman_json: parsePassmanJson,
passky_json: parsePasskyJson,
psono_json: parsePsonoJson,
passwordboss_json: parsePasswordBossJson,
};
export function parseImportPayloadBySource(source: ImportSourceId, textRaw: string): CiphersImportPayload {
return IMPORT_SOURCE_PARSERS[source](textRaw);
}