UNPKG

@shipengine/connect

Version:

The official developer tooling for building ShipEngine connect apps

69 lines 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseKeyValuePairs = exports.parseIndependentKeyValuePairs = exports.tryParseTuple = void 0; const stripQuotes = (str) => { if (!str) { return undefined; } const singleQuoteWrapped = str.startsWith("'") && str.endsWith("'"); const doubleQuoteWrapped = str.startsWith('"') && str.endsWith('"'); if (singleQuoteWrapped || doubleQuoteWrapped) { return str.slice(1, str.length - 1); } return str; }; function tryParseTuple(arg) { const assignmentIndex = arg.indexOf('='); if (assignmentIndex < 1) { return null; } const key = arg.slice(0, assignmentIndex); const value = stripQuotes(arg.slice(assignmentIndex + 1, arg.length)) || ''; if (key.length > 0 && value.length > 0) { return { key, value, }; } return null; } exports.tryParseTuple = tryParseTuple; function parseIndependentKeyValuePairs(args) { if (!args || args.length === 0) { return null; } const sanitizedArgs = args.map((arg) => arg.trim().replace(/"/g, '')); if (sanitizedArgs.length % 2 !== 0) { throw new Error('Invalid number of arguments, each key must have a corresponding value'); } const keyValuePairs = []; while (sanitizedArgs.length > 0) { keyValuePairs.push({ key: sanitizedArgs.shift(), value: sanitizedArgs.shift(), }); } return keyValuePairs; } exports.parseIndependentKeyValuePairs = parseIndependentKeyValuePairs; function parseKeyValuePairs(args) { if (!args || args.length === 0) { return []; } const keyValuePairs = []; const independentArguments = args.filter((arg) => { const kvp = tryParseTuple(arg); if (kvp) { keyValuePairs.push(kvp); return false; } return true; }); const otherPairs = parseIndependentKeyValuePairs(independentArguments); if (otherPairs) { keyValuePairs.push(...otherPairs); } return keyValuePairs; } exports.parseKeyValuePairs = parseKeyValuePairs; //# sourceMappingURL=parse-key-value-pairs.js.map