UNPKG

@mantine/form

Version:

Mantine form management library

1 lines 2.17 kB
{"version":3,"file":"is-url.mjs","names":[],"sources":["../../../src/validators/is-url/is-url.ts"],"sourcesContent":["import type { SyncReactNode } from '../types';\n\ninterface IsUrlOptions {\n protocols?: string[];\n allowLocalhost?: boolean;\n}\n\nexport function isUrl(error?: SyncReactNode): (value: unknown) => SyncReactNode;\nexport function isUrl(\n options: IsUrlOptions,\n error?: SyncReactNode\n): (value: unknown) => SyncReactNode;\nexport function isUrl(optionsOrError?: IsUrlOptions | SyncReactNode, error?: SyncReactNode) {\n let _options: IsUrlOptions = {};\n let _error: SyncReactNode;\n\n if (\n optionsOrError !== null &&\n optionsOrError !== undefined &&\n typeof optionsOrError === 'object' &&\n !Array.isArray(optionsOrError) &&\n ('protocols' in optionsOrError || 'allowLocalhost' in optionsOrError)\n ) {\n _options = optionsOrError as IsUrlOptions;\n _error = error || true;\n } else {\n _error = (optionsOrError as SyncReactNode) || true;\n }\n\n const protocols = _options.protocols ?? ['http', 'https'];\n const allowLocalhost = _options.allowLocalhost ?? false;\n\n return (value: unknown): SyncReactNode => {\n if (typeof value !== 'string') {\n return _error;\n }\n\n try {\n const url = new URL(value);\n const protocol = url.protocol.replace(':', '');\n\n if (!protocols.includes(protocol)) {\n return _error;\n }\n\n if (!allowLocalhost && url.hostname === 'localhost') {\n return _error;\n }\n\n return null;\n } catch {\n return _error;\n }\n };\n}\n"],"mappings":";;AAYA,SAAgB,MAAM,gBAA+C,OAAuB;CAC1F,IAAI,WAAyB,CAAC;CAC9B,IAAI;CAEJ,IACE,mBAAmB,QACnB,mBAAmB,KAAA,KACnB,OAAO,mBAAmB,YAC1B,CAAC,MAAM,QAAQ,cAAc,MAC5B,eAAe,kBAAkB,oBAAoB,iBACtD;EACA,WAAW;EACX,SAAS,SAAS;CACpB,OACE,SAAU,kBAAoC;CAGhD,MAAM,YAAY,SAAS,aAAa,CAAC,QAAQ,OAAO;CACxD,MAAM,iBAAiB,SAAS,kBAAkB;CAElD,QAAQ,UAAkC;EACxC,IAAI,OAAO,UAAU,UACnB,OAAO;EAGT,IAAI;GACF,MAAM,MAAM,IAAI,IAAI,KAAK;GACzB,MAAM,WAAW,IAAI,SAAS,QAAQ,KAAK,EAAE;GAE7C,IAAI,CAAC,UAAU,SAAS,QAAQ,GAC9B,OAAO;GAGT,IAAI,CAAC,kBAAkB,IAAI,aAAa,aACtC,OAAO;GAGT,OAAO;EACT,QAAQ;GACN,OAAO;EACT;CACF;AACF"}