import { SCHEMES } from "../uri"; const NID$ = "(?:[0-9A-Za-z][0-9A-Za-z\\-]{1,31})"; const PCT_ENCODED$ = "(?:\\%[0-9A-Fa-f]{2})"; const TRANS$$ = "[0-9A-Za-z\\(\\)\\+\\,\\-\\.\\:\\=\\@\\;\\$\\_\\!\\*\\'\\/\\?\\#]"; const NSS$ = "(?:(?:" + PCT_ENCODED$ + "|" + TRANS$$ + ")+)"; const URN_SCHEME = new RegExp("^urn\\:(" + NID$ + ")$"); const URN_PATH = new RegExp("^(" + NID$ + ")\\:(" + NSS$ + ")$"); const URN_PARSE = /^([^\:]+)\:(.*)/; const URN_EXCLUDED = /[\x00-\x20\\\"\&\<\>\[\]\^\`\{\|\}\~\x7F-\xFF]/g; //RFC 2141 const handler = { scheme: "urn", parse: function (components, options) { const matches = components.path && components.path.match(URN_PARSE); let urnComponents = components; if (matches) { const scheme = options.scheme || urnComponents.scheme || "urn"; const nid = matches[1].toLowerCase(); const nss = matches[2]; const urnScheme = `${scheme}:${options.nid || nid}`; const schemeHandler = SCHEMES[urnScheme]; urnComponents.nid = nid; urnComponents.nss = nss; urnComponents.path = undefined; if (schemeHandler) { urnComponents = schemeHandler.parse(urnComponents, options); } } else { urnComponents.error = urnComponents.error || "URN can not be parsed."; } return urnComponents; }, serialize: function (urnComponents, options) { const scheme = options.scheme || urnComponents.scheme || "urn"; const nid = urnComponents.nid; const urnScheme = `${scheme}:${options.nid || nid}`; const schemeHandler = SCHEMES[urnScheme]; if (schemeHandler) { urnComponents = schemeHandler.serialize(urnComponents, options); } const uriComponents = urnComponents; const nss = urnComponents.nss; uriComponents.path = `${nid || options.nid}:${nss}`; return uriComponents; }, }; export default handler; //# sourceMappingURL=urn.js.map