rapier-html 1.2.45 → 1.2.48

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.
Files changed (55) hide show
  1. package/BUILD.json +16 -16
  2. package/README.md +13 -12
  3. package/dist/ledger/LICENSE +12 -5
  4. package/dist/ledger/authored-origin.mjs +2 -2
  5. package/dist/ledger/authorship.mjs +5 -5
  6. package/dist/ledger/carried.mjs +21 -12
  7. package/dist/ledger/diff/concerns.mjs +3 -3
  8. package/dist/ledger/diff/diff.mjs +6 -6
  9. package/dist/ledger/diff/index.mjs +2 -2
  10. package/dist/ledger/diff/merge.mjs +3 -3
  11. package/dist/ledger/diff/moves.mjs +1 -1
  12. package/dist/ledger/diff/walk.mjs +1 -1
  13. package/dist/ledger/document-fonts.mjs +296 -0
  14. package/dist/ledger/document-settings.mjs +2 -2
  15. package/dist/ledger/format.mjs +14 -12
  16. package/dist/ledger/history.mjs +7 -7
  17. package/dist/ledger/inverse-source.mjs +5 -5
  18. package/dist/ledger/journal-records.mjs +3 -3
  19. package/dist/ledger/math/delimiters.mjs +38 -0
  20. package/dist/ledger/math/markdown-rules.mjs +103 -0
  21. package/dist/ledger/md-assets.mjs +3 -2
  22. package/dist/ledger/md-comments.mjs +384 -0
  23. package/dist/ledger/md-engine.mjs +157 -0
  24. package/dist/ledger/md-marks.mjs +10 -1
  25. package/dist/ledger/md-parser-config.mjs +463 -0
  26. package/dist/ledger/md-parser-runtime.mjs +23 -0
  27. package/dist/ledger/md-source.mjs +1 -1
  28. package/dist/ledger/source.mjs +31 -2
  29. package/dist/ledger/template-page.mjs +1 -1
  30. package/dist/ledger/transport.mjs +66 -7
  31. package/dist/ledger/vendor/NOTICE.txt +60 -0
  32. package/dist/ledger/vendor/SOURCES.json +253 -0
  33. package/dist/ledger/vendor/entities/decode-codepoint.mjs +27 -0
  34. package/dist/ledger/vendor/entities.mjs +499 -0
  35. package/dist/ledger/vendor/linkify-it.mjs +427 -0
  36. package/dist/ledger/vendor/markdown-it.mjs +4027 -0
  37. package/dist/ledger/vendor/markdown-licenses/entities-LICENSE.txt +11 -0
  38. package/dist/ledger/vendor/markdown-licenses/linkify-it-LICENSE.txt +22 -0
  39. package/dist/ledger/vendor/markdown-licenses/markdown-it-LICENSE.txt +22 -0
  40. package/dist/ledger/vendor/markdown-licenses/mdurl-LICENSE.txt +45 -0
  41. package/dist/ledger/vendor/markdown-licenses/punycode.js-LICENSE-MIT.txt +20 -0
  42. package/dist/ledger/vendor/markdown-licenses/uc.micro-LICENSE.txt +20 -0
  43. package/dist/ledger/vendor/markdown-plugins.mjs +1344 -0
  44. package/dist/ledger/vendor/markdown-runtime.mjs +5 -0
  45. package/dist/ledger/vendor/mdurl/index.mjs +11 -0
  46. package/dist/ledger/vendor/mdurl/lib/decode.mjs +107 -0
  47. package/dist/ledger/vendor/mdurl/lib/encode.mjs +77 -0
  48. package/dist/ledger/vendor/mdurl/lib/format.mjs +20 -0
  49. package/dist/ledger/vendor/mdurl/lib/parse.mjs +231 -0
  50. package/dist/ledger/vendor/punycode.mjs +282 -0
  51. package/dist/ledger/vendor/uc.micro.mjs +49 -0
  52. package/dist/page.mjs +11 -3
  53. package/dist/rapier.html +113 -75
  54. package/dist/wrap.mjs +10 -5
  55. package/package.json +1 -1
@@ -0,0 +1,427 @@
1
+ import { Any, Cc, P, Z } from "./uc.micro.mjs";
2
+ var REBuilder = class {
3
+ src_Any = Any.source;
4
+ src_Cc = Cc.source;
5
+ src_Z = Z.source;
6
+ src_P = P.source;
7
+ src_ZPCc = [
8
+ this.src_Z,
9
+ this.src_P,
10
+ this.src_Cc
11
+ ].join("|");
12
+ src_ZCc = [this.src_Z, this.src_Cc].join("|");
13
+ cache = {};
14
+ opts = {
15
+ maxLength: 1e4,
16
+ urlAuth: false,
17
+ schema_names: []
18
+ };
19
+ constructor(opts = {}) {
20
+ this.opts = {
21
+ ...this.opts,
22
+ ...opts
23
+ };
24
+ }
25
+ set(opts = {}) {
26
+ this.opts = {
27
+ ...this.opts,
28
+ ...opts
29
+ };
30
+ this.cache = {};
31
+ return this;
32
+ }
33
+ escapeRE(str) {
34
+ return str.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
35
+ }
36
+ nestedPairRE(open, close, depth = 4) {
37
+ const openRE = this.escapeRE(open);
38
+ const closeRE = this.escapeRE(close);
39
+ const atom = `(?:(?!${this.src_ZCc}|${openRE}|${closeRE}).)`;
40
+ let pair = `${openRE}${atom}{0,1000}${closeRE}`;
41
+ for (let level = 2; level <= depth; level++) pair = `${openRE}(?:${atom}|${pair}){0,1000}${closeRE}`;
42
+ return pair;
43
+ }
44
+ get_text_separators() {
45
+ return this.cache.text_separators ??= /[><\uff5c]/;
46
+ }
47
+ get_pseudo_letter() {
48
+ return this.cache.src_pseudo_letter ??= new RegExp(`(?:(?!${this.get_text_separators().source}|${this.src_ZPCc})${this.src_Any})`);
49
+ }
50
+ get_ipv4_addr() {
51
+ return this.cache.src_ip4 ??= /* @__PURE__ */ new RegExp("(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])[.]){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])");
52
+ }
53
+ get_ipv6_addr() {
54
+ const h16 = "[0-9A-Fa-f]{1,4}";
55
+ const ls32 = `(?:(?:${h16}:${h16})|${this.get_ipv4_addr().source})`;
56
+ return this.cache.src_ip6_addr ??= new RegExp(`(?:(?:${h16}:){6}${ls32}|::(?:${h16}:){5}${ls32}|(?:${h16})?::(?:${h16}:){4}${ls32}|(?:(?:${h16}:){0,1}${h16})?::(?:${h16}:){3}${ls32}|(?:(?:${h16}:){0,2}${h16})?::(?:${h16}:){2}${ls32}|(?:(?:${h16}:){0,3}${h16})?::${h16}:${ls32}|(?:(?:${h16}:){0,4}${h16})?::${ls32}|(?:(?:${h16}:){0,5}${h16})?::${h16}|(?:(?:${h16}:){0,6}${h16})?::)`);
57
+ }
58
+ get_ipv6_url_host() {
59
+ return this.cache.src_ip6_host ??= new RegExp(`\\[${this.get_ipv6_addr().source}\\]`);
60
+ }
61
+ get_ipv6_mail_host() {
62
+ return this.cache.src_ipv6_mail_host ??= new RegExp(`\\[IPv6:${this.get_ipv6_addr().source}\\]`);
63
+ }
64
+ get_auth() {
65
+ return this.cache.src_auth ??= new RegExp(`(?:(?:(?!${this.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`);
66
+ }
67
+ get_port() {
68
+ return this.cache.src_port ??= /* @__PURE__ */ new RegExp("(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?");
69
+ }
70
+ get_host_terminator() {
71
+ return this.cache.src_host_terminator ??= new RegExp(`(?=$|${this.get_text_separators().source}|${this.src_ZPCc})(?!${this.opts["---"] ? "-(?!--)|" : "-|"}_|:\\d|\\.-|\\.(?!$|${this.src_ZPCc}))`);
72
+ }
73
+ get_path_terminator() {
74
+ return this.cache.src_path_terminator ??= new RegExp(`${this.src_ZPCc}|${this.get_text_separators().source}`);
75
+ }
76
+ get_path() {
77
+ return this.cache.src_path ??= new RegExp(`(?:[/?#](?:${this.nestedPairRE("[", "]")}|${this.nestedPairRE("(", ")")}|${this.nestedPairRE("{", "}")}|\\"(?:(?!${this.src_ZCc}|["]).){1,100}\\"|\\'(?:(?!${this.src_ZCc}|[']).){1,100}\\'|\\'(?=${this.get_pseudo_letter().source}|[-])|\\.{2,20}[:]?[a-zA-Z0-9%/&]|\\.(?!${this.src_ZCc}|[.]|$)|` + (this.opts["---"] ? "\\-(?!--(?:[^-]|$))(?:-{0,19})|" : "\\-{1,20}|") + `,(?!${this.src_ZCc}|$)|;(?!${this.src_ZCc}|$)|\\!{1,20}(?!${this.src_ZCc}|[!]|$)|\\?(?!${this.src_ZCc}|[?]|$)|` + this.get_path_extra().source + `[\\\\/:%@#&=_~*]|(?!${this.get_path_terminator().source}).){1,${this.opts.maxLength}}|\\/)?`);
78
+ }
79
+ get_mail_name() {
80
+ return this.cache.src_mail_name ??= /* @__PURE__ */ new RegExp("[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9](?:[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9]|[.](?=[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9])){0,63}");
81
+ }
82
+ get_xn() {
83
+ return this.cache.src_xn ??= /* @__PURE__ */ new RegExp("xn--[a-z0-9\\-]{1,59}");
84
+ }
85
+ get_tld() {
86
+ if (this.cache.tld) return this.cache.tld;
87
+ const tlds_src = [...new Set(this.opts.tlds || [])].sort().reverse().join("|");
88
+ this.cache.tld = new RegExp(`${tlds_src || "$#none#$"}|${this.get_xn().source}`);
89
+ return this.cache.tld;
90
+ }
91
+ get_domain_root() {
92
+ return this.cache.src_domain_root ??= new RegExp("(?:" + this.get_xn().source + `|${this.get_pseudo_letter().source}{1,63})`);
93
+ }
94
+ get_domain() {
95
+ return this.cache.src_domain ??= new RegExp("(?:" + this.get_xn().source + `|(?:${this.get_pseudo_letter().source})|(?:${this.get_pseudo_letter().source}(?:-|${this.get_pseudo_letter().source}){0,61}${this.get_pseudo_letter().source}))`);
96
+ }
97
+ get_url_host_port() {
98
+ return this.cache.url_host_port ??= new RegExp("(?:" + this.get_ipv6_url_host().source + `|(?:(?:(?:${this.get_domain().source})\\.){0,10}${this.get_domain().source}))` + this.get_port().source + this.get_host_terminator().source);
99
+ }
100
+ get_fuzzy_url_host_port() {
101
+ return this.cache.fuzzy_url_host_port ??= new RegExp("(?:" + (this.opts.fuzzyIP ? this.get_ipv4_addr().source + "|" : "") + `(?:(?:(?:${this.get_domain().source})\\.){1,10}(?:${this.get_tld().source})))` + this.get_host_terminator().source);
102
+ }
103
+ get_mail_host() {
104
+ return this.cache.src_mail_host ??= new RegExp("(?:" + this.get_ipv6_mail_host().source + `|(?:(?:(?:${this.get_domain().source})\\.){0,4}${this.get_domain().source}))` + this.get_host_terminator().source);
105
+ }
106
+ get_fuzzy_mail_host() {
107
+ return this.cache.src_fuzzy_mail_host ??= new RegExp("(?:" + this.get_ipv6_mail_host().source + `|(?:(?:(?:${this.get_domain().source})[.]){1,4}${this.get_domain_root().source}))` + this.get_host_terminator().source);
108
+ }
109
+ get_path_extra() {
110
+ return this.cache.src_path_extra ??= /* @__PURE__ */ new RegExp("");
111
+ }
112
+ get_fuzzy_mail_host_search() {
113
+ return this.cache.mail_fuzzy_host_search ??= new RegExp(`@${this.get_fuzzy_mail_host().source}`, "ig");
114
+ }
115
+ get_fuzzy_link_search() {
116
+ return this.cache.link_fuzzy_search ??= new RegExp(`(^|(?![.:/\\-_@])(?:[$+<=>^\`|\uff5c]|${this.src_ZPCc}))(?:(?![$+<=>^\`|\uff5c])${this.get_fuzzy_url_host_port().source}${this.get_path().source})`, "ig");
117
+ }
118
+ get_http_validator() {
119
+ return this.cache.http_validator ??= new RegExp("\\/\\/" + (this.opts.urlAuth ? this.get_auth().source : "") + this.get_url_host_port().source + this.get_path().source, "iy");
120
+ }
121
+ get_relative_proto_validator() {
122
+ return this.cache.relative_proto_validator ??= new RegExp((this.opts.urlAuth ? this.get_auth().source : "") + `(?:localhost|${this.get_ipv6_url_host().source}|(?:(?:${this.get_domain().source})[.]){1,10}${this.get_domain_root().source})` + this.get_port().source + this.get_host_terminator().source + this.get_path().source, "iy");
123
+ }
124
+ get_mail_name_validator() {
125
+ return this.cache.mail_name_validator ??= new RegExp(`(?:^|${this.get_text_separators().source}|"|\\(|${this.src_ZCc})(${this.get_mail_name().source})$`);
126
+ }
127
+ get_mailto_validator() {
128
+ return this.cache.mailto_validator ??= new RegExp(`${this.get_mail_name().source}@${this.get_mail_host().source}`, "iy");
129
+ }
130
+ get_schema_names() {
131
+ return this.cache.schema_names ??= new RegExp((this.opts.schema_names || []).map((name) => this.escapeRE(name)).join("|"));
132
+ }
133
+ get_schema_search() {
134
+ return this.cache.schema_search ??= new RegExp(`(^|(?!_)(?:[><\uff5c]|${this.src_ZPCc}))(${this.get_schema_names().source})`, "ig");
135
+ }
136
+ get_schema_at_start() {
137
+ return this.cache.schema_at_start ??= new RegExp(`^${this.get_schema_search().source}`, "i");
138
+ }
139
+ };
140
+ var web_schema = {
141
+ validate: (text, pos, self) => {
142
+ const re = self.re.get_http_validator();
143
+ re.lastIndex = pos;
144
+ const m = re.exec(text);
145
+ return m ? m[0].length : 0;
146
+ },
147
+ normalize: (match, self) => self.normalize(match)
148
+ };
149
+ var defaultSchemas = {
150
+ "http:": web_schema,
151
+ "https:": web_schema,
152
+ "ftp:": web_schema,
153
+ "//": {
154
+ validate: function(text, pos, self) {
155
+ const re = self.re.get_relative_proto_validator();
156
+ re.lastIndex = pos;
157
+ const m = re.exec(text);
158
+ if (m) {
159
+ if (pos >= 3 && text[pos - 3] === ":") return 0;
160
+ if (pos >= 3 && text[pos - 3] === "/") return 0;
161
+ return m[0].length;
162
+ }
163
+ return 0;
164
+ },
165
+ normalize: (match, self) => self.normalize(match)
166
+ },
167
+ "mailto:": {
168
+ validate: function(text, pos, self) {
169
+ const re = self.re.get_mailto_validator();
170
+ re.lastIndex = pos;
171
+ const m = re.exec(text);
172
+ return m ? m[0].length : 0;
173
+ },
174
+ normalize: (match, self) => self.normalize(match)
175
+ }
176
+ };
177
+ var tlds_2ch = "a:cdefgilmnoqrstuwxz|b:abdefghijmnorstvwyz|c:acdfghiklmnoruvwxyz|d:ejkmoz|e:cegrstu|f:ijkmor|g:abdefghilmnpqrstuwy|h:kmnrtu|i:delmnoqrst|j:emop|k:eghimnprwyz|l:abcikrstuvy|m:acdeghklmnopqrstuvwxyz|n:acefgilopruz|o:m|p:aefghklmnrstwy|q:a|r:eosuw|s:abcdeghijklmnortuvxyz|t:cdfghjklmnortvwz|u:agksyz|v:aceginu|w:fs|y:et|z:amw";
178
+ var tlds_default = "biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";
179
+ function unpackTlds() {
180
+ const result = tlds_default.split("|");
181
+ tlds_2ch.split("|").forEach((item) => {
182
+ const sep = item.indexOf(":");
183
+ const prefix = item.slice(0, sep);
184
+ for (const suffix of item.slice(sep + 1)) result.push(prefix + suffix);
185
+ });
186
+ return result;
187
+ }
188
+ var defaultOptions = {
189
+ fuzzyLink: false,
190
+ fuzzyEmail: true,
191
+ fuzzyIP: false,
192
+ "---": false,
193
+ tlds: unpackTlds(),
194
+ urlAuth: false,
195
+ maxLength: 1e4
196
+ };
197
+ var Match = class {
198
+ schema;
199
+ index;
200
+ lastIndex;
201
+ raw;
202
+ text;
203
+ url;
204
+ constructor(text, schema, index, lastIndex) {
205
+ const raw = text.slice(index, lastIndex);
206
+ this.schema = schema.toLowerCase();
207
+ this.index = index;
208
+ this.lastIndex = lastIndex;
209
+ this.raw = raw;
210
+ this.text = raw;
211
+ this.url = raw;
212
+ }
213
+ };
214
+ var LinkifyIt = class {
215
+ __opts__;
216
+ __schemas__;
217
+ re;
218
+ constructor(options = {}) {
219
+ const { rebuilder, ...linkifyOptions } = options;
220
+ this.__opts__ = {
221
+ ...defaultOptions,
222
+ ...linkifyOptions
223
+ };
224
+ this.__schemas__ = { ...defaultSchemas };
225
+ this.re = rebuilder || new REBuilder();
226
+ this.re.set({
227
+ ...this.__opts__,
228
+ schema_names: Object.keys(this.__schemas__)
229
+ });
230
+ }
231
+ add(schema, definition = null) {
232
+ if (!definition) delete this.__schemas__[schema];
233
+ else {
234
+ const def = {
235
+ normalize: (match, self) => self.normalize(match),
236
+ ...definition
237
+ };
238
+ this.__schemas__[schema] = def;
239
+ }
240
+ this.re.set({
241
+ ...this.__opts__,
242
+ schema_names: Object.keys(this.__schemas__)
243
+ });
244
+ return this;
245
+ }
246
+ set(options = {}) {
247
+ this.__opts__ = {
248
+ ...this.__opts__,
249
+ ...options
250
+ };
251
+ this.re.set({
252
+ ...this.__opts__,
253
+ schema_names: Object.keys(this.__schemas__)
254
+ });
255
+ return this;
256
+ }
257
+ test(text) {
258
+ if (!text.length) return false;
259
+ let m, re;
260
+ re = this.re.get_schema_search();
261
+ re.lastIndex = 0;
262
+ while ((m = re.exec(text)) !== null) if (this.testSchemaAt(text, m[2], re.lastIndex)) return true;
263
+ if (this.__opts__.fuzzyLink && this.__schemas__["http:"]) {
264
+ re = this.re.get_fuzzy_link_search();
265
+ re.lastIndex = 0;
266
+ if (re.exec(text) !== null) return true;
267
+ }
268
+ if (this.__opts__.fuzzyEmail && this.__schemas__["mailto:"]) {
269
+ if (text.indexOf("@") >= 0) {
270
+ const mailHostRe = this.re.get_fuzzy_mail_host_search();
271
+ const mailNameRe = this.re.get_mail_name_validator();
272
+ mailHostRe.lastIndex = 0;
273
+ while ((m = mailHostRe.exec(text)) !== null) {
274
+ const name = text.slice(Math.max(0, m.index - 65), m.index);
275
+ if (mailNameRe.test(name)) return true;
276
+ }
277
+ }
278
+ }
279
+ return false;
280
+ }
281
+ testSchemaAt(text, schema, pos) {
282
+ if (!this.__schemas__[schema.toLowerCase()]) return 0;
283
+ return this.__schemas__[schema.toLowerCase()].validate(text.slice(0, pos + this.__opts__.maxLength), pos, this);
284
+ }
285
+ match(text) {
286
+ const result = [];
287
+ const schemaRe = this.re.get_schema_search();
288
+ let fuzzyLinkRe;
289
+ let mailHostRe;
290
+ let mailNameRe;
291
+ let fuzzyLinkCandidate;
292
+ let fuzzyEmailCandidate;
293
+ let schemaPrefix;
294
+ let schemaDone = false;
295
+ let fuzzyLinkDone = false;
296
+ let fuzzyEmailDone = false;
297
+ let pos = 0;
298
+ if (!text.length) return null;
299
+ schemaRe.lastIndex = 0;
300
+ if (this.__opts__.fuzzyLink && this.__schemas__["http:"]) {
301
+ fuzzyLinkRe = this.re.get_fuzzy_link_search();
302
+ fuzzyLinkRe.lastIndex = 0;
303
+ }
304
+ if (this.__opts__.fuzzyEmail && this.__schemas__["mailto:"]) {
305
+ mailHostRe = this.re.get_fuzzy_mail_host_search();
306
+ mailHostRe.lastIndex = 0;
307
+ mailNameRe = this.re.get_mail_name_validator();
308
+ }
309
+ for (;;) {
310
+ const scanFrom = Math.max(pos - 1, 0);
311
+ if (mailHostRe && mailNameRe && !fuzzyEmailDone && (!fuzzyEmailCandidate || fuzzyEmailCandidate.index < pos)) {
312
+ if (mailHostRe.lastIndex < scanFrom) mailHostRe.lastIndex = scanFrom;
313
+ for (;;) {
314
+ const m = mailHostRe.exec(text);
315
+ if (!m) {
316
+ fuzzyEmailDone = true;
317
+ fuzzyEmailCandidate = void 0;
318
+ break;
319
+ }
320
+ const name = mailNameRe.exec(text.slice(Math.max(0, m.index - 65), m.index));
321
+ if (!name) continue;
322
+ fuzzyEmailCandidate = {
323
+ schema: "mailto:",
324
+ index: m.index - name[1].length,
325
+ lastIndex: m.index + m[0].length
326
+ };
327
+ if (fuzzyEmailCandidate.index >= pos) break;
328
+ if (mailHostRe.lastIndex < scanFrom) mailHostRe.lastIndex = scanFrom;
329
+ }
330
+ }
331
+ if (fuzzyLinkRe && !fuzzyLinkDone && (!fuzzyLinkCandidate || fuzzyLinkCandidate.index < pos)) {
332
+ if (fuzzyLinkRe.lastIndex < scanFrom) fuzzyLinkRe.lastIndex = scanFrom;
333
+ for (;;) {
334
+ const m = fuzzyLinkRe.exec(text);
335
+ if (!m) {
336
+ fuzzyLinkDone = true;
337
+ fuzzyLinkCandidate = void 0;
338
+ break;
339
+ }
340
+ fuzzyLinkCandidate = {
341
+ schema: "",
342
+ index: m.index + m[1].length,
343
+ lastIndex: m.index + m[0].length
344
+ };
345
+ if (fuzzyLinkCandidate.index >= pos) break;
346
+ if (fuzzyLinkRe.lastIndex < scanFrom) fuzzyLinkRe.lastIndex = scanFrom;
347
+ }
348
+ }
349
+ let fuzzyCandidate = fuzzyEmailCandidate;
350
+ if (!fuzzyCandidate || fuzzyLinkCandidate && (fuzzyLinkCandidate.index < fuzzyCandidate.index || fuzzyLinkCandidate.index === fuzzyCandidate.index && fuzzyLinkCandidate.lastIndex > fuzzyCandidate.lastIndex)) fuzzyCandidate = fuzzyLinkCandidate;
351
+ let schemaCandidate;
352
+ if (!schemaDone) for (;;) {
353
+ if (!schemaPrefix) {
354
+ if (schemaRe.lastIndex < scanFrom) schemaRe.lastIndex = scanFrom;
355
+ const m = schemaRe.exec(text);
356
+ if (!m) {
357
+ schemaDone = true;
358
+ break;
359
+ }
360
+ schemaPrefix = {
361
+ schema: m[2],
362
+ index: m.index + m[1].length,
363
+ lastIndex: m.index + m[0].length
364
+ };
365
+ }
366
+ if (schemaPrefix.index < pos) {
367
+ schemaPrefix = void 0;
368
+ continue;
369
+ }
370
+ if (fuzzyCandidate && schemaPrefix.index > fuzzyCandidate.index) break;
371
+ const prefix = schemaPrefix;
372
+ schemaPrefix = void 0;
373
+ const len = this.testSchemaAt(text, prefix.schema, prefix.lastIndex);
374
+ if (len) {
375
+ schemaCandidate = {
376
+ schema: prefix.schema,
377
+ index: prefix.index,
378
+ lastIndex: prefix.lastIndex + len
379
+ };
380
+ break;
381
+ }
382
+ }
383
+ let candidate = schemaCandidate;
384
+ if (!candidate || fuzzyEmailCandidate && (fuzzyEmailCandidate.index < candidate.index || fuzzyEmailCandidate.index === candidate.index && fuzzyEmailCandidate.lastIndex > candidate.lastIndex)) candidate = fuzzyEmailCandidate;
385
+ if (!candidate || fuzzyLinkCandidate && (fuzzyLinkCandidate.index < candidate.index || fuzzyLinkCandidate.index === candidate.index && fuzzyLinkCandidate.lastIndex > candidate.lastIndex)) candidate = fuzzyLinkCandidate;
386
+ if (!candidate) break;
387
+ if (candidate === fuzzyEmailCandidate) fuzzyEmailCandidate = void 0;
388
+ else if (candidate === fuzzyLinkCandidate) fuzzyLinkCandidate = void 0;
389
+ const match = new Match(text, candidate.schema, candidate.index, candidate.lastIndex);
390
+ if (match.schema) this.__schemas__[match.schema].normalize(match, this);
391
+ else this.normalize(match);
392
+ result.push(match);
393
+ pos = candidate.lastIndex;
394
+ }
395
+ if (result.length) return result;
396
+ return null;
397
+ }
398
+ matchAtStart(text) {
399
+ if (!text.length) return null;
400
+ const m = this.re.get_schema_at_start().exec(text);
401
+ if (!m) return null;
402
+ const len = this.testSchemaAt(text, m[2], m[0].length);
403
+ if (!len) return null;
404
+ const match = new Match(text, m[2], m.index + m[1].length, m.index + m[0].length + len);
405
+ this.__schemas__[match.schema].normalize(match, this);
406
+ return match;
407
+ }
408
+ tlds(list, keepOld = false) {
409
+ list = Array.isArray(list) ? list : [list];
410
+ if (!keepOld) this.__opts__.tlds = list;
411
+ else this.__opts__.tlds = this.__opts__.tlds.concat(list);
412
+ this.re.set({
413
+ ...this.__opts__,
414
+ schema_names: Object.keys(this.__schemas__)
415
+ });
416
+ return this;
417
+ }
418
+ normalize(match) {
419
+ if (!match.schema) match.url = `http://${match.url}`;
420
+ if (match.schema === "mailto:" && !/^mailto:/i.test(match.url)) match.url = `mailto:${match.url}`;
421
+ }
422
+ };
423
+ function linkifyit(options = {}) {
424
+ return new LinkifyIt(options);
425
+ }
426
+ export { LinkifyIt, REBuilder, linkifyit };
427
+