js-row-num
Version:
Update all row numbers in all console.logs in JS code
14 lines (12 loc) • 3.09 kB
JavaScript
/**
* @name js-row-num
* @fileoverview Update all row numbers in all console.logs in JS code
* @version 7.0.19
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/js-row-num/}
*/
import{Ranges as O}from"ranges-push";import{rApply as V}from"ranges-apply";import{hasOwnProp as v}from"codsen-utils";var E="7.0.19";var j=E;var R={padStart:3,overrideRowNum:null,triggerKeywords:["console.log"],extractedLogContentsWereGiven:!1};function k(t,S){let p=Date.now(),f="\\";if(typeof t!="string")throw new TypeError(`js-row-num: [THROW_ID_01] Input must be string! Currently it's: ${(typeof t).toLowerCase()}, equal to:
${JSON.stringify(t,null,4)}`);if(!t.trim())return{log:{timeTakenInMilliseconds:Date.now()-p},result:t,ranges:null};function m(n){return/[0-9]/.test(n)}function D(n){return/[A-Za-z]/.test(n)}function w(n){return!!n&&typeof n=="object"&&!Array.isArray(n)}let o={...R,...S};if(v(o,"returnRangesOnly"))throw new TypeError(`js-row-num: [THROW_ID_02] The Optional Options Object's key "returnRangesOnly" has been removed from the API since v.6 release.`);(!o.padStart||typeof o.padStart!="number"||typeof o.padStart=="number"&&o.padStart<0)&&(o.padStart=0);let g=new O,e,d=t.length,r=null,u=null,a=null,c=1,$=!1,s=null;for(o.padStart&&d>45e3&&(o.padStart=4),e=0;e<d;e++){if(o.overrideRowNum===null&&(t[e]===`
`||t[e]==="\r"&&t[e+1]!==`
`)&&(c+=1),!o.extractedLogContentsWereGiven&&r!==null&&r.start<e&&r.type===t[e]&&(r=null,u=null,a=null,s=null,$=!1),r===null&&(o.extractedLogContentsWereGiven||u&&u<e&&a&&a<e)&&t[e].trim())if(t[e]==='"'||t[e]==="'"||t[e]==="`")r={start:e,type:t[e]},$=!1;else if(o.extractedLogContentsWereGiven&&s===null)if(m(t[e]))s=e;else break;else t[e].trim()&&t[e]!=="/"&&!o.extractedLogContentsWereGiven&&(u=null,a=null,s=null);if(r&&Number.isInteger(r.start)&&r.start<e&&!$&&s===null&&m(t[e])&&(s=e),Number.isInteger(s)&&(!m(t[e])||!t[e+1])&&(e>s||!t[e+1])&&(o.padStart||o.overrideRowNum!=null,g.push(s,m(t[e])?e+1:e,o.padStart?String(o.overrideRowNum!=null?o.overrideRowNum:c).padStart(o.padStart,"0"):`${o.overrideRowNum!=null?o.overrideRowNum:c}`),s=null,$=!0),r&&Number.isInteger(r.start)&&r.start<e&&!$&&D(t[e])&&!(t[e]==="n"&&t[e-1]===f)){if(t[e-1]===f&&t[e]==="u"&&t[e+1]==="0"&&t[e+2]==="0"&&t[e+3]==="1"&&(t[e+4]==="b"||t[e+5]==="B")&&t[e+5]==="["){let n;m(t[e+6])?n=e+6:t[e+6]==="$"&&t[e+7]==="{"&&m(t[e+8])&&(n=e+8);let l;if(n){for(let b=n;b<d;b++)if(!m(t[b])){l=b;break}}let i;if(l!==void 0&&t[l]==="m"?i=l:l!==void 0&&t[l]==="}"&&t[l+1]==="m"&&(i=l+1),!i){$=!0;continue}if(t[i+1]==="$"&&t[i+2]==="{"&&t[i+3]==="`"){e=i+3;continue}}$=!0}if(!a&&t[e].trim()&&u&&u<=e&&(t[e]==="("?a=e:(u=null,s=null)),w(o)&&o.triggerKeywords&&Array.isArray(o.triggerKeywords)){let n;for(let l=0,i=o.triggerKeywords.length;l<i;l++)if(t.startsWith(o.triggerKeywords[l],e)){n=o.triggerKeywords[l];break}if(n){u=e+n.length,e=e+n.length-1;continue}}}return r=null,u=null,a=null,c=1,$=void 0,s=null,c=1,{log:{timeTakenInMilliseconds:Date.now()-p},result:V(t,g.current()),ranges:g.current()}}export{R as defaults,k as fixRowNums,j as version};