UNPKG

tsd-extract

Version:

Extract any definition from TS definitions file string

27 lines (25 loc) 13.3 kB
/** * @name tsd-extract * @fileoverview Extract any definition from TS definitions file string * @version 0.9.0 * @author Roy Revelt * @license MIT * {@link https://codsen.com/os/tsd-extract/} */ "use strict";var tsdExtract=(()=>{var tt=Object.create;var N=Object.defineProperty,et=Object.defineProperties,nt=Object.getOwnPropertyDescriptor,it=Object.getOwnPropertyDescriptors,rt=Object.getOwnPropertyNames,L=Object.getOwnPropertySymbols,st=Object.getPrototypeOf,B=Object.prototype.hasOwnProperty,lt=Object.prototype.propertyIsEnumerable;var U=(t,e,i)=>e in t?N(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,b=(t,e)=>{for(var i in e||(e={}))B.call(e,i)&&U(t,i,e[i]);if(L)for(var i of L(e))lt.call(e,i)&&U(t,i,e[i]);return t},p=(t,e)=>et(t,it(e));var ot=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),ut=(t,e)=>{for(var i in e)N(t,i,{get:e[i],enumerable:!0})},P=(t,e,i,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let u of rt(e))!B.call(t,u)&&u!==i&&N(t,u,{get:()=>e[u],enumerable:!(c=nt(e,u))||c.enumerable});return t};var W=(t,e,i)=>(i=t!=null?tt(st(t)):{},P(e||!t||!t.__esModule?N(i,"default",{value:t,enumerable:!0}):i,t)),ct=t=>P(N({},"__esModule",{value:!0}),t);var x=ot((Ot,_)=>{"use strict";_.exports=ft;function E(t){return t instanceof Buffer?Buffer.from(t):new t.constructor(t.buffer.slice(),t.byteOffset,t.length)}function ft(t){if(t=t||{},t.circles)return $t(t);let e=new Map;if(e.set(Date,o=>new Date(o)),e.set(Map,(o,f)=>new Map(c(Array.from(o),f))),e.set(Set,(o,f)=>new Set(c(Array.from(o),f))),t.constructorHandlers)for(let o of t.constructorHandlers)e.set(o[0],o[1]);let i=null;return t.proto?n:u;function c(o,f){let s=Object.keys(o),r=new Array(s.length);for(let m=0;m<s.length;m++){let a=s[m],$=o[a];typeof $!="object"||$===null?r[a]=$:$.constructor!==Object&&(i=e.get($.constructor))?r[a]=i($,f):ArrayBuffer.isView($)?r[a]=E($):r[a]=f($)}return r}function u(o){if(typeof o!="object"||o===null)return o;if(Array.isArray(o))return c(o,u);if(o.constructor!==Object&&(i=e.get(o.constructor)))return i(o,u);let f={};for(let s in o){if(Object.hasOwnProperty.call(o,s)===!1)continue;let r=o[s];typeof r!="object"||r===null?f[s]=r:r.constructor!==Object&&(i=e.get(r.constructor))?f[s]=i(r,u):ArrayBuffer.isView(r)?f[s]=E(r):f[s]=u(r)}return f}function n(o){if(typeof o!="object"||o===null)return o;if(Array.isArray(o))return c(o,n);if(o.constructor!==Object&&(i=e.get(o.constructor)))return i(o,n);let f={};for(let s in o){let r=o[s];typeof r!="object"||r===null?f[s]=r:r.constructor!==Object&&(i=e.get(r.constructor))?f[s]=i(r,n):ArrayBuffer.isView(r)?f[s]=E(r):f[s]=n(r)}return f}}function $t(t){let e=[],i=[],c=new Map;if(c.set(Date,s=>new Date(s)),c.set(Map,(s,r)=>new Map(n(Array.from(s),r))),c.set(Set,(s,r)=>new Set(n(Array.from(s),r))),t.constructorHandlers)for(let s of t.constructorHandlers)c.set(s[0],s[1]);let u=null;return t.proto?f:o;function n(s,r){let m=Object.keys(s),a=new Array(m.length);for(let $=0;$<m.length;$++){let d=m[$],g=s[d];if(typeof g!="object"||g===null)a[d]=g;else if(g.constructor!==Object&&(u=c.get(g.constructor)))a[d]=u(g,r);else if(ArrayBuffer.isView(g))a[d]=E(g);else{let O=e.indexOf(g);O!==-1?a[d]=i[O]:a[d]=r(g)}}return a}function o(s){if(typeof s!="object"||s===null)return s;if(Array.isArray(s))return n(s,o);if(s.constructor!==Object&&(u=c.get(s.constructor)))return u(s,o);let r={};e.push(s),i.push(r);for(let m in s){if(Object.hasOwnProperty.call(s,m)===!1)continue;let a=s[m];if(typeof a!="object"||a===null)r[m]=a;else if(a.constructor!==Object&&(u=c.get(a.constructor)))r[m]=u(a,o);else if(ArrayBuffer.isView(a))r[m]=E(a);else{let $=e.indexOf(a);$!==-1?r[m]=i[$]:r[m]=o(a)}}return e.pop(),i.pop(),r}function f(s){if(typeof s!="object"||s===null)return s;if(Array.isArray(s))return n(s,f);if(s.constructor!==Object&&(u=c.get(s.constructor)))return u(s,f);let r={};e.push(s),i.push(r);for(let m in s){let a=s[m];if(typeof a!="object"||a===null)r[m]=a;else if(a.constructor!==Object&&(u=c.get(a.constructor)))r[m]=u(a,f);else if(ArrayBuffer.isView(a))r[m]=E(a);else{let $=e.indexOf(a);$!==-1?r[m]=i[$]:r[m]=f(a)}}return e.pop(),i.pop(),r}}});var Et={};ut(Et,{defaults:()=>Y,extract:()=>yt,join:()=>At,roysSort:()=>z,version:()=>gt});var H="0.9.0";var F=W(x(),1);var Nt=(0,F.default)();var M=W(x(),1);var Tt=(0,M.default)();var S="\xA0";function mt({str:t,idx:e=0,stopAtNewlines:i=!1,stopAtRawNbsp:c=!1}){if(typeof t!="string"||!t.length||((!e||typeof e!="number")&&(e=0),!t[e+1]))return null;if(t[e+1]&&(t[e+1].trim()||i&&"\n\r".includes(t[e+1])||c&&t[e+1]===S))return e+1;if(t[e+2]&&(t[e+2].trim()||i&&"\n\r".includes(t[e+2])||c&&t[e+2]===S))return e+2;for(let u=e+1,n=t.length;u<n;u++)if(t[u].trim()||i&&"\n\r".includes(t[u])||c&&t[u]===S)return u;return null}function V(t,e=0){return mt({str:t,idx:e,stopAtNewlines:!1,stopAtRawNbsp:!1})}function dt({str:t,idx:e,stopAtNewlines:i,stopAtRawNbsp:c}){if(typeof t!="string"||!t.length||((!e||typeof e!="number")&&(e=0),e<1))return null;if(t[~-e]&&(t[~-e].trim()||i&&"\n\r".includes(t[~-e])||c&&t[~-e]===S))return~-e;if(t[e-2]&&(t[e-2].trim()||i&&"\n\r".includes(t[e-2])||c&&t[e-2]===S))return e-2;for(let u=e;u--;)if(t[u]&&(t[u].trim()||i&&"\n\r".includes(t[u])||c&&t[u]===S))return u;return null}function Q(t,e=0){return dt({str:t,idx:e,stopAtNewlines:!1,stopAtRawNbsp:!1})}function K(t){return typeof t=="string"&&t.length===1&&t.toUpperCase()!==t.toLowerCase()}function q(t){return K(t)?t===t.toLowerCase()&&t!==t.toUpperCase():!1}function G(t){return K(t)?t===t.toUpperCase()&&t!==t.toLowerCase():!1}var z=(t,e)=>{if(G(t[0])&&q(e[0]))return 1;if(q(t[0])&&G(e[0]))return-1;if(t==="defaults"||t==="version"||e==="defaults"||e==="version"){if(t==="defaults"&&e==="version")return-1;if(t==="version"&&e==="defaults")return 1;if(t!=="defaults"&&e==="version"||t!=="version"&&e==="defaults")return-1;if(t==="defaults"&&e!=="version"||t==="version"&&e!=="defaults")return 1}return t<e?-1:t>e?1:0};var gt=H,T="not found",bt=new Set(["interface","function","declare","type","const"]),Y={extractAll:!1,semi:!0,mustInclude:"",stripAs:!1},v="{}()_;:,=<>'\"",C={"(":")","{":"}",'"':'"',"'":"'","`":"`"},X=/\w+\s+as\s+/g,D={identifiers:[],identifiersStartAt:null,identifiersEndAt:null,content:null,contentStartsAt:null,contentEndsAt:null,value:null,valueStartsAt:null,valueEndsAt:null};Object.freeze(D);function pt(t,e,i,c){var k,J,R,j;let u=!1,n=p(b({},D),{identifiers:[]});function o(){u=!1,n=p(b({},D),{identifiers:[]})}if(o(),!i.extractAll&&(!e||!t.includes(e)))return p(b({},D),{all:[],error:T});let f=null,s=[],r=null,m=new Set,a={startsAt:null,endsAt:null,identifiers:[]},$=p(b({},a),{identifiers:[]});function d(){$=p(b({},a),{identifiers:[]})}let g=-1;function O(l){var A;(A=t[l])!=null&&A.trim()&&(g=l)}function w(l){if(typeof n.contentStartsAt=="number"&&typeof n.contentEndsAt!="number"&&(n.contentEndsAt=g+(i.semi||t[g]!==";"?1:0)),typeof n.contentStartsAt=="number"&&typeof n.contentEndsAt=="number"&&n.content===null&&(n.content=t.slice(n.contentStartsAt,n.contentEndsAt),i.stripAs&&(n.content=n.content.replace(X,"")),typeof i.contentSort=="function"&&e==="export"&&n.content.includes("{")&&n.content.includes("}")&&n.content.indexOf("{")+1<n.content.indexOf("}")&&n.content.slice(n.content.indexOf("{")+1,n.content.indexOf("}")).trim()&&!n.content.slice(n.content.indexOf("{")+1,n.content.indexOf("}")).includes(";"))){let A=n.content.slice(n.content.indexOf("{")+1,n.content.indexOf("}")),h=A.split(",").map(y=>y.trim()).filter(y=>y.trim()).sort(i.contentSort),I=n.content[Q(n.content,n.content.indexOf("}"))]===","?",":"";if(!A.includes("\n"))n.content="".concat(n.content.slice(0,n.content.indexOf("{")+1)," ").concat(h.join(", ")).concat(I," ").concat(n.content.slice(n.content.indexOf("}")));else{let y=n.content.slice(n.content.indexOf("\n",n.content.indexOf("{")+1)+1,V(n.content,n.content.indexOf("\n",n.content.indexOf("{")+1)));n.content="".concat(n.content.slice(0,n.content.indexOf("{")+1),"\n").concat(y).concat(h.join(",\n".concat(y))).concat(I,"\n").concat(n.content.slice(n.content.indexOf("}")))}}typeof n.valueStartsAt=="number"&&typeof n.valueEndsAt!="number"&&(n.valueEndsAt=g+(i.semi||t[g]!==";"?1:0)),typeof n.valueStartsAt=="number"&&typeof n.valueEndsAt=="number"&&n.value===null&&(n.value=t.slice(n.valueStartsAt,n.valueEndsAt),i.stripAs&&(n.value=n.value.replace(X,""))),n.contentStartsAt===null&&$.identifiers.length&&(n.identifiers.push(...$.identifiers),n.identifiersStartAt===null&&typeof $.startsAt=="number"&&(n.identifiersStartAt=$.startsAt),n.identifiersEndAt===null&&(n.identifiersEndAt=l))}for(let l=0,A=t.length;l<=A;l++){if(t[l]==="/"){if(t[l+1]==="*"){t.includes("*/",l+1)?l=t.indexOf("*/",l+1)+2:l=t.length-1;continue}else if(t[l+1]==="/"){t.includes("\n",l+1)?l=t.indexOf("\n",l+1):t.includes("\r",l+1)?l=t.indexOf("\r",l+1):l=t.length-1;continue}}if(!s.length&&typeof f=="number"&&(!((k=t[l])!=null&&k.trim())||v.includes(t[l]))){$.endsAt=l;let h=t.slice(f,l);$.identifiers.push(h),$.startsAt===null&&($.startsAt=f,typeof n.valueStartsAt!="number"&&(n.valueStartsAt=f)),t[l]===";"&&n.identifiersEndAt===null&&(n.identifiersEndAt=g+1),f=null,i.extractAll&&!bt.has(h)&&t[n.contentStartsAt]!=="("&&m.add(h)}if(typeof $.startsAt=="number"&&(t[l]in C||"=:".includes(t[l]))&&n.contentStartsAt===null){if(n.identifiers=[...$.identifiers],n.identifiersStartAt=$.startsAt,n.identifiersEndAt=$.endsAt,!n.contentStartsAt)if(t[l]!==":")n.contentStartsAt=l;else{let h=V(t,l);h&&t[h]==="{"?n.contentStartsAt=h:n.contentStartsAt=l}t[l]==="="&&s.push(";"),d()}if(t[l]){if(l&&t[l]in C&&(!"`'\"".includes(t[l])||!s.length||t[l]!==s[~-s.length]))s.push(C[t[l]]),d();else if(s.length){if(t[l]===s[~-s.length])s.pop();else if(O(l),!v.includes(t[l]))continue}}if(!s.length&&f===null&&(n.contentStartsAt===null||!n.identifiers.includes("function"))&&((J=t[l])!=null&&J.trim())&&!v.includes(t[l])){if(t.startsWith("from",l))u=!0;else if(!u&&(n.contentStartsAt===null||t[n.contentStartsAt]!==":")){if(typeof n.identifiersEndAt=="number"&&t[n.identifiersEndAt]!=="("){if(!i.extractAll&&n.identifiers.includes(e))return w(l),p(b({},n),{all:[],error:null});n.identifiers.includes(e)&&(w(l),r=p(b({},n),{all:[],error:null})),o()}(!n.identifiers.includes("function")||n.identifiersEndAt===null)&&(f=l)}}if(O(l),!t[l]&&!r&&($.identifiers.includes(e)||n.identifiers.includes(e))&&(w(l),(!i.mustInclude||(R=n.value)!=null&&R.includes(i.mustInclude))&&(r=p(b({},n),{all:[],error:null})),o()),!s.length&&t[l]===";")if(n.identifiers.includes(e)){if(w(l),!i.mustInclude||(j=n.value)!=null&&j.includes(i.mustInclude))if(i.extractAll)r||(r=p(b({},n),{all:[],error:null}));else return p(b({},n),{all:[...m],error:null});o()}else typeof n.contentStartsAt=="number"&&o();t[l]==="<"&&n.contentStartsAt===null&&s.push(">")}return r?(c&&(r.identifiersStartAt&&(r.identifiersStartAt+=c),r.identifiersEndAt&&(r.identifiersEndAt+=c),r.contentStartsAt&&(r.contentStartsAt+=c),r.contentEndsAt&&(r.contentEndsAt+=c),r.valueStartsAt&&(r.valueStartsAt+=c),r.valueEndsAt&&(r.valueEndsAt+=c)),r.all=[...m],r):p(b({},D),{all:[...m],error:T})}function ht(t){if(typeof t!="string")return[];let e=[],i=[],c=t.indexOf("{");for(;c!==-1;)c!==-1&&e.push(c),c=t.indexOf("{",c+1);let u=t.indexOf("}");for(;u!==-1;)u!==-1&&i.push(u),u=t.indexOf("}",u+1);return e.reduce((n,o,f)=>typeof i[f]=="number"?[...n,t.slice(o+1,i[f])]:n,[])}function At(...t){return t.some(e=>typeof e=="string"&&e.includes("{")&&e.includes("}"))?"{\n"+"".concat(t.reduce((e,i)=>e.concat(ht(i)),[]).join("\n")).split(/(\r?\n)/).filter(e=>e.trim().length).map(e=>" ".concat(e.trim())).join("\n")+"\n}":""}function Z(t){return typeof t=="string"?t.replace(/\n {2}( {2})+/g,"\n ").replace(/\n {2}}/g,"\n}"):t}function yt(t,e,i){if(typeof t!="string")throw new Error("tsd-extract/extract(): [THROW_ID_01] The first arg should be string! It was given ".concat(typeof t,", equal to ").concat(JSON.stringify(e,null,4),"."));if(typeof e!="string")throw new Error("tsd-extract/extract(): [THROW_ID_02] The name of statement to extract should be string! It was given ".concat(typeof e,", equal to ").concat(JSON.stringify(e,null,4),"."));if(i&&(typeof i!="object"||Array.isArray(i)))throw new Error("tsd-extract/extract(): [THROW_ID_03] The options object should be a plain object! It was given ".concat(typeof i,":\n").concat(JSON.stringify(i,null,4)));let c=b(b({},Y),i),u=e.split("."),n,o=[],f=[],s=null,r=null,m=!0,a=0;for(;u.length;){let $=u.shift(),d=pt(n||t,$,c,a);if(e.includes(".")&&(m?(o=d.identifiers,f=d.all,s=d.identifiersStartAt,r=d.identifiersEndAt):(d.identifiers=o,d.all=f,d.identifiersStartAt=s,d.identifiersEndAt=r,d.content=Z(d.content),d.value=Z(d.value)),u.length&&typeof d.contentStartsAt=="number"&&(a=d.contentStartsAt)),!u.length)return e.includes(".")?p(b({},d),{identifiers:o,all:f}):d;n=d.content,m=!1}return p(b({},D),{all:[],error:T})}return ct(Et);})(); /** * @name codsen-utils * @fileoverview Various utility functions * @version 1.7.0 * @author Roy Revelt * @license MIT * {@link https://codsen.com/os/codsen-utils/} */ /** * @name string-left-right * @fileoverview Looks up the first non-whitespace character to the left/right of a given index * @version 6.1.0 * @author Roy Revelt * @license MIT * {@link https://codsen.com/os/string-left-right/} */