didjs
Version:
Decentralized Identifiers parser for javascript
1 lines • 4.53 kB
JavaScript
var didjs=function(t){var n={};function r(e){if(n[e])return n[e].exports;var i=n[e]={i:e,l:!1,exports:{}};return t[e].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=n,r.d=function(t,n,e){r.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:e})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,n){if(1&n&&(t=r(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var i in t)r.d(e,i,function(n){return t[n]}.bind(null,i));return e},r.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(n,"a",n),n},r.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r.p="",r(r.s=0)}([function(t,n){function r(t){if(t.length<7)throw new Error("input length is less than 7: "+t.length);return function(t){var n={input:t,currentIndex:3,out:{}};if("did:"!==n.input.substring(0,n.currentIndex+1))throw new Error("input does not begin with did: prefix");return function(t){var n=t.currentIndex+1,r=n;for(;;){if(n===t.input.length)throw new Error("input does not have a second : marking end of method name");var i=t.input[n];if(":"===i){if(n==r)throw new Error("method is empty");break}if(a.isNotDigit(i)&&a.isNotSmallLetter(i))throw new Error("character is not a-z OR 0-9");n+=1}return t.currentIndex=n,t.out.method=t.input.substring(r,n),e(t)}(n)}(t)}function e(t){for(var n,r=t.currentIndex+1,s=r;;){if(r===t.input.length){n=u;break}var f=t.input[r];if(":"===f){n=e;break}if("/"===f){n=i;break}if("#"===f){n=o;break}if(a.isNotValidIDChar(f))throw new Error("byte is not ALPHA OR DIGIT OR . OR -");r+=1}if(r===s)throw new Error("idstring must be atleast one char long");return t.currentIndex=r,t.out.idStrings=t.out.idStrings||[],t.out.idStrings=t.out.idStrings.concat(t.input.substring(s,r)),n(t)}function i(t){for(var n,r,e,o=t.currentIndex+1,s=o;;){if(o===t.input.length){e=u;break}var f=t.input[o];if("/"===f){e=i;break}if("%"===f){if(o+2>=t.input.length||a.isNotHexDigit(t.input[o+1])||a.isNotHexDigit(t.input[o+2]))throw new Error("%% is not followed by 2 hex digits");r=!0,n=3}else r=!1,n=1;if(!r&&a.isNotValidPathChar(f))throw new Error("character is not allowed in path");o+=n}if(t.out.pathSegments=t.out.pathSegments||[],o==s&&0===t.out.pathSegments.length)throw new Error("first path segment must have atleast one character");return t.currentIndex=o,t.out.pathSegments=t.out.pathSegments.concat(t.input.substring(s,o)),e(t)}function o(t){for(var n,r,e=t.currentIndex+1,i=e;e!==t.input.length;){var o=t.input[e];if("%"===o){if(e+2>=t.input.length||a.isNotHexDigit(t.input[e+1])||a.isNotHexDigit(t.input[e+2]))throw new Error("%% is not followed by 2 hex digits");r=!0,n=3}else r=!1,n=1;if(!r&&a.isNotValidFragmentChar(o))throw new Error("character is not allowed in fragment "+o);e+=n}return t.currentIndex=e,t.out.fragment=t.input.substring(i,e),u(t)}function u(t){return t.out.idStrings=t.out.idStrings||[],t.out.id=t.out.idStrings.join(":"),t.out.pathSegments=t.out.pathSegments||[],t.out.path=t.out.pathSegments.join("/"),t.done=!0,t}var a={isReference:function(t){return!!(t.path||t.pathSegments&&t.pathSegments.length||t.fragment)},isNotValidIDChar:function(t){return a.isNotAlpha(t)&&a.isNotDigit(t)&&"."!=t&&"-"!=t},isNotValidFragmentChar:function(t){return a.isNotValidPathChar(t)&&"/"!=t&&"?"!=t},isNotValidPathChar:function(t){return a.isNotUnreservedOrSubdelim(t)&&":"!=t&&"@"!=t},isNotUnreservedOrSubdelim:function(t){return!["-",".","_","~","!","$","&","'","(",")","*","+",",",";","="].includes(t)&&!(!a.isNotAlpha(t)||!a.isNotDigit(t))},isNotHexDigit:function(t){return a.isNotDigit(t)&&(t<"A"||t>"F")&&(t<"a"||t>"f")},isNotDigit:function(t){return t<"0"||t>"9"},isNotAlpha:function(t){return a.isNotSmallLetter(t)&&a.isNotBigLetter(t)},isNotBigLetter:function(t){return t<"A"||t>"Z"},isNotSmallLetter:function(t){return t<"a"||t>"z"}};t.exports={parse:function(t){try{for(var n={},e=r;!n.done;)n=e(t);return n.out}catch(t){throw t}},stringify:function(t){var n="did:";if(!t.method)return"";if(n+=t.method,n+=":",t.id)n+=t.id;else{if(!(t.idStrings&&t.idStrings.length>0))return"";n+=t.idStrings.join(":")}return t.path?(n+="/",n+=t.path):t.pathSegments&&t.pathSegments.length>0?(n+="/",n+=t.pathSegments.join("/")):t.fragment&&(n+="#",n+=t.fragment),n},utils:a}}]);