Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

string-remove-widows

Package Overview
Dependencies
Maintainers
1
Versions
143
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

string-remove-widows - npm Package Compare versions

Comparing version 3.1.20 to 3.1.21

2

CHANGELOG.md

@@ -120,2 +120,2 @@ # Change Log

- ✨ First public release
- First public release
/**
* @name string-remove-widows
* @fileoverview Helps to prevent widow words in a text
* @version 3.1.20
* @version 3.1.21
* @author Roy Revelt, Codsen Ltd

@@ -10,3 +10,3 @@ * @license MIT

import{matchRightIncl as ee}from"string-match-left-right";import{left as N,right as D}from"string-left-right";import{Ranges as te}from"ranges-push";import{rApply as K}from"ranges-apply";var x="3.1.20";var h="\xA0",E="&nbsp;",S="\\00A0",w="\\u00A0",j="\u2013",M="&ndash;",J="\\2013",U="\\u2013",k="\u2014",I="&mdash;",B="\\2014",_="\\u2014",C=[{heads:"{{",tails:"}}"},{heads:["{% if","{%- if"],tails:["{% endif","{%- endif"]},{heads:["{% for","{%- for"],tails:["{% endfor","{%- endfor"]},{heads:["{%","{%-"],tails:["%}","-%}"]},{heads:"{#",tails:"#}"}],q=[{heads:"{{",tails:"}}"}],P=[{heads:["<%","<%=","<%-"],tails:["%>","=%>","-%>"]}],G=["abbr","address","area","article","aside","audio","base","bdi","bdo","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","doctype","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","param","picture","pre","progress","rb","rp","rt","rtc","ruby","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","ul","var","video","wbr","xml"];var $e=x,ne={removeWidowPreventionMeasures:!1,convertEntities:!0,targetLanguage:"html",UKPostcodes:!1,hyphens:!0,minWordCount:4,minCharCount:5,ignore:[],reportProgressFunc:null,reportProgressFuncFrom:0,reportProgressFuncTo:100,tagRanges:[]};function ce(t,f){let Z=Date.now();if(typeof t!="string")throw t===void 0?new Error("string-remove-widows: [THROW_ID_01] the first input argument is completely missing! It should be given as string."):new Error(`string-remove-widows: [THROW_ID_02] the first input argument must be string! It was given as "${typeof t}", equal to:
import{matchRightIncl as ee}from"string-match-left-right";import{left as N,right as D}from"string-left-right";import{Ranges as te}from"ranges-push";import{rApply as K}from"ranges-apply";var x="3.1.21";var h="\xA0",E="&nbsp;",S="\\00A0",w="\\u00A0",j="\u2013",M="&ndash;",J="\\2013",U="\\u2013",k="\u2014",I="&mdash;",B="\\2014",_="\\u2014",C=[{heads:"{{",tails:"}}"},{heads:["{% if","{%- if"],tails:["{% endif","{%- endif"]},{heads:["{% for","{%- for"],tails:["{% endfor","{%- endfor"]},{heads:["{%","{%-"],tails:["%}","-%}"]},{heads:"{#",tails:"#}"}],q=[{heads:"{{",tails:"}}"}],P=[{heads:["<%","<%=","<%-"],tails:["%>","=%>","-%>"]}],G=["abbr","address","area","article","aside","audio","base","bdi","bdo","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","doctype","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","param","picture","pre","progress","rb","rp","rt","rtc","ruby","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","ul","var","video","wbr","xml"];var $e=x,ne={removeWidowPreventionMeasures:!1,convertEntities:!0,targetLanguage:"html",UKPostcodes:!1,hyphens:!0,minWordCount:4,minCharCount:5,ignore:[],reportProgressFunc:null,reportProgressFuncFrom:0,reportProgressFuncTo:100,tagRanges:[]};function ce(t,f){let Z=Date.now();if(typeof t!="string")throw t===void 0?new Error("string-remove-widows: [THROW_ID_01] the first input argument is completely missing! It should be given as string."):new Error(`string-remove-widows: [THROW_ID_02] the first input argument must be string! It was given as "${typeof t}", equal to:
${JSON.stringify(t,null,4)}`);if(f&&typeof f!="object")throw new Error(`string-remove-widows: [THROW_ID_03] the second input argument, options object, should be a plain object but it was given as type ${typeof f}, equal to ${JSON.stringify(f,null,4)}`);let b=Array.isArray,L=t.length,a=new te({mergeType:2}),Y=["."],z=/[A-Z]{1,2}[0-9][0-9A-Z]?$/,Q=/^[0-9][A-Z]{2}/,V=.06,$,A=0,g=0,W=0,y,T,d,c,r,u,s,p,n={...ne,...f},m={removeWidows:!1,convertEntities:!1};if(!n.ignore||!b(n.ignore)&&typeof n.ignore!="string")n.ignore=[];else if(typeof n.ignore=="string"&&(n.ignore=[n.ignore]),n.ignore.includes("all"))n.ignore=n.ignore.concat(C.concat(P));else if(n.ignore.some(e=>typeof e=="string")){let e=[];n.ignore=n.ignore.filter(i=>typeof i=="string"&&i.length?(["nunjucks","jinja","liquid"].includes(i.trim().toLowerCase())?e=e.concat(C):["hugo"].includes(i.trim().toLowerCase())?e=e.concat(q):["hexo"].includes(i.trim().toLowerCase())&&(e=e.concat(P)),!1):typeof i=="object"),e.length&&(n.ignore=n.ignore.concat(e))}let O;n.reportProgressFunc&&(O=Math.floor(n.reportProgressFuncTo-(n.reportProgressFuncTo-n.reportProgressFuncFrom)*V-n.reportProgressFuncFrom));function v(e,i){let o=h;n.removeWidowPreventionMeasures?o=" ":n.convertEntities&&(o=E,typeof n.targetLanguage=="string"&&(n.targetLanguage.trim().toLowerCase()==="css"?o=S:n.targetLanguage.trim().toLowerCase()==="js"&&(o=w))),t.slice(e,i)!==o&&a.push(e,i,o)}function H(){g=0,W=0,y=void 0,T=void 0,d=void 0,c=void 0,r=void 0,u=void 0}H();for(let e=0;e<=L;e++){if(!s&&b(n.ignore)&&n.ignore.length&&n.ignore.some((o,l)=>{if(b(o.heads)&&o.heads.some(F=>t.startsWith(F,e))||typeof o.heads=="string"&&t.startsWith(o.heads,e))return g+=1,s=n.ignore[l].tails,!0}),!s&&p&&p===e&&(g+=1,p=void 0),typeof n.reportProgressFunc=="function"&&($=n.reportProgressFuncFrom+Math.floor(e/L*(O||1)),$!==A&&(A=$,n.reportProgressFunc($))),!s&&e&&t[e]&&t[e].trim()&&(!t[e-1]||t[e-1]&&!t[e-1].trim())&&(c=e),!s&&t[e]&&t[e].trim()&&(W+=1),!s&&n.hyphens&&(`-${k}${j}`.includes(t[e])||t.startsWith(M,e)||t.startsWith(J,e)||t.startsWith(U,e)||t.startsWith(I,e)||t.startsWith(B,e)||t.startsWith(_,e))&&t[e+1]&&(!t[e+1].trim()||t[e]==="&")&&t[e-1]&&!t[e-1].trim()&&t[N(t,e)]&&(v(N(t,e)+1,e),m.removeWidows=!0),!s&&(t.startsWith("&nbsp;",e)||t.startsWith("&#160;",e))&&(r=e,u=e+6,t[e+6]&&t[e+6].trim()&&(p=e+6),n.convertEntities?(n.targetLanguage==="css"||n.targetLanguage==="js")&&(a.push(e,e+6,n.targetLanguage==="css"?S:w),m.convertEntities=!0):(a.push(e,e+6,h),m.convertEntities=!0)),!s&&t[e+4]&&t[e]==="\\"&&t[e+1]==="0"&&t[e+2]==="0"&&t[e+3].toUpperCase()==="A"&&t[e+4]==="0"&&(r=e,u=e+5,t[e+5]&&t[e+5].trim()&&(p=e+5),n.convertEntities?(n.targetLanguage==="html"||n.targetLanguage==="js")&&(a.push(e,e+5,n.targetLanguage==="html"?E:w),m.convertEntities=!0):(a.push(e,e+5,h),m.convertEntities=!0)),!s&&t[e]==="\\"&&t[e+1]&&t[e+1].toLowerCase()==="u"&&t[e+2]==="0"&&t[e+3]==="0"&&t[e+4]&&t[e+4].toUpperCase()==="A"&&t[e+5]==="0"&&(r=e,u=e+6,t[e+6]&&t[e+6].trim()&&(p=e+6),n.convertEntities?(n.targetLanguage==="html"||n.targetLanguage==="css")&&a.push(e,e+6,n.targetLanguage==="html"?E:S):a.push(e,e+6,h)),!s&&t[e]===h&&(r=e,u=e+1,n.convertEntities&&a.push(e,e+1,n.targetLanguage==="css"?S:n.targetLanguage==="js"?w:E)),!s&&t[e]&&t[e].trim()&&(!t[e-1]||!t[e-1].trim())&&(g+=1),!s&&(!t[e]||`\r

@@ -13,0 +13,0 @@ `.includes(t[e])||(t[e]===`

/**
* @name string-remove-widows
* @fileoverview Helps to prevent widow words in a text
* @version 3.1.20
* @version 3.1.21
* @author Roy Revelt, Codsen Ltd

@@ -25,3 +25,3 @@ * @license MIT

${JSON.stringify(r,null,4)}`);if(I(this.ranges)&&Array.isArray(this.last())&&n===this.last()[1]){if(this.last()[1]=u,this.last()[2],this.last()[2]!==null&&I(r)){let l=this.last()[2]&&this.last()[2].length&&(!((o=this.opts)!=null&&o.mergeType)||this.opts.mergeType===1)?`${this.last()[2]}${r}`:r;this.opts.limitToBeAddedWhitespace&&(l=le(l,this.opts.limitLinebreaksCount)),Y(l)&&!l.length||(this.last()[2]=l)}}else{this.ranges||(this.ranges=[]);let l=r!==void 0&&!(Y(r)&&!r.length)?[n,u,r&&this.opts.limitToBeAddedWhitespace?le(r,this.opts.limitLinebreaksCount):r]:[n,u];this.ranges.push(l)}}else throw M(n)&&n>=0?new TypeError(`ranges-push/Ranges/add(): [THROW_ID_10] "to" value, the second input argument, must be a natural number or zero! Currently it's of a type "${typeof u}" equal to: ${JSON.stringify(u,null,4)}`):new TypeError(`ranges-push/Ranges/add(): [THROW_ID_09] "from" value, the first input argument, must be a natural number or zero! Currently it's of a type "${typeof n}" equal to: ${JSON.stringify(n,null,4)}`)}push(e,t,r){this.add(e,t,r)}current(){return Array.isArray(this.ranges)&&this.ranges.length?(this.ranges=eo(this.ranges,{mergeType:this.opts.mergeType}),this.ranges&&this.opts.limitToBeAddedWhitespace?this.ranges.map(e=>I(e[2])?[e[0],e[1],le(e[2],this.opts.limitLinebreaksCount)]:e):this.ranges):null}wipe(){this.ranges=[]}replace(e){if(Array.isArray(e)&&e.length)if(Array.isArray(e[0])&&M(e[0][0]))this.ranges=Array.from(e);else throw new Error(`ranges-push/Ranges/replace(): [THROW_ID_11] Single range was given but we expected array of arrays! The first element, ${JSON.stringify(e[0],null,4)} should be an array and its first element should be an integer, a string index.`);else this.ranges=[]}last(){return Array.isArray(this.ranges)&&this.ranges.length?this.ranges[this.ranges.length-1]:null}};var ro={strictlyTwoElementsInRangeArrays:!1,progressFn:null};function Oe(e,t){if(!Array.isArray(e)||!e.length)return e;let r=A(A({},ro),t),n,u;if(r.strictlyTwoElementsInRangeArrays&&!e.every((a,g)=>!Array.isArray(a)||a.length!==2?(n=g,u=a.length,!1):!0))throw new TypeError(`ranges-sort: [THROW_ID_03] The first argument should be an array and must consist of arrays which are natural number indexes representing TWO string index ranges. However, ${n}th range (${JSON.stringify(e[n],null,4)}) has not two but ${u} elements!`);if(!e.every((a,g)=>!Array.isArray(a)||!Number.isInteger(a[0])||a[0]<0||!Number.isInteger(a[1])||a[1]<0?(n=g,!1):!0))throw new TypeError(`ranges-sort: [THROW_ID_04] The first argument should be an array and must consist of arrays which are natural number indexes representing string index ranges. However, ${n}th range (${JSON.stringify(e[n],null,4)}) does not consist of only natural numbers!`);let o=e.length**2,l=0;return Array.from(e).sort((a,g)=>(r.progressFn&&(l+=1,r.progressFn(Math.floor(l*100/o))),a[0]===g[0]?a[1]<g[1]?-1:a[1]>g[1]?1:0:a[0]<g[0]?-1:1))}var Vt={mergeType:1,progressFn:null,joinRangesThatTouchEdges:!0};function Pt(e,t){function r(i){return!!i&&typeof i=="object"&&!Array.isArray(i)}if(!Array.isArray(e)||!e.length)return null;let n;if(t)if(r(t)){if(n=A(A({},Vt),t),n.progressFn&&r(n.progressFn)&&!Object.keys(n.progressFn).length)n.progressFn=null;else if(n.progressFn&&typeof n.progressFn!="function")throw new Error(`ranges-merge: [THROW_ID_01] opts.progressFn must be a function! It was given of a type: "${typeof n.progressFn}", equal to ${JSON.stringify(n.progressFn,null,4)}`);if(![1,2,"1","2"].includes(n.mergeType))throw new Error(`ranges-merge: [THROW_ID_02] opts.mergeType was customised to a wrong thing! It was given of a type: "${typeof n.mergeType}", equal to ${JSON.stringify(n.mergeType,null,4)}`);if(typeof n.joinRangesThatTouchEdges!="boolean")throw new Error(`ranges-merge: [THROW_ID_04] opts.joinRangesThatTouchEdges was customised to a wrong thing! It was given of a type: "${typeof n.joinRangesThatTouchEdges}", equal to ${JSON.stringify(n.joinRangesThatTouchEdges,null,4)}`)}else throw new Error(`emlint: [THROW_ID_03] the second input argument must be a plain object. It was given as:
${JSON.stringify(t,null,4)} (type ${typeof t})`);else n=A({},Vt);let u=e.filter(i=>Array.isArray(i)).map(i=>[...i]).filter(i=>i[2]!==void 0||i[0]!==i[1]),o,l,a;n.progressFn?o=Oe(u,{progressFn:i=>{a=Math.floor(i/5),a!==l&&(l=a,n.progressFn(a))}}):o=Oe(u);let g=o.length-1;for(let i=g;i>0;i--)n.progressFn&&(a=Math.floor((1-i/g)*78)+21,a!==l&&a>l&&(l=a,n.progressFn(a))),(o[i][0]<=o[i-1][0]||!n.joinRangesThatTouchEdges&&o[i][0]<o[i-1][1]||n.joinRangesThatTouchEdges&&o[i][0]<=o[i-1][1])&&(o[i-1][0]=Math.min(o[i][0],o[i-1][0]),o[i-1][1]=Math.max(o[i][1],o[i-1][1]),o[i][2]!==void 0&&(o[i-1][0]>=o[i][0]||o[i-1][1]<=o[i][1])&&o[i-1][2]!==null&&(o[i][2]===null&&o[i-1][2]!==null?o[i-1][2]=null:o[i-1][2]!=null?+n.mergeType==2&&o[i-1][0]===o[i][0]?o[i-1][2]=o[i][2]:o[i-1][2]+=o[i][2]:o[i-1][2]=o[i][2]),o.splice(i,1),i=o.length);return o.length?o:null}var no=!0,Ne="Invariant failed";function Jt(e,t){if(!e){if(no)throw new Error(Ne);var r=typeof t=="function"?t():t,n=r?"".concat(Ne,": ").concat(r):Ne;throw new Error(n)}}function Ce(e,t,r){let n=0,u=0;if(arguments.length===0)throw new Error("ranges-apply: [THROW_ID_01] inputs missing!");if(typeof e!="string")throw new TypeError(`ranges-apply: [THROW_ID_02] first input argument must be a string! Currently it's: ${typeof e}, equal to: ${JSON.stringify(e,null,4)}`);if(t&&!Array.isArray(t))throw new TypeError(`ranges-apply: [THROW_ID_03] second input argument must be an array (or null)! Currently it's: ${typeof t}, equal to: ${JSON.stringify(t,null,4)}`);if(r&&typeof r!="function")throw new TypeError(`ranges-apply: [THROW_ID_04] the third input argument must be a function (or falsey)! Currently it's: ${typeof r}, equal to: ${JSON.stringify(r,null,4)}`);if(!t||!t.filter(d=>d).length)return e;let o;Array.isArray(t)&&Number.isInteger(t[0])&&Number.isInteger(t[1])?o=[Array.from(t)]:o=Array.from(t);let l=o.length,a=0;o.filter(d=>d).forEach((d,$)=>{if(r&&(n=Math.floor(a/l*10),n!==u&&(u=n,r(n))),!Array.isArray(d))throw new TypeError(`ranges-apply: [THROW_ID_05] ranges array, second input arg., has ${$}th element not an array: ${JSON.stringify(d,null,4)}, which is ${typeof d}`);if(!Number.isInteger(d[0])){if(!Number.isInteger(+d[0])||+d[0]<0)throw new TypeError(`ranges-apply: [THROW_ID_06] ranges array, second input arg. has ${$}th element, array ${JSON.stringify(d,null,0)}. Its first element is not an integer, string index, but ${typeof d[0]}, equal to: ${JSON.stringify(d[0],null,4)}.`);o[$][0]=+o[$][0]}if(!Number.isInteger(d[1])){if(!Number.isInteger(+d[1])||+d[1]<0)throw new TypeError(`ranges-apply: [THROW_ID_07] ranges array, second input arg. has ${$}th element, array ${JSON.stringify(d,null,0)}. Its second element is not an integer, string index, but ${typeof d[1]}, equal to: ${JSON.stringify(d[1],null,4)}.`);o[$][1]=+o[$][1]}a+=1});let g=Pt(o,{progressFn:d=>{r&&(n=10+Math.floor(d/10),n!==u&&(u=n,r(n)))}});Jt(g);let i=g.length;if(i>0){let d=e.slice(g[i-1][1]);e=g.reduce(($,m,f,h)=>{r&&(n=20+Math.floor(f/i*80),n!==u&&(u=n,r(n)));let S=f===0?0:h[f-1][1],y=h[f][0];return`${$}${e.slice(S,y)}${h[f][2]||""}`},""),e+=d}return e}var Bt="3.1.20";var U="\xA0",X="&nbsp;",z="\\00A0",Q="\\u00A0",Ut="\u2013",kt="&ndash;",qt="\\2013",Gt="\\u2013",Kt="\u2014",Zt="&mdash;",Yt="\\2014",Xt="\\u2014",De=[{heads:"{{",tails:"}}"},{heads:["{% if","{%- if"],tails:["{% endif","{%- endif"]},{heads:["{% for","{%- for"],tails:["{% endfor","{%- endfor"]},{heads:["{%","{%-"],tails:["%}","-%}"]},{heads:"{#",tails:"#}"}],zt=[{heads:"{{",tails:"}}"}],We=[{heads:["<%","<%=","<%-"],tails:["%>","=%>","-%>"]}],Qt=["abbr","address","area","article","aside","audio","base","bdi","bdo","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","doctype","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","param","picture","pre","progress","rb","rp","rt","rtc","ruby","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","ul","var","video","wbr","xml"];var so=Bt,er={removeWidowPreventionMeasures:!1,convertEntities:!0,targetLanguage:"html",UKPostcodes:!1,hyphens:!0,minWordCount:4,minCharCount:5,ignore:[],reportProgressFunc:null,reportProgressFuncFrom:0,reportProgressFuncTo:100,tagRanges:[]};function io(e,t){let r=Date.now();if(typeof e!="string")throw e===void 0?new Error("string-remove-widows: [THROW_ID_01] the first input argument is completely missing! It should be given as string."):new Error(`string-remove-widows: [THROW_ID_02] the first input argument must be string! It was given as "${typeof e}", equal to:
${JSON.stringify(t,null,4)} (type ${typeof t})`);else n=A({},Vt);let u=e.filter(i=>Array.isArray(i)).map(i=>[...i]).filter(i=>i[2]!==void 0||i[0]!==i[1]),o,l,a;n.progressFn?o=Oe(u,{progressFn:i=>{a=Math.floor(i/5),a!==l&&(l=a,n.progressFn(a))}}):o=Oe(u);let g=o.length-1;for(let i=g;i>0;i--)n.progressFn&&(a=Math.floor((1-i/g)*78)+21,a!==l&&a>l&&(l=a,n.progressFn(a))),(o[i][0]<=o[i-1][0]||!n.joinRangesThatTouchEdges&&o[i][0]<o[i-1][1]||n.joinRangesThatTouchEdges&&o[i][0]<=o[i-1][1])&&(o[i-1][0]=Math.min(o[i][0],o[i-1][0]),o[i-1][1]=Math.max(o[i][1],o[i-1][1]),o[i][2]!==void 0&&(o[i-1][0]>=o[i][0]||o[i-1][1]<=o[i][1])&&o[i-1][2]!==null&&(o[i][2]===null&&o[i-1][2]!==null?o[i-1][2]=null:o[i-1][2]!=null?+n.mergeType==2&&o[i-1][0]===o[i][0]?o[i-1][2]=o[i][2]:o[i-1][2]+=o[i][2]:o[i-1][2]=o[i][2]),o.splice(i,1),i=o.length);return o.length?o:null}var no=!0,Ne="Invariant failed";function Jt(e,t){if(!e){if(no)throw new Error(Ne);var r=typeof t=="function"?t():t,n=r?"".concat(Ne,": ").concat(r):Ne;throw new Error(n)}}function Ce(e,t,r){let n=0,u=0;if(arguments.length===0)throw new Error("ranges-apply: [THROW_ID_01] inputs missing!");if(typeof e!="string")throw new TypeError(`ranges-apply: [THROW_ID_02] first input argument must be a string! Currently it's: ${typeof e}, equal to: ${JSON.stringify(e,null,4)}`);if(t&&!Array.isArray(t))throw new TypeError(`ranges-apply: [THROW_ID_03] second input argument must be an array (or null)! Currently it's: ${typeof t}, equal to: ${JSON.stringify(t,null,4)}`);if(r&&typeof r!="function")throw new TypeError(`ranges-apply: [THROW_ID_04] the third input argument must be a function (or falsey)! Currently it's: ${typeof r}, equal to: ${JSON.stringify(r,null,4)}`);if(!t||!t.filter(d=>d).length)return e;let o;Array.isArray(t)&&Number.isInteger(t[0])&&Number.isInteger(t[1])?o=[Array.from(t)]:o=Array.from(t);let l=o.length,a=0;o.filter(d=>d).forEach((d,$)=>{if(r&&(n=Math.floor(a/l*10),n!==u&&(u=n,r(n))),!Array.isArray(d))throw new TypeError(`ranges-apply: [THROW_ID_05] ranges array, second input arg., has ${$}th element not an array: ${JSON.stringify(d,null,4)}, which is ${typeof d}`);if(!Number.isInteger(d[0])){if(!Number.isInteger(+d[0])||+d[0]<0)throw new TypeError(`ranges-apply: [THROW_ID_06] ranges array, second input arg. has ${$}th element, array ${JSON.stringify(d,null,0)}. Its first element is not an integer, string index, but ${typeof d[0]}, equal to: ${JSON.stringify(d[0],null,4)}.`);o[$][0]=+o[$][0]}if(!Number.isInteger(d[1])){if(!Number.isInteger(+d[1])||+d[1]<0)throw new TypeError(`ranges-apply: [THROW_ID_07] ranges array, second input arg. has ${$}th element, array ${JSON.stringify(d,null,0)}. Its second element is not an integer, string index, but ${typeof d[1]}, equal to: ${JSON.stringify(d[1],null,4)}.`);o[$][1]=+o[$][1]}a+=1});let g=Pt(o,{progressFn:d=>{r&&(n=10+Math.floor(d/10),n!==u&&(u=n,r(n)))}});Jt(g);let i=g.length;if(i>0){let d=e.slice(g[i-1][1]);e=g.reduce(($,m,f,h)=>{r&&(n=20+Math.floor(f/i*80),n!==u&&(u=n,r(n)));let S=f===0?0:h[f-1][1],y=h[f][0];return`${$}${e.slice(S,y)}${h[f][2]||""}`},""),e+=d}return e}var Bt="3.1.21";var U="\xA0",X="&nbsp;",z="\\00A0",Q="\\u00A0",Ut="\u2013",kt="&ndash;",qt="\\2013",Gt="\\u2013",Kt="\u2014",Zt="&mdash;",Yt="\\2014",Xt="\\u2014",De=[{heads:"{{",tails:"}}"},{heads:["{% if","{%- if"],tails:["{% endif","{%- endif"]},{heads:["{% for","{%- for"],tails:["{% endfor","{%- endfor"]},{heads:["{%","{%-"],tails:["%}","-%}"]},{heads:"{#",tails:"#}"}],zt=[{heads:"{{",tails:"}}"}],We=[{heads:["<%","<%=","<%-"],tails:["%>","=%>","-%>"]}],Qt=["abbr","address","area","article","aside","audio","base","bdi","bdo","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","doctype","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","param","picture","pre","progress","rb","rp","rt","rtc","ruby","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","ul","var","video","wbr","xml"];var so=Bt,er={removeWidowPreventionMeasures:!1,convertEntities:!0,targetLanguage:"html",UKPostcodes:!1,hyphens:!0,minWordCount:4,minCharCount:5,ignore:[],reportProgressFunc:null,reportProgressFuncFrom:0,reportProgressFuncTo:100,tagRanges:[]};function io(e,t){let r=Date.now();if(typeof e!="string")throw e===void 0?new Error("string-remove-widows: [THROW_ID_01] the first input argument is completely missing! It should be given as string."):new Error(`string-remove-widows: [THROW_ID_02] the first input argument must be string! It was given as "${typeof e}", equal to:
${JSON.stringify(e,null,4)}`);if(t&&typeof t!="object")throw new Error(`string-remove-widows: [THROW_ID_03] the second input argument, options object, should be a plain object but it was given as type ${typeof t}, equal to ${JSON.stringify(t,null,4)}`);let n=Array.isArray,u=e.length,o=new Ft({mergeType:2}),l=["."],a=/[A-Z]{1,2}[0-9][0-9A-Z]?$/,g=/^[0-9][A-Z]{2}/,i=.06,d,$=0,m=0,f=0,h,S,y,v,w,b,E,_,c=A(A({},er),t),N={removeWidows:!1,convertEntities:!1};if(!c.ignore||!n(c.ignore)&&typeof c.ignore!="string")c.ignore=[];else if(typeof c.ignore=="string"&&(c.ignore=[c.ignore]),c.ignore.includes("all"))c.ignore=c.ignore.concat(De.concat(We));else if(c.ignore.some(s=>typeof s=="string")){let s=[];c.ignore=c.ignore.filter(O=>typeof O=="string"&&O.length?(["nunjucks","jinja","liquid"].includes(O.trim().toLowerCase())?s=s.concat(De):["hugo"].includes(O.trim().toLowerCase())?s=s.concat(zt):["hexo"].includes(O.trim().toLowerCase())&&(s=s.concat(We)),!1):typeof O=="object"),s.length&&(c.ignore=c.ignore.concat(s))}let Re;c.reportProgressFunc&&(Re=Math.floor(c.reportProgressFuncTo-(c.reportProgressFuncTo-c.reportProgressFuncFrom)*i-c.reportProgressFuncFrom));function ce(s,O){let p=U;c.removeWidowPreventionMeasures?p=" ":c.convertEntities&&(p=X,typeof c.targetLanguage=="string"&&(c.targetLanguage.trim().toLowerCase()==="css"?p=z:c.targetLanguage.trim().toLowerCase()==="js"&&(p=Q))),e.slice(s,O)!==p&&o.push(s,O,p)}function Ie(){m=0,f=0,h=void 0,S=void 0,y=void 0,v=void 0,w=void 0,b=void 0}Ie();for(let s=0;s<=u;s++){if(!E&&n(c.ignore)&&c.ignore.length&&c.ignore.some((p,C)=>{if(n(p.heads)&&p.heads.some(Me=>e.startsWith(Me,s))||typeof p.heads=="string"&&e.startsWith(p.heads,s))return m+=1,E=c.ignore[C].tails,!0}),!E&&_&&_===s&&(m+=1,_=void 0),typeof c.reportProgressFunc=="function"&&(d=c.reportProgressFuncFrom+Math.floor(s/u*(Re||1)),d!==$&&($=d,c.reportProgressFunc(d))),!E&&s&&e[s]&&e[s].trim()&&(!e[s-1]||e[s-1]&&!e[s-1].trim())&&(v=s),!E&&e[s]&&e[s].trim()&&(f+=1),!E&&c.hyphens&&(`-${Kt}${Ut}`.includes(e[s])||e.startsWith(kt,s)||e.startsWith(qt,s)||e.startsWith(Gt,s)||e.startsWith(Zt,s)||e.startsWith(Yt,s)||e.startsWith(Xt,s))&&e[s+1]&&(!e[s+1].trim()||e[s]==="&")&&e[s-1]&&!e[s-1].trim()&&e[Z(e,s)]&&(ce(Z(e,s)+1,s),N.removeWidows=!0),!E&&(e.startsWith("&nbsp;",s)||e.startsWith("&#160;",s))&&(w=s,b=s+6,e[s+6]&&e[s+6].trim()&&(_=s+6),c.convertEntities?(c.targetLanguage==="css"||c.targetLanguage==="js")&&(o.push(s,s+6,c.targetLanguage==="css"?z:Q),N.convertEntities=!0):(o.push(s,s+6,U),N.convertEntities=!0)),!E&&e[s+4]&&e[s]==="\\"&&e[s+1]==="0"&&e[s+2]==="0"&&e[s+3].toUpperCase()==="A"&&e[s+4]==="0"&&(w=s,b=s+5,e[s+5]&&e[s+5].trim()&&(_=s+5),c.convertEntities?(c.targetLanguage==="html"||c.targetLanguage==="js")&&(o.push(s,s+5,c.targetLanguage==="html"?X:Q),N.convertEntities=!0):(o.push(s,s+5,U),N.convertEntities=!0)),!E&&e[s]==="\\"&&e[s+1]&&e[s+1].toLowerCase()==="u"&&e[s+2]==="0"&&e[s+3]==="0"&&e[s+4]&&e[s+4].toUpperCase()==="A"&&e[s+5]==="0"&&(w=s,b=s+6,e[s+6]&&e[s+6].trim()&&(_=s+6),c.convertEntities?(c.targetLanguage==="html"||c.targetLanguage==="css")&&o.push(s,s+6,c.targetLanguage==="html"?X:z):o.push(s,s+6,U)),!E&&e[s]===U&&(w=s,b=s+1,c.convertEntities&&o.push(s,s+1,c.targetLanguage==="css"?z:c.targetLanguage==="js"?Q:X)),!E&&e[s]&&e[s].trim()&&(!e[s-1]||!e[s-1].trim())&&(m+=1),!E&&(!e[s]||`\r

@@ -35,3 +35,3 @@ `.includes(e[s])||(e[s]===`

* @fileoverview Put non-empty strings into arrays, turn empty-ones into empty arrays. Bypass everything else.
* @version 4.1.1
* @version 4.1.2
* @author Roy Revelt, Codsen Ltd

@@ -44,3 +44,3 @@ * @license MIT

* @fileoverview Take an array of string index ranges, delete/replace the string according to them
* @version 6.2.7
* @version 6.2.8
* @author Roy Revelt, Codsen Ltd

@@ -53,3 +53,3 @@ * @license MIT

* @fileoverview Merge and sort string index ranges
* @version 8.2.2
* @version 8.2.3
* @author Roy Revelt, Codsen Ltd

@@ -62,3 +62,3 @@ * @license MIT

* @fileoverview Gather string index ranges
* @version 6.2.2
* @version 6.2.3
* @author Roy Revelt, Codsen Ltd

@@ -71,3 +71,3 @@ * @license MIT

* @fileoverview Sort string index ranges
* @version 5.1.1
* @version 5.1.2
* @author Roy Revelt, Codsen Ltd

@@ -80,3 +80,3 @@ * @license MIT

* @fileoverview Collapse the leading and trailing whitespace of a string
* @version 6.1.2
* @version 6.1.3
* @author Roy Revelt, Codsen Ltd

@@ -89,3 +89,3 @@ * @license MIT

* @fileoverview Looks up the first non-whitespace character to the left/right of a given index
* @version 5.1.2
* @version 5.1.3
* @author Roy Revelt, Codsen Ltd

@@ -98,3 +98,3 @@ * @license MIT

* @fileoverview Match substrings on the left or right of a given index, ignoring whitespace
* @version 8.2.2
* @version 8.2.3
* @author Roy Revelt, Codsen Ltd

@@ -101,0 +101,0 @@ * @license MIT

{
"name": "string-remove-widows",
"version": "3.1.20",
"version": "3.1.21",
"description": "Helps to prevent widow words in a text",

@@ -76,10 +76,10 @@ "keywords": [

"dependencies": {
"ranges-apply": "^6.2.7",
"ranges-push": "^6.2.2",
"string-left-right": "^5.1.2",
"string-match-left-right": "^8.2.2"
"ranges-apply": "^6.2.8",
"ranges-push": "^6.2.3",
"string-left-right": "^5.1.3",
"string-match-left-right": "^8.2.3"
},
"devDependencies": {
"string-strip-html": "^11.6.15"
"string-strip-html": "^11.6.16"
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc