@touchvue/chat 1.0.0-beta.55 → 1.0.0-beta.57
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/es/index.mjs.map +1 -1
- package/es/node_modules/.pnpm/{dompurify@3.4.3 → dompurify@3.4.11}/node_modules/dompurify/dist/purify.es.mjs +939 -226
- package/es/node_modules/.pnpm/dompurify@3.4.11/node_modules/dompurify/dist/purify.es.mjs.map +1 -0
- package/es/node_modules/.pnpm/{linkify-it@5.0.0 → linkify-it@5.0.2}/node_modules/linkify-it/index.mjs +109 -105
- package/es/node_modules/.pnpm/linkify-it@5.0.2/node_modules/linkify-it/index.mjs.map +1 -0
- package/es/node_modules/.pnpm/{linkify-it@5.0.0 → linkify-it@5.0.2}/node_modules/linkify-it/lib/re.mjs +34 -30
- package/es/node_modules/.pnpm/linkify-it@5.0.2/node_modules/linkify-it/lib/re.mjs.map +1 -0
- package/es/node_modules/.pnpm/{markdown-it-deflist@3.0.0 → markdown-it-deflist@3.0.1}/node_modules/markdown-it-deflist/index.mjs +2 -1
- package/es/node_modules/.pnpm/markdown-it-deflist@3.0.1/node_modules/markdown-it-deflist/index.mjs.map +1 -0
- package/es/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/index.mjs +1 -1
- package/es/package.json.mjs +1 -1
- package/es/packages/components/touchchat/component/AiRobot/face.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +1 -1
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/start.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/CardView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ImageFile.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ImageView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/LinkView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/Screenshot.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ThoughtChain.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/UploadView.vue2.mjs +2 -2
- package/es/packages/components/touchchat/component/UploadView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/UploadView_api.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/index.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/TouchChat.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs +7 -39
- package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs +26 -16
- package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/useScroll.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +16 -4
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs +139 -81
- package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs +11 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/types/a2a.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/a2aService.mjs +204 -104
- package/es/packages/components/touchchat/utils/a2aService.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/chatRobot.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/deepCloneDom.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/hight-it.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/markdown.mjs +23 -6
- package/es/packages/components/touchchat/utils/markdown.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/socket.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/tools.mjs +4 -4
- package/es/packages/components/touchchat/utils/tools.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/uuid.mjs.map +1 -1
- package/es/packages/utils/config.mjs.map +1 -1
- package/es/packages/utils/types.mjs.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/node_modules/.pnpm/{dompurify@3.4.3 → dompurify@3.4.11}/node_modules/dompurify/dist/purify.es.js +939 -226
- package/lib/node_modules/.pnpm/dompurify@3.4.11/node_modules/dompurify/dist/purify.es.js.map +1 -0
- package/lib/node_modules/.pnpm/{linkify-it@5.0.0 → linkify-it@5.0.2}/node_modules/linkify-it/index.js +109 -105
- package/lib/node_modules/.pnpm/linkify-it@5.0.2/node_modules/linkify-it/index.js.map +1 -0
- package/lib/node_modules/.pnpm/{linkify-it@5.0.0 → linkify-it@5.0.2}/node_modules/linkify-it/lib/re.js +34 -30
- package/lib/node_modules/.pnpm/linkify-it@5.0.2/node_modules/linkify-it/lib/re.js.map +1 -0
- package/lib/node_modules/.pnpm/{markdown-it-deflist@3.0.0 → markdown-it-deflist@3.0.1}/node_modules/markdown-it-deflist/index.js +2 -1
- package/lib/node_modules/.pnpm/markdown-it-deflist@3.0.1/node_modules/markdown-it-deflist/index.js.map +1 -0
- package/lib/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/index.js +1 -1
- package/lib/package.json.js +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/face.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/start.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/CardView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ImageFile.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ImageView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/LinkView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/MarkLayer.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/Screenshot.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ThoughtChain.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/UploadView.vue2.js +2 -2
- package/lib/packages/components/touchchat/component/UploadView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/UploadView_api.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/index.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/TouchChat.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js +6 -38
- package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js +26 -16
- package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/useScroll.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +15 -3
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js +139 -81
- package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/index.vue2.js +11 -1
- package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/types/a2a.js.map +1 -1
- package/lib/packages/components/touchchat/utils/a2aService.js +204 -104
- package/lib/packages/components/touchchat/utils/a2aService.js.map +1 -1
- package/lib/packages/components/touchchat/utils/chatRobot.js.map +1 -1
- package/lib/packages/components/touchchat/utils/deepCloneDom.js.map +1 -1
- package/lib/packages/components/touchchat/utils/hight-it.js.map +1 -1
- package/lib/packages/components/touchchat/utils/markdown.js +23 -6
- package/lib/packages/components/touchchat/utils/markdown.js.map +1 -1
- package/lib/packages/components/touchchat/utils/socket.js.map +1 -1
- package/lib/packages/components/touchchat/utils/tools.js +4 -4
- package/lib/packages/components/touchchat/utils/tools.js.map +1 -1
- package/lib/packages/components/touchchat/utils/uuid.js.map +1 -1
- package/lib/packages/utils/config.js.map +1 -1
- package/lib/packages/utils/types.js.map +1 -1
- package/package.json +1 -1
- package/es/node_modules/.pnpm/dompurify@3.4.3/node_modules/dompurify/dist/purify.es.mjs.map +0 -1
- package/es/node_modules/.pnpm/linkify-it@5.0.0/node_modules/linkify-it/index.mjs.map +0 -1
- package/es/node_modules/.pnpm/linkify-it@5.0.0/node_modules/linkify-it/lib/re.mjs.map +0 -1
- package/es/node_modules/.pnpm/markdown-it-deflist@3.0.0/node_modules/markdown-it-deflist/index.mjs.map +0 -1
- package/lib/node_modules/.pnpm/dompurify@3.4.3/node_modules/dompurify/dist/purify.es.js.map +0 -1
- package/lib/node_modules/.pnpm/linkify-it@5.0.0/node_modules/linkify-it/index.js.map +0 -1
- package/lib/node_modules/.pnpm/linkify-it@5.0.0/node_modules/linkify-it/lib/re.js.map +0 -1
- package/lib/node_modules/.pnpm/markdown-it-deflist@3.0.0/node_modules/markdown-it-deflist/index.js.map +0 -1
|
@@ -51,7 +51,7 @@ const defaultSchemas = {
|
|
|
51
51
|
if (!self.re.http) {
|
|
52
52
|
// compile lazily, because "host"-containing variables can change on tlds update.
|
|
53
53
|
self.re.http = new RegExp(
|
|
54
|
-
|
|
54
|
+
`^\\/\\/${self.re.src_auth}${self.re.src_host_port_strict}${self.re.src_path}`, 'i'
|
|
55
55
|
);
|
|
56
56
|
}
|
|
57
57
|
if (self.re.http.test(tail)) {
|
|
@@ -73,7 +73,7 @@ const defaultSchemas = {
|
|
|
73
73
|
self.re.src_auth +
|
|
74
74
|
// Don't allow single-level domains, because of false positives like '//test'
|
|
75
75
|
// with code comments
|
|
76
|
-
|
|
76
|
+
`(?:localhost|(?:(?:${self.re.src_domain})\\.)+${self.re.src_domain_root})` +
|
|
77
77
|
self.re.src_port +
|
|
78
78
|
self.re.src_host_terminator +
|
|
79
79
|
self.re.src_path,
|
|
@@ -97,7 +97,7 @@ const defaultSchemas = {
|
|
|
97
97
|
|
|
98
98
|
if (!self.re.mailto) {
|
|
99
99
|
self.re.mailto = new RegExp(
|
|
100
|
-
|
|
100
|
+
`^${self.re.src_email_name}@${self.re.src_host_strict}`, 'i'
|
|
101
101
|
);
|
|
102
102
|
}
|
|
103
103
|
if (self.re.mailto.test(tail)) {
|
|
@@ -109,17 +109,11 @@ const defaultSchemas = {
|
|
|
109
109
|
};
|
|
110
110
|
|
|
111
111
|
// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)
|
|
112
|
-
/* eslint-disable-next-line max-len */
|
|
113
112
|
const tlds_2ch_src_re = '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]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]';
|
|
114
113
|
|
|
115
114
|
// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead
|
|
116
115
|
const tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');
|
|
117
116
|
|
|
118
|
-
function resetScanCache (self) {
|
|
119
|
-
self.__index__ = -1;
|
|
120
|
-
self.__text_cache__ = '';
|
|
121
|
-
}
|
|
122
|
-
|
|
123
117
|
function createValidator (re) {
|
|
124
118
|
return function (text, pos) {
|
|
125
119
|
const tail = text.slice(pos);
|
|
@@ -158,8 +152,11 @@ function compile (self) {
|
|
|
158
152
|
function untpl (tpl) { return tpl.replace('%TLDS%', re.src_tlds) }
|
|
159
153
|
|
|
160
154
|
re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i');
|
|
155
|
+
re.email_fuzzy_global = RegExp(untpl(re.tpl_email_fuzzy), 'ig');
|
|
161
156
|
re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i');
|
|
157
|
+
re.link_fuzzy_global = RegExp(untpl(re.tpl_link_fuzzy), 'ig');
|
|
162
158
|
re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i');
|
|
159
|
+
re.link_no_ip_fuzzy_global = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'ig');
|
|
163
160
|
re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i');
|
|
164
161
|
|
|
165
162
|
//
|
|
@@ -171,7 +168,7 @@ function compile (self) {
|
|
|
171
168
|
self.__compiled__ = {}; // Reset compiled data
|
|
172
169
|
|
|
173
170
|
function schemaError (name, val) {
|
|
174
|
-
throw new Error(
|
|
171
|
+
throw new Error(`(LinkifyIt) Invalid schema "${name}": ${val}`)
|
|
175
172
|
}
|
|
176
173
|
|
|
177
174
|
Object.keys(self.__schemas__).forEach(function (name) {
|
|
@@ -245,20 +242,14 @@ function compile (self) {
|
|
|
245
242
|
.map(escapeRE)
|
|
246
243
|
.join('|');
|
|
247
244
|
// (?!_) cause 1.5x slowdown
|
|
248
|
-
self.re.schema_test = RegExp(
|
|
249
|
-
self.re.schema_search = RegExp(
|
|
250
|
-
self.re.schema_at_start = RegExp(
|
|
245
|
+
self.re.schema_test = RegExp(`(^|(?!_)(?:[><\uff5c]|${re.src_ZPCc}))(${slist})`, 'i');
|
|
246
|
+
self.re.schema_search = RegExp(`(^|(?!_)(?:[><\uff5c]|${re.src_ZPCc}))(${slist})`, 'ig');
|
|
247
|
+
self.re.schema_at_start = RegExp(`^${self.re.schema_search.source}`, 'i');
|
|
251
248
|
|
|
252
249
|
self.re.pretest = RegExp(
|
|
253
|
-
|
|
250
|
+
`(${self.re.schema_test.source})|(${self.re.host_fuzzy_test.source})|@`,
|
|
254
251
|
'i'
|
|
255
252
|
);
|
|
256
|
-
|
|
257
|
-
//
|
|
258
|
-
// Cleanup
|
|
259
|
-
//
|
|
260
|
-
|
|
261
|
-
resetScanCache(self);
|
|
262
253
|
}
|
|
263
254
|
|
|
264
255
|
/**
|
|
@@ -266,55 +257,45 @@ function compile (self) {
|
|
|
266
257
|
*
|
|
267
258
|
* Match result. Single element of array, returned by [[LinkifyIt#match]]
|
|
268
259
|
**/
|
|
269
|
-
function Match (
|
|
270
|
-
const
|
|
271
|
-
const end = self.__last_index__;
|
|
272
|
-
const text = self.__text_cache__.slice(start, end);
|
|
260
|
+
function Match (text, schema, index, lastIndex) {
|
|
261
|
+
const raw = text.slice(index, lastIndex);
|
|
273
262
|
|
|
274
263
|
/**
|
|
275
264
|
* Match#schema -> String
|
|
276
265
|
*
|
|
277
266
|
* Prefix (protocol) for matched string.
|
|
278
267
|
**/
|
|
279
|
-
this.schema =
|
|
268
|
+
this.schema = schema.toLowerCase();
|
|
280
269
|
/**
|
|
281
270
|
* Match#index -> Number
|
|
282
271
|
*
|
|
283
272
|
* First position of matched string.
|
|
284
273
|
**/
|
|
285
|
-
this.index =
|
|
274
|
+
this.index = index;
|
|
286
275
|
/**
|
|
287
276
|
* Match#lastIndex -> Number
|
|
288
277
|
*
|
|
289
278
|
* Next position after matched string.
|
|
290
279
|
**/
|
|
291
|
-
this.lastIndex =
|
|
280
|
+
this.lastIndex = lastIndex;
|
|
292
281
|
/**
|
|
293
282
|
* Match#raw -> String
|
|
294
283
|
*
|
|
295
284
|
* Matched string.
|
|
296
285
|
**/
|
|
297
|
-
this.raw =
|
|
286
|
+
this.raw = raw;
|
|
298
287
|
/**
|
|
299
288
|
* Match#text -> String
|
|
300
289
|
*
|
|
301
290
|
* Notmalized text of matched string.
|
|
302
291
|
**/
|
|
303
|
-
this.text =
|
|
292
|
+
this.text = raw;
|
|
304
293
|
/**
|
|
305
294
|
* Match#url -> String
|
|
306
295
|
*
|
|
307
296
|
* Normalized url of matched string.
|
|
308
297
|
**/
|
|
309
|
-
this.url =
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
function createMatch (self, shift) {
|
|
313
|
-
const match = new Match(self, shift);
|
|
314
|
-
|
|
315
|
-
self.__compiled__[match.schema].normalize(match, self);
|
|
316
|
-
|
|
317
|
-
return match
|
|
298
|
+
this.url = raw;
|
|
318
299
|
}
|
|
319
300
|
|
|
320
301
|
/**
|
|
@@ -369,12 +350,6 @@ function LinkifyIt (schemas, options) {
|
|
|
369
350
|
|
|
370
351
|
this.__opts__ = assign({}, defaultOptions, options);
|
|
371
352
|
|
|
372
|
-
// Cache last tested result. Used to skip repeating steps on next `match` call.
|
|
373
|
-
this.__index__ = -1;
|
|
374
|
-
this.__last_index__ = -1; // Next scan position
|
|
375
|
-
this.__schema__ = '';
|
|
376
|
-
this.__text_cache__ = '';
|
|
377
|
-
|
|
378
353
|
this.__schemas__ = assign({}, defaultSchemas, schemas);
|
|
379
354
|
this.__compiled__ = {};
|
|
380
355
|
|
|
@@ -416,69 +391,38 @@ LinkifyIt.prototype.set = function set (options) {
|
|
|
416
391
|
* Searches linkifiable pattern and returns `true` on success or `false` on fail.
|
|
417
392
|
**/
|
|
418
393
|
LinkifyIt.prototype.test = function test (text) {
|
|
419
|
-
// Reset scan cache
|
|
420
|
-
this.__text_cache__ = text;
|
|
421
|
-
this.__index__ = -1;
|
|
422
|
-
|
|
423
394
|
if (!text.length) { return false }
|
|
424
395
|
|
|
425
|
-
let m,
|
|
396
|
+
let m, re;
|
|
426
397
|
|
|
427
398
|
// try to scan for link with schema - that's the most simple rule
|
|
428
399
|
if (this.re.schema_test.test(text)) {
|
|
429
400
|
re = this.re.schema_search;
|
|
430
401
|
re.lastIndex = 0;
|
|
431
402
|
while ((m = re.exec(text)) !== null) {
|
|
432
|
-
|
|
433
|
-
if (len) {
|
|
434
|
-
this.__schema__ = m[2];
|
|
435
|
-
this.__index__ = m.index + m[1].length;
|
|
436
|
-
this.__last_index__ = m.index + m[0].length + len;
|
|
437
|
-
break
|
|
438
|
-
}
|
|
403
|
+
if (this.testSchemaAt(text, m[2], re.lastIndex)) { return true }
|
|
439
404
|
}
|
|
440
405
|
}
|
|
441
406
|
|
|
442
407
|
if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {
|
|
443
408
|
// guess schemaless links
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
if (this.__index__ < 0 || tld_pos < this.__index__) {
|
|
448
|
-
if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {
|
|
449
|
-
shift = ml.index + ml[1].length;
|
|
450
|
-
|
|
451
|
-
if (this.__index__ < 0 || shift < this.__index__) {
|
|
452
|
-
this.__schema__ = '';
|
|
453
|
-
this.__index__ = shift;
|
|
454
|
-
this.__last_index__ = ml.index + ml[0].length;
|
|
455
|
-
}
|
|
456
|
-
}
|
|
409
|
+
if (text.search(this.re.host_fuzzy_test) >= 0) {
|
|
410
|
+
if (text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy) !== null) {
|
|
411
|
+
return true
|
|
457
412
|
}
|
|
458
413
|
}
|
|
459
414
|
}
|
|
460
415
|
|
|
461
416
|
if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {
|
|
462
417
|
// guess schemaless emails
|
|
463
|
-
|
|
464
|
-
if (at_pos >= 0) {
|
|
418
|
+
if (text.indexOf('@') >= 0) {
|
|
465
419
|
// We can't skip this check, because this cases are possible:
|
|
466
420
|
// 192.168.1.1@gmail.com, my.in@example.com
|
|
467
|
-
if (
|
|
468
|
-
shift = me.index + me[1].length;
|
|
469
|
-
next = me.index + me[0].length;
|
|
470
|
-
|
|
471
|
-
if (this.__index__ < 0 || shift < this.__index__ ||
|
|
472
|
-
(shift === this.__index__ && next > this.__last_index__)) {
|
|
473
|
-
this.__schema__ = 'mailto:';
|
|
474
|
-
this.__index__ = shift;
|
|
475
|
-
this.__last_index__ = next;
|
|
476
|
-
}
|
|
477
|
-
}
|
|
421
|
+
if (text.match(this.re.email_fuzzy) !== null) { return true }
|
|
478
422
|
}
|
|
479
423
|
}
|
|
480
424
|
|
|
481
|
-
return
|
|
425
|
+
return false
|
|
482
426
|
};
|
|
483
427
|
|
|
484
428
|
/**
|
|
@@ -527,23 +471,88 @@ LinkifyIt.prototype.testSchemaAt = function testSchemaAt (text, schema, pos) {
|
|
|
527
471
|
**/
|
|
528
472
|
LinkifyIt.prototype.match = function match (text) {
|
|
529
473
|
const result = [];
|
|
530
|
-
|
|
474
|
+
const type_schemed = [];
|
|
475
|
+
const type_fuzzy_link = [];
|
|
476
|
+
const type_fuzzy_email = [];
|
|
477
|
+
let m, len, re;
|
|
478
|
+
|
|
479
|
+
function choose (a, b) {
|
|
480
|
+
if (!a) { return b }
|
|
481
|
+
if (!b) { return a }
|
|
482
|
+
if (a.index !== b.index) { return a.index < b.index ? a : b }
|
|
483
|
+
return a.lastIndex >= b.lastIndex ? a : b
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
if (!text.length) { return null }
|
|
487
|
+
|
|
488
|
+
// scan for links with schema
|
|
489
|
+
if (this.re.schema_test.test(text)) {
|
|
490
|
+
re = this.re.schema_search;
|
|
491
|
+
re.lastIndex = 0;
|
|
492
|
+
while ((m = re.exec(text)) !== null) {
|
|
493
|
+
len = this.testSchemaAt(text, m[2], re.lastIndex);
|
|
494
|
+
if (len) {
|
|
495
|
+
type_schemed.push({
|
|
496
|
+
schema: m[2],
|
|
497
|
+
index: m.index + m[1].length,
|
|
498
|
+
lastIndex: m.index + m[0].length + len
|
|
499
|
+
});
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
}
|
|
531
503
|
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
504
|
+
if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {
|
|
505
|
+
re = this.__opts__.fuzzyIP ? this.re.link_fuzzy_global : this.re.link_no_ip_fuzzy_global;
|
|
506
|
+
re.lastIndex = 0;
|
|
507
|
+
while ((m = re.exec(text)) !== null) {
|
|
508
|
+
type_fuzzy_link.push({
|
|
509
|
+
schema: '',
|
|
510
|
+
index: m.index + m[1].length,
|
|
511
|
+
lastIndex: m.index + m[0].length
|
|
512
|
+
});
|
|
513
|
+
}
|
|
536
514
|
}
|
|
537
515
|
|
|
538
|
-
|
|
539
|
-
|
|
516
|
+
if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {
|
|
517
|
+
re = this.re.email_fuzzy_global;
|
|
518
|
+
re.lastIndex = 0;
|
|
519
|
+
while ((m = re.exec(text)) !== null) {
|
|
520
|
+
type_fuzzy_email.push({
|
|
521
|
+
schema: 'mailto:',
|
|
522
|
+
index: m.index + m[1].length,
|
|
523
|
+
lastIndex: m.index + m[0].length
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
const indexes = [0, 0, 0];
|
|
529
|
+
let lastIndex = 0;
|
|
530
|
+
|
|
531
|
+
for (;;) {
|
|
532
|
+
const candidates = [
|
|
533
|
+
type_schemed[indexes[0]],
|
|
534
|
+
type_fuzzy_email[indexes[1]],
|
|
535
|
+
type_fuzzy_link[indexes[2]]
|
|
536
|
+
];
|
|
537
|
+
|
|
538
|
+
const candidate = choose(choose(candidates[0], candidates[1]), candidates[2]);
|
|
540
539
|
|
|
541
|
-
|
|
542
|
-
while (this.test(tail)) {
|
|
543
|
-
result.push(createMatch(this, shift));
|
|
540
|
+
if (!candidate) { break }
|
|
544
541
|
|
|
545
|
-
|
|
546
|
-
|
|
542
|
+
if (candidate === candidates[0]) {
|
|
543
|
+
indexes[0]++;
|
|
544
|
+
} else if (candidate === candidates[1]) {
|
|
545
|
+
indexes[1]++;
|
|
546
|
+
} else {
|
|
547
|
+
indexes[2]++;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
if (candidate.index < lastIndex) { continue }
|
|
551
|
+
|
|
552
|
+
const match = new Match(text, candidate.schema, candidate.index, candidate.lastIndex);
|
|
553
|
+
this.__compiled__[match.schema].normalize(match, this);
|
|
554
|
+
result.push(match);
|
|
555
|
+
lastIndex = candidate.lastIndex;
|
|
547
556
|
}
|
|
548
557
|
|
|
549
558
|
if (result.length) {
|
|
@@ -560,10 +569,6 @@ LinkifyIt.prototype.match = function match (text) {
|
|
|
560
569
|
* of the string, and null otherwise.
|
|
561
570
|
**/
|
|
562
571
|
LinkifyIt.prototype.matchAtStart = function matchAtStart (text) {
|
|
563
|
-
// Reset scan cache
|
|
564
|
-
this.__text_cache__ = text;
|
|
565
|
-
this.__index__ = -1;
|
|
566
|
-
|
|
567
572
|
if (!text.length) return null
|
|
568
573
|
|
|
569
574
|
const m = this.re.schema_at_start.exec(text);
|
|
@@ -572,11 +577,10 @@ LinkifyIt.prototype.matchAtStart = function matchAtStart (text) {
|
|
|
572
577
|
const len = this.testSchemaAt(text, m[2], m[0].length);
|
|
573
578
|
if (!len) return null
|
|
574
579
|
|
|
575
|
-
|
|
576
|
-
this.__index__ = m.index + m[1].length;
|
|
577
|
-
this.__last_index__ = m.index + m[0].length + len;
|
|
580
|
+
const match = new Match(text, m[2], m.index + m[1].length, m.index + m[0].length + len);
|
|
578
581
|
|
|
579
|
-
|
|
582
|
+
this.__compiled__[match.schema].normalize(match, this);
|
|
583
|
+
return match
|
|
580
584
|
};
|
|
581
585
|
|
|
582
586
|
/** chainable
|
|
@@ -624,10 +628,10 @@ LinkifyIt.prototype.normalize = function normalize (match) {
|
|
|
624
628
|
// Do minimal possible changes by default. Need to collect feedback prior
|
|
625
629
|
// to move forward https://github.com/markdown-it/linkify-it/issues/1
|
|
626
630
|
|
|
627
|
-
if (!match.schema) { match.url =
|
|
631
|
+
if (!match.schema) { match.url = `http://${match.url}`; }
|
|
628
632
|
|
|
629
633
|
if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {
|
|
630
|
-
match.url =
|
|
634
|
+
match.url = `mailto:${match.url}`;
|
|
631
635
|
}
|
|
632
636
|
};
|
|
633
637
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../../../node_modules/.pnpm/linkify-it@5.0.2/node_modules/linkify-it/index.mjs"],"sourcesContent":["import reFactory from './lib/re.mjs'\n\n//\n// Helpers\n//\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n const sources = Array.prototype.slice.call(arguments, 1)\n\n sources.forEach(function (source) {\n if (!source) { return }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key]\n })\n })\n\n return obj\n}\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\nfunction isString (obj) { return _class(obj) === '[object String]' }\nfunction isObject (obj) { return _class(obj) === '[object Object]' }\nfunction isRegExp (obj) { return _class(obj) === '[object RegExp]' }\nfunction isFunction (obj) { return _class(obj) === '[object Function]' }\n\nfunction escapeRE (str) { return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&') }\n\n//\n\nconst defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n}\n\nfunction isOptionsObj (obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n /* eslint-disable-next-line no-prototype-builtins */\n return acc || defaultOptions.hasOwnProperty(k)\n }, false)\n}\n\nconst defaultSchemas = {\n 'http:': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos)\n\n if (!self.re.http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.http = new RegExp(\n `^\\\\/\\\\/${self.re.src_auth}${self.re.src_host_port_strict}${self.re.src_path}`, 'i'\n )\n }\n if (self.re.http.test(tail)) {\n return tail.match(self.re.http)[0].length\n }\n return 0\n }\n },\n 'https:': 'http:',\n 'ftp:': 'http:',\n '//': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos)\n\n if (!self.re.no_http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.no_http = new RegExp(\n '^' +\n self.re.src_auth +\n // Don't allow single-level domains, because of false positives like '//test'\n // with code comments\n `(?:localhost|(?:(?:${self.re.src_domain})\\\\.)+${self.re.src_domain_root})` +\n self.re.src_port +\n self.re.src_host_terminator +\n self.re.src_path,\n\n 'i'\n )\n }\n\n if (self.re.no_http.test(tail)) {\n // should not be `://` & `///`, that protects from errors in protocol name\n if (pos >= 3 && text[pos - 3] === ':') { return 0 }\n if (pos >= 3 && text[pos - 3] === '/') { return 0 }\n return tail.match(self.re.no_http)[0].length\n }\n return 0\n }\n },\n 'mailto:': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos)\n\n if (!self.re.mailto) {\n self.re.mailto = new RegExp(\n `^${self.re.src_email_name}@${self.re.src_host_strict}`, 'i'\n )\n }\n if (self.re.mailto.test(tail)) {\n return tail.match(self.re.mailto)[0].length\n }\n return 0\n }\n }\n}\n\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\nconst tlds_2ch_src_re = '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]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]'\n\n// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\nconst tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|')\n\nfunction createValidator (re) {\n return function (text, pos) {\n const tail = text.slice(pos)\n\n if (re.test(tail)) {\n return tail.match(re)[0].length\n }\n return 0\n }\n}\n\nfunction createNormalizer () {\n return function (match, self) {\n self.normalize(match)\n }\n}\n\n// Schemas compiler. Build regexps.\n//\nfunction compile (self) {\n // Load & clone RE patterns.\n const re = self.re = reFactory(self.__opts__)\n\n // Define dynamic patterns\n const tlds = self.__tlds__.slice()\n\n self.onCompile()\n\n if (!self.__tlds_replaced__) {\n tlds.push(tlds_2ch_src_re)\n }\n tlds.push(re.src_xn)\n\n re.src_tlds = tlds.join('|')\n\n function untpl (tpl) { return tpl.replace('%TLDS%', re.src_tlds) }\n\n re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i')\n re.email_fuzzy_global = RegExp(untpl(re.tpl_email_fuzzy), 'ig')\n re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i')\n re.link_fuzzy_global = RegExp(untpl(re.tpl_link_fuzzy), 'ig')\n re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i')\n re.link_no_ip_fuzzy_global = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'ig')\n re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i')\n\n //\n // Compile each schema\n //\n\n const aliases = []\n\n self.__compiled__ = {} // Reset compiled data\n\n function schemaError (name, val) {\n throw new Error(`(LinkifyIt) Invalid schema \"${name}\": ${val}`)\n }\n\n Object.keys(self.__schemas__).forEach(function (name) {\n const val = self.__schemas__[name]\n\n // skip disabled methods\n if (val === null) { return }\n\n const compiled = { validate: null, link: null }\n\n self.__compiled__[name] = compiled\n\n if (isObject(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate)\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate\n } else {\n schemaError(name, val)\n }\n\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer()\n } else {\n schemaError(name, val)\n }\n\n return\n }\n\n if (isString(val)) {\n aliases.push(name)\n return\n }\n\n schemaError(name, val)\n })\n\n //\n // Compile postponed aliases\n //\n\n aliases.forEach(function (alias) {\n if (!self.__compiled__[self.__schemas__[alias]]) {\n // Silently fail on missed schemas to avoid errons on disable.\n // schemaError(alias, self.__schemas__[alias]);\n return\n }\n\n self.__compiled__[alias].validate =\n self.__compiled__[self.__schemas__[alias]].validate\n self.__compiled__[alias].normalize =\n self.__compiled__[self.__schemas__[alias]].normalize\n })\n\n //\n // Fake record for guessed links\n //\n self.__compiled__[''] = { validate: null, normalize: createNormalizer() }\n\n //\n // Build schema condition\n //\n const slist = Object.keys(self.__compiled__)\n .filter(function (name) {\n // Filter disabled & fake schemas\n return name.length > 0 && self.__compiled__[name]\n })\n .map(escapeRE)\n .join('|')\n // (?!_) cause 1.5x slowdown\n self.re.schema_test = RegExp(`(^|(?!_)(?:[><\\uff5c]|${re.src_ZPCc}))(${slist})`, 'i')\n self.re.schema_search = RegExp(`(^|(?!_)(?:[><\\uff5c]|${re.src_ZPCc}))(${slist})`, 'ig')\n self.re.schema_at_start = RegExp(`^${self.re.schema_search.source}`, 'i')\n\n self.re.pretest = RegExp(\n `(${self.re.schema_test.source})|(${self.re.host_fuzzy_test.source})|@`,\n 'i'\n )\n}\n\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\nfunction Match (text, schema, index, lastIndex) {\n const raw = text.slice(index, lastIndex)\n\n /**\n * Match#schema -> String\n *\n * Prefix (protocol) for matched string.\n **/\n this.schema = schema.toLowerCase()\n /**\n * Match#index -> Number\n *\n * First position of matched string.\n **/\n this.index = index\n /**\n * Match#lastIndex -> Number\n *\n * Next position after matched string.\n **/\n this.lastIndex = lastIndex\n /**\n * Match#raw -> String\n *\n * Matched string.\n **/\n this.raw = raw\n /**\n * Match#text -> String\n *\n * Notmalized text of matched string.\n **/\n this.text = raw\n /**\n * Match#url -> String\n *\n * Normalized url of matched string.\n **/\n this.url = raw\n}\n\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n * for example). `linkify-it` makes shure that prefix is not preceeded with\n * alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n * - _String_ - just alias to existing rule\n * - _Object_\n * - _validate_ - validator function (should return matched length on success),\n * or `RegExp`.\n * - _normalize_ - optional function to normalize text & url of matched result\n * (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n * like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\nfunction LinkifyIt (schemas, options) {\n if (!(this instanceof LinkifyIt)) {\n return new LinkifyIt(schemas, options)\n }\n\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas\n schemas = {}\n }\n }\n\n this.__opts__ = assign({}, defaultOptions, options)\n\n this.__schemas__ = assign({}, defaultSchemas, schemas)\n this.__compiled__ = {}\n\n this.__tlds__ = tlds_default\n this.__tlds_replaced__ = false\n\n this.re = {}\n\n compile(this)\n}\n\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\nLinkifyIt.prototype.add = function add (schema, definition) {\n this.__schemas__[schema] = definition\n compile(this)\n return this\n}\n\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\nLinkifyIt.prototype.set = function set (options) {\n this.__opts__ = assign(this.__opts__, options)\n return this\n}\n\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\nLinkifyIt.prototype.test = function test (text) {\n if (!text.length) { return false }\n\n let m, re\n\n // try to scan for link with schema - that's the most simple rule\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search\n re.lastIndex = 0\n while ((m = re.exec(text)) !== null) {\n if (this.testSchemaAt(text, m[2], re.lastIndex)) { return true }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n // guess schemaless links\n if (text.search(this.re.host_fuzzy_test) >= 0) {\n if (text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy) !== null) {\n return true\n }\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n // guess schemaless emails\n if (text.indexOf('@') >= 0) {\n // We can't skip this check, because this cases are possible:\n // 192.168.1.1@gmail.com, my.in@example.com\n if (text.match(this.re.email_fuzzy) !== null) { return true }\n }\n }\n\n return false\n}\n\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\nLinkifyIt.prototype.pretest = function pretest (text) {\n return this.re.pretest.test(text)\n}\n\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt (text, schema, pos) {\n // If not supported schema check requested - terminate\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0\n }\n return this.__compiled__[schema.toLowerCase()].validate(text, pos, this)\n}\n\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n * protocol-neutral links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\nLinkifyIt.prototype.match = function match (text) {\n const result = []\n const type_schemed = []\n const type_fuzzy_link = []\n const type_fuzzy_email = []\n let m, len, re\n\n function choose (a, b) {\n if (!a) { return b }\n if (!b) { return a }\n if (a.index !== b.index) { return a.index < b.index ? a : b }\n return a.lastIndex >= b.lastIndex ? a : b\n }\n\n if (!text.length) { return null }\n\n // scan for links with schema\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search\n re.lastIndex = 0\n while ((m = re.exec(text)) !== null) {\n len = this.testSchemaAt(text, m[2], re.lastIndex)\n if (len) {\n type_schemed.push({\n schema: m[2],\n index: m.index + m[1].length,\n lastIndex: m.index + m[0].length + len\n })\n }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n re = this.__opts__.fuzzyIP ? this.re.link_fuzzy_global : this.re.link_no_ip_fuzzy_global\n re.lastIndex = 0\n while ((m = re.exec(text)) !== null) {\n type_fuzzy_link.push({\n schema: '',\n index: m.index + m[1].length,\n lastIndex: m.index + m[0].length\n })\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n re = this.re.email_fuzzy_global\n re.lastIndex = 0\n while ((m = re.exec(text)) !== null) {\n type_fuzzy_email.push({\n schema: 'mailto:',\n index: m.index + m[1].length,\n lastIndex: m.index + m[0].length\n })\n }\n }\n\n const indexes = [0, 0, 0]\n let lastIndex = 0\n\n for (;;) {\n const candidates = [\n type_schemed[indexes[0]],\n type_fuzzy_email[indexes[1]],\n type_fuzzy_link[indexes[2]]\n ]\n\n const candidate = choose(choose(candidates[0], candidates[1]), candidates[2])\n\n if (!candidate) { break }\n\n if (candidate === candidates[0]) {\n indexes[0]++\n } else if (candidate === candidates[1]) {\n indexes[1]++\n } else {\n indexes[2]++\n }\n\n if (candidate.index < lastIndex) { continue }\n\n const match = new Match(text, candidate.schema, candidate.index, candidate.lastIndex)\n this.__compiled__[match.schema].normalize(match, this)\n result.push(match)\n lastIndex = candidate.lastIndex\n }\n\n if (result.length) {\n return result\n }\n\n return null\n}\n\n/**\n * LinkifyIt#matchAtStart(text) -> Match|null\n *\n * Returns fully-formed (not fuzzy) link if it starts at the beginning\n * of the string, and null otherwise.\n **/\nLinkifyIt.prototype.matchAtStart = function matchAtStart (text) {\n if (!text.length) return null\n\n const m = this.re.schema_at_start.exec(text)\n if (!m) return null\n\n const len = this.testSchemaAt(text, m[2], m[0].length)\n if (!len) return null\n\n const match = new Match(text, m[2], m.index + m[1].length, m.index + m[0].length + len)\n\n this.__compiled__[match.schema].normalize(match, this)\n return match\n}\n\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n * are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\nLinkifyIt.prototype.tlds = function tlds (list, keepOld) {\n list = Array.isArray(list) ? list : [list]\n\n if (!keepOld) {\n this.__tlds__ = list.slice()\n this.__tlds_replaced__ = true\n compile(this)\n return this\n }\n\n this.__tlds__ = this.__tlds__.concat(list)\n .sort()\n .filter(function (el, idx, arr) {\n return el !== arr[idx - 1]\n })\n .reverse()\n\n compile(this)\n return this\n}\n\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\nLinkifyIt.prototype.normalize = function normalize (match) {\n // Do minimal possible changes by default. Need to collect feedback prior\n // to move forward https://github.com/markdown-it/linkify-it/issues/1\n\n if (!match.schema) { match.url = `http://${match.url}` }\n\n if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n match.url = `mailto:${match.url}`\n }\n}\n\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\nLinkifyIt.prototype.onCompile = function onCompile () {\n}\n\nexport default LinkifyIt\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -25,7 +25,7 @@ function reFactory (opts) {
|
|
|
25
25
|
// All possible word characters (everything without punctuation, spaces & controls)
|
|
26
26
|
// Defined via punctuation & spaces to save space
|
|
27
27
|
// Should be something like \p{\L\N\S\M} (\w but without `_`)
|
|
28
|
-
re.src_pseudo_letter =
|
|
28
|
+
re.src_pseudo_letter = `(?:(?!${text_separators}|${re.src_ZPCc})${re.src_Any})`;
|
|
29
29
|
// The same as abothe but without [0-9]
|
|
30
30
|
// var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';
|
|
31
31
|
|
|
@@ -34,7 +34,9 @@ function reFactory (opts) {
|
|
|
34
34
|
'(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)';
|
|
35
35
|
|
|
36
36
|
// Prohibit any of "@/[]()" in user/pass to avoid wrong domain fetch.
|
|
37
|
-
|
|
37
|
+
// Length is capped to exclude possible rescans till the end and avoid O(n^2)
|
|
38
|
+
// DoS. No standard limit, just take something reasonable.
|
|
39
|
+
re.src_auth = `(?:(?:(?!${re.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`;
|
|
38
40
|
|
|
39
41
|
re.src_port =
|
|
40
42
|
|
|
@@ -42,23 +44,23 @@ function reFactory (opts) {
|
|
|
42
44
|
|
|
43
45
|
re.src_host_terminator =
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
`(?=$|${text_separators}|${re.src_ZPCc})` +
|
|
48
|
+
`(?!${opts['---'] ? '-(?!--)|' : '-|'}_|:\\d|\\.-|\\.(?!$|${re.src_ZPCc}))`;
|
|
47
49
|
|
|
48
50
|
re.src_path =
|
|
49
51
|
|
|
50
52
|
'(?:' +
|
|
51
53
|
'[/?#]' +
|
|
52
54
|
'(?:' +
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
`(?!${re.src_ZCc}|${text_separators}|[()[\\]{}.,"'?!\\-;]).|` +
|
|
56
|
+
`\\[(?:(?!${re.src_ZCc}|\\]).)*\\]|` +
|
|
57
|
+
`\\((?:(?!${re.src_ZCc}|[)]).)*\\)|` +
|
|
58
|
+
`\\{(?:(?!${re.src_ZCc}|[}]).)*\\}|` +
|
|
59
|
+
`\\"(?:(?!${re.src_ZCc}|["]).)+\\"|` +
|
|
60
|
+
`\\'(?:(?!${re.src_ZCc}|[']).)+\\'|` +
|
|
59
61
|
|
|
60
62
|
// allow `I'm_king` if no pair found
|
|
61
|
-
|
|
63
|
+
`\\'(?=${re.src_pseudo_letter}|[-])|` +
|
|
62
64
|
|
|
63
65
|
// google has many dots in "google search" links (#66, #81).
|
|
64
66
|
// github has ... in commit range links,
|
|
@@ -70,30 +72,32 @@ function reFactory (opts) {
|
|
|
70
72
|
// until more examples found.
|
|
71
73
|
'\\.{2,}[a-zA-Z0-9%/&]|' +
|
|
72
74
|
|
|
73
|
-
|
|
75
|
+
`\\.(?!${re.src_ZCc}|[.]|$)|` +
|
|
74
76
|
(opts['---']
|
|
75
77
|
? '\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate
|
|
76
78
|
: '\\-+|'
|
|
77
79
|
) +
|
|
78
80
|
// allow `,,,` in paths
|
|
79
|
-
|
|
81
|
+
`,(?!${re.src_ZCc}|$)|` +
|
|
80
82
|
|
|
81
83
|
// allow `;` if not followed by space-like char
|
|
82
|
-
|
|
84
|
+
`;(?!${re.src_ZCc}|$)|` +
|
|
83
85
|
|
|
84
86
|
// allow `!!!` in paths, but not at the end
|
|
85
|
-
|
|
87
|
+
`\\!+(?!${re.src_ZCc}|[!]|$)|` +
|
|
86
88
|
|
|
87
|
-
|
|
89
|
+
`\\?(?!${re.src_ZCc}|[?]|$)` +
|
|
88
90
|
')+' +
|
|
89
91
|
'|\\/' +
|
|
90
92
|
')?';
|
|
91
93
|
|
|
92
94
|
// Allow anything in markdown spec, forbid quote (") at the first position
|
|
93
95
|
// because emails enclosed in quotes are far more common
|
|
96
|
+
// Max name length capped to 64 chars (RFC 5321). This also prevents O(n^2)
|
|
97
|
+
// rescans to the end on inputs like `mailto:mailto:...`
|
|
94
98
|
re.src_email_name =
|
|
95
99
|
|
|
96
|
-
'[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]
|
|
100
|
+
'[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]{0,63}';
|
|
97
101
|
|
|
98
102
|
re.src_xn =
|
|
99
103
|
|
|
@@ -108,7 +112,7 @@ function reFactory (opts) {
|
|
|
108
112
|
'(?:' +
|
|
109
113
|
re.src_xn +
|
|
110
114
|
'|' +
|
|
111
|
-
re.src_pseudo_letter
|
|
115
|
+
`${re.src_pseudo_letter}{1,63}` +
|
|
112
116
|
')';
|
|
113
117
|
|
|
114
118
|
re.src_domain =
|
|
@@ -116,9 +120,9 @@ function reFactory (opts) {
|
|
|
116
120
|
'(?:' +
|
|
117
121
|
re.src_xn +
|
|
118
122
|
'|' +
|
|
119
|
-
|
|
123
|
+
`(?:${re.src_pseudo_letter})` +
|
|
120
124
|
'|' +
|
|
121
|
-
|
|
125
|
+
`(?:${re.src_pseudo_letter}(?:-|${re.src_pseudo_letter}){0,61}${re.src_pseudo_letter})` +
|
|
122
126
|
')';
|
|
123
127
|
|
|
124
128
|
re.src_host =
|
|
@@ -127,7 +131,7 @@ function reFactory (opts) {
|
|
|
127
131
|
// Don't need IP check, because digits are already allowed in normal domain names
|
|
128
132
|
// src_ip4 +
|
|
129
133
|
// '|' +
|
|
130
|
-
|
|
134
|
+
`(?:(?:(?:${re.src_domain})\\.)*${re.src_domain})`/* _root */ +
|
|
131
135
|
')';
|
|
132
136
|
|
|
133
137
|
re.tpl_host_fuzzy =
|
|
@@ -135,12 +139,12 @@ function reFactory (opts) {
|
|
|
135
139
|
'(?:' +
|
|
136
140
|
re.src_ip4 +
|
|
137
141
|
'|' +
|
|
138
|
-
|
|
142
|
+
`(?:(?:(?:${re.src_domain})\\.)+(?:%TLDS%))` +
|
|
139
143
|
')';
|
|
140
144
|
|
|
141
145
|
re.tpl_host_no_ip_fuzzy =
|
|
142
146
|
|
|
143
|
-
|
|
147
|
+
`(?:(?:(?:${re.src_domain})\\.)+(?:%TLDS%))`;
|
|
144
148
|
|
|
145
149
|
re.src_host_strict =
|
|
146
150
|
|
|
@@ -169,24 +173,24 @@ function reFactory (opts) {
|
|
|
169
173
|
// Rude test fuzzy links by host, for quick deny
|
|
170
174
|
re.tpl_host_fuzzy_test =
|
|
171
175
|
|
|
172
|
-
|
|
176
|
+
`localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:${re.src_ZPCc}|>|$))`;
|
|
173
177
|
|
|
174
178
|
re.tpl_email_fuzzy =
|
|
175
179
|
|
|
176
|
-
|
|
177
|
-
|
|
180
|
+
`(^|${text_separators}|"|\\(|${re.src_ZCc})` +
|
|
181
|
+
`(${re.src_email_name}@${re.tpl_host_fuzzy_strict})`;
|
|
178
182
|
|
|
179
183
|
re.tpl_link_fuzzy =
|
|
180
184
|
// Fuzzy link can't be prepended with .:/\- and non punctuation.
|
|
181
185
|
// but can start with > (markdown blockquote)
|
|
182
|
-
|
|
183
|
-
|
|
186
|
+
`(^|(?![.:/\\-_@])(?:[$+<=>^\`|\uff5c]|${re.src_ZPCc}))` +
|
|
187
|
+
`((?![$+<=>^\`|\uff5c])${re.tpl_host_port_fuzzy_strict}${re.src_path})`;
|
|
184
188
|
|
|
185
189
|
re.tpl_link_no_ip_fuzzy =
|
|
186
190
|
// Fuzzy link can't be prepended with .:/\- and non punctuation.
|
|
187
191
|
// but can start with > (markdown blockquote)
|
|
188
|
-
|
|
189
|
-
|
|
192
|
+
`(^|(?![.:/\\-_@])(?:[$+<=>^\`|\uff5c]|${re.src_ZPCc}))` +
|
|
193
|
+
`((?![$+<=>^\`|\uff5c])${re.tpl_host_port_no_ip_fuzzy_strict}${re.src_path})`;
|
|
190
194
|
|
|
191
195
|
return re
|
|
192
196
|
}
|