is-html-tag-opening 3.0.7 → 3.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -38,6 +38,7 @@ If you need a legacy version which works with `require`, use version 2.1.0
38
38
 
39
39
  ```js
40
40
  import { strict as assert } from "assert";
41
+
41
42
  import { isOpening } from "is-html-tag-opening";
42
43
 
43
44
  const text = `<span>a < b<span>`;
@@ -54,7 +55,7 @@ assert.equal(isOpening(text, 11), true);
54
55
 
55
56
  ## Documentation
56
57
 
57
- Please [visit codsen.com](https://codsen.com/os/is-html-tag-opening/) for a full description of the API and examples.
58
+ Please [visit codsen.com](https://codsen.com/os/is-html-tag-opening/) for a full description of the API.
58
59
 
59
60
  ## Contributing
60
61
 
@@ -66,4 +67,6 @@ MIT License
66
67
 
67
68
  Copyright (c) 2010-2021 Roy Revelt and other contributors
68
69
 
70
+
69
71
  <img src="https://codsen.com/images/png-codsen-ok.png" width="98" alt="ok" align="center"> <img src="https://codsen.com/images/png-codsen-1.png" width="148" alt="codsen" align="center"> <img src="https://codsen.com/images/png-codsen-star-small.png" width="32" alt="star" align="center">
72
+
@@ -1,290 +1,12 @@
1
1
  /**
2
2
  * @name is-html-tag-opening
3
3
  * @fileoverview Does an HTML tag start at given position?
4
- * @version 3.0.7
4
+ * @version 3.0.10
5
5
  * @author Roy Revelt, Codsen Ltd
6
6
  * @license MIT
7
7
  * {@link https://codsen.com/os/is-html-tag-opening/}
8
8
  */
9
9
 
10
- import { matchRightIncl, matchRight } from 'string-match-left-right';
11
- import { left } from 'string-left-right';
12
-
13
- const defaultOpts = {
14
- allowCustomTagNames: false,
15
- skipOpeningBracket: false,
16
- };
17
- const BACKSLASH = "\u005C";
18
- const knownHtmlTags = [
19
- "a",
20
- "abbr",
21
- "acronym",
22
- "address",
23
- "applet",
24
- "area",
25
- "article",
26
- "aside",
27
- "audio",
28
- "b",
29
- "base",
30
- "basefont",
31
- "bdi",
32
- "bdo",
33
- "big",
34
- "blockquote",
35
- "body",
36
- "br",
37
- "button",
38
- "canvas",
39
- "caption",
40
- "center",
41
- "cite",
42
- "code",
43
- "col",
44
- "colgroup",
45
- "data",
46
- "datalist",
47
- "dd",
48
- "del",
49
- "details",
50
- "dfn",
51
- "dialog",
52
- "dir",
53
- "div",
54
- "dl",
55
- "doctype",
56
- "dt",
57
- "em",
58
- "embed",
59
- "fieldset",
60
- "figcaption",
61
- "figure",
62
- "font",
63
- "footer",
64
- "form",
65
- "frame",
66
- "frameset",
67
- "h1",
68
- "h1 - h6",
69
- "h2",
70
- "h3",
71
- "h4",
72
- "h5",
73
- "h6",
74
- "head",
75
- "header",
76
- "hgroup",
77
- "hr",
78
- "html",
79
- "i",
80
- "iframe",
81
- "img",
82
- "input",
83
- "ins",
84
- "kbd",
85
- "keygen",
86
- "label",
87
- "legend",
88
- "li",
89
- "link",
90
- "main",
91
- "map",
92
- "mark",
93
- "math",
94
- "menu",
95
- "menuitem",
96
- "meta",
97
- "meter",
98
- "nav",
99
- "noframes",
100
- "noscript",
101
- "object",
102
- "ol",
103
- "optgroup",
104
- "option",
105
- "output",
106
- "p",
107
- "param",
108
- "picture",
109
- "pre",
110
- "progress",
111
- "q",
112
- "rb",
113
- "rp",
114
- "rt",
115
- "rtc",
116
- "ruby",
117
- "s",
118
- "samp",
119
- "script",
120
- "section",
121
- "select",
122
- "slot",
123
- "small",
124
- "source",
125
- "span",
126
- "strike",
127
- "strong",
128
- "style",
129
- "sub",
130
- "summary",
131
- "sup",
132
- "svg",
133
- "table",
134
- "tbody",
135
- "td",
136
- "template",
137
- "textarea",
138
- "tfoot",
139
- "th",
140
- "thead",
141
- "time",
142
- "title",
143
- "tr",
144
- "track",
145
- "tt",
146
- "u",
147
- "ul",
148
- "var",
149
- "video",
150
- "wbr",
151
- "xml",
152
- ];
153
-
154
- function isNotLetter(char) {
155
- return (char === undefined ||
156
- (char.toUpperCase() === char.toLowerCase() &&
157
- !/\d/.test(char) &&
158
- char !== "="));
159
- }
160
-
161
- function extraRequirements(str, idx) {
162
- return (str[idx] === "<" ||
163
- str[left(str, idx)] === "<");
164
- }
165
-
166
- var version$1 = "3.0.7";
167
-
168
- const version = version$1;
169
- function isOpening(str, idx = 0, originalOpts) {
170
- if (typeof str !== "string") {
171
- throw new Error(`is-html-tag-opening: [THROW_ID_01] the first input argument should have been a string but it was given as "${typeof str}", value being ${JSON.stringify(str, null, 4)}`);
172
- }
173
- if (!Number.isInteger(idx) || idx < 0) {
174
- throw new Error(`is-html-tag-opening: [THROW_ID_02] the second input argument should have been a natural number string index but it was given as "${typeof idx}", value being ${JSON.stringify(idx, null, 4)}`);
175
- }
176
- const opts = { ...defaultOpts, ...originalOpts };
177
- const whitespaceChunk = `[\\\\ \\t\\r\\n/]*`;
178
- const generalChar = `._a-z0-9\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\uFFFF`;
179
- const r1 = new RegExp(`^<${opts.skipOpeningBracket ? "?" : ""}${whitespaceChunk}\\w+${whitespaceChunk}\\/?${whitespaceChunk}>`, "g");
180
- const r5 = new RegExp(`^<${opts.skipOpeningBracket ? "?" : ""}${whitespaceChunk}[${generalChar}]+[-${generalChar}]*${whitespaceChunk}>`, "g");
181
- const r2 = new RegExp(`^<${opts.skipOpeningBracket ? "?" : ""}\\s*\\w+\\s+\\w+(?:-\\w+)?\\s*=\\s*['"\\w]`, "g");
182
- const r6 = new RegExp(`^<${opts.skipOpeningBracket ? "?" : ""}\\s*\\w+\\s+[${generalChar}]+[-${generalChar}]*(?:-\\w+)?\\s*=\\s*['"\\w]`);
183
- const r3 = new RegExp(`^<${opts.skipOpeningBracket ? "?" : ""}\\s*\\/?\\s*\\w+\\s*\\/?\\s*>`, "g");
184
- const r7 = new RegExp(`^<${opts.skipOpeningBracket ? "?" : ""}\\s*\\/?\\s*[${generalChar}]+[-${generalChar}]*\\s*\\/?\\s*>`, "g");
185
- const r4 = new RegExp(`^<${opts.skipOpeningBracket ? "?" : ""}${whitespaceChunk}\\w+(?:\\s*\\w+)?\\s*\\w+=['"]`, "g");
186
- const r8 = new RegExp(`^<${opts.skipOpeningBracket ? "?" : ""}${whitespaceChunk}[${generalChar}]+[-${generalChar}]*\\s+(?:\\s*\\w+)?\\s*\\w+=['"]`, "g");
187
- const r9 = new RegExp(`^<${opts.skipOpeningBracket ? `?\\/?` : ""}(${whitespaceChunk}[${generalChar}]+)+${whitespaceChunk}[\\\\/=>]`, "");
188
- const r10 = new RegExp(`^\\/\\s*\\w+s*>`);
189
- const whatToTest = idx ? str.slice(idx) : str;
190
- const leftSideIdx = left(str, idx);
191
- let qualified = false;
192
- let passed = false;
193
- const matchingOptions = {
194
- cb: isNotLetter,
195
- i: true,
196
- trimCharsBeforeMatching: ["/", BACKSLASH, "!", " ", "\t", "\n", "\r"],
197
- };
198
- if (opts.allowCustomTagNames) {
199
- if (((opts.skipOpeningBracket &&
200
- (str[idx - 1] === "<" ||
201
- (str[idx - 1] === "/" &&
202
- str[left(str, leftSideIdx)] === "<"))) ||
203
- (whatToTest[0] === "<" && whatToTest[1] && whatToTest[1].trim())) &&
204
- (r9.test(whatToTest) || /^<\w+$/.test(whatToTest))) {
205
- passed = true;
206
- }
207
- else if (r5.test(whatToTest) && extraRequirements(str, idx)) {
208
- passed = true;
209
- }
210
- else if (r6.test(whatToTest)) {
211
- passed = true;
212
- }
213
- else if (r7.test(whatToTest) && extraRequirements(str, idx)) {
214
- passed = true;
215
- }
216
- else if (r8.test(whatToTest)) {
217
- passed = true;
218
- }
219
- else if (str[idx] === "/" &&
220
- str[leftSideIdx] !== "<" &&
221
- r10.test(whatToTest)) {
222
- passed = true;
223
- }
224
- }
225
- else {
226
- if (((opts.skipOpeningBracket &&
227
- (str[idx - 1] === "<" ||
228
- (str[idx - 1] === "/" &&
229
- str[left(str, leftSideIdx)] === "<"))) ||
230
- ((whatToTest[0] === "<" ||
231
- (whatToTest[0] === "/" &&
232
- (!str[leftSideIdx] || str[leftSideIdx] !== "<"))) &&
233
- whatToTest[1] &&
234
- whatToTest[1].trim())) &&
235
- r9.test(whatToTest)) {
236
- qualified = true;
237
- }
238
- else if (r1.test(whatToTest) && extraRequirements(str, idx)) {
239
- qualified = true;
240
- }
241
- else if (r2.test(whatToTest)) {
242
- qualified = true;
243
- }
244
- else if (r3.test(whatToTest) && extraRequirements(str, idx)) {
245
- qualified = true;
246
- }
247
- else if (r4.test(whatToTest)) {
248
- qualified = true;
249
- }
250
- if (qualified &&
251
- matchRightIncl(str, idx, knownHtmlTags, {
252
- cb: (char) => {
253
- if (char === undefined) {
254
- if ((str[idx] === "<" && str[idx + 1] && str[idx + 1].trim()) ||
255
- str[idx - 1] === "<") {
256
- passed = true;
257
- }
258
- return true;
259
- }
260
- return (char.toUpperCase() === char.toLowerCase() &&
261
- !/\d/.test(char) &&
262
- char !== "=");
263
- },
264
- i: true,
265
- trimCharsBeforeMatching: [
266
- "<",
267
- "/",
268
- BACKSLASH,
269
- "!",
270
- " ",
271
- "\t",
272
- "\n",
273
- "\r",
274
- ],
275
- })) {
276
- passed = true;
277
- }
278
- }
279
- if (!passed &&
280
- str[idx] === "<" &&
281
- str[idx + 1] &&
282
- str[idx + 1].trim() &&
283
- matchRight(str, idx, knownHtmlTags, matchingOptions)) {
284
- passed = true;
285
- }
286
- const res = typeof str === "string" && idx < str.length && passed;
287
- return res;
288
- }
289
-
290
- export { defaultOpts as defaults, isOpening, version };
10
+ import{matchRight as N,matchRightIncl as S}from"string-match-left-right";import{left as c}from"string-left-right";var b={allowCustomTagNames:!1,skipOpeningBracket:!1},g="\\",m=["a","abbr","acronym","address","applet","area","article","aside","audio","b","base","basefont","bdi","bdo","big","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","dir","div","dl","doctype","dt","em","embed","fieldset","figcaption","figure","font","footer","form","frame","frameset","h1","h1 - h6","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noframes","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strike","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","tt","u","ul","var","video","wbr","xml"];function f(e){return e===void 0||e.toUpperCase()===e.toLowerCase()&&!/\d/.test(e)&&e!=="="}import{left as T}from"string-left-right";function p(e,t){return e[t]==="<"||e[T(e,t)]==="<"}var d="3.0.10";var K=d;function U(e,t=0,h){if(typeof e!="string")throw new Error(`is-html-tag-opening: [THROW_ID_01] the first input argument should have been a string but it was given as "${typeof e}", value being ${JSON.stringify(e,null,4)}`);if(!Number.isInteger(t)||t<0)throw new Error(`is-html-tag-opening: [THROW_ID_02] the second input argument should have been a natural number string index but it was given as "${typeof t}", value being ${JSON.stringify(t,null,4)}`);let n={...b,...h},i="[\\\\ \\t\\r\\n/]*",r="._a-z0-9\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\uFFFF",w=new RegExp(`^<${n.skipOpeningBracket?"?":""}${i}\\w+${i}\\/?${i}>`,"g"),k=new RegExp(`^<${n.skipOpeningBracket?"?":""}${i}[${r}]+[-${r}]*${i}>`,"g"),E=new RegExp(`^<${n.skipOpeningBracket?"?":""}\\s*\\w+\\s+\\w+(?:-\\w+)?\\s*=\\s*['"\\w]`,"g"),y=new RegExp(`^<${n.skipOpeningBracket?"?":""}\\s*\\w+\\s+[${r}]+[-${r}]*(?:-\\w+)?\\s*=\\s*['"\\w]`),D=new RegExp(`^<${n.skipOpeningBracket?"?":""}\\s*\\/?\\s*\\w+\\s*\\/?\\s*>`,"g"),O=new RegExp(`^<${n.skipOpeningBracket?"?":""}\\s*\\/?\\s*[${r}]+[-${r}]*\\s*\\/?\\s*>`,"g"),R=new RegExp(`^<${n.skipOpeningBracket?"?":""}${i}\\w+(?:\\s*\\w+)?\\s*\\w+=['"]`,"g"),V=new RegExp(`^<${n.skipOpeningBracket?"?":""}${i}[${r}]+[-${r}]*\\s+(?:\\s*\\w+)?\\s*\\w+=['"]`,"g"),$=new RegExp(`^<${n.skipOpeningBracket?"?\\/?":""}(${i}[${r}]+)+${i}[\\\\/=>]`,""),v=new RegExp("^\\/\\s*\\w+s*>"),s=t?e.slice(t):e,a=c(e,t),l=!1,o=!1,B={cb:f,i:!0,trimCharsBeforeMatching:["/",g,"!"," "," ",`
11
+ `,"\r"]};return n.allowCustomTagNames?((n.skipOpeningBracket&&(e[t-1]==="<"||e[t-1]==="/"&&e[c(e,a)]==="<")||s[0]==="<"&&s[1]&&s[1].trim())&&($.test(s)||/^<\w+$/.test(s))||k.test(s)&&p(e,t)||y.test(s)||O.test(s)&&p(e,t)||V.test(s)||e[t]==="/"&&e[a]!=="<"&&v.test(s))&&(o=!0):(((n.skipOpeningBracket&&(e[t-1]==="<"||e[t-1]==="/"&&e[c(e,a)]==="<")||(s[0]==="<"||s[0]==="/"&&(!e[a]||e[a]!=="<"))&&s[1]&&s[1].trim())&&$.test(s)||w.test(s)&&p(e,t)||E.test(s)||D.test(s)&&p(e,t)||R.test(s))&&(l=!0),l&&S(e,t,m,{cb:u=>u===void 0?((e[t]==="<"&&e[t+1]&&e[t+1].trim()||e[t-1]==="<")&&(o=!0),!0):u.toUpperCase()===u.toLowerCase()&&!/\d/.test(u)&&u!=="=",i:!0,trimCharsBeforeMatching:["<","/",g,"!"," "," ",`
12
+ `,"\r"]})&&(o=!0)),!o&&e[t]==="<"&&e[t+1]&&e[t+1].trim()&&N(e,t,m,B)&&(o=!0),typeof e=="string"&&t<e.length&&o}export{b as defaults,U as isOpening,K as version};
@@ -1,27 +1,42 @@
1
1
  /**
2
2
  * @name is-html-tag-opening
3
3
  * @fileoverview Does an HTML tag start at given position?
4
- * @version 3.0.7
4
+ * @version 3.0.10
5
5
  * @author Roy Revelt, Codsen Ltd
6
6
  * @license MIT
7
7
  * {@link https://codsen.com/os/is-html-tag-opening/}
8
8
  */
9
9
 
10
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).isHtmlTagOpening={})}(this,(function(t){"use strict";
10
+ var isHtmlTagOpening=(()=>{var ve=Object.create;var L=Object.defineProperty;var Ce=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames,mt=Object.getOwnPropertySymbols,Ae=Object.getPrototypeOf,dt=Object.prototype.hasOwnProperty,Ee=Object.prototype.propertyIsEnumerable;var bt=(t,e,r)=>e in t?L(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,v=(t,e)=>{for(var r in e||(e={}))dt.call(e,r)&&bt(t,r,e[r]);if(mt)for(var r of mt(e))Ee.call(e,r)&&bt(t,r,e[r]);return t};var yt=t=>L(t,"__esModule",{value:!0});var wt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Me=(t,e)=>{for(var r in e)L(t,r,{get:e[r],enumerable:!0})},$t=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!dt.call(t,i)&&(r||i!=="default")&&L(t,i,{get:()=>e[i],enumerable:!(n=Ce(e,i))||n.enumerable});return t},_t=(t,e)=>$t(yt(L(t!=null?ve(Ae(t)):{},"default",!e&&t&&t.__esModule?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t),Te=(t=>(e,r)=>t&&t.get(e)||(r=$t(yt({}),e,1),t&&t.set(e,r),r))(typeof WeakMap!="undefined"?new WeakMap:0);var jt=wt((En,Rt)=>{var je="[object Object]";function Be(t){var e=!1;if(t!=null&&typeof t.toString!="function")try{e=!!(t+"")}catch(r){}return e}function xe(t,e){return function(r){return t(e(r))}}var Ie=Function.prototype,Tt=Object.prototype,St=Ie.toString,Le=Tt.hasOwnProperty,De=St.call(Object),Ne=Tt.toString,ke=xe(Object.getPrototypeOf,Object);function Ve(t){return!!t&&typeof t=="object"}function He(t){if(!Ve(t)||Ne.call(t)!=je||Be(t))return!1;var e=ke(t);if(e===null)return!0;var r=Le.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&St.call(r)==De}Rt.exports=He});var we=wt((k,x)=>{var Pe=200,Bt="__lodash_hash_undefined__",xt=9007199254740991,Z="[object Arguments]",qe="[object Array]",It="[object Boolean]",Lt="[object Date]",Fe="[object Error]",z="[object Function]",Dt="[object GeneratorFunction]",q="[object Map]",Nt="[object Number]",Q="[object Object]",kt="[object Promise]",Vt="[object RegExp]",F="[object Set]",Ht="[object String]",Pt="[object Symbol]",tt="[object WeakMap]",qt="[object ArrayBuffer]",W="[object DataView]",Ft="[object Float32Array]",Wt="[object Float64Array]",Gt="[object Int8Array]",Jt="[object Int16Array]",Ut="[object Int32Array]",Kt="[object Uint8Array]",Yt="[object Uint8ClampedArray]",Xt="[object Uint16Array]",Zt="[object Uint32Array]",We=/[\\^$.*+?()[\]{}|]/g,Ge=/\w*$/,Je=/^\[object .+?Constructor\]$/,Ue=/^(?:0|[1-9]\d*)$/,c={};c[Z]=c[qe]=c[qt]=c[W]=c[It]=c[Lt]=c[Ft]=c[Wt]=c[Gt]=c[Jt]=c[Ut]=c[q]=c[Nt]=c[Q]=c[Vt]=c[F]=c[Ht]=c[Pt]=c[Kt]=c[Yt]=c[Xt]=c[Zt]=!0;c[Fe]=c[z]=c[tt]=!1;var Ke=typeof global=="object"&&global&&global.Object===Object&&global,Ye=typeof self=="object"&&self&&self.Object===Object&&self,C=Ke||Ye||Function("return this")(),zt=typeof k=="object"&&k&&!k.nodeType&&k,Qt=zt&&typeof x=="object"&&x&&!x.nodeType&&x,Xe=Qt&&Qt.exports===zt;function Ze(t,e){return t.set(e[0],e[1]),t}function ze(t,e){return t.add(e),t}function Qe(t,e){for(var r=-1,n=t?t.length:0;++r<n&&e(t[r],r,t)!==!1;);return t}function tr(t,e){for(var r=-1,n=e.length,i=t.length;++r<n;)t[i+r]=e[r];return t}function te(t,e,r,n){var i=-1,o=t?t.length:0;for(n&&o&&(r=t[++i]);++i<o;)r=e(r,t[i],i,t);return r}function er(t,e){for(var r=-1,n=Array(t);++r<t;)n[r]=e(r);return n}function rr(t,e){return t==null?void 0:t[e]}function ee(t){var e=!1;if(t!=null&&typeof t.toString!="function")try{e=!!(t+"")}catch(r){}return e}function re(t){var e=-1,r=Array(t.size);return t.forEach(function(n,i){r[++e]=[i,n]}),r}function et(t,e){return function(r){return t(e(r))}}function ne(t){var e=-1,r=Array(t.size);return t.forEach(function(n){r[++e]=n}),r}var nr=Array.prototype,ir=Function.prototype,G=Object.prototype,rt=C["__core-js_shared__"],ie=function(){var t=/[^.]+$/.exec(rt&&rt.keys&&rt.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),oe=ir.toString,A=G.hasOwnProperty,J=G.toString,or=RegExp("^"+oe.call(A).replace(We,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),se=Xe?C.Buffer:void 0,ae=C.Symbol,ue=C.Uint8Array,sr=et(Object.getPrototypeOf,Object),ar=Object.create,ur=G.propertyIsEnumerable,lr=nr.splice,le=Object.getOwnPropertySymbols,cr=se?se.isBuffer:void 0,fr=et(Object.keys,Object),nt=B(C,"DataView"),D=B(C,"Map"),it=B(C,"Promise"),ot=B(C,"Set"),st=B(C,"WeakMap"),N=B(Object,"create"),gr=S(nt),hr=S(D),pr=S(it),mr=S(ot),dr=S(st),ce=ae?ae.prototype:void 0,fe=ce?ce.valueOf:void 0;function M(t){var e=-1,r=t?t.length:0;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}function br(){this.__data__=N?N(null):{}}function yr(t){return this.has(t)&&delete this.__data__[t]}function wr(t){var e=this.__data__;if(N){var r=e[t];return r===Bt?void 0:r}return A.call(e,t)?e[t]:void 0}function $r(t){var e=this.__data__;return N?e[t]!==void 0:A.call(e,t)}function _r(t,e){var r=this.__data__;return r[t]=N&&e===void 0?Bt:e,this}M.prototype.clear=br;M.prototype.delete=yr;M.prototype.get=wr;M.prototype.has=$r;M.prototype.set=_r;function O(t){var e=-1,r=t?t.length:0;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}function vr(){this.__data__=[]}function Cr(t){var e=this.__data__,r=U(e,t);if(r<0)return!1;var n=e.length-1;return r==n?e.pop():lr.call(e,r,1),!0}function Or(t){var e=this.__data__,r=U(e,t);return r<0?void 0:e[r][1]}function Ar(t){return U(this.__data__,t)>-1}function Er(t,e){var r=this.__data__,n=U(r,t);return n<0?r.push([t,e]):r[n][1]=e,this}O.prototype.clear=vr;O.prototype.delete=Cr;O.prototype.get=Or;O.prototype.has=Ar;O.prototype.set=Er;function R(t){var e=-1,r=t?t.length:0;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}function Mr(){this.__data__={hash:new M,map:new(D||O),string:new M}}function Tr(t){return K(this,t).delete(t)}function Sr(t){return K(this,t).get(t)}function Rr(t){return K(this,t).has(t)}function jr(t,e){return K(this,t).set(t,e),this}R.prototype.clear=Mr;R.prototype.delete=Tr;R.prototype.get=Sr;R.prototype.has=Rr;R.prototype.set=jr;function j(t){this.__data__=new O(t)}function Br(){this.__data__=new O}function xr(t){return this.__data__.delete(t)}function Ir(t){return this.__data__.get(t)}function Lr(t){return this.__data__.has(t)}function Dr(t,e){var r=this.__data__;if(r instanceof O){var n=r.__data__;if(!D||n.length<Pe-1)return n.push([t,e]),this;r=this.__data__=new R(n)}return r.set(t,e),this}j.prototype.clear=Br;j.prototype.delete=xr;j.prototype.get=Ir;j.prototype.has=Lr;j.prototype.set=Dr;function Nr(t,e){var r=lt(t)||un(t)?er(t.length,String):[],n=r.length,i=!!n;for(var o in t)(e||A.call(t,o))&&!(i&&(o=="length"||nn(o,n)))&&r.push(o);return r}function ge(t,e,r){var n=t[e];(!(A.call(t,e)&&de(n,r))||r===void 0&&!(e in t))&&(t[e]=r)}function U(t,e){for(var r=t.length;r--;)if(de(t[r][0],e))return r;return-1}function kr(t,e){return t&&he(e,ct(e),t)}function at(t,e,r,n,i,o,u){var s;if(n&&(s=o?n(t,i,o,u):n(t)),s!==void 0)return s;if(!Y(t))return t;var f=lt(t);if(f){if(s=tn(t),!e)return Zr(t,s)}else{var d=T(t),h=d==z||d==Dt;if(cn(t))return Wr(t,e);if(d==Q||d==Z||h&&!o){if(ee(t))return o?t:{};if(s=en(h?{}:t),!e)return zr(t,kr(s,t))}else{if(!c[d])return o?t:{};s=rn(t,d,at,e)}}u||(u=new j);var g=u.get(t);if(g)return g;if(u.set(t,s),!f)var m=r?Qr(t):ct(t);return Qe(m||t,function(b,a){m&&(a=b,b=t[a]),ge(s,a,at(b,e,r,n,a,t,u))}),s}function Vr(t){return Y(t)?ar(t):{}}function Hr(t,e,r){var n=e(t);return lt(t)?n:tr(n,r(t))}function Pr(t){return J.call(t)}function qr(t){if(!Y(t)||sn(t))return!1;var e=ye(t)||ee(t)?or:Je;return e.test(S(t))}function Fr(t){if(!me(t))return fr(t);var e=[];for(var r in Object(t))A.call(t,r)&&r!="constructor"&&e.push(r);return e}function Wr(t,e){if(e)return t.slice();var r=new t.constructor(t.length);return t.copy(r),r}function ut(t){var e=new t.constructor(t.byteLength);return new ue(e).set(new ue(t)),e}function Gr(t,e){var r=e?ut(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}function Jr(t,e,r){var n=e?r(re(t),!0):re(t);return te(n,Ze,new t.constructor)}function Ur(t){var e=new t.constructor(t.source,Ge.exec(t));return e.lastIndex=t.lastIndex,e}function Kr(t,e,r){var n=e?r(ne(t),!0):ne(t);return te(n,ze,new t.constructor)}function Yr(t){return fe?Object(fe.call(t)):{}}function Xr(t,e){var r=e?ut(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}function Zr(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r<n;)e[r]=t[r];return e}function he(t,e,r,n){r||(r={});for(var i=-1,o=e.length;++i<o;){var u=e[i],s=n?n(r[u],t[u],u,r,t):void 0;ge(r,u,s===void 0?t[u]:s)}return r}function zr(t,e){return he(t,pe(t),e)}function Qr(t){return Hr(t,ct,pe)}function K(t,e){var r=t.__data__;return on(e)?r[typeof e=="string"?"string":"hash"]:r.map}function B(t,e){var r=rr(t,e);return qr(r)?r:void 0}var pe=le?et(le,Object):hn,T=Pr;(nt&&T(new nt(new ArrayBuffer(1)))!=W||D&&T(new D)!=q||it&&T(it.resolve())!=kt||ot&&T(new ot)!=F||st&&T(new st)!=tt)&&(T=function(t){var e=J.call(t),r=e==Q?t.constructor:void 0,n=r?S(r):void 0;if(n)switch(n){case gr:return W;case hr:return q;case pr:return kt;case mr:return F;case dr:return tt}return e});function tn(t){var e=t.length,r=t.constructor(e);return e&&typeof t[0]=="string"&&A.call(t,"index")&&(r.index=t.index,r.input=t.input),r}function en(t){return typeof t.constructor=="function"&&!me(t)?Vr(sr(t)):{}}function rn(t,e,r,n){var i=t.constructor;switch(e){case qt:return ut(t);case It:case Lt:return new i(+t);case W:return Gr(t,n);case Ft:case Wt:case Gt:case Jt:case Ut:case Kt:case Yt:case Xt:case Zt:return Xr(t,n);case q:return Jr(t,n,r);case Nt:case Ht:return new i(t);case Vt:return Ur(t);case F:return Kr(t,n,r);case Pt:return Yr(t)}}function nn(t,e){return e=e==null?xt:e,!!e&&(typeof t=="number"||Ue.test(t))&&t>-1&&t%1==0&&t<e}function on(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}function sn(t){return!!ie&&ie in t}function me(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||G;return t===r}function S(t){if(t!=null){try{return oe.call(t)}catch(e){}try{return t+""}catch(e){}}return""}function an(t){return at(t,!0,!0)}function de(t,e){return t===e||t!==t&&e!==e}function un(t){return ln(t)&&A.call(t,"callee")&&(!ur.call(t,"callee")||J.call(t)==Z)}var lt=Array.isArray;function be(t){return t!=null&&fn(t.length)&&!ye(t)}function ln(t){return gn(t)&&be(t)}var cn=cr||pn;function ye(t){var e=Y(t)?J.call(t):"";return e==z||e==Dt}function fn(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=xt}function Y(t){var e=typeof t;return!!t&&(e=="object"||e=="function")}function gn(t){return!!t&&typeof t=="object"}function ct(t){return be(t)?Nr(t):Fr(t)}function hn(){return[]}function pn(){return!1}x.exports=an});var _n={};Me(_n,{defaults:()=>gt,isOpening:()=>$n,version:()=>wn});function vt(t){return typeof t=="string"?t.length?[t]:[]:t}function Ct(t){return t&&typeof t=="object"&&!Array.isArray(t)}function P(t){return typeof t=="string"}var Ot={cb:void 0,i:!1,trimBeforeMatching:!1,trimCharsBeforeMatching:[],maxMismatches:0,firstMustMatch:!1,lastMustMatch:!1,hungry:!1},Se=t=>t+1;function Re(t,e,r,n,i=!1,o=Se){let u=typeof r=="function"?r():r;if(+e<0&&i&&u==="EOL")return u;let s=v(v({},Ot),n);if(e>=t.length&&!i)return!1;let f=i?1:r.length,d=0,h=!1,g=!1,m=!1,b=s.maxMismatches,a=e,y=!1,l=!1,p=!1;function _(){return d===1&&b<s.maxMismatches-1}for(;t[a];){let w=o(a);if(s.trimBeforeMatching&&t[a].trim()===""){if(!t[w]&&i&&r==="EOL")return!0;a=o(a);continue}if(s&&!s.i&&s.trimCharsBeforeMatching&&s.trimCharsBeforeMatching.includes(t[a])||(s==null?void 0:s.i)&&s.trimCharsBeforeMatching&&s.trimCharsBeforeMatching.map(E=>E.toLowerCase()).includes(t[a].toLowerCase())){if(i&&r==="EOL"&&!t[w])return!0;a=o(a);continue}let H=w>a?r[r.length-f]:r[f-1];if(!s.i&&t[a]===H||s.i&&t[a].toLowerCase()===H.toLowerCase()){if(y||(y=!0),m||(m=!0),f===r.length){if(l=!0,b!==s.maxMismatches)return!1}else f===1&&(p=!0);if(f-=1,d++,_())return!1;if(!f)return d!==r.length||b===s.maxMismatches||!h?a:!1}else if(!h&&!d&&(h=!0),s.maxMismatches&&b&&a){b-=1;for(let E=0;E<=b;E++){let $=w>a?r[r.length-f+1+E]:r[f-2-E],X=t[o(a)];if($&&(!s.i&&t[a]===$||s.i&&t[a].toLowerCase()===$.toLowerCase())&&(!s.firstMustMatch||f!==r.length)){if(d++,_())return!1;f-=2,y=!0;break}else if(X&&$&&(!s.i&&X===$||s.i&&X.toLowerCase()===$.toLowerCase())&&(!s.firstMustMatch||f!==r.length)){if(!d&&!s.hungry)return!1;f-=1,y=!0;break}else if($===void 0&&b>=0&&y&&(!s.firstMustMatch||l)&&(!s.lastMustMatch||p))return a}y||(g=a)}else return a===0&&f===1&&!s.lastMustMatch&&m?0:!1;if(g!==!1&&g!==a&&(g=!1),f<1)return a;a=o(a)}if(f>0)return i&&u==="EOL"?!0:s&&s.maxMismatches>=f&&m?g||0:!1}function At(t,e,r,n,i){if(Ct(i)&&Object.prototype.hasOwnProperty.call(i,"trimBeforeMatching")&&typeof i.trimBeforeMatching!="boolean")throw new Error(`string-match-left-right/${t}(): [THROW_ID_09] opts.trimBeforeMatching should be boolean!${Array.isArray(i.trimBeforeMatching)?" Did you mean to use opts.trimCharsBeforeMatching?":""}`);let o=v(v({},Ot),i);if(typeof o.trimCharsBeforeMatching=="string"&&(o.trimCharsBeforeMatching=vt(o.trimCharsBeforeMatching)),o.trimCharsBeforeMatching=o.trimCharsBeforeMatching.map(h=>P(h)?h:String(h)),!P(e)||!e.length)return!1;if(!Number.isInteger(r)||r<0)throw new Error(`string-match-left-right/${t}(): [THROW_ID_03] the second argument should be a natural number. Currently it's of a type: ${typeof r}, equal to:
11
+ ${JSON.stringify(r,null,4)}`);let u,s;if(P(n))u=[n];else if(Array.isArray(n))u=n;else if(!n)u=n;else if(typeof n=="function")u=[],u.push(n);else throw new Error(`string-match-left-right/${t}(): [THROW_ID_05] the third argument, whatToMatch, is neither string nor array of strings! It's ${typeof n}, equal to:
12
+ ${JSON.stringify(n,null,4)}`);if(i&&!Ct(i))throw new Error(`string-match-left-right/${t}(): [THROW_ID_06] the fourth argument, options object, should be a plain object. Currently it's of a type "${typeof i}", and equal to:
13
+ ${JSON.stringify(i,null,4)}`);let f=0,d="";if((o==null?void 0:o.trimCharsBeforeMatching)&&o.trimCharsBeforeMatching.some((h,g)=>h.length>1?(f=g,d=h,!0):!1))throw new Error(`string-match-left-right/${t}(): [THROW_ID_07] the fourth argument, options object contains trimCharsBeforeMatching. It was meant to list the single characters but one of the entries at index ${f} is longer than 1 character, ${d.length} (equals to ${d}). Please split it into separate characters and put into array as separate elements.`);if(!u||!Array.isArray(u)||Array.isArray(u)&&!u.length||Array.isArray(u)&&u.length===1&&P(u[0])&&!u[0].trim()){if(typeof o.cb=="function"){let g,m=r;if((t==="matchLeftIncl"||t==="matchRight")&&(m+=1),t[5]==="L")for(let l=m;l--;){let p=e[l];if((!o.trimBeforeMatching||o.trimBeforeMatching&&p!==void 0&&p.trim())&&(!o.trimCharsBeforeMatching||!o.trimCharsBeforeMatching.length||p!==void 0&&!o.trimCharsBeforeMatching.includes(p))){g=l;break}}else if(t.startsWith("matchRight"))for(let l=m;l<e.length;l++){let p=e[l];if((!o.trimBeforeMatching||o.trimBeforeMatching&&p.trim())&&(!o.trimCharsBeforeMatching||!o.trimCharsBeforeMatching.length||!o.trimCharsBeforeMatching.includes(p))){g=l;break}}if(g===void 0)return!1;let b=e[g],a=g+1,y="";return a&&a>0&&(y=e.slice(0,a)),t[5]==="L"||g&&g>0&&(y=e.slice(g)),o.cb(b,y,g)}let h="";throw i||(h=" More so, the whole options object, the fourth input argument, is missing!"),new Error(`string-match-left-right/${t}(): [THROW_ID_08] the third argument, "whatToMatch", was given as an empty string. This means, you intend to match purely by a callback. The callback was not set though, the opts key "cb" is not set!${h}`)}for(let h=0,g=u.length;h<g;h++){s=typeof u[h]=="function";let m=u[h],b,a,y="",l=r;t==="matchRight"?l+=1:t==="matchLeft"&&(l-=1);let p=Re(e,l,m,o,s,_=>t[5]==="L"?_-1:_+1);if(p&&s&&typeof m=="function"&&m()==="EOL")return m()&&(o.cb?o.cb(b,y,a):!0)?m():!1;if(Number.isInteger(p)&&(a=t.startsWith("matchLeft")?p-1:p+1,t[5]==="L"?y=e.slice(0,p):y=e.slice(a)),a<0&&(a=void 0),e[a]&&(b=e[a]),Number.isInteger(p)&&(o.cb?o.cb(b,y,a):!0))return m}return!1}function Et(t,e,r,n){return At("matchRightIncl",t,e,r,n)}function Mt(t,e,r,n){return At("matchRight",t,e,r,n)}var mn=_t(jt(),1),dn=_t(we(),1);var ft="\xA0";function bn({str:t,idx:e,stopAtNewlines:r,stopAtRawNbsp:n}){if(typeof t!="string"||!t.length||((!e||typeof e!="number")&&(e=0),e<1))return null;if(t[~-e]&&(t[~-e].trim()||r&&`
14
+ \r`.includes(t[~-e])||n&&t[~-e]===ft))return~-e;if(t[e-2]&&(t[e-2].trim()||r&&`
15
+ \r`.includes(t[e-2])||n&&t[e-2]===ft))return e-2;for(let i=e;i--;)if(t[i]&&(t[i].trim()||r&&`
16
+ \r`.includes(t[i])||n&&t[i]===ft))return i;return null}function I(t,e=0){return bn({str:t,idx:e,stopAtNewlines:!1,stopAtRawNbsp:!1})}var gt={allowCustomTagNames:!1,skipOpeningBracket:!1},ht="\\",pt=["a","abbr","acronym","address","applet","area","article","aside","audio","b","base","basefont","bdi","bdo","big","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","dir","div","dl","doctype","dt","em","embed","fieldset","figcaption","figure","font","footer","form","frame","frameset","h1","h1 - h6","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noframes","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strike","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","tt","u","ul","var","video","wbr","xml"];function $e(t){return t===void 0||t.toUpperCase()===t.toLowerCase()&&!/\d/.test(t)&&t!=="="}function V(t,e){return t[e]==="<"||t[I(t,e)]==="<"}var _e="3.0.10";var wn=_e;function $n(t,e=0,r){if(typeof t!="string")throw new Error(`is-html-tag-opening: [THROW_ID_01] the first input argument should have been a string but it was given as "${typeof t}", value being ${JSON.stringify(t,null,4)}`);if(!Number.isInteger(e)||e<0)throw new Error(`is-html-tag-opening: [THROW_ID_02] the second input argument should have been a natural number string index but it was given as "${typeof e}", value being ${JSON.stringify(e,null,4)}`);let n=v(v({},gt),r),i="[\\\\ \\t\\r\\n/]*",o="._a-z0-9\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\uFFFF",u=new RegExp(`^<${n.skipOpeningBracket?"?":""}${i}\\w+${i}\\/?${i}>`,"g"),s=new RegExp(`^<${n.skipOpeningBracket?"?":""}${i}[${o}]+[-${o}]*${i}>`,"g"),f=new RegExp(`^<${n.skipOpeningBracket?"?":""}\\s*\\w+\\s+\\w+(?:-\\w+)?\\s*=\\s*['"\\w]`,"g"),d=new RegExp(`^<${n.skipOpeningBracket?"?":""}\\s*\\w+\\s+[${o}]+[-${o}]*(?:-\\w+)?\\s*=\\s*['"\\w]`),h=new RegExp(`^<${n.skipOpeningBracket?"?":""}\\s*\\/?\\s*\\w+\\s*\\/?\\s*>`,"g"),g=new RegExp(`^<${n.skipOpeningBracket?"?":""}\\s*\\/?\\s*[${o}]+[-${o}]*\\s*\\/?\\s*>`,"g"),m=new RegExp(`^<${n.skipOpeningBracket?"?":""}${i}\\w+(?:\\s*\\w+)?\\s*\\w+=['"]`,"g"),b=new RegExp(`^<${n.skipOpeningBracket?"?":""}${i}[${o}]+[-${o}]*\\s+(?:\\s*\\w+)?\\s*\\w+=['"]`,"g"),a=new RegExp(`^<${n.skipOpeningBracket?"?\\/?":""}(${i}[${o}]+)+${i}[\\\\/=>]`,""),y=new RegExp("^\\/\\s*\\w+s*>"),l=e?t.slice(e):t,p=I(t,e),_=!1,w=!1,H={cb:$e,i:!0,trimCharsBeforeMatching:["/",ht,"!"," "," ",`
17
+ `,"\r"]};return n.allowCustomTagNames?((n.skipOpeningBracket&&(t[e-1]==="<"||t[e-1]==="/"&&t[I(t,p)]==="<")||l[0]==="<"&&l[1]&&l[1].trim())&&(a.test(l)||/^<\w+$/.test(l))||s.test(l)&&V(t,e)||d.test(l)||g.test(l)&&V(t,e)||b.test(l)||t[e]==="/"&&t[p]!=="<"&&y.test(l))&&(w=!0):(((n.skipOpeningBracket&&(t[e-1]==="<"||t[e-1]==="/"&&t[I(t,p)]==="<")||(l[0]==="<"||l[0]==="/"&&(!t[p]||t[p]!=="<"))&&l[1]&&l[1].trim())&&a.test(l)||u.test(l)&&V(t,e)||f.test(l)||h.test(l)&&V(t,e)||m.test(l))&&(_=!0),_&&Et(t,e,pt,{cb:$=>$===void 0?((t[e]==="<"&&t[e+1]&&t[e+1].trim()||t[e-1]==="<")&&(w=!0),!0):$.toUpperCase()===$.toLowerCase()&&!/\d/.test($)&&$!=="=",i:!0,trimCharsBeforeMatching:["<","/",ht,"!"," "," ",`
18
+ `,"\r"]})&&(w=!0)),!w&&t[e]==="<"&&t[e+1]&&t[e+1].trim()&&Mt(t,e,pt,H)&&(w=!0),typeof t=="string"&&e<t.length&&w}return Te(_n);})();
11
19
  /**
12
20
  * @name arrayiffy-if-string
13
21
  * @fileoverview Put non-empty strings into arrays, turn empty-ones into empty arrays. Bypass everything else.
14
- * @version 4.0.7
22
+ * @version 4.0.10
15
23
  * @author Roy Revelt, Codsen Ltd
16
24
  * @license MIT
17
25
  * {@link https://codsen.com/os/arrayiffy-if-string/}
18
26
  */
27
+ /**
28
+ * @name string-left-right
29
+ * @fileoverview Looks up the first non-whitespace character to the left/right of a given index
30
+ * @version 5.0.10
31
+ * @author Roy Revelt, Codsen Ltd
32
+ * @license MIT
33
+ * {@link https://codsen.com/os/string-left-right/}
34
+ */
19
35
  /**
20
36
  * @name string-match-left-right
21
37
  * @fileoverview Match substrings on the left or right of a given index, ignoring whitespace
22
- * @version 8.0.7
38
+ * @version 8.0.10
23
39
  * @author Roy Revelt, Codsen Ltd
24
40
  * @license MIT
25
41
  * {@link https://codsen.com/os/string-match-left-right/}
26
42
  */
27
- function e(t){return t&&"object"==typeof t&&!Array.isArray(t)}function r(t){return"string"==typeof t}const n={cb:void 0,i:!1,trimBeforeMatching:!1,trimCharsBeforeMatching:[],maxMismatches:0,firstMustMatch:!1,lastMustMatch:!1,hungry:!1},i=t=>t+1;function o(t,e,r,o,a=!1,s=i){const c="function"==typeof r?r():r;if(+e<0&&a&&"EOL"===c)return c;const u={...n,...o};if(e>=t.length&&!a)return!1;let f=a?1:r.length,l=0,h=!1,p=!1,g=!1,y=u.maxMismatches,m=e,d=!1,b=!1,_=!1;function v(){return 1===l&&y<u.maxMismatches-1}for(;t[m];){const e=s(m);if(u.trimBeforeMatching&&""===t[m].trim()){if(!t[e]&&a&&"EOL"===r)return!0;m=s(m);continue}if(u&&!u.i&&u.trimCharsBeforeMatching&&u.trimCharsBeforeMatching.includes(t[m])||u&&u.i&&u.trimCharsBeforeMatching&&u.trimCharsBeforeMatching.map((t=>t.toLowerCase())).includes(t[m].toLowerCase())){if(a&&"EOL"===r&&!t[e])return!0;m=s(m);continue}const n=e>m?r[r.length-f]:r[f-1];if(!u.i&&t[m]===n||u.i&&t[m].toLowerCase()===n.toLowerCase()){if(d||(d=!0),g||(g=!0),f===r.length){if(b=!0,y!==u.maxMismatches)return!1}else 1===f&&(_=!0);if(f-=1,l++,v())return!1;if(!f)return(l!==r.length||y===u.maxMismatches||!h)&&m}else{if(h||l||(h=!0),!(u.maxMismatches&&y&&m))return!(0!==m||1!==f||u.lastMustMatch||!g)&&0;y-=1;for(let n=0;n<=y;n++){const i=e>m?r[r.length-f+1+n]:r[f-2-n],o=t[s(m)];if(i&&(!u.i&&t[m]===i||u.i&&t[m].toLowerCase()===i.toLowerCase())&&(!u.firstMustMatch||f!==r.length)){if(l++,v())return!1;f-=2,d=!0;break}if(o&&i&&(!u.i&&o===i||u.i&&o.toLowerCase()===i.toLowerCase())&&(!u.firstMustMatch||f!==r.length)){if(!l&&!u.hungry)return!1;f-=1,d=!0;break}if(void 0===i&&y>=0&&d&&(!u.firstMustMatch||b)&&(!u.lastMustMatch||_))return m}d||(p=m)}if(!1!==p&&p!==m&&(p=!1),f<1)return m;m=s(m)}return f>0?!(!a||"EOL"!==c)||!!(u&&u.maxMismatches>=f&&g)&&(p||0):void 0}function a(t,i,a,s,c){if(e(c)&&Object.prototype.hasOwnProperty.call(c,"trimBeforeMatching")&&"boolean"!=typeof c.trimBeforeMatching)throw new Error(`string-match-left-right/${t}(): [THROW_ID_09] opts.trimBeforeMatching should be boolean!${Array.isArray(c.trimBeforeMatching)?" Did you mean to use opts.trimCharsBeforeMatching?":""}`);const u={...n,...c};var f;if("string"==typeof u.trimCharsBeforeMatching&&(u.trimCharsBeforeMatching="string"==typeof(f=u.trimCharsBeforeMatching)?f.length?[f]:[]:f),u.trimCharsBeforeMatching=u.trimCharsBeforeMatching.map((t=>r(t)?t:String(t))),!r(i))return!1;if(!i.length)return!1;if(!Number.isInteger(a)||a<0)throw new Error(`string-match-left-right/${t}(): [THROW_ID_03] the second argument should be a natural number. Currently it's of a type: ${typeof a}, equal to:\n${JSON.stringify(a,null,4)}`);let l,h;if(r(s))l=[s];else if(Array.isArray(s))l=s;else if(s){if("function"!=typeof s)throw new Error(`string-match-left-right/${t}(): [THROW_ID_05] the third argument, whatToMatch, is neither string nor array of strings! It's ${typeof s}, equal to:\n${JSON.stringify(s,null,4)}`);l=[],l.push(s)}else l=s;if(c&&!e(c))throw new Error(`string-match-left-right/${t}(): [THROW_ID_06] the fourth argument, options object, should be a plain object. Currently it's of a type "${typeof c}", and equal to:\n${JSON.stringify(c,null,4)}`);let p=0,g="";if(u&&u.trimCharsBeforeMatching&&u.trimCharsBeforeMatching.some(((t,e)=>t.length>1&&(p=e,g=t,!0))))throw new Error(`string-match-left-right/${t}(): [THROW_ID_07] the fourth argument, options object contains trimCharsBeforeMatching. It was meant to list the single characters but one of the entries at index ${p} is longer than 1 character, ${g.length} (equals to ${g}). Please split it into separate characters and put into array as separate elements.`);if(!l||!Array.isArray(l)||Array.isArray(l)&&!l.length||Array.isArray(l)&&1===l.length&&r(l[0])&&!l[0].trim()){if("function"==typeof u.cb){let e,r=a;if("matchLeftIncl"!==t&&"matchRight"!==t||(r+=1),"L"===t[5])for(let t=r;t--;){const r=i[t];if((!u.trimBeforeMatching||u.trimBeforeMatching&&void 0!==r&&r.trim())&&(!u.trimCharsBeforeMatching||!u.trimCharsBeforeMatching.length||void 0!==r&&!u.trimCharsBeforeMatching.includes(r))){e=t;break}}else if(t.startsWith("matchRight"))for(let t=r;t<i.length;t++){const r=i[t];if((!u.trimBeforeMatching||u.trimBeforeMatching&&r.trim())&&(!u.trimCharsBeforeMatching||!u.trimCharsBeforeMatching.length||!u.trimCharsBeforeMatching.includes(r))){e=t;break}}if(void 0===e)return!1;const n=i[e],o=e+1;let s="";return o&&o>0&&(s=i.slice(0,o)),"L"===t[5]?u.cb(n,s,e):(e&&e>0&&(s=i.slice(e)),u.cb(n,s,e))}let e="";throw c||(e=" More so, the whole options object, the fourth input argument, is missing!"),new Error(`string-match-left-right/${t}(): [THROW_ID_08] the third argument, "whatToMatch", was given as an empty string. This means, you intend to match purely by a callback. The callback was not set though, the opts key "cb" is not set!${e}`)}for(let e=0,r=l.length;e<r;e++){h="function"==typeof l[e];const r=l[e];let n,s,c="",f=a;"matchRight"===t?f+=1:"matchLeft"===t&&(f-=1);const p=o(i,f,r,u,h,(e=>"L"===t[5]?e-1:e+1));if(p&&h&&"function"==typeof r&&"EOL"===r())return!(!r()||u.cb&&!u.cb(n,c,s))&&r();if(Number.isInteger(p)&&(s=t.startsWith("matchLeft")?p-1:p+1,c="L"===t[5]?i.slice(0,p):i.slice(s)),s<0&&(s=void 0),i[s]&&(n=i[s]),Number.isInteger(p)&&(!u.cb||u.cb(n,c,s)))return r}return!1}var s="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};Function.prototype.toString.call(Object);var c={exports:{}};!function(t,e){var r="__lodash_hash_undefined__",n=9007199254740991,i="[object Arguments]",o="[object Boolean]",a="[object Date]",c="[object Function]",u="[object GeneratorFunction]",f="[object Map]",l="[object Number]",h="[object Object]",p="[object Promise]",g="[object RegExp]",y="[object Set]",m="[object String]",d="[object Symbol]",b="[object WeakMap]",_="[object ArrayBuffer]",v="[object DataView]",w="[object Float32Array]",M="[object Float64Array]",O="[object Int8Array]",j="[object Int16Array]",B="[object Int32Array]",$="[object Uint8Array]",k="[object Uint8ClampedArray]",C="[object Uint16Array]",x="[object Uint32Array]",A=/\w*$/,E=/^\[object .+?Constructor\]$/,R=/^(?:0|[1-9]\d*)$/,L={};L[i]=L["[object Array]"]=L[_]=L[v]=L[o]=L[a]=L[w]=L[M]=L[O]=L[j]=L[B]=L[f]=L[l]=L[h]=L[g]=L[y]=L[m]=L[d]=L[$]=L[k]=L[C]=L[x]=!0,L["[object Error]"]=L[c]=L[b]=!1;var I="object"==typeof self&&self&&self.Object===Object&&self,T="object"==typeof s&&s&&s.Object===Object&&s||I||Function("return this")(),S=e&&!e.nodeType&&e,N=S&&t&&!t.nodeType&&t,D=N&&N.exports===S;function W(t,e){return t.set(e[0],e[1]),t}function P(t,e){return t.add(e),t}function H(t,e,r,n){var i=-1,o=t?t.length:0;for(n&&o&&(r=t[++i]);++i<o;)r=e(r,t[i],i,t);return r}function F(t){var e=!1;if(null!=t&&"function"!=typeof t.toString)try{e=!!(t+"")}catch(t){}return e}function U(t){var e=-1,r=Array(t.size);return t.forEach((function(t,n){r[++e]=[n,t]})),r}function q(t,e){return function(r){return t(e(r))}}function J(t){var e=-1,r=Array(t.size);return t.forEach((function(t){r[++e]=t})),r}var z,V=Array.prototype,G=Function.prototype,K=Object.prototype,Q=T["__core-js_shared__"],X=(z=/[^.]+$/.exec(Q&&Q.keys&&Q.keys.IE_PROTO||""))?"Symbol(src)_1."+z:"",Y=G.toString,Z=K.hasOwnProperty,tt=K.toString,et=RegExp("^"+Y.call(Z).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),rt=D?T.Buffer:void 0,nt=T.Symbol,it=T.Uint8Array,ot=q(Object.getPrototypeOf,Object),at=Object.create,st=K.propertyIsEnumerable,ct=V.splice,ut=Object.getOwnPropertySymbols,ft=rt?rt.isBuffer:void 0,lt=q(Object.keys,Object),ht=Nt(T,"DataView"),pt=Nt(T,"Map"),gt=Nt(T,"Promise"),yt=Nt(T,"Set"),mt=Nt(T,"WeakMap"),dt=Nt(Object,"create"),bt=Ft(ht),_t=Ft(pt),vt=Ft(gt),wt=Ft(yt),Mt=Ft(mt),Ot=nt?nt.prototype:void 0,jt=Ot?Ot.valueOf:void 0;function Bt(t){var e=-1,r=t?t.length:0;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}function $t(t){var e=-1,r=t?t.length:0;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}function kt(t){var e=-1,r=t?t.length:0;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}function Ct(t){this.__data__=new $t(t)}function xt(t,e){var r=qt(t)||function(t){return function(t){return function(t){return!!t&&"object"==typeof t}(t)&&Jt(t)}(t)&&Z.call(t,"callee")&&(!st.call(t,"callee")||tt.call(t)==i)}(t)?function(t,e){for(var r=-1,n=Array(t);++r<t;)n[r]=e(r);return n}(t.length,String):[],n=r.length,o=!!n;for(var a in t)!e&&!Z.call(t,a)||o&&("length"==a||Pt(a,n))||r.push(a);return r}function At(t,e,r){var n=t[e];Z.call(t,e)&&Ut(n,r)&&(void 0!==r||e in t)||(t[e]=r)}function Et(t,e){for(var r=t.length;r--;)if(Ut(t[r][0],e))return r;return-1}function Rt(t,e,r,n,s,p,b){var E;if(n&&(E=p?n(t,s,p,b):n(t)),void 0!==E)return E;if(!Gt(t))return t;var R=qt(t);if(R){if(E=function(t){var e=t.length,r=t.constructor(e);e&&"string"==typeof t[0]&&Z.call(t,"index")&&(r.index=t.index,r.input=t.input);return r}(t),!e)return function(t,e){var r=-1,n=t.length;e||(e=Array(n));for(;++r<n;)e[r]=t[r];return e}(t,E)}else{var I=Wt(t),T=I==c||I==u;if(zt(t))return function(t,e){if(e)return t.slice();var r=new t.constructor(t.length);return t.copy(r),r}(t,e);if(I==h||I==i||T&&!p){if(F(t))return p?t:{};if(E=function(t){return"function"!=typeof t.constructor||Ht(t)?{}:(e=ot(t),Gt(e)?at(e):{});var e}(T?{}:t),!e)return function(t,e){return Tt(t,Dt(t),e)}(t,function(t,e){return t&&Tt(e,Kt(e),t)}(E,t))}else{if(!L[I])return p?t:{};E=function(t,e,r,n){var i=t.constructor;switch(e){case _:return It(t);case o:case a:return new i(+t);case v:return function(t,e){var r=e?It(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}(t,n);case w:case M:case O:case j:case B:case $:case k:case C:case x:return function(t,e){var r=e?It(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}(t,n);case f:return function(t,e,r){return H(e?r(U(t),!0):U(t),W,new t.constructor)}(t,n,r);case l:case m:return new i(t);case g:return function(t){var e=new t.constructor(t.source,A.exec(t));return e.lastIndex=t.lastIndex,e}(t);case y:return function(t,e,r){return H(e?r(J(t),!0):J(t),P,new t.constructor)}(t,n,r);case d:return s=t,jt?Object(jt.call(s)):{}}var s}(t,I,Rt,e)}}b||(b=new Ct);var S=b.get(t);if(S)return S;if(b.set(t,E),!R)var N=r?function(t){return function(t,e,r){var n=e(t);return qt(t)?n:function(t,e){for(var r=-1,n=e.length,i=t.length;++r<n;)t[i+r]=e[r];return t}(n,r(t))}(t,Kt,Dt)}(t):Kt(t);return function(t,e){for(var r=-1,n=t?t.length:0;++r<n&&!1!==e(t[r],r,t););}(N||t,(function(i,o){N&&(i=t[o=i]),At(E,o,Rt(i,e,r,n,o,t,b))})),E}function Lt(t){return!(!Gt(t)||(e=t,X&&X in e))&&(Vt(t)||F(t)?et:E).test(Ft(t));var e}function It(t){var e=new t.constructor(t.byteLength);return new it(e).set(new it(t)),e}function Tt(t,e,r,n){r||(r={});for(var i=-1,o=e.length;++i<o;){var a=e[i],s=n?n(r[a],t[a],a,r,t):void 0;At(r,a,void 0===s?t[a]:s)}return r}function St(t,e){var r,n,i=t.__data__;return("string"==(n=typeof(r=e))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==r:null===r)?i["string"==typeof e?"string":"hash"]:i.map}function Nt(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Lt(r)?r:void 0}Bt.prototype.clear=function(){this.__data__=dt?dt(null):{}},Bt.prototype.delete=function(t){return this.has(t)&&delete this.__data__[t]},Bt.prototype.get=function(t){var e=this.__data__;if(dt){var n=e[t];return n===r?void 0:n}return Z.call(e,t)?e[t]:void 0},Bt.prototype.has=function(t){var e=this.__data__;return dt?void 0!==e[t]:Z.call(e,t)},Bt.prototype.set=function(t,e){return this.__data__[t]=dt&&void 0===e?r:e,this},$t.prototype.clear=function(){this.__data__=[]},$t.prototype.delete=function(t){var e=this.__data__,r=Et(e,t);return!(r<0)&&(r==e.length-1?e.pop():ct.call(e,r,1),!0)},$t.prototype.get=function(t){var e=this.__data__,r=Et(e,t);return r<0?void 0:e[r][1]},$t.prototype.has=function(t){return Et(this.__data__,t)>-1},$t.prototype.set=function(t,e){var r=this.__data__,n=Et(r,t);return n<0?r.push([t,e]):r[n][1]=e,this},kt.prototype.clear=function(){this.__data__={hash:new Bt,map:new(pt||$t),string:new Bt}},kt.prototype.delete=function(t){return St(this,t).delete(t)},kt.prototype.get=function(t){return St(this,t).get(t)},kt.prototype.has=function(t){return St(this,t).has(t)},kt.prototype.set=function(t,e){return St(this,t).set(t,e),this},Ct.prototype.clear=function(){this.__data__=new $t},Ct.prototype.delete=function(t){return this.__data__.delete(t)},Ct.prototype.get=function(t){return this.__data__.get(t)},Ct.prototype.has=function(t){return this.__data__.has(t)},Ct.prototype.set=function(t,e){var r=this.__data__;if(r instanceof $t){var n=r.__data__;if(!pt||n.length<199)return n.push([t,e]),this;r=this.__data__=new kt(n)}return r.set(t,e),this};var Dt=ut?q(ut,Object):function(){return[]},Wt=function(t){return tt.call(t)};function Pt(t,e){return!!(e=null==e?n:e)&&("number"==typeof t||R.test(t))&&t>-1&&t%1==0&&t<e}function Ht(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||K)}function Ft(t){if(null!=t){try{return Y.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function Ut(t,e){return t===e||t!=t&&e!=e}(ht&&Wt(new ht(new ArrayBuffer(1)))!=v||pt&&Wt(new pt)!=f||gt&&Wt(gt.resolve())!=p||yt&&Wt(new yt)!=y||mt&&Wt(new mt)!=b)&&(Wt=function(t){var e=tt.call(t),r=e==h?t.constructor:void 0,n=r?Ft(r):void 0;if(n)switch(n){case bt:return v;case _t:return f;case vt:return p;case wt:return y;case Mt:return b}return e});var qt=Array.isArray;function Jt(t){return null!=t&&function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=n}(t.length)&&!Vt(t)}var zt=ft||function(){return!1};function Vt(t){var e=Gt(t)?tt.call(t):"";return e==c||e==u}function Gt(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function Kt(t){return Jt(t)?xt(t):function(t){if(!Ht(t))return lt(t);var e=[];for(var r in Object(t))Z.call(t,r)&&"constructor"!=r&&e.push(r);return e}(t)}t.exports=function(t){return Rt(t,!0,!0)}}(c,c.exports);function u(t,e=0){return function({str:t,idx:e,stopAtNewlines:r,stopAtRawNbsp:n}){if("string"!=typeof t||!t.length)return null;if(e&&"number"==typeof e||(e=0),e<1)return null;if(t[~-e]&&(t[~-e].trim()||r&&"\n\r".includes(t[~-e])||n&&" "===t[~-e]))return~-e;if(t[e-2]&&(t[e-2].trim()||r&&"\n\r".includes(t[e-2])||n&&" "===t[e-2]))return e-2;for(let i=e;i--;)if(t[i]&&(t[i].trim()||r&&"\n\r".includes(t[i])||n&&" "===t[i]))return i;return null}({str:t,idx:e,stopAtNewlines:!1,stopAtRawNbsp:!1})}const f={allowCustomTagNames:!1,skipOpeningBracket:!1},l=["a","abbr","acronym","address","applet","area","article","aside","audio","b","base","basefont","bdi","bdo","big","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","dir","div","dl","doctype","dt","em","embed","fieldset","figcaption","figure","font","footer","form","frame","frameset","h1","h1 - h6","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noframes","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strike","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","tt","u","ul","var","video","wbr","xml"];function h(t){return void 0===t||t.toUpperCase()===t.toLowerCase()&&!/\d/.test(t)&&"="!==t}function p(t,e){return"<"===t[e]||"<"===t[u(t,e)]}t.defaults=f,t.isOpening=function(t,e=0,r){if("string"!=typeof t)throw new Error(`is-html-tag-opening: [THROW_ID_01] the first input argument should have been a string but it was given as "${typeof t}", value being ${JSON.stringify(t,null,4)}`);if(!Number.isInteger(e)||e<0)throw new Error(`is-html-tag-opening: [THROW_ID_02] the second input argument should have been a natural number string index but it was given as "${typeof e}", value being ${JSON.stringify(e,null,4)}`);const n={...f,...r},i="._a-z0-9·À-ÖØ-öø-ͽͿ-῿‌-‍‿-⁀⁰-￿",o=new RegExp(`^<${n.skipOpeningBracket?"?":""}[\\\\ \\t\\r\\n/]*\\w+[\\\\ \\t\\r\\n/]*\\/?[\\\\ \\t\\r\\n/]*>`,"g"),s=new RegExp(`^<${n.skipOpeningBracket?"?":""}[\\\\ \\t\\r\\n/]*[${i}]+[-${i}]*[\\\\ \\t\\r\\n/]*>`,"g"),c=new RegExp(`^<${n.skipOpeningBracket?"?":""}\\s*\\w+\\s+\\w+(?:-\\w+)?\\s*=\\s*['"\\w]`,"g"),g=new RegExp(`^<${n.skipOpeningBracket?"?":""}\\s*\\w+\\s+[${i}]+[-${i}]*(?:-\\w+)?\\s*=\\s*['"\\w]`),y=new RegExp(`^<${n.skipOpeningBracket?"?":""}\\s*\\/?\\s*\\w+\\s*\\/?\\s*>`,"g"),m=new RegExp(`^<${n.skipOpeningBracket?"?":""}\\s*\\/?\\s*[${i}]+[-${i}]*\\s*\\/?\\s*>`,"g"),d=new RegExp(`^<${n.skipOpeningBracket?"?":""}[\\\\ \\t\\r\\n/]*\\w+(?:\\s*\\w+)?\\s*\\w+=['"]`,"g"),b=new RegExp(`^<${n.skipOpeningBracket?"?":""}[\\\\ \\t\\r\\n/]*[${i}]+[-${i}]*\\s+(?:\\s*\\w+)?\\s*\\w+=['"]`,"g"),_=new RegExp(`^<${n.skipOpeningBracket?"?\\/?":""}([\\\\ \\t\\r\\n/]*[${i}]+)+[\\\\ \\t\\r\\n/]*[\\\\/=>]`,""),v=new RegExp("^\\/\\s*\\w+s*>"),w=e?t.slice(e):t,M=u(t,e);let O=!1,j=!1;const B={cb:h,i:!0,trimCharsBeforeMatching:["/","\\","!"," ","\t","\n","\r"]};return n.allowCustomTagNames?((n.skipOpeningBracket&&("<"===t[e-1]||"/"===t[e-1]&&"<"===t[u(t,M)])||"<"===w[0]&&w[1]&&w[1].trim())&&(_.test(w)||/^<\w+$/.test(w))||s.test(w)&&p(t,e)||g.test(w)||m.test(w)&&p(t,e)||b.test(w)||"/"===t[e]&&"<"!==t[M]&&v.test(w))&&(j=!0):(((n.skipOpeningBracket&&("<"===t[e-1]||"/"===t[e-1]&&"<"===t[u(t,M)])||("<"===w[0]||"/"===w[0]&&(!t[M]||"<"!==t[M]))&&w[1]&&w[1].trim())&&_.test(w)||o.test(w)&&p(t,e)||c.test(w)||y.test(w)&&p(t,e)||d.test(w))&&(O=!0),O&&function(t,e,r,n){return a("matchRightIncl",t,e,r,n)}(t,e,l,{cb:r=>void 0===r?(("<"===t[e]&&t[e+1]&&t[e+1].trim()||"<"===t[e-1])&&(j=!0),!0):r.toUpperCase()===r.toLowerCase()&&!/\d/.test(r)&&"="!==r,i:!0,trimCharsBeforeMatching:["<","/","\\","!"," ","\t","\n","\r"]})&&(j=!0)),!j&&"<"===t[e]&&t[e+1]&&t[e+1].trim()&&function(t,e,r,n){return a("matchRight",t,e,r,n)}(t,e,l,B)&&(j=!0),"string"==typeof t&&e<t.length&&j},t.version="3.0.7",Object.defineProperty(t,"__esModule",{value:!0})}));
@@ -1,6 +1,7 @@
1
1
  // Quick Take
2
2
 
3
3
  import { strict as assert } from "assert";
4
+
4
5
  import { isOpening } from "../dist/is-html-tag-opening.esm.js";
5
6
 
6
7
  const text = `<span>a < b<span>`;
@@ -1,6 +1,7 @@
1
1
  // `opts.allowCustomTagNames`
2
2
 
3
3
  import { strict as assert } from "assert";
4
+
4
5
  import { isOpening } from "../dist/is-html-tag-opening.esm.js";
5
6
 
6
7
  // recognised tag
@@ -1,6 +1,7 @@
1
1
  // `opts.skipOpeningBracket`
2
2
 
3
3
  import { strict as assert } from "assert";
4
+
4
5
  import { isOpening } from "../dist/is-html-tag-opening.esm.js";
5
6
 
6
7
  // missing opening bracket:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "is-html-tag-opening",
3
- "version": "3.0.7",
3
+ "version": "3.0.10",
4
4
  "description": "Does an HTML tag start at given position?",
5
5
  "keywords": [
6
6
  "bracket",
@@ -36,94 +36,41 @@
36
36
  },
37
37
  "types": "types/index.d.ts",
38
38
  "scripts": {
39
- "build": "rollup -c",
40
- "build:esbuild": "node '../../scripts/esbuild.js'",
41
- "build:esbuild:dev": "cross-env MODE=dev node '../../scripts/esbuild.js'",
42
- "ci_test": "npm run build && npm run format && tap --no-only --reporter=silent",
43
- "clean_types": "../../scripts/cleanTypes.js",
44
- "dev": "rollup -c --dev",
45
- "devunittest": "npm run dev && tap --only -R 'base'",
46
- "format": "npm run lect && npm run prettier && npm run lint",
47
- "lect": "lect",
48
- "lint": "../../node_modules/eslint/bin/eslint.js . --ext .js --ext .ts --fix --config \"../../.eslintrc.json\" --quiet",
49
- "perf": "node perf/check",
50
- "prettier": "../../node_modules/prettier/bin-prettier.js '*.{js,css,scss,vue,md,ts}' --write --loglevel silent",
51
- "republish": "npm publish || :",
52
- "tap": "tap",
53
- "pretest": "npm run build",
54
- "test": "npm run test:ci && npm run perf",
55
- "test:ci": "npm run unittest && npm run test:examples && npm run format",
56
- "test:examples": "../../scripts/test-examples.js && npm run lect && npm run prettier",
57
- "tsc": "tsc",
58
- "unittest": "tap --no-only --reporter=terse && tsc -p tsconfig.json --noEmit"
39
+ "build": "node '../../ops/scripts/esbuild.js' && yarn run dts",
40
+ "dev": "DEV=true node '../../ops/scripts/esbuild.js' && yarn run dts",
41
+ "dts": "rollup -c",
42
+ "examples": "node '../../ops/scripts/run-examples.js'",
43
+ "lect": "node '../../ops/lect/lect.js'",
44
+ "letspublish": "yarn publish || :",
45
+ "lint": "eslint . --fix",
46
+ "perf": "node perf/check.js",
47
+ "prepare": "echo 'ready'",
48
+ "pretest": "yarn run lect && yarn run build",
49
+ "test": "c8 yarn run unit && yarn run examples && yarn run lint",
50
+ "unit": "uvu test"
59
51
  },
60
- "tap": {
61
- "check-coverage": false,
62
- "node-arg": [
63
- "--no-warnings",
64
- "--experimental-loader",
65
- "@istanbuljs/esm-loader-hook"
52
+ "engines": {
53
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
54
+ },
55
+ "c8": {
56
+ "check-coverage": true,
57
+ "exclude": [
58
+ "**/test/**/*.*"
66
59
  ],
67
- "timeout": 0
60
+ "lines": 100
68
61
  },
69
62
  "lect": {
70
63
  "licence": {
71
64
  "extras": [
72
65
  ""
73
66
  ]
74
- },
75
- "req": "{ isOpening }",
76
- "various": {
77
- "devDependencies": [
78
- "test-mixer"
79
- ]
80
67
  }
81
68
  },
82
69
  "dependencies": {
83
- "@babel/runtime": "^7.16.3",
84
- "string-left-right": "^5.0.7",
85
- "string-match-left-right": "^8.0.7"
70
+ "string-left-right": "^5.0.10",
71
+ "string-match-left-right": "^8.0.10"
86
72
  },
87
73
  "devDependencies": {
88
- "@babel/cli": "^7.16.0",
89
- "@babel/core": "^7.16.0",
90
- "@babel/node": "^7.16.0",
91
- "@babel/plugin-external-helpers": "^7.16.0",
92
- "@babel/plugin-proposal-class-properties": "^7.16.0",
93
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0",
94
- "@babel/plugin-proposal-object-rest-spread": "^7.16.0",
95
- "@babel/plugin-proposal-optional-chaining": "^7.16.0",
96
- "@babel/plugin-transform-runtime": "^7.16.4",
97
- "@babel/preset-env": "^7.16.4",
98
- "@babel/preset-typescript": "^7.16.0",
99
- "@babel/register": "^7.16.0",
100
- "@istanbuljs/esm-loader-hook": "^0.1.2",
101
- "@rollup/plugin-babel": "^5.3.0",
102
- "@rollup/plugin-commonjs": "^21.0.1",
103
- "@rollup/plugin-json": "^4.1.0",
104
- "@rollup/plugin-node-resolve": "^13.0.6",
105
- "@rollup/plugin-strip": "^2.1.0",
106
- "@rollup/plugin-typescript": "^8.3.0",
107
- "@types/node": "^16.11.10",
108
- "@types/tap": "^15.0.5",
109
- "@typescript-eslint/eslint-plugin": "^5.5.0",
110
- "@typescript-eslint/parser": "^5.5.0",
111
- "core-js": "^3.19.2",
112
- "cross-env": "^7.0.3",
113
- "eslint": "^8.3.0",
114
- "lect": "^0.18.7",
115
- "rollup": "^2.60.1",
116
- "rollup-plugin-ascii": "^0.0.3",
117
- "rollup-plugin-banner": "^0.2.1",
118
- "rollup-plugin-cleanup": "^3.2.1",
119
- "rollup-plugin-dts": "^4.0.1",
120
- "rollup-plugin-terser": "^7.0.2",
121
- "tap": "^15.1.5",
122
- "test-mixer": "^3.0.7",
123
- "tslib": "^2.3.1",
124
- "typescript": "^4.5.2"
125
- },
126
- "engines": {
127
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
74
+ "test-mixer": "^3.0.10"
128
75
  }
129
76
  }
File without changes
package/types/index.d.ts CHANGED
File without changes
File without changes
package/types/util.d.ts CHANGED
File without changes
package/examples/api.json DELETED
@@ -1 +0,0 @@
1
- {"_quickTake.js":{"title":"Quick Take","content":"import &#x7B; strict as assert &#x7D; from \"assert\";\nimport &#x7B; isOpening &#x7D; from \"is-html-tag-opening\";\n\nconst text = `<span>a < b<span>`;\n\n// opening span tag's opening\nassert.equal(isOpening(text, 0), true);\n\n// unencoded bracket between a and b\nassert.equal(isOpening(text, 8), false);\n\n// closing span tag's opening\nassert.equal(isOpening(text, 11), true);"},"opts.allowCustomTagNames.js":{"title":"`opts.allowCustomTagNames`","content":"import &#x7B; strict as assert &#x7D; from \"assert\";\nimport &#x7B; isOpening &#x7D; from \"is-html-tag-opening\";\n\n// recognised tag\nassert.equal(isOpening(`abc <div>`, 4), true);\n// ^\n\n// unrecognised tag\nassert.equal(isOpening(`abc <zzz>`, 4), false);\n// ^\n\n// but with opts.allowCustomTagNames result is \"true\"\nassert.equal(\n isOpening(`abc <zzz>`, 4, &#x7B;\n allowCustomTagNames: true,\n &#x7D;),\n true\n);"},"opts.skipOpeningBracket.js":{"title":"`opts.skipOpeningBracket`","content":"import &#x7B; strict as assert &#x7D; from \"assert\";\nimport &#x7B; isOpening &#x7D; from \"is-html-tag-opening\";\n\n// missing opening bracket:\nassert.equal(isOpening(`<a>div class=\"w-64 h-3\">`, 3), false);\n// ^\n// result is instant \"false\" because `idx` has to be\n// on an opening bracket (besides checking for tag name\n// being present and recognised and attributes being present)\n\n// but with opts.skipOpeningBracket we remove the requirement\n// that \"idx\" has to be on a bracket - algorithm detects valid\n// tag name and the attribute that follows and recognise it's a\n// tag starting:\nassert.equal(\n isOpening(`<a>div class=\"w-64 h-3\">`, 3, &#x7B;\n skipOpeningBracket: true,\n &#x7D;),\n true\n);"}}