enketo-transformer
Version:
Library that transforms ODK-compliant XForms into a format that Enketo can consume
1 lines • 2.17 kB
Source Map (JSON)
{"version":3,"file":"url.cjs","sources":["../../src/url.ts"],"sourcesContent":["const TEMPORARY_HOST = 'http://example.com';\n\n/**\n * @package\n *\n * @param value - a fully qualified URL, or a relative path\n */\nexport const escapeURLPath = (value: string): string => {\n const [scheme] = value.match(/^[a-z]+:/) ?? [];\n const isFullyQualified = scheme != null;\n\n /**\n * Browser implementations of `URL` do not escape URLs with unknown schemes\n * like `jr:, nor do they escape known URLs without a domain like `file:`.\n * To work around this limitation, we use a temporary HTTP host to escape\n * `jr:` URL paths.\n */\n const urlString = isFullyQualified\n ? value.replace(/^jr:\\/*/, 'http://')\n : `${TEMPORARY_HOST}/${value.replace(/^\\//, '')}`;\n\n const url = new URL(urlString);\n\n if (isFullyQualified) {\n return url.href.replace('http:', scheme);\n }\n\n const { pathname, search } = url;\n const path = value.startsWith('/') ? pathname : pathname.replace(/^\\//, '');\n\n return `${path}${search}`;\n};\n\n/** @package */\nexport const getMediaPath = (\n mediaMap: Record<string, string>,\n mediaURL: string\n) => {\n const mediaPath = mediaURL.match(/jr:\\/\\/[\\w-]+\\/(.+)/);\n\n if (mediaPath == null) {\n return escapeURLPath(mediaURL);\n }\n\n const path = escapeURLPath(mediaPath[1]);\n const value = mediaMap[path];\n\n return value || escapeURLPath(mediaURL);\n};\n"],"names":[],"mappings":";;AAAA,MAAM,iBAAiB;AAOV,MAAA,gBAAgB,CAAC,UAA0B;AACpD,QAAM,CAAC,MAAM,IAAI,MAAM,MAAM,UAAU,KAAK;AAC5C,QAAM,mBAAmB,UAAU;AAQnC,QAAM,YAAY,mBACZ,MAAM,QAAQ,WAAW,SAAS,IAClC,GAAG,cAAc,IAAI,MAAM,QAAQ,OAAO,EAAE,CAAC;AAE7C,QAAA,MAAM,IAAI,IAAI,SAAS;AAE7B,MAAI,kBAAkB;AAClB,WAAO,IAAI,KAAK,QAAQ,SAAS,MAAM;AAAA,EAC3C;AAEM,QAAA,EAAE,UAAU,OAAW,IAAA;AACvB,QAAA,OAAO,MAAM,WAAW,GAAG,IAAI,WAAW,SAAS,QAAQ,OAAO,EAAE;AAEnE,SAAA,GAAG,IAAI,GAAG,MAAM;AAC3B;AAGa,MAAA,eAAe,CACxB,UACA,aACC;AACK,QAAA,YAAY,SAAS,MAAM,qBAAqB;AAEtD,MAAI,aAAa,MAAM;AACnB,WAAO,cAAc,QAAQ;AAAA,EACjC;AAEA,QAAM,OAAO,cAAc,UAAU,CAAC,CAAC;AACjC,QAAA,QAAQ,SAAS,IAAI;AAEpB,SAAA,SAAS,cAAc,QAAQ;AAC1C;;;"}