@openclaw/matrix 2026.7.2-beta.7 → 2026.7.34

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 (368) hide show
  1. package/README.md +1 -1
  2. package/dist/{account-selection-kqquRzCf.js → .setup/account-selection-BOQeTqax.mjs} +18 -17
  3. package/dist/{approval-handler.runtime-DSeaIsGa.js → .setup/approval-handler.runtime-CEXm9_-p.mjs} +18 -28
  4. package/dist/{approval-ids-BdJGPAJT.js → .setup/approval-ids-DdFnDB3h.mjs} +1 -1
  5. package/dist/{approval-reaction-auth-BjOpELxu.js → .setup/approval-reaction-auth-CREvd7S7.mjs} +2 -2
  6. package/dist/.setup/approval-reactions-Cltyp8nL.mjs +113 -0
  7. package/dist/.setup/async-lock-BcLS4KOc.mjs +19 -0
  8. package/dist/{channel-vj788dNZ.js → .setup/channel-an4umty1.mjs} +186 -144
  9. package/dist/{channel.runtime-CLoF2S9T.js → .setup/channel.runtime-GHcIBJ7H.mjs} +51 -45
  10. package/dist/{cli-DMqfDE-q.js → .setup/cli-B3WYmv5U.mjs} +882 -901
  11. package/dist/{cli-metadata-C7D53SND.js → .setup/cli-metadata-RUKCn0wJ.mjs} +1 -1
  12. package/dist/{client-6eRENr7k.js → .setup/client-Ct0bUHCo.mjs} +5 -5
  13. package/dist/{shared-CUMWxcMz.js → .setup/client-DFBQtzCe.mjs} +422 -179
  14. package/dist/.setup/client-bootstrap-Be8jvNle.mjs +74 -0
  15. package/dist/{config-schema-Djxw3C6b.js → .setup/config-schema-D9J_vUF6.mjs} +89 -70
  16. package/dist/.setup/credentials-BhZlA0kL.mjs +56 -0
  17. package/dist/.setup/credentials-read-CRHg6XPm.mjs +114 -0
  18. package/dist/{credentials-write.runtime-Be9zNSUw.js → .setup/credentials-write.runtime-dWuLafsk.mjs} +1 -1
  19. package/dist/{crypto-runtime-D9_6J5tZ.js → .setup/crypto-runtime-D-cZa8P0.mjs} +81 -35
  20. package/dist/.setup/crypto-state-store-B43k3z3W.mjs +352 -0
  21. package/dist/{deps-CcVJfvRM.js → .setup/deps-Dy6yreL4.mjs} +92 -25
  22. package/dist/{device-health-B4-YXtJR.js → .setup/device-health-D4LBxuPq.mjs} +1 -6
  23. package/dist/{directory-live-C8dVBiCc.js → .setup/directory-live-BTEYxMwy.mjs} +10 -9
  24. package/dist/.setup/doctor-BGnvMzOR.mjs +169 -0
  25. package/dist/.setup/doctor-contract-DNJw0fdq.mjs +246 -0
  26. package/dist/{draft-stream-CtvOXq0Z.js → .setup/draft-stream-C-_OhpE8.mjs} +1 -6
  27. package/dist/{encryption-guidance-CbEFe38F.js → .setup/encryption-guidance-CpuuwmjL.mjs} +4 -3
  28. package/dist/{env-auth-CQsYbz-p.js → .setup/env-auth-CYJL1jNl.mjs} +2 -2
  29. package/dist/{env-vars-B0NxQnPk.js → .setup/env-vars-KzaYveuy.mjs} +1 -3
  30. package/dist/{exec-approval-resolver-BCgqRtZS.js → .setup/exec-approval-resolver-f9j6staN.mjs} +1 -2
  31. package/dist/{file-sync-store-DiiFsayX.js → .setup/file-sync-store-DU0cnYAz.mjs} +30 -25
  32. package/dist/{http-client-CycYxU9-.js → .setup/http-client-C954In2D.mjs} +45 -25
  33. package/dist/{idb-persistence-B6x7dMsF.js → .setup/idb-persistence-_HKTXkVC.mjs} +76 -78
  34. package/dist/{idb-persistence-lock-DAJ49nZX.js → .setup/idb-persistence-lock-B3fZXyF_.mjs} +1 -1
  35. package/dist/.setup/legacy-crypto-inspector-Byp8LCys.mjs +42 -0
  36. package/dist/.setup/legacy-crypto-restore-YQVoK1B2.mjs +93 -0
  37. package/dist/{logger-D0GCSDQq.js → .setup/logger-DpoogOgz.mjs} +1 -1
  38. package/dist/{logging-DV-p52N0.js → .setup/logging-CgxQOJJP.mjs} +2 -9
  39. package/dist/.setup/matrix-migration.runtime-BDH5c3fN.mjs +530 -0
  40. package/dist/{media-text-BTwzADS_.js → .setup/media-text-Cib-dxkn.mjs} +1 -1
  41. package/dist/{messages-DxQJkhxs.js → .setup/messages-D4DYGHYX.mjs} +15 -67
  42. package/dist/.setup/migration-snapshot-backup-CpgYhiUp.mjs +70 -0
  43. package/dist/.setup/migration-snapshot.runtime-O8qkMVaC.mjs +2 -0
  44. package/dist/{monitor-VyWlSLwo.js → .setup/monitor-DNcW_oAN.mjs} +2525 -2361
  45. package/dist/.setup/probe.runtime-CMPh0mFk.mjs +2 -0
  46. package/dist/{profile-update-CffmyW_4.js → .setup/profile-update-DzOL3Wiw.mjs} +5 -4
  47. package/dist/{reaction-events-B00WSi98.js → .setup/reaction-events-BcvgXxHb.mjs} +14 -64
  48. package/dist/{resolve-targets-nm2L48sh.js → .setup/resolve-targets-Bq80X9Sn.mjs} +3 -3
  49. package/dist/{resolver.runtime-DS6uPaEe.js → .setup/resolver.runtime-CeBHR9-T.mjs} +1 -1
  50. package/dist/{runtime-api-D1xI_cvh.js → .setup/runtime-api-CEsWNdil.mjs} +4 -4
  51. package/dist/.setup/runtime-setter-api-DGMubGUq.mjs +3 -0
  52. package/dist/{sdk-bUytQHx7.js → .setup/sdk-He1quVAq.mjs} +592 -261
  53. package/dist/.setup/secret-contract-api-CiTJ7pd5.mjs +3 -0
  54. package/dist/{secret-contract-M3hRmGO-.js → .setup/secret-contract-phPvlNfV.mjs} +53 -28
  55. package/dist/{send-BldGYG8g.js → .setup/send-CGgl0uTn.mjs} +133 -660
  56. package/dist/{setup-bootstrap-Deleiibz.js → .setup/setup-bootstrap-DUXBC8X2.mjs} +4 -4
  57. package/dist/{setup-core-BVfBv2ai.js → .setup/setup-core-bhdcEo7v.mjs} +239 -189
  58. package/dist/.setup/setup-plugin-api-CAwZ_Bi7.mjs +43 -0
  59. package/dist/.setup/setup-plugin-api-DIFVsOs3.mjs +2 -0
  60. package/dist/{setup-surface-BBq3WeqX.js → .setup/setup-surface-05_G-MnT.mjs} +149 -92
  61. package/dist/{startup-verification-wm3_i88s.js → .setup/startup-verification-BTwIGu1J.mjs} +7 -6
  62. package/dist/.setup/storage-NGZq5zet.mjs +432 -0
  63. package/dist/{storage-paths-gUmSydsW.js → .setup/storage-paths-BWo_ZEMC.mjs} +13 -2
  64. package/dist/{subagent-hooks-dkPAF6Et.js → .setup/subagent-hooks-BSWPJEmo.mjs} +2 -2
  65. package/dist/{thread-binding-api-DRbBZlhS.js → .setup/thread-binding-api-B7UaOoKv.mjs} +1 -1
  66. package/dist/{thread-bindings-DGbl3vDW.js → .setup/thread-bindings-DqmjG2on.mjs} +8 -8
  67. package/dist/{tool-actions.runtime-uu9blSqO.js → .setup/tool-actions.runtime-CXDLk2jg.mjs} +196 -332
  68. package/dist/{verification-DYMQ1QpI.js → .setup/verification-DeWOtZJr.mjs} +4 -3
  69. package/dist/api.js +9 -9
  70. package/dist/auth-presence.js +21 -13
  71. package/dist/channel-plugin-api.js +1 -1
  72. package/dist/cli-metadata.js +1 -1
  73. package/dist/contract-api.js +2 -2
  74. package/dist/doctor-contract-api.js +99 -524
  75. package/dist/helper-api.js +4 -4
  76. package/dist/index.js +1 -1
  77. package/dist/plugin-entry.handlers.runtime.js +2 -2
  78. package/dist/runtime-api.js +8 -8
  79. package/dist/runtime-heavy-api.js +3 -0
  80. package/dist/runtime-setter-api.js +1 -1
  81. package/dist/secret-contract-api.js +1 -1
  82. package/dist/session-binding-contract-api.js +3 -3
  83. package/dist/setup-entry.js +4 -3
  84. package/dist/setup-plugin-api.js +1 -44
  85. package/dist/subagent-hooks-api.js +1 -1
  86. package/dist/thread-binding-api.js +1 -1
  87. package/dist/thread-bindings-runtime.js +1 -1
  88. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/package.json +1 -1
  89. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm.d.ts +2 -14
  90. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.cjs +384 -409
  91. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.js +224 -246
  92. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.wasm +0 -0
  93. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.wasm.d.ts +58 -59
  94. package/node_modules/markdown-it/README.md +18 -294
  95. package/node_modules/markdown-it/bin/markdown-it.mjs +2 -2
  96. package/node_modules/markdown-it/dist/browser/markdown-it.esm.min.mjs +3013 -0
  97. package/node_modules/markdown-it/dist/browser/markdown-it.esm.min.mjs.map +1 -0
  98. package/node_modules/markdown-it/dist/browser/markdown-it.umd.min.js +14 -0
  99. package/node_modules/markdown-it/dist/browser/markdown-it.umd.min.js.map +1 -0
  100. package/node_modules/markdown-it/dist/markdown-it.cjs.js +4420 -0
  101. package/node_modules/markdown-it/dist/markdown-it.cjs.js.map +1 -0
  102. package/node_modules/markdown-it/dist/markdown-it.d.cts +19 -0
  103. package/node_modules/markdown-it/dist/markdown-it.d.mts +950 -0
  104. package/node_modules/markdown-it/dist/{index.cjs.js → markdown-it.mjs} +1504 -1525
  105. package/node_modules/markdown-it/dist/markdown-it.mjs.map +1 -0
  106. package/node_modules/markdown-it/node_modules/argparse/LICENSE +1 -208
  107. package/node_modules/markdown-it/node_modules/argparse/README.md +46 -41
  108. package/node_modules/markdown-it/node_modules/argparse/lib/_colorize.js +72 -0
  109. package/node_modules/markdown-it/node_modules/argparse/lib/argparse.d.ts +292 -0
  110. package/node_modules/markdown-it/node_modules/argparse/{argparse.js → lib/argparse.js} +1142 -1029
  111. package/node_modules/markdown-it/node_modules/argparse/lib/difflib.js +190 -0
  112. package/node_modules/markdown-it/node_modules/argparse/lib/sub.js +4 -4
  113. package/node_modules/markdown-it/node_modules/argparse/lib/textwrap.js +28 -28
  114. package/node_modules/markdown-it/node_modules/argparse/package.json +18 -11
  115. package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.d.ts +8 -0
  116. package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.d.ts.map +1 -0
  117. package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.js +46 -0
  118. package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.js.map +1 -0
  119. package/node_modules/markdown-it/node_modules/entities/{lib → dist}/decode.d.ts +28 -45
  120. package/node_modules/markdown-it/node_modules/entities/dist/decode.d.ts.map +1 -0
  121. package/node_modules/markdown-it/node_modules/entities/{lib/esm → dist}/decode.js +189 -141
  122. package/node_modules/markdown-it/node_modules/entities/dist/decode.js.map +1 -0
  123. package/node_modules/markdown-it/node_modules/entities/{lib/esm → dist}/encode.d.ts +4 -2
  124. package/node_modules/markdown-it/node_modules/entities/dist/encode.d.ts.map +1 -0
  125. package/node_modules/markdown-it/node_modules/entities/dist/encode.js +90 -0
  126. package/node_modules/markdown-it/node_modules/entities/dist/encode.js.map +1 -0
  127. package/node_modules/markdown-it/node_modules/entities/{lib → dist}/escape.d.ts +15 -10
  128. package/node_modules/markdown-it/node_modules/entities/dist/escape.d.ts.map +1 -0
  129. package/node_modules/markdown-it/node_modules/entities/dist/escape.js +132 -0
  130. package/node_modules/markdown-it/node_modules/entities/dist/escape.js.map +1 -0
  131. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.d.ts +3 -0
  132. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.d.ts.map +1 -0
  133. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.js +5 -0
  134. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.js.map +1 -0
  135. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.d.ts +3 -0
  136. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.d.ts.map +1 -0
  137. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.js +5 -0
  138. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.js.map +1 -0
  139. package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.d.ts +5 -0
  140. package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.d.ts.map +1 -0
  141. package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.js +12 -0
  142. package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.js.map +1 -0
  143. package/node_modules/markdown-it/node_modules/entities/{lib/esm → dist}/index.d.ts +14 -21
  144. package/node_modules/markdown-it/node_modules/entities/dist/index.d.ts.map +1 -0
  145. package/node_modules/markdown-it/node_modules/entities/dist/index.js +91 -0
  146. package/node_modules/markdown-it/node_modules/entities/dist/index.js.map +1 -0
  147. package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.d.ts +17 -0
  148. package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.d.ts.map +1 -0
  149. package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.js +18 -0
  150. package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.js.map +1 -0
  151. package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.d.ts +7 -0
  152. package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.d.ts.map +1 -0
  153. package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.js +17 -0
  154. package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.js.map +1 -0
  155. package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.d.ts +33 -0
  156. package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.d.ts.map +1 -0
  157. package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.js +93 -0
  158. package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.js.map +1 -0
  159. package/node_modules/markdown-it/node_modules/entities/package.json +63 -70
  160. package/node_modules/markdown-it/node_modules/entities/readme.md +54 -45
  161. package/node_modules/markdown-it/node_modules/entities/src/decode-codepoint.ts +50 -0
  162. package/node_modules/markdown-it/node_modules/entities/src/decode.ts +671 -0
  163. package/node_modules/markdown-it/node_modules/entities/src/encode.ts +95 -0
  164. package/node_modules/markdown-it/node_modules/entities/src/escape.ts +160 -0
  165. package/node_modules/markdown-it/node_modules/entities/src/generated/decode-data-html.ts +7 -0
  166. package/node_modules/markdown-it/node_modules/entities/src/generated/decode-data-xml.ts +7 -0
  167. package/node_modules/markdown-it/node_modules/entities/src/generated/encode-html.ts +18 -0
  168. package/node_modules/markdown-it/node_modules/entities/src/index.ts +162 -0
  169. package/node_modules/markdown-it/node_modules/entities/src/internal/bin-trie-flags.ts +16 -0
  170. package/node_modules/markdown-it/node_modules/entities/src/internal/decode-shared.ts +18 -0
  171. package/node_modules/markdown-it/node_modules/entities/src/internal/encode-shared.ts +123 -0
  172. package/node_modules/markdown-it/node_modules/linkify-it/README.md +49 -86
  173. package/node_modules/markdown-it/node_modules/linkify-it/build/index.cjs.js +636 -825
  174. package/node_modules/markdown-it/node_modules/linkify-it/build/index.cjs.js.map +1 -0
  175. package/node_modules/markdown-it/node_modules/linkify-it/build/index.d.ts +236 -0
  176. package/node_modules/markdown-it/node_modules/linkify-it/build/index.mjs +538 -0
  177. package/node_modules/markdown-it/node_modules/linkify-it/build/index.mjs.map +1 -0
  178. package/node_modules/markdown-it/node_modules/linkify-it/package.json +23 -20
  179. package/node_modules/markdown-it/node_modules/uc.micro/README.md +18 -1
  180. package/node_modules/markdown-it/node_modules/uc.micro/build/index.cjs.js +13 -18
  181. package/node_modules/markdown-it/node_modules/uc.micro/build/index.d.ts +6 -0
  182. package/node_modules/markdown-it/node_modules/uc.micro/build/index.mjs +8 -0
  183. package/node_modules/markdown-it/node_modules/uc.micro/package.json +12 -17
  184. package/node_modules/markdown-it/package.json +47 -30
  185. package/node_modules/matrix-js-sdk/CHANGELOG.md +0 -11
  186. package/node_modules/matrix-js-sdk/package.json +1 -1
  187. package/node_modules/music-metadata/lib/common/Util.d.ts +1 -1
  188. package/node_modules/music-metadata/lib/common/Util.js +1 -7
  189. package/node_modules/music-metadata/lib/id3v2/FrameHeader.js +3 -23
  190. package/node_modules/music-metadata/lib/id3v2/FrameParser.js +2 -2
  191. package/node_modules/music-metadata/lib/id3v2/ID3v2Token.js +1 -1
  192. package/node_modules/music-metadata/lib/mp4/AtomToken.js +13 -38
  193. package/node_modules/music-metadata/lib/mpeg/MpegParser.js +1 -1
  194. package/node_modules/music-metadata/package.json +6 -6
  195. package/node_modules/typebox/build/compile/validator.d.mts +4 -1
  196. package/node_modules/typebox/build/guard/guard.d.mts +1 -1
  197. package/node_modules/typebox/build/guard/guard.mjs +2 -5
  198. package/node_modules/typebox/build/guard/string.mjs +4 -16
  199. package/node_modules/typebox/build/schema/engine/_functions.mjs +15 -34
  200. package/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
  201. package/node_modules/typebox/build/type/action/readonly_object.mjs +0 -8
  202. package/node_modules/typebox/build/typebox.d.mts +1 -1
  203. package/node_modules/typebox/build/typebox.mjs +1 -1
  204. package/node_modules/typebox/package.json +1 -1
  205. package/node_modules/typebox/readme.md +32 -29
  206. package/openclaw.plugin.json +146 -152
  207. package/package.json +31 -114
  208. package/dist/accounts-DfngqebB.js +0 -130
  209. package/dist/active-client-DXvz2gCo.js +0 -20
  210. package/dist/approval-reactions-D-BxBK_L.js +0 -202
  211. package/dist/client-Dbso3-0V.js +0 -30
  212. package/dist/client-bootstrap-XsIkHNt0.js +0 -110
  213. package/dist/create-client-BmSU-q-D.js +0 -61
  214. package/dist/credentials-W2EmwRhu.js +0 -65
  215. package/dist/credentials-read-DVmFCm7X.js +0 -77
  216. package/dist/doctor-CM8ijNpW.js +0 -64
  217. package/dist/doctor-contract-BMSJkkAE.js +0 -167
  218. package/dist/inbound-dedupe-CaBLblef.js +0 -48
  219. package/dist/probe.runtime-BuieqmS3.js +0 -3
  220. package/dist/record-shared-CWWx6fvI.js +0 -2
  221. package/dist/recovery-key-store-BNnHvXdk.js +0 -275
  222. package/dist/room-info-CAFZ3Z9J.js +0 -87
  223. package/dist/route-DY6at4qJ.js +0 -161
  224. package/dist/storage-BvAkgzvT.js +0 -685
  225. package/node_modules/markdown-it/dist/index.cjs.js.map +0 -1
  226. package/node_modules/markdown-it/dist/markdown-it.js +0 -3975
  227. package/node_modules/markdown-it/dist/markdown-it.js.map +0 -1
  228. package/node_modules/markdown-it/dist/markdown-it.min.js +0 -3
  229. package/node_modules/markdown-it/dist/markdown-it.min.js.map +0 -1
  230. package/node_modules/markdown-it/index.mjs +0 -1
  231. package/node_modules/markdown-it/lib/common/html_blocks.mjs +0 -67
  232. package/node_modules/markdown-it/lib/common/html_re.mjs +0 -25
  233. package/node_modules/markdown-it/lib/common/utils.mjs +0 -324
  234. package/node_modules/markdown-it/lib/helpers/index.mjs +0 -11
  235. package/node_modules/markdown-it/lib/helpers/parse_link_destination.mjs +0 -77
  236. package/node_modules/markdown-it/lib/helpers/parse_link_label.mjs +0 -49
  237. package/node_modules/markdown-it/lib/helpers/parse_link_title.mjs +0 -66
  238. package/node_modules/markdown-it/lib/index.mjs +0 -565
  239. package/node_modules/markdown-it/lib/parser_block.mjs +0 -134
  240. package/node_modules/markdown-it/lib/parser_core.mjs +0 -62
  241. package/node_modules/markdown-it/lib/parser_inline.mjs +0 -197
  242. package/node_modules/markdown-it/lib/presets/commonmark.mjs +0 -88
  243. package/node_modules/markdown-it/lib/presets/default.mjs +0 -47
  244. package/node_modules/markdown-it/lib/presets/zero.mjs +0 -70
  245. package/node_modules/markdown-it/lib/renderer.mjs +0 -322
  246. package/node_modules/markdown-it/lib/ruler.mjs +0 -340
  247. package/node_modules/markdown-it/lib/rules_block/blockquote.mjs +0 -209
  248. package/node_modules/markdown-it/lib/rules_block/code.mjs +0 -30
  249. package/node_modules/markdown-it/lib/rules_block/fence.mjs +0 -94
  250. package/node_modules/markdown-it/lib/rules_block/heading.mjs +0 -51
  251. package/node_modules/markdown-it/lib/rules_block/hr.mjs +0 -40
  252. package/node_modules/markdown-it/lib/rules_block/html_block.mjs +0 -80
  253. package/node_modules/markdown-it/lib/rules_block/lheading.mjs +0 -85
  254. package/node_modules/markdown-it/lib/rules_block/list.mjs +0 -331
  255. package/node_modules/markdown-it/lib/rules_block/paragraph.mjs +0 -48
  256. package/node_modules/markdown-it/lib/rules_block/reference.mjs +0 -212
  257. package/node_modules/markdown-it/lib/rules_block/state_block.mjs +0 -220
  258. package/node_modules/markdown-it/lib/rules_block/table.mjs +0 -228
  259. package/node_modules/markdown-it/lib/rules_core/block.mjs +0 -13
  260. package/node_modules/markdown-it/lib/rules_core/inline.mjs +0 -11
  261. package/node_modules/markdown-it/lib/rules_core/linkify.mjs +0 -134
  262. package/node_modules/markdown-it/lib/rules_core/normalize.mjs +0 -17
  263. package/node_modules/markdown-it/lib/rules_core/replacements.mjs +0 -101
  264. package/node_modules/markdown-it/lib/rules_core/smartquotes.mjs +0 -209
  265. package/node_modules/markdown-it/lib/rules_core/state_core.mjs +0 -17
  266. package/node_modules/markdown-it/lib/rules_core/text_join.mjs +0 -43
  267. package/node_modules/markdown-it/lib/rules_inline/autolink.mjs +0 -72
  268. package/node_modules/markdown-it/lib/rules_inline/backticks.mjs +0 -60
  269. package/node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs +0 -124
  270. package/node_modules/markdown-it/lib/rules_inline/emphasis.mjs +0 -123
  271. package/node_modules/markdown-it/lib/rules_inline/entity.mjs +0 -51
  272. package/node_modules/markdown-it/lib/rules_inline/escape.mjs +0 -83
  273. package/node_modules/markdown-it/lib/rules_inline/fragments_join.mjs +0 -38
  274. package/node_modules/markdown-it/lib/rules_inline/html_inline.mjs +0 -50
  275. package/node_modules/markdown-it/lib/rules_inline/image.mjs +0 -138
  276. package/node_modules/markdown-it/lib/rules_inline/link.mjs +0 -139
  277. package/node_modules/markdown-it/lib/rules_inline/linkify.mjs +0 -63
  278. package/node_modules/markdown-it/lib/rules_inline/newline.mjs +0 -42
  279. package/node_modules/markdown-it/lib/rules_inline/state_inline.mjs +0 -154
  280. package/node_modules/markdown-it/lib/rules_inline/strikethrough.mjs +0 -127
  281. package/node_modules/markdown-it/lib/rules_inline/text.mjs +0 -86
  282. package/node_modules/markdown-it/lib/token.mjs +0 -191
  283. package/node_modules/markdown-it/node_modules/argparse/CHANGELOG.md +0 -216
  284. package/node_modules/markdown-it/node_modules/entities/lib/decode.d.ts.map +0 -1
  285. package/node_modules/markdown-it/node_modules/entities/lib/decode.js +0 -536
  286. package/node_modules/markdown-it/node_modules/entities/lib/decode.js.map +0 -1
  287. package/node_modules/markdown-it/node_modules/entities/lib/decode_codepoint.d.ts +0 -19
  288. package/node_modules/markdown-it/node_modules/entities/lib/decode_codepoint.d.ts.map +0 -1
  289. package/node_modules/markdown-it/node_modules/entities/lib/decode_codepoint.js +0 -76
  290. package/node_modules/markdown-it/node_modules/entities/lib/decode_codepoint.js.map +0 -1
  291. package/node_modules/markdown-it/node_modules/entities/lib/encode.d.ts +0 -22
  292. package/node_modules/markdown-it/node_modules/entities/lib/encode.d.ts.map +0 -1
  293. package/node_modules/markdown-it/node_modules/entities/lib/encode.js +0 -77
  294. package/node_modules/markdown-it/node_modules/entities/lib/encode.js.map +0 -1
  295. package/node_modules/markdown-it/node_modules/entities/lib/escape.d.ts.map +0 -1
  296. package/node_modules/markdown-it/node_modules/entities/lib/escape.js +0 -122
  297. package/node_modules/markdown-it/node_modules/entities/lib/escape.js.map +0 -1
  298. package/node_modules/markdown-it/node_modules/entities/lib/esm/decode.d.ts +0 -211
  299. package/node_modules/markdown-it/node_modules/entities/lib/esm/decode.d.ts.map +0 -1
  300. package/node_modules/markdown-it/node_modules/entities/lib/esm/decode.js.map +0 -1
  301. package/node_modules/markdown-it/node_modules/entities/lib/esm/decode_codepoint.d.ts +0 -19
  302. package/node_modules/markdown-it/node_modules/entities/lib/esm/decode_codepoint.d.ts.map +0 -1
  303. package/node_modules/markdown-it/node_modules/entities/lib/esm/decode_codepoint.js +0 -71
  304. package/node_modules/markdown-it/node_modules/entities/lib/esm/decode_codepoint.js.map +0 -1
  305. package/node_modules/markdown-it/node_modules/entities/lib/esm/encode.d.ts.map +0 -1
  306. package/node_modules/markdown-it/node_modules/entities/lib/esm/encode.js +0 -69
  307. package/node_modules/markdown-it/node_modules/entities/lib/esm/encode.js.map +0 -1
  308. package/node_modules/markdown-it/node_modules/entities/lib/esm/escape.d.ts +0 -43
  309. package/node_modules/markdown-it/node_modules/entities/lib/esm/escape.d.ts.map +0 -1
  310. package/node_modules/markdown-it/node_modules/entities/lib/esm/escape.js +0 -116
  311. package/node_modules/markdown-it/node_modules/entities/lib/esm/escape.js.map +0 -1
  312. package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-html.d.ts +0 -3
  313. package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map +0 -1
  314. package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-html.js +0 -7
  315. package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-html.js.map +0 -1
  316. package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts +0 -3
  317. package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map +0 -1
  318. package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-xml.js +0 -7
  319. package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-xml.js.map +0 -1
  320. package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/encode-html.d.ts +0 -8
  321. package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/encode-html.d.ts.map +0 -1
  322. package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/encode-html.js +0 -10
  323. package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/encode-html.js.map +0 -1
  324. package/node_modules/markdown-it/node_modules/entities/lib/esm/index.d.ts.map +0 -1
  325. package/node_modules/markdown-it/node_modules/entities/lib/esm/index.js +0 -99
  326. package/node_modules/markdown-it/node_modules/entities/lib/esm/index.js.map +0 -1
  327. package/node_modules/markdown-it/node_modules/entities/lib/esm/package.json +0 -1
  328. package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-html.d.ts +0 -3
  329. package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-html.d.ts.map +0 -1
  330. package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-html.js +0 -9
  331. package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-html.js.map +0 -1
  332. package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-xml.d.ts +0 -3
  333. package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-xml.d.ts.map +0 -1
  334. package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-xml.js +0 -9
  335. package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-xml.js.map +0 -1
  336. package/node_modules/markdown-it/node_modules/entities/lib/generated/encode-html.d.ts +0 -8
  337. package/node_modules/markdown-it/node_modules/entities/lib/generated/encode-html.d.ts.map +0 -1
  338. package/node_modules/markdown-it/node_modules/entities/lib/generated/encode-html.js +0 -12
  339. package/node_modules/markdown-it/node_modules/entities/lib/generated/encode-html.js.map +0 -1
  340. package/node_modules/markdown-it/node_modules/entities/lib/index.d.ts +0 -96
  341. package/node_modules/markdown-it/node_modules/entities/lib/index.d.ts.map +0 -1
  342. package/node_modules/markdown-it/node_modules/entities/lib/index.js +0 -126
  343. package/node_modules/markdown-it/node_modules/entities/lib/index.js.map +0 -1
  344. package/node_modules/markdown-it/node_modules/linkify-it/index.mjs +0 -646
  345. package/node_modules/markdown-it/node_modules/linkify-it/lib/re.mjs +0 -193
  346. package/node_modules/markdown-it/node_modules/uc.micro/categories/Cc/regex.mjs +0 -1
  347. package/node_modules/markdown-it/node_modules/uc.micro/categories/Cf/regex.mjs +0 -1
  348. package/node_modules/markdown-it/node_modules/uc.micro/categories/P/regex.mjs +0 -1
  349. package/node_modules/markdown-it/node_modules/uc.micro/categories/S/regex.mjs +0 -1
  350. package/node_modules/markdown-it/node_modules/uc.micro/categories/Z/regex.mjs +0 -1
  351. package/node_modules/markdown-it/node_modules/uc.micro/index.mjs +0 -8
  352. package/node_modules/markdown-it/node_modules/uc.micro/properties/Any/regex.mjs +0 -1
  353. /package/dist/{account-config-BZWN9tGS.js → .setup/account-config-BZWN9tGS.mjs} +0 -0
  354. /package/dist/{backup-health-Dm_YMVFT.js → .setup/backup-health-Dm_YMVFT.mjs} +0 -0
  355. /package/dist/{config-paths-CnREYb1Y.js → .setup/config-paths-CnREYb1Y.mjs} +0 -0
  356. /package/dist/{config-secret-input.runtime-CwsP3--c.js → .setup/config-secret-input.runtime-CwsP3--c.mjs} +0 -0
  357. /package/dist/{crypto-node.runtime-6Aj_ltHQ.js → .setup/crypto-node.runtime-6Aj_ltHQ.mjs} +0 -0
  358. /package/dist/{errors-C47hvAF8.js → .setup/errors-C47hvAF8.mjs} +0 -0
  359. /package/dist/{preflight-audio.runtime-BZxxQsxY.js → .setup/preflight-audio.runtime-BZxxQsxY.mjs} +0 -0
  360. /package/dist/{reaction-common-DkrQdBSZ.js → .setup/reaction-common-DkrQdBSZ.mjs} +0 -0
  361. /package/dist/{rolldown-runtime-8H4AJuhK.js → .setup/rolldown-runtime-8H4AJuhK.mjs} +0 -0
  362. /package/dist/{runtime-6S3DNFNv.js → .setup/runtime-6S3DNFNv.mjs} +0 -0
  363. /package/dist/{runtime-BefyhPWv.js → .setup/runtime-BefyhPWv.mjs} +0 -0
  364. /package/dist/{sync-state-CWbp0QSY.js → .setup/sync-state-CWbp0QSY.mjs} +0 -0
  365. /package/dist/{target-ids-B-5aQxwn.js → .setup/target-ids-B-5aQxwn.mjs} +0 -0
  366. /package/dist/{thread-bindings-shared-CKnY4LSd.js → .setup/thread-bindings-shared-CKnY4LSd.mjs} +0 -0
  367. /package/dist/{timeout-abort-signal-DMrgRFIy.js → .setup/timeout-abort-signal-DMrgRFIy.mjs} +0 -0
  368. /package/dist/{url-validation-GRHde6lq.js → .setup/url-validation-GRHde6lq.mjs} +0 -0
@@ -0,0 +1,538 @@
1
+ import { Any, Cc, P, Z } from "uc.micro";
2
+ //#region src/rebuilder.ts
3
+ var REBuilder = class {
4
+ src_Any = Any.source;
5
+ src_Cc = Cc.source;
6
+ src_Z = Z.source;
7
+ src_P = P.source;
8
+ src_ZPCc = [
9
+ this.src_Z,
10
+ this.src_P,
11
+ this.src_Cc
12
+ ].join("|");
13
+ src_ZCc = [this.src_Z, this.src_Cc].join("|");
14
+ cache = {};
15
+ opts = {
16
+ maxLength: 1e4,
17
+ urlAuth: false,
18
+ schema_names: []
19
+ };
20
+ constructor(opts = {}) {
21
+ this.opts = {
22
+ ...this.opts,
23
+ ...opts
24
+ };
25
+ }
26
+ set(opts = {}) {
27
+ this.opts = {
28
+ ...this.opts,
29
+ ...opts
30
+ };
31
+ this.cache = {};
32
+ return this;
33
+ }
34
+ escapeRE(str) {
35
+ return str.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
36
+ }
37
+ nestedPairRE(open, close, depth = 4) {
38
+ const openRE = this.escapeRE(open);
39
+ const closeRE = this.escapeRE(close);
40
+ const atom = `(?:(?!${this.src_ZCc}|${openRE}|${closeRE}).)`;
41
+ let pair = `${openRE}${atom}{0,1000}${closeRE}`;
42
+ for (let level = 2; level <= depth; level++) pair = `${openRE}(?:${atom}|${pair}){0,1000}${closeRE}`;
43
+ return pair;
44
+ }
45
+ get_text_separators() {
46
+ return this.cache.text_separators ??= /[><\uff5c]/;
47
+ }
48
+ get_pseudo_letter() {
49
+ return this.cache.src_pseudo_letter ??= new RegExp(`(?:(?!${this.get_text_separators().source}|${this.src_ZPCc})${this.src_Any})`);
50
+ }
51
+ get_ipv4_addr() {
52
+ 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])");
53
+ }
54
+ get_ipv6_addr() {
55
+ const h16 = "[0-9A-Fa-f]{1,4}";
56
+ const ls32 = `(?:(?:${h16}:${h16})|${this.get_ipv4_addr().source})`;
57
+ 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})?::)`);
58
+ }
59
+ get_ipv6_url_host() {
60
+ return this.cache.src_ip6_host ??= new RegExp(`\\[${this.get_ipv6_addr().source}\\]`);
61
+ }
62
+ get_ipv6_mail_host() {
63
+ return this.cache.src_ipv6_mail_host ??= new RegExp(`\\[IPv6:${this.get_ipv6_addr().source}\\]`);
64
+ }
65
+ get_auth() {
66
+ return this.cache.src_auth ??= new RegExp(`(?:(?:(?!${this.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`);
67
+ }
68
+ get_port() {
69
+ 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}))?");
70
+ }
71
+ get_host_terminator() {
72
+ return this.cache.src_host_terminator ??= new RegExp(`(?=$|${this.get_text_separators().source}|${this.src_ZPCc})(?!${this.opts["---"] ? "-(?!--)|" : "-|"}_|:\\d|\\.-|\\.(?!$|${this.src_ZPCc}))`);
73
+ }
74
+ get_path_terminator() {
75
+ return this.cache.src_path_terminator ??= new RegExp(`${this.src_ZPCc}|${this.get_text_separators().source}`);
76
+ }
77
+ get_path() {
78
+ 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}}|\\/)?`);
79
+ }
80
+ get_mail_name() {
81
+ return this.cache.src_mail_name ??= /* @__PURE__ */ new RegExp("[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9](?:[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9]|[.](?=[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9])){0,63}");
82
+ }
83
+ get_xn() {
84
+ return this.cache.src_xn ??= /* @__PURE__ */ new RegExp("xn--[a-z0-9\\-]{1,59}");
85
+ }
86
+ get_tld() {
87
+ if (this.cache.tld) return this.cache.tld;
88
+ const tlds_src = [...new Set(this.opts.tlds || [])].sort().reverse().join("|");
89
+ this.cache.tld = new RegExp(`${tlds_src || "$#none#$"}|${this.get_xn().source}`);
90
+ return this.cache.tld;
91
+ }
92
+ get_domain_root() {
93
+ return this.cache.src_domain_root ??= new RegExp("(?:" + this.get_xn().source + `|${this.get_pseudo_letter().source}{1,63})`);
94
+ }
95
+ get_domain() {
96
+ 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}))`);
97
+ }
98
+ get_url_host_port() {
99
+ 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);
100
+ }
101
+ get_fuzzy_url_host_port() {
102
+ 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);
103
+ }
104
+ get_mail_host() {
105
+ 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);
106
+ }
107
+ get_fuzzy_mail_host() {
108
+ 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);
109
+ }
110
+ get_path_extra() {
111
+ return this.cache.src_path_extra ??= /* @__PURE__ */ new RegExp("");
112
+ }
113
+ get_fuzzy_mail_host_search() {
114
+ return this.cache.mail_fuzzy_host_search ??= new RegExp(`@${this.get_fuzzy_mail_host().source}`, "ig");
115
+ }
116
+ get_fuzzy_link_search() {
117
+ 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");
118
+ }
119
+ get_http_validator() {
120
+ 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");
121
+ }
122
+ get_relative_proto_validator() {
123
+ 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");
124
+ }
125
+ get_mail_name_validator() {
126
+ return this.cache.mail_name_validator ??= new RegExp(`(?:^|${this.get_text_separators().source}|"|\\(|${this.src_ZCc})(${this.get_mail_name().source})$`);
127
+ }
128
+ get_mailto_validator() {
129
+ return this.cache.mailto_validator ??= new RegExp(`${this.get_mail_name().source}@${this.get_mail_host().source}`, "iy");
130
+ }
131
+ get_schema_names() {
132
+ return this.cache.schema_names ??= new RegExp((this.opts.schema_names || []).map((name) => this.escapeRE(name)).join("|"));
133
+ }
134
+ get_schema_search() {
135
+ return this.cache.schema_search ??= new RegExp(`(^|(?!_)(?:[><\uff5c]|${this.src_ZPCc}))(${this.get_schema_names().source})`, "ig");
136
+ }
137
+ get_schema_at_start() {
138
+ return this.cache.schema_at_start ??= new RegExp(`^${this.get_schema_search().source}`, "i");
139
+ }
140
+ };
141
+ //#endregion
142
+ //#region src/linkifyit.ts
143
+ var web_schema = {
144
+ validate: (text, pos, self) => {
145
+ const re = self.re.get_http_validator();
146
+ re.lastIndex = pos;
147
+ const m = re.exec(text);
148
+ return m ? m[0].length : 0;
149
+ },
150
+ normalize: (match, self) => self.normalize(match)
151
+ };
152
+ var defaultSchemas = {
153
+ "http:": web_schema,
154
+ "https:": web_schema,
155
+ "ftp:": web_schema,
156
+ "//": {
157
+ validate: function(text, pos, self) {
158
+ const re = self.re.get_relative_proto_validator();
159
+ re.lastIndex = pos;
160
+ const m = re.exec(text);
161
+ if (m) {
162
+ if (pos >= 3 && text[pos - 3] === ":") return 0;
163
+ if (pos >= 3 && text[pos - 3] === "/") return 0;
164
+ return m[0].length;
165
+ }
166
+ return 0;
167
+ },
168
+ normalize: (match, self) => self.normalize(match)
169
+ },
170
+ "mailto:": {
171
+ validate: function(text, pos, self) {
172
+ const re = self.re.get_mailto_validator();
173
+ re.lastIndex = pos;
174
+ const m = re.exec(text);
175
+ return m ? m[0].length : 0;
176
+ },
177
+ normalize: (match, self) => self.normalize(match)
178
+ }
179
+ };
180
+ 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";
181
+ var tlds_default = "biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";
182
+ function unpackTlds() {
183
+ const result = tlds_default.split("|");
184
+ tlds_2ch.split("|").forEach((item) => {
185
+ const sep = item.indexOf(":");
186
+ const prefix = item.slice(0, sep);
187
+ for (const suffix of item.slice(sep + 1)) result.push(prefix + suffix);
188
+ });
189
+ return result;
190
+ }
191
+ var defaultOptions = {
192
+ fuzzyLink: false,
193
+ fuzzyEmail: true,
194
+ fuzzyIP: false,
195
+ "---": false,
196
+ tlds: unpackTlds(),
197
+ urlAuth: false,
198
+ maxLength: 1e4
199
+ };
200
+ /**
201
+ * Match result returned by {@link LinkifyIt.match} and
202
+ * {@link LinkifyIt.matchAtStart}.
203
+ *
204
+ * @category types
205
+ */
206
+ var Match = class {
207
+ /** Prefix (protocol) for matched string. Empty for fuzzy links. */
208
+ schema;
209
+ /** First position of matched string. */
210
+ index;
211
+ /** Next position after matched string. */
212
+ lastIndex;
213
+ /** Matched string. */
214
+ raw;
215
+ /** Normalized text of matched string. */
216
+ text;
217
+ /** Normalized URL of matched string. */
218
+ url;
219
+ constructor(text, schema, index, lastIndex) {
220
+ const raw = text.slice(index, lastIndex);
221
+ this.schema = schema.toLowerCase();
222
+ this.index = index;
223
+ this.lastIndex = lastIndex;
224
+ this.raw = raw;
225
+ this.text = raw;
226
+ this.url = raw;
227
+ }
228
+ };
229
+ /** Linkifier instance. */
230
+ var LinkifyIt = class {
231
+ __opts__;
232
+ __schemas__;
233
+ re;
234
+ /**
235
+ * Creates new linkifier instance.
236
+ *
237
+ * By default understands:
238
+ *
239
+ * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links
240
+ * - "fuzzy" emails (foo@bar.com).
241
+ *
242
+ * See {@link LinkifyConstructorOptions} for available options.
243
+ *
244
+ * @param options Recognition options.
245
+ *
246
+ * @example
247
+ * ```javascript
248
+ * import { LinkifyIt } from 'linkify-it'
249
+ *
250
+ * const linkify = new LinkifyIt({ fuzzyLink: true })
251
+ *
252
+ * linkify
253
+ * .tlds(require('tlds')) // Reload with full TLD list
254
+ * .tlds('onion', true) // Add unofficial `.onion` domain
255
+ * .add('ftp:', null) // Disable `ftp:` protocol
256
+ * .set({ fuzzyIP: true }) // Enable IPs in fuzzy links
257
+ *
258
+ * console.log(linkify.test('Site github.com!')) // true
259
+ * console.log(linkify.match('Site github.com!'))
260
+ * ```
261
+ */
262
+ constructor(options = {}) {
263
+ const { rebuilder, ...linkifyOptions } = options;
264
+ this.__opts__ = {
265
+ ...defaultOptions,
266
+ ...linkifyOptions
267
+ };
268
+ this.__schemas__ = { ...defaultSchemas };
269
+ this.re = rebuilder || new REBuilder();
270
+ this.re.set({
271
+ ...this.__opts__,
272
+ schema_names: Object.keys(this.__schemas__)
273
+ });
274
+ }
275
+ /**
276
+ * Add new rule definition.
277
+ *
278
+ * `schema` is a link prefix (usually, protocol name with `:` at the end,
279
+ * `skype:` for example). `linkify-it` makes sure that prefix is not
280
+ * preceded with alphanumeric char and symbols. Only whitespaces and
281
+ * punctuation allowed.
282
+ *
283
+ * `definition` is a rule to check tail after link prefix. To disable an
284
+ * existing rule, pass `null`.
285
+ *
286
+ * @param schema Rule name (fixed pattern prefix).
287
+ * @param definition Schema definition, or `null` to disable the rule.
288
+ *
289
+ * See [twitter mentions example](https://github.com/markdown-it/linkify-it/blob/master/examples/twitter.mjs).
290
+ */
291
+ add(schema, definition = null) {
292
+ if (!definition) delete this.__schemas__[schema];
293
+ else {
294
+ const def = {
295
+ normalize: (match, self) => self.normalize(match),
296
+ ...definition
297
+ };
298
+ this.__schemas__[schema] = def;
299
+ }
300
+ this.re.set({
301
+ ...this.__opts__,
302
+ schema_names: Object.keys(this.__schemas__)
303
+ });
304
+ return this;
305
+ }
306
+ /**
307
+ * Set recognition options for links without schema.
308
+ *
309
+ * @param options Recognition options.
310
+ */
311
+ set(options = {}) {
312
+ this.__opts__ = {
313
+ ...this.__opts__,
314
+ ...options
315
+ };
316
+ this.re.set({
317
+ ...this.__opts__,
318
+ schema_names: Object.keys(this.__schemas__)
319
+ });
320
+ return this;
321
+ }
322
+ /**
323
+ * Searches linkifiable pattern and returns `true` on success or `false` on fail.
324
+ *
325
+ * @param text Text to scan.
326
+ */
327
+ test(text) {
328
+ if (!text.length) return false;
329
+ let m, re;
330
+ re = this.re.get_schema_search();
331
+ re.lastIndex = 0;
332
+ while ((m = re.exec(text)) !== null) if (this.testSchemaAt(text, m[2], re.lastIndex)) return true;
333
+ if (this.__opts__.fuzzyLink && this.__schemas__["http:"]) {
334
+ re = this.re.get_fuzzy_link_search();
335
+ re.lastIndex = 0;
336
+ if (re.exec(text) !== null) return true;
337
+ }
338
+ if (this.__opts__.fuzzyEmail && this.__schemas__["mailto:"]) {
339
+ if (text.indexOf("@") >= 0) {
340
+ const mailHostRe = this.re.get_fuzzy_mail_host_search();
341
+ const mailNameRe = this.re.get_mail_name_validator();
342
+ mailHostRe.lastIndex = 0;
343
+ while ((m = mailHostRe.exec(text)) !== null) {
344
+ const name = text.slice(Math.max(0, m.index - 65), m.index);
345
+ if (mailNameRe.test(name)) return true;
346
+ }
347
+ }
348
+ }
349
+ return false;
350
+ }
351
+ /**
352
+ * Similar to {@link LinkifyIt.test} but checks only specific protocol tail exactly
353
+ * at given position. Returns length of found pattern (0 on fail).
354
+ *
355
+ * @param text Text to scan.
356
+ * @param schema Rule (schema) name.
357
+ * @param pos Text offset to check from.
358
+ */
359
+ testSchemaAt(text, schema, pos) {
360
+ if (!this.__schemas__[schema.toLowerCase()]) return 0;
361
+ return this.__schemas__[schema.toLowerCase()].validate(text.slice(0, pos + this.__opts__.maxLength), pos, this);
362
+ }
363
+ /**
364
+ * Returns array of found link descriptions or `null` on fail. We strongly
365
+ * recommend to use {@link LinkifyIt.test} first, for best speed.
366
+ *
367
+ * @param text Text to scan.
368
+ */
369
+ match(text) {
370
+ const result = [];
371
+ const schemaRe = this.re.get_schema_search();
372
+ let fuzzyLinkRe;
373
+ let mailHostRe;
374
+ let mailNameRe;
375
+ let fuzzyLinkCandidate;
376
+ let fuzzyEmailCandidate;
377
+ let schemaPrefix;
378
+ let schemaDone = false;
379
+ let fuzzyLinkDone = false;
380
+ let fuzzyEmailDone = false;
381
+ let pos = 0;
382
+ if (!text.length) return null;
383
+ schemaRe.lastIndex = 0;
384
+ if (this.__opts__.fuzzyLink && this.__schemas__["http:"]) {
385
+ fuzzyLinkRe = this.re.get_fuzzy_link_search();
386
+ fuzzyLinkRe.lastIndex = 0;
387
+ }
388
+ if (this.__opts__.fuzzyEmail && this.__schemas__["mailto:"]) {
389
+ mailHostRe = this.re.get_fuzzy_mail_host_search();
390
+ mailHostRe.lastIndex = 0;
391
+ mailNameRe = this.re.get_mail_name_validator();
392
+ }
393
+ for (;;) {
394
+ const scanFrom = Math.max(pos - 1, 0);
395
+ if (mailHostRe && mailNameRe && !fuzzyEmailDone && (!fuzzyEmailCandidate || fuzzyEmailCandidate.index < pos)) {
396
+ if (mailHostRe.lastIndex < scanFrom) mailHostRe.lastIndex = scanFrom;
397
+ for (;;) {
398
+ const m = mailHostRe.exec(text);
399
+ if (!m) {
400
+ fuzzyEmailDone = true;
401
+ fuzzyEmailCandidate = void 0;
402
+ break;
403
+ }
404
+ const name = mailNameRe.exec(text.slice(Math.max(0, m.index - 65), m.index));
405
+ if (!name) continue;
406
+ fuzzyEmailCandidate = {
407
+ schema: "mailto:",
408
+ index: m.index - name[1].length,
409
+ lastIndex: m.index + m[0].length
410
+ };
411
+ if (fuzzyEmailCandidate.index >= pos) break;
412
+ if (mailHostRe.lastIndex < scanFrom) mailHostRe.lastIndex = scanFrom;
413
+ }
414
+ }
415
+ if (fuzzyLinkRe && !fuzzyLinkDone && (!fuzzyLinkCandidate || fuzzyLinkCandidate.index < pos)) {
416
+ if (fuzzyLinkRe.lastIndex < scanFrom) fuzzyLinkRe.lastIndex = scanFrom;
417
+ for (;;) {
418
+ const m = fuzzyLinkRe.exec(text);
419
+ if (!m) {
420
+ fuzzyLinkDone = true;
421
+ fuzzyLinkCandidate = void 0;
422
+ break;
423
+ }
424
+ fuzzyLinkCandidate = {
425
+ schema: "",
426
+ index: m.index + m[1].length,
427
+ lastIndex: m.index + m[0].length
428
+ };
429
+ if (fuzzyLinkCandidate.index >= pos) break;
430
+ if (fuzzyLinkRe.lastIndex < scanFrom) fuzzyLinkRe.lastIndex = scanFrom;
431
+ }
432
+ }
433
+ let fuzzyCandidate = fuzzyEmailCandidate;
434
+ if (!fuzzyCandidate || fuzzyLinkCandidate && (fuzzyLinkCandidate.index < fuzzyCandidate.index || fuzzyLinkCandidate.index === fuzzyCandidate.index && fuzzyLinkCandidate.lastIndex > fuzzyCandidate.lastIndex)) fuzzyCandidate = fuzzyLinkCandidate;
435
+ let schemaCandidate;
436
+ if (!schemaDone) for (;;) {
437
+ if (!schemaPrefix) {
438
+ if (schemaRe.lastIndex < scanFrom) schemaRe.lastIndex = scanFrom;
439
+ const m = schemaRe.exec(text);
440
+ if (!m) {
441
+ schemaDone = true;
442
+ break;
443
+ }
444
+ schemaPrefix = {
445
+ schema: m[2],
446
+ index: m.index + m[1].length,
447
+ lastIndex: m.index + m[0].length
448
+ };
449
+ }
450
+ if (schemaPrefix.index < pos) {
451
+ schemaPrefix = void 0;
452
+ continue;
453
+ }
454
+ if (fuzzyCandidate && schemaPrefix.index > fuzzyCandidate.index) break;
455
+ const prefix = schemaPrefix;
456
+ schemaPrefix = void 0;
457
+ const len = this.testSchemaAt(text, prefix.schema, prefix.lastIndex);
458
+ if (len) {
459
+ schemaCandidate = {
460
+ schema: prefix.schema,
461
+ index: prefix.index,
462
+ lastIndex: prefix.lastIndex + len
463
+ };
464
+ break;
465
+ }
466
+ }
467
+ let candidate = schemaCandidate;
468
+ if (!candidate || fuzzyEmailCandidate && (fuzzyEmailCandidate.index < candidate.index || fuzzyEmailCandidate.index === candidate.index && fuzzyEmailCandidate.lastIndex > candidate.lastIndex)) candidate = fuzzyEmailCandidate;
469
+ if (!candidate || fuzzyLinkCandidate && (fuzzyLinkCandidate.index < candidate.index || fuzzyLinkCandidate.index === candidate.index && fuzzyLinkCandidate.lastIndex > candidate.lastIndex)) candidate = fuzzyLinkCandidate;
470
+ if (!candidate) break;
471
+ if (candidate === fuzzyEmailCandidate) fuzzyEmailCandidate = void 0;
472
+ else if (candidate === fuzzyLinkCandidate) fuzzyLinkCandidate = void 0;
473
+ const match = new Match(text, candidate.schema, candidate.index, candidate.lastIndex);
474
+ if (match.schema) this.__schemas__[match.schema].normalize(match, this);
475
+ else this.normalize(match);
476
+ result.push(match);
477
+ pos = candidate.lastIndex;
478
+ }
479
+ if (result.length) return result;
480
+ return null;
481
+ }
482
+ /**
483
+ * Returns fully-formed (not fuzzy) link if it starts at the beginning
484
+ * of the string, and null otherwise.
485
+ *
486
+ * @param text Text to scan.
487
+ */
488
+ matchAtStart(text) {
489
+ if (!text.length) return null;
490
+ const m = this.re.get_schema_at_start().exec(text);
491
+ if (!m) return null;
492
+ const len = this.testSchemaAt(text, m[2], m[0].length);
493
+ if (!len) return null;
494
+ const match = new Match(text, m[2], m.index + m[1].length, m.index + m[0].length + len);
495
+ this.__schemas__[match.schema].normalize(match, this);
496
+ return match;
497
+ }
498
+ /**
499
+ * Load (or merge) new TLDs list. Those are used for fuzzy links (without
500
+ * prefix) to avoid false positives. By default this algorithm is used:
501
+ *
502
+ * - hostname with any 2-letter root zones are ok.
503
+ * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф
504
+ * are ok.
505
+ * - encoded (`xn--...`) root zones are ok.
506
+ *
507
+ * If list is replaced, then exact match for 2-chars root zones will be checked.
508
+ *
509
+ * @param list List of TLDs.
510
+ * @param keepOld Merge with current list if `true` (`false` by default).
511
+ */
512
+ tlds(list, keepOld = false) {
513
+ list = Array.isArray(list) ? list : [list];
514
+ if (!keepOld) this.__opts__.tlds = list;
515
+ else this.__opts__.tlds = this.__opts__.tlds.concat(list);
516
+ this.re.set({
517
+ ...this.__opts__,
518
+ schema_names: Object.keys(this.__schemas__)
519
+ });
520
+ return this;
521
+ }
522
+ /**
523
+ * Default normalizer (if schema does not define its own).
524
+ *
525
+ * @param match Match to normalize.
526
+ */
527
+ normalize(match) {
528
+ if (!match.schema) match.url = `http://${match.url}`;
529
+ if (match.schema === "mailto:" && !/^mailto:/i.test(match.url)) match.url = `mailto:${match.url}`;
530
+ }
531
+ };
532
+ function linkifyit(options = {}) {
533
+ return new LinkifyIt(options);
534
+ }
535
+ //#endregion
536
+ export { LinkifyIt, REBuilder, linkifyit };
537
+
538
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/rebuilder.ts","../src/linkifyit.ts"],"sourcesContent":["/* eslint-disable no-return-assign, prefer-regex-literals */\n\nimport { Any, Cc, Z, P } from 'uc.micro'\n\n/**\n * @category types\n */\nexport interface REBuilderOptions {\n '---'?: boolean\n fuzzyIP?: boolean\n schema_names?: string[]\n tlds?: string[]\n urlAuth?: boolean\n maxLength?: number\n}\n\nexport class REBuilder {\n src_Any = Any.source\n src_Cc = Cc.source\n src_Z = Z.source\n src_P = P.source\n // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n src_ZPCc = [this.src_Z, this.src_P, this.src_Cc].join('|')\n // \\p{\\Z\\Cc} (white spaces + control)\n src_ZCc = [this.src_Z, this.src_Cc].join('|')\n cache: Record<string, RegExp | undefined> = {}\n opts: REBuilderOptions = { maxLength: 10000, urlAuth: false, schema_names: [] }\n\n constructor (opts: REBuilderOptions = {}) {\n this.opts = { ...this.opts, ...opts }\n }\n\n set (opts: REBuilderOptions = {}) {\n this.opts = { ...this.opts, ...opts }\n\n this.cache = {}\n return this\n }\n\n escapeRE (str: string) { return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&') }\n\n nestedPairRE (open: string, close: string, depth = 4) {\n const openRE = this.escapeRE(open)\n const closeRE = this.escapeRE(close)\n const atom = `(?:(?!${this.src_ZCc}|${openRE}|${closeRE}).)`\n\n let pair = `${openRE}${atom}{0,1000}${closeRE}`\n\n for (let level = 2; level <= depth; level++) {\n pair = `${openRE}(?:${atom}|${pair}){0,1000}${closeRE}`\n }\n\n return pair\n }\n\n // Partials\n\n get_text_separators () {\n // Experimental. List of chars, completely prohibited in links\n // because can separate it from other part of text\n return this.cache.text_separators ??= /[><\\uff5c]/\n }\n\n get_pseudo_letter () {\n return this.cache.src_pseudo_letter ??= new RegExp(\n // All possible word characters (everything without punctuation, spaces & controls)\n // Defined via punctuation & spaces to save space\n // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n `(?:(?!${this.get_text_separators().source}|${this.src_ZPCc})${this.src_Any})`\n )\n }\n\n get_ipv4_addr () {\n return this.cache.src_ip4 ??= new RegExp(\n '(?:' +\n '(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])[.]' +\n '){3}' +\n '(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])'\n )\n }\n\n get_ipv6_addr () {\n const h16 = '[0-9A-Fa-f]{1,4}'\n const ls32 = `(?:(?:${h16}:${h16})|${this.get_ipv4_addr().source})`\n\n return this.cache.src_ip6_addr ??= new RegExp(\n '(?:' +\n `(?:${h16}:){6}${ls32}|` +\n `::(?:${h16}:){5}${ls32}|` +\n `(?:${h16})?::(?:${h16}:){4}${ls32}|` +\n `(?:(?:${h16}:){0,1}${h16})?::(?:${h16}:){3}${ls32}|` +\n `(?:(?:${h16}:){0,2}${h16})?::(?:${h16}:){2}${ls32}|` +\n `(?:(?:${h16}:){0,3}${h16})?::${h16}:${ls32}|` +\n `(?:(?:${h16}:){0,4}${h16})?::${ls32}|` +\n `(?:(?:${h16}:){0,5}${h16})?::${h16}|` +\n `(?:(?:${h16}:){0,6}${h16})?::` +\n ')'\n )\n }\n\n get_ipv6_url_host () {\n return this.cache.src_ip6_host ??= new RegExp(\n `\\\\[${this.get_ipv6_addr().source}\\\\]`\n )\n }\n\n get_ipv6_mail_host () {\n return this.cache.src_ipv6_mail_host ??= new RegExp(\n `\\\\[IPv6:${this.get_ipv6_addr().source}\\\\]`\n )\n }\n\n get_auth () {\n return this.cache.src_auth ??= new RegExp(\n // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n // Length is capped to exclude possible rescans till the end and avoid O(n^2)\n // DoS. No standard limit, just take something reasonable.\n `(?:(?:(?!${this.src_ZCc}|[@/\\\\[\\\\]()]).){1,50}@)?`\n )\n }\n\n get_port () {\n return this.cache.src_port ??= new RegExp(\n '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?'\n )\n }\n\n get_host_terminator () {\n // Force greedy fetch, we should not stop earlier than host part is fully fetched.\n return this.cache.src_host_terminator ??= new RegExp(\n `(?=$|${this.get_text_separators().source}|${this.src_ZPCc})` +\n `(?!${this.opts['---'] ? '-(?!--)|' : '-|'}_|:\\\\d|\\\\.-|\\\\.(?!$|${this.src_ZPCc}))`\n )\n }\n\n get_path_terminator () {\n return this.cache.src_path_terminator ??= new RegExp(\n `${this.src_ZPCc}|${this.get_text_separators().source}`\n // `${this.src_ZCc}|${this.get_text_separators().source}|[()[\\\\]{}.,\"'?!\\\\-;]`\n )\n }\n\n get_path () {\n return this.cache.src_path ??= new RegExp(\n '(?:' +\n '[/?#]' +\n '(?:' +\n `${this.nestedPairRE('[', ']')}|` +\n `${this.nestedPairRE('(', ')')}|` +\n `${this.nestedPairRE('{', '}')}|` +\n `\\\\\"(?:(?!${this.src_ZCc}|[\"]).){1,100}\\\\\"|` +\n `\\\\'(?:(?!${this.src_ZCc}|[']).){1,100}\\\\'|` +\n\n // allow `I'm_king` if no pair found\n `\\\\'(?=${this.get_pseudo_letter().source}|[-])|` +\n\n // 1. google has many dots in \"google search\" links (#66, #81).\n // github has ... in commit range links,\n // Restrict to\n // - english\n // - percent-encoded\n // - parts of file path\n // - params separator\n // until more examples found.\n //\n // 2. Allow `..:XX` for Odysee links (optional `:`), #100\n // This may be narrowed down later via separate rule.\n '\\\\.{2,20}[:]?[a-zA-Z0-9%/&]|' +\n\n `\\\\.(?!${this.src_ZCc}|[.]|$)|` +\n (this.opts['---']\n ? '\\\\-(?!--(?:[^-]|$))(?:-{0,19})|' // `---` => long dash, terminate\n : '\\\\-{1,20}|'\n ) +\n // allow `,,,` in paths\n `,(?!${this.src_ZCc}|$)|` +\n\n // allow `;` if not followed by space-like char\n `;(?!${this.src_ZCc}|$)|` +\n\n // allow `!!!` in paths, but not at the end\n `\\\\!{1,20}(?!${this.src_ZCc}|[!]|$)|` +\n\n `\\\\?(?!${this.src_ZCc}|[?]|$)|` +\n\n this.get_path_extra().source +\n\n // allowed punctuation chars in path.\n '[\\\\\\\\/:%@#&=_~*]|' +\n\n // if no special rules matched, consume all chars except terminators.\n `(?!${this.get_path_terminator().source}).` +\n `){1,${this.opts.maxLength}}` +\n '|\\\\/' +\n ')?'\n )\n }\n\n get_mail_name () {\n return this.cache.src_mail_name ??= new RegExp(\n // RFC 5321 dot-string only (no quoted-string), max 64 ASCII characters.\n \"[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9](?:[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9]|[.](?=[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9])){0,63}\"\n )\n }\n\n get_xn () {\n return this.cache.src_xn ??= new RegExp(\n 'xn--[a-z0-9\\\\-]{1,59}'\n )\n }\n\n get_tld () {\n if (this.cache.tld) return this.cache.tld\n\n const tlds_src = [...new Set(this.opts.tlds || [])].sort().reverse()\n .join('|')\n\n this.cache.tld = new RegExp(\n `${tlds_src || '$#none#$'}|${this.get_xn().source}`\n )\n return this.cache.tld\n }\n\n get_domain_root () {\n return this.cache.src_domain_root ??= new RegExp(\n // More to read about domain names\n // http://serverfault.com/questions/638260/\n\n // Allow letters & digits (http://test1)\n '(?:' +\n this.get_xn().source +\n '|' +\n `${this.get_pseudo_letter().source}{1,63}` +\n ')'\n )\n }\n\n get_domain () {\n return this.cache.src_domain ??= new RegExp(\n '(?:' +\n this.get_xn().source +\n '|' +\n `(?:${this.get_pseudo_letter().source})` +\n '|' +\n `(?:${this.get_pseudo_letter().source}(?:-|${this.get_pseudo_letter().source}){0,61}${this.get_pseudo_letter().source})` +\n ')'\n )\n }\n\n // Host rules, depending on the type\n\n get_url_host_port () {\n return this.cache.url_host_port ??= new RegExp(\n '(?:' +\n // Don't need IP v4 check, because digits are already allowed\n // in normal domain names\n this.get_ipv6_url_host().source +\n '|' +\n `(?:(?:(?:${this.get_domain().source})\\\\.){0,10}${this.get_domain().source})`/* _root */ +\n ')' +\n this.get_port().source +\n this.get_host_terminator().source\n )\n }\n\n get_fuzzy_url_host_port () {\n // - TLD as anchor\n // - No local domains\n return this.cache.fuzzy_url_host_port ??= new RegExp(\n '(?:' +\n (this.opts.fuzzyIP ? this.get_ipv4_addr().source + '|' : '') +\n `(?:(?:(?:${this.get_domain().source})\\\\.){1,10}(?:${this.get_tld().source}))` +\n ')' +\n // No port in fuzzy links to reduce search\n this.get_host_terminator().source\n )\n }\n\n get_mail_host () {\n // Similar to normal url host, but\n // - with different ipv6 format (and without port).\n // - with reduced max subdomains\n return this.cache.src_mail_host ??= new RegExp(\n '(?:' +\n this.get_ipv6_mail_host().source +\n '|' +\n `(?:(?:(?:${this.get_domain().source})\\\\.){0,4}${this.get_domain().source})` +\n ')' +\n this.get_host_terminator().source\n )\n }\n\n get_fuzzy_mail_host () {\n // Similar to normal mail host, but without local domains.\n return this.cache.src_fuzzy_mail_host ??= new RegExp(\n '(?:' +\n this.get_ipv6_mail_host().source +\n '|' +\n `(?:(?:(?:${this.get_domain().source})[.]){1,4}${this.get_domain_root().source})` +\n ')' +\n this.get_host_terminator().source\n )\n }\n\n // Hooks\n\n get_path_extra () {\n return this.cache.src_path_extra ??= new RegExp('')\n }\n\n // \"Public\" rules\n\n get_fuzzy_mail_host_search () {\n return this.cache.mail_fuzzy_host_search ??= new RegExp(\n `@${this.get_fuzzy_mail_host().source}`,\n 'ig'\n )\n }\n\n get_fuzzy_link_search () {\n return this.cache.link_fuzzy_search ??= new RegExp(\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n `(^|(?![.:/\\\\-_@])(?:[$+<=>^\\`|\\uff5c]|${this.src_ZPCc}))` +\n `(?:(?![$+<=>^\\`|\\uff5c])${this.get_fuzzy_url_host_port().source}${this.get_path().source})`,\n 'ig'\n )\n }\n\n get_http_validator () {\n return this.cache.http_validator ??= new RegExp(\n '\\\\/\\\\/' +\n (this.opts.urlAuth ? this.get_auth().source : '') +\n this.get_url_host_port().source +\n this.get_path().source,\n 'iy'\n )\n }\n\n get_relative_proto_validator () {\n return this.cache.relative_proto_validator ??= new RegExp(\n (this.opts.urlAuth ? this.get_auth().source : '') +\n // Don't allow single-level domains, because of false positives like '//test'\n // with code comments.\n `(?:localhost|${this.get_ipv6_url_host().source}|(?:(?:${this.get_domain().source})[.]){1,10}${this.get_domain_root().source})` +\n this.get_port().source +\n this.get_host_terminator().source +\n this.get_path().source,\n\n 'iy'\n )\n }\n\n get_mail_name_validator () {\n return this.cache.mail_name_validator ??= new RegExp(\n `(?:^|${this.get_text_separators().source}|\"|\\\\(|${this.src_ZCc})` +\n `(${this.get_mail_name().source})$`\n )\n }\n\n get_mailto_validator () {\n return this.cache.mailto_validator ??= new RegExp(\n `${this.get_mail_name().source}@${this.get_mail_host().source}`,\n 'iy'\n )\n }\n\n get_schema_names () {\n return this.cache.schema_names ??= new RegExp((this.opts.schema_names || []).map(name => this.escapeRE(name)).join('|'))\n }\n\n get_schema_search () {\n return this.cache.schema_search ??= new RegExp(\n `(^|(?!_)(?:[><\\uff5c]|${this.src_ZPCc}))(${this.get_schema_names().source})`,\n 'ig'\n )\n }\n\n get_schema_at_start () {\n return this.cache.schema_at_start ??= new RegExp(\n `^${this.get_schema_search().source}`,\n 'i'\n )\n }\n}\n","import { REBuilder } from './rebuilder.ts'\n\n//\n\n/**\n * Recognition options for schemaless links.\n *\n * @category types\n */\nexport interface LinkifyOptions {\n /** Recognize URLs without `http(s)://` prefix. Default `false`. */\n fuzzyLink?: boolean\n /** Recognize emails without `mailto:` prefix. Default `true`. */\n fuzzyEmail?: boolean\n /**\n * Allow IPs in fuzzy links. Can conflict with some texts, like version\n * numbers. Default `false`.\n */\n fuzzyIP?: boolean\n /**\n * Terminate link with `---` if it is considered a long dash. Default `false`.\n */\n '---'?: boolean\n /** Allowed TLDs list for fuzzy links. Replaces the default list when set. */\n tlds?: string[]\n /** Recognize authentication data in URLs. Default `false`. */\n urlAuth?: boolean\n /** Maximum link length. Default `10000`. */\n maxLength?: number\n}\n\nexport interface LinkifyConstructorOptions extends LinkifyOptions {\n /** Custom regular expression builder. */\n rebuilder?: REBuilder\n}\n\n/**\n * Custom schema definition.\n *\n * @category types\n */\nexport interface SchemaOpts {\n /**\n * Checks text after the schema prefix. Should return matched tail length on\n * success, or `0` on fail.\n */\n validate: (text: string, pos: number, self: LinkifyIt) => number\n /**\n * Optional function to normalize `text` and `url` of matched result, for\n * example for `@twitter` mentions.\n */\n normalize?: (match: Match, self: LinkifyIt) => void\n}\n\ntype Schema = Required<SchemaOpts>\n\ninterface MatchCandidate {\n schema: string\n index: number\n lastIndex: number\n}\n\nconst web_schema: Schema = {\n validate: (text: string, pos: number, self: LinkifyIt) => {\n const re = self.re.get_http_validator()\n re.lastIndex = pos\n\n const m = re.exec(text)\n return m ? m[0].length : 0\n },\n normalize: (match: Match, self: LinkifyIt) => self.normalize(match)\n}\n\nconst defaultSchemas: Record<string, Schema> = {\n 'http:': web_schema,\n 'https:': web_schema,\n 'ftp:': web_schema,\n '//': {\n validate: function (text: string, pos: number, self: LinkifyIt) {\n const re = self.re.get_relative_proto_validator()\n re.lastIndex = pos\n\n const m = re.exec(text)\n if (m) {\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 m[0].length\n }\n return 0\n },\n normalize: (match: Match, self: LinkifyIt) => self.normalize(match)\n },\n 'mailto:': {\n validate: function (text: string, pos: number, self: LinkifyIt) {\n const re = self.re.get_mailto_validator()\n re.lastIndex = pos\n\n const m = re.exec(text)\n return m ? m[0].length : 0\n },\n normalize: (match: Match, self: LinkifyIt) => self.normalize(match)\n }\n}\n\n// List of 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\nconst 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'\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|рф'\n\nfunction unpackTlds (): string[] {\n const result = tlds_default.split('|')\n\n tlds_2ch.split('|').forEach((item) => {\n const sep = item.indexOf(':')\n\n const prefix = item.slice(0, sep)\n\n for (const suffix of item.slice(sep + 1)) {\n result.push(prefix + suffix)\n }\n })\n\n return result\n}\n\nconst defaultOptions: Required<LinkifyOptions> = {\n fuzzyLink: false,\n fuzzyEmail: true,\n fuzzyIP: false,\n '---': false,\n tlds: unpackTlds(),\n urlAuth: false,\n maxLength: 10000\n}\n\n/**\n * Match result returned by {@link LinkifyIt.match} and\n * {@link LinkifyIt.matchAtStart}.\n *\n * @category types\n */\nexport class Match {\n /** Prefix (protocol) for matched string. Empty for fuzzy links. */\n schema: string\n /** First position of matched string. */\n index: number\n /** Next position after matched string. */\n lastIndex: number\n /** Matched string. */\n raw: string\n /** Normalized text of matched string. */\n text: string\n /** Normalized URL of matched string. */\n url: string\n\n constructor (text: string, schema: string, index: number, lastIndex: number) {\n const raw = text.slice(index, lastIndex)\n\n this.schema = schema.toLowerCase()\n this.index = index\n this.lastIndex = lastIndex\n this.raw = raw\n this.text = raw\n this.url = raw\n }\n}\n\n/** Linkifier instance. */\nexport class LinkifyIt {\n __opts__: Required<LinkifyOptions>\n private __schemas__: Record<string, Schema>\n re: REBuilder\n\n /**\n * Creates new linkifier instance.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" emails (foo@bar.com).\n *\n * See {@link LinkifyConstructorOptions} for available options.\n *\n * @param options Recognition options.\n *\n * @example\n * ```javascript\n * import { LinkifyIt } from 'linkify-it'\n *\n * const linkify = new LinkifyIt({ fuzzyLink: true })\n *\n * linkify\n * .tlds(require('tlds')) // Reload with full TLD list\n * .tlds('onion', true) // Add unofficial `.onion` domain\n * .add('ftp:', null) // Disable `ftp:` protocol\n * .set({ fuzzyIP: true }) // Enable IPs in fuzzy links\n *\n * console.log(linkify.test('Site github.com!')) // true\n * console.log(linkify.match('Site github.com!'))\n * ```\n */\n constructor (options: LinkifyConstructorOptions = {}) {\n const { rebuilder, ...linkifyOptions } = options\n\n this.__opts__ = { ...defaultOptions, ...linkifyOptions }\n\n this.__schemas__ = { ...defaultSchemas }\n\n this.re = rebuilder || new REBuilder()\n this.re.set({\n ...this.__opts__,\n schema_names: Object.keys(this.__schemas__)\n })\n }\n\n /**\n * Add new rule definition.\n *\n * `schema` is a link prefix (usually, protocol name with `:` at the end,\n * `skype:` for example). `linkify-it` makes sure that prefix is not\n * preceded with alphanumeric char and symbols. Only whitespaces and\n * punctuation allowed.\n *\n * `definition` is a rule to check tail after link prefix. To disable an\n * existing rule, pass `null`.\n *\n * @param schema Rule name (fixed pattern prefix).\n * @param definition Schema definition, or `null` to disable the rule.\n *\n * See [twitter mentions example](https://github.com/markdown-it/linkify-it/blob/master/examples/twitter.mjs).\n */\n add (schema: string, definition: SchemaOpts | null = null): this {\n if (!definition) {\n delete this.__schemas__[schema]\n } else {\n const def = {\n normalize: (match: Match, self: LinkifyIt) => self.normalize(match),\n ...definition\n }\n this.__schemas__[schema] = def\n }\n\n this.re.set({\n ...this.__opts__,\n schema_names: Object.keys(this.__schemas__)\n })\n return this\n }\n\n /**\n * Set recognition options for links without schema.\n *\n * @param options Recognition options.\n */\n set (options: LinkifyOptions = {}): this {\n this.__opts__ = { ...this.__opts__, ...options }\n this.re.set({\n ...this.__opts__,\n schema_names: Object.keys(this.__schemas__)\n })\n return this\n }\n\n /**\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n *\n * @param text Text to scan.\n */\n test (text: string): boolean {\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 re = this.re.get_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 if (this.__opts__.fuzzyLink && this.__schemas__['http:']) {\n // guess schemaless links\n re = this.re.get_fuzzy_link_search()\n re.lastIndex = 0\n if (re.exec(text) !== null) { return true }\n }\n\n if (this.__opts__.fuzzyEmail && this.__schemas__['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 const mailHostRe = this.re.get_fuzzy_mail_host_search()\n const mailNameRe = this.re.get_mail_name_validator()\n mailHostRe.lastIndex = 0\n\n while ((m = mailHostRe.exec(text)) !== null) {\n const name = text.slice(Math.max(0, m.index - 65), m.index)\n if (mailNameRe.test(name)) { return true }\n }\n }\n }\n\n return false\n }\n\n /**\n * Similar to {@link LinkifyIt.test} but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n *\n * @param text Text to scan.\n * @param schema Rule (schema) name.\n * @param pos Text offset to check from.\n */\n testSchemaAt (text: string, schema: string, pos: number): number {\n // If not supported schema check requested - terminate\n if (!this.__schemas__[schema.toLowerCase()]) { return 0 }\n\n return this.__schemas__[schema.toLowerCase()].validate(\n text.slice(0, pos + this.__opts__.maxLength),\n pos,\n this\n )\n }\n\n /**\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use {@link LinkifyIt.test} first, for best speed.\n *\n * @param text Text to scan.\n */\n match (text: string): Match[] | null {\n const result: Match[] = []\n const schemaRe = this.re.get_schema_search()\n let fuzzyLinkRe: RegExp | undefined\n let mailHostRe: RegExp | undefined\n let mailNameRe: RegExp | undefined\n let fuzzyLinkCandidate: MatchCandidate | undefined\n let fuzzyEmailCandidate: MatchCandidate | undefined\n let schemaPrefix: MatchCandidate | undefined\n let schemaDone = false\n let fuzzyLinkDone = false\n let fuzzyEmailDone = false\n let pos = 0\n\n if (!text.length) { return null }\n\n schemaRe.lastIndex = 0\n\n if (this.__opts__.fuzzyLink && this.__schemas__['http:']) {\n fuzzyLinkRe = this.re.get_fuzzy_link_search()\n fuzzyLinkRe.lastIndex = 0\n }\n\n if (this.__opts__.fuzzyEmail && this.__schemas__['mailto:']) {\n mailHostRe = this.re.get_fuzzy_mail_host_search()\n mailHostRe.lastIndex = 0\n mailNameRe = this.re.get_mail_name_validator()\n }\n\n for (;;) {\n const scanFrom = Math.max(pos - 1, 0)\n\n if (mailHostRe && mailNameRe && !fuzzyEmailDone && (!fuzzyEmailCandidate || fuzzyEmailCandidate.index < pos)) {\n if (mailHostRe.lastIndex < scanFrom) { mailHostRe.lastIndex = scanFrom }\n\n for (;;) {\n const m = mailHostRe.exec(text)\n if (!m) {\n fuzzyEmailDone = true\n fuzzyEmailCandidate = undefined\n break\n }\n\n const name = mailNameRe.exec(text.slice(Math.max(0, m.index - 65), m.index))\n if (!name) { continue }\n\n fuzzyEmailCandidate = {\n schema: 'mailto:',\n index: m.index - name[1].length,\n lastIndex: m.index + m[0].length\n }\n\n if (fuzzyEmailCandidate.index >= pos) { break }\n if (mailHostRe.lastIndex < scanFrom) { mailHostRe.lastIndex = scanFrom }\n }\n }\n\n if (fuzzyLinkRe && !fuzzyLinkDone && (!fuzzyLinkCandidate || fuzzyLinkCandidate.index < pos)) {\n if (fuzzyLinkRe.lastIndex < scanFrom) { fuzzyLinkRe.lastIndex = scanFrom }\n\n for (;;) {\n const m = fuzzyLinkRe.exec(text)\n if (!m) {\n fuzzyLinkDone = true\n fuzzyLinkCandidate = undefined\n break\n }\n\n fuzzyLinkCandidate = {\n schema: '',\n index: m.index + m[1].length,\n lastIndex: m.index + m[0].length\n }\n\n if (fuzzyLinkCandidate.index >= pos) { break }\n if (fuzzyLinkRe.lastIndex < scanFrom) { fuzzyLinkRe.lastIndex = scanFrom }\n }\n }\n\n let fuzzyCandidate = fuzzyEmailCandidate\n if (!fuzzyCandidate ||\n (fuzzyLinkCandidate &&\n (fuzzyLinkCandidate.index < fuzzyCandidate.index ||\n (fuzzyLinkCandidate.index === fuzzyCandidate.index && fuzzyLinkCandidate.lastIndex > fuzzyCandidate.lastIndex)))) {\n fuzzyCandidate = fuzzyLinkCandidate\n }\n\n let schemaCandidate: MatchCandidate | undefined\n\n if (!schemaDone) {\n for (;;) {\n if (!schemaPrefix) {\n if (schemaRe.lastIndex < scanFrom) { schemaRe.lastIndex = scanFrom }\n\n const m = schemaRe.exec(text)\n if (!m) {\n schemaDone = true\n break\n }\n\n schemaPrefix = {\n schema: m[2],\n index: m.index + m[1].length,\n lastIndex: m.index + m[0].length\n }\n }\n\n if (schemaPrefix.index < pos) {\n schemaPrefix = undefined\n continue\n }\n\n if (fuzzyCandidate && schemaPrefix.index > fuzzyCandidate.index) { break }\n\n const prefix = schemaPrefix\n schemaPrefix = undefined\n\n const len = this.testSchemaAt(text, prefix.schema, prefix.lastIndex)\n if (len) {\n schemaCandidate = {\n schema: prefix.schema,\n index: prefix.index,\n lastIndex: prefix.lastIndex + len\n }\n break\n }\n }\n }\n\n let candidate = schemaCandidate\n if (!candidate ||\n (fuzzyEmailCandidate &&\n (fuzzyEmailCandidate.index < candidate.index ||\n (fuzzyEmailCandidate.index === candidate.index && fuzzyEmailCandidate.lastIndex > candidate.lastIndex)))) {\n candidate = fuzzyEmailCandidate\n }\n if (!candidate ||\n (fuzzyLinkCandidate &&\n (fuzzyLinkCandidate.index < candidate.index ||\n (fuzzyLinkCandidate.index === candidate.index && fuzzyLinkCandidate.lastIndex > candidate.lastIndex)))) {\n candidate = fuzzyLinkCandidate\n }\n\n if (!candidate) { break }\n\n if (candidate === fuzzyEmailCandidate) {\n fuzzyEmailCandidate = undefined\n } else if (candidate === fuzzyLinkCandidate) {\n fuzzyLinkCandidate = undefined\n }\n\n const match = new Match(text, candidate.schema, candidate.index, candidate.lastIndex)\n if (match.schema) {\n this.__schemas__[match.schema].normalize(match, this)\n } else {\n this.normalize(match)\n }\n result.push(match)\n pos = candidate.lastIndex\n }\n\n if (result.length) {\n return result\n }\n\n return null\n }\n\n /**\n * Returns fully-formed (not fuzzy) link if it starts at the beginning\n * of the string, and null otherwise.\n *\n * @param text Text to scan.\n */\n matchAtStart (text: string): Match | null {\n if (!text.length) return null\n\n const m = this.re.get_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.__schemas__[match.schema].normalize(match, this)\n return match\n }\n\n /**\n * Load (or merge) new TLDs list. Those are used for fuzzy links (without\n * prefix) to avoid false positives. By default this algorithm is 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 *\n * @param list List of TLDs.\n * @param keepOld Merge with current list if `true` (`false` by default).\n */\n tlds (list: string | string[], keepOld = false): this {\n list = Array.isArray(list) ? list : [list]\n\n if (!keepOld) {\n this.__opts__.tlds = list\n } else {\n this.__opts__.tlds = this.__opts__.tlds.concat(list)\n }\n\n this.re.set({\n ...this.__opts__,\n schema_names: Object.keys(this.__schemas__)\n })\n return this\n }\n\n /**\n * Default normalizer (if schema does not define its own).\n *\n * @param match Match to normalize.\n */\n normalize (match: Match): void {\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\nfunction linkifyit (options: LinkifyConstructorOptions = {}): LinkifyIt {\n return new LinkifyIt(options)\n}\n\nexport { linkifyit }\n"],"mappings":"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"}