UNPKG

@bjoerge/mutiny

Version:

Tiny toolkit for working with Sanity mutations in JavaScript & TypeScript

1 lines 1.59 kB
{"version":3,"file":"parse.cjs","sources":["../../src/path/parser/parse.ts"],"sourcesContent":["import {type PathElement} from '../types'\nimport {type StringToPath} from './types'\n\nexport function parse<const T extends string>(path: T): StringToPath<T> {\n return path\n .split(/[[.\\]]/g)\n .filter(Boolean)\n .map(seg => (seg.includes('==') ? parseSegment(seg) : coerce(seg))) as any\n}\n\nconst IS_NUMERIC = /^-?\\d+$/\n\nfunction unquote(str: string) {\n return str.replace(/^['\"]/, '').replace(/['\"]$/, '')\n}\n\nfunction parseSegment(segment: string): PathElement {\n const [key, value] = segment.split('==')\n if (key !== '_key') {\n throw new Error(\n `Currently only \"_key\" is supported as path segment. Found ${key}`,\n )\n }\n if (typeof value === 'undefined') {\n throw new Error('Invalid path segment, expected `key==\"value\"`')\n }\n return {_key: unquote(value)}\n}\n\nfunction coerce(segment: string): PathElement {\n return IS_NUMERIC.test(segment) ? Number(segment) : segment\n}\n"],"names":[],"mappings":";AAGO,SAAS,MAA8B,MAA0B;AACtE,SAAO,KACJ,MAAM,SAAS,EACf,OAAO,OAAO,EACd,IAAI,CAAA,QAAQ,IAAI,SAAS,IAAI,IAAI,aAAa,GAAG,IAAI,OAAO,GAAG,CAAE;AACtE;AAEA,MAAM,aAAa;AAEnB,SAAS,QAAQ,KAAa;AAC5B,SAAO,IAAI,QAAQ,SAAS,EAAE,EAAE,QAAQ,SAAS,EAAE;AACrD;AAEA,SAAS,aAAa,SAA8B;AAClD,QAAM,CAAC,KAAK,KAAK,IAAI,QAAQ,MAAM,IAAI;AACvC,MAAI,QAAQ;AACV,UAAM,IAAI;AAAA,MACR,6DAA6D,GAAG;AAAA,IAAA;AAGpE,MAAI,OAAO,QAAU;AACb,UAAA,IAAI,MAAM,+CAA+C;AAEjE,SAAO,EAAC,MAAM,QAAQ,KAAK,EAAC;AAC9B;AAEA,SAAS,OAAO,SAA8B;AAC5C,SAAO,WAAW,KAAK,OAAO,IAAI,OAAO,OAAO,IAAI;AACtD;;"}