tiny-essentials 1.28.18 → 1.29.0

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 (567) hide show
  1. package/README.md +1 -1
  2. package/changelog/1/28/19.md +24 -0
  3. package/changelog/1/29/0.md +58 -0
  4. package/dist/v1/ColorSafeStringify.min.js +1 -1
  5. package/dist/v1/TinyAdvancedRaffle.min.js +1 -1
  6. package/dist/v1/TinyAfterScrollWatcher.min.js +1 -1
  7. package/dist/v1/TinyAnalogClock.min.js +1 -1
  8. package/dist/v1/TinyArrayComparator.min.js +1 -1
  9. package/dist/v1/TinyArrayPaginator.min.js +1 -1
  10. package/dist/v1/TinyBasicsEs.min.js +1 -1
  11. package/dist/v1/TinyBrowserMonitor.min.js +1 -0
  12. package/dist/v1/TinyClassManager.min.js +1 -1
  13. package/dist/v1/TinyClipboard.min.js +1 -1
  14. package/dist/v1/TinyCloner.min.js +1 -0
  15. package/dist/v1/TinyColorConverter.min.js +1 -1
  16. package/dist/v1/TinyColorValidator.min.js +1 -1
  17. package/dist/v1/TinyCookieConsent.min.js +1 -1
  18. package/dist/v1/TinyDayNightCycle.min.js +1 -1
  19. package/dist/v1/TinyDebugger.min.js +1 -1
  20. package/dist/v1/TinyDomReadyManager.min.js +1 -1
  21. package/dist/v1/TinyDragDropDetector.min.js +1 -1
  22. package/dist/v1/TinyDragger.min.js +1 -1
  23. package/dist/v1/TinyElementObserver.min.js +1 -1
  24. package/dist/v1/TinyEssentials.min.js +1 -1
  25. package/dist/v1/TinyGamepad.min.js +1 -1
  26. package/dist/v1/TinyHtml.min.js +1 -1
  27. package/dist/v1/TinyHtmlTagRegexBuilder.min.js +1 -0
  28. package/dist/v1/TinyHttpResponseRegistry.min.js +1 -0
  29. package/dist/v1/TinyI18.min.js +1 -1
  30. package/dist/v1/TinyIframeEvents.min.js +1 -1
  31. package/dist/v1/TinyInventory.min.js +1 -1
  32. package/dist/v1/TinyInventoryTrader.min.js +1 -1
  33. package/dist/v1/TinyLevelUp.min.js +1 -1
  34. package/dist/v1/TinyLoadingScreen.min.js +1 -1
  35. package/dist/v1/TinyLocalStorage.min.js +1 -1
  36. package/dist/v1/TinyMaInSys.min.js +1 -1
  37. package/dist/v1/TinyMapCache.min.js +1 -0
  38. package/dist/v1/TinyMediaPlayer.min.js +1 -1
  39. package/dist/v1/TinyNeedBar.min.js +1 -1
  40. package/dist/v1/TinyNewWinEvents.min.js +1 -1
  41. package/dist/v1/TinyNotificationAdapter.min.js +1 -0
  42. package/dist/v1/TinyNotifications.min.js +1 -1
  43. package/dist/v1/TinyNotifyCenter.min.js +1 -1
  44. package/dist/v1/TinyOPFSFileSystem.min.js +1 -0
  45. package/dist/v1/TinyPasswordValidator.min.js +1 -0
  46. package/dist/v1/TinyPluginPackage.min.js +1 -0
  47. package/dist/v1/TinyPromiseQueue.min.js +1 -1
  48. package/dist/v1/TinyPushManager.min.js +1 -0
  49. package/dist/v1/TinyPushPayload.min.js +1 -0
  50. package/dist/v1/TinyPushRouter.min.js +1 -0
  51. package/dist/v1/TinyRadioFm.min.js +1 -1
  52. package/dist/v1/TinyRateLimiter.min.js +1 -1
  53. package/dist/v1/TinyRegexEs.min.js +1 -0
  54. package/dist/v1/TinyRouter.min.js +1 -0
  55. package/dist/v1/TinyServiceWorker.min.js +1 -0
  56. package/dist/v1/TinyServiceWorkerEngine.min.js +1 -0
  57. package/dist/v1/TinySetMapPackage.min.js +1 -0
  58. package/dist/v1/TinySimpleDice.min.js +1 -1
  59. package/dist/v1/TinySmartScroller.min.js +1 -1
  60. package/dist/v1/TinyStorageBucketFileSystem.min.js +1 -0
  61. package/dist/v1/TinyTextDiffer.min.js +1 -1
  62. package/dist/v1/TinyTextRangeEditor.min.js +1 -1
  63. package/dist/v1/TinyTextarea.min.js +1 -1
  64. package/dist/v1/TinyThrottledApi.min.js +1 -0
  65. package/dist/v1/TinyTimeout.min.js +1 -1
  66. package/dist/v1/TinyToastNotify.min.js +1 -1
  67. package/dist/v1/TinyUploadClicker.min.js +1 -1
  68. package/dist/v1/TinyUriParser.min.js +1 -0
  69. package/dist/v1/TinyVersion.min.js +1 -0
  70. package/dist/v1/TinyWebWorker.min.js +1 -0
  71. package/dist/v1/TinyWebWorkerEngine.min.js +1 -0
  72. package/dist/v1/UltraRandomMsgGen.min.js +1 -1
  73. package/dist/v1/basics/array.cjs +2 -2
  74. package/dist/v1/basics/array.d.mts +2 -0
  75. package/dist/v1/basics/array.d.mts.map +1 -1
  76. package/dist/v1/basics/array.mjs +2 -1
  77. package/dist/v1/basics/browserDetector.cjs +37 -12
  78. package/dist/v1/basics/browserDetector.d.mts +8 -0
  79. package/dist/v1/basics/browserDetector.d.mts.map +1 -1
  80. package/dist/v1/basics/browserDetector.mjs +32 -13
  81. package/dist/v1/basics/crypto.cjs +23 -0
  82. package/dist/v1/basics/crypto.d.mts +10 -0
  83. package/dist/v1/basics/crypto.d.mts.map +1 -0
  84. package/dist/v1/basics/crypto.mjs +18 -0
  85. package/dist/v1/basics/html.cjs +0 -3
  86. package/dist/v1/basics/html.d.mts.map +1 -1
  87. package/dist/v1/basics/html.mjs +0 -2
  88. package/dist/v1/basics/index.cjs +8 -1
  89. package/dist/v1/basics/index.d.mts +6 -5
  90. package/dist/v1/basics/index.d.mts.map +1 -1
  91. package/dist/v1/basics/index.mjs +6 -5
  92. package/dist/v1/basics/objChecker.cjs +88 -0
  93. package/dist/v1/basics/objChecker.d.mts +26 -0
  94. package/dist/v1/basics/objChecker.d.mts.map +1 -1
  95. package/dist/v1/basics/objChecker.mjs +74 -0
  96. package/dist/v1/basics/objFilter.cjs +234 -93
  97. package/dist/v1/basics/objFilter.d.mts +96 -22
  98. package/dist/v1/basics/objFilter.d.mts.map +1 -1
  99. package/dist/v1/basics/objFilter.mjs +216 -92
  100. package/dist/v1/basics/promiseUtils.cjs +48 -12
  101. package/dist/v1/basics/promiseUtils.d.mts +45 -12
  102. package/dist/v1/basics/promiseUtils.d.mts.map +1 -1
  103. package/dist/v1/basics/promiseUtils.mjs +47 -12
  104. package/dist/v1/basics/text.cjs +0 -12
  105. package/dist/v1/basics/text.d.mts +0 -10
  106. package/dist/v1/basics/text.d.mts.map +1 -1
  107. package/dist/v1/basics/text.mjs +0 -10
  108. package/dist/v1/css/TinyCookieConsent.min.css +1 -0
  109. package/dist/v1/css/TinyCookieConsent.min.css.map +1 -0
  110. package/dist/v1/css/TinyDraggerExample.min.css +1 -0
  111. package/dist/v1/css/TinyDraggerExample.min.css.map +1 -0
  112. package/dist/v1/css/TinyLoadingScreen.min.css +1 -0
  113. package/dist/v1/css/TinyLoadingScreen.min.css.map +1 -0
  114. package/dist/v1/css/TinyNotify.min.css +1 -0
  115. package/dist/v1/css/TinyNotify.min.css.map +1 -0
  116. package/dist/v1/css/aiMarker.min.css +1 -0
  117. package/dist/v1/css/aiMarker.min.css.map +1 -0
  118. package/dist/v1/index.cjs +88 -3
  119. package/dist/v1/index.d.mts +31 -6
  120. package/dist/v1/index.d.mts.map +1 -1
  121. package/dist/v1/index.mjs +32 -7
  122. package/dist/v1/jsdoc/EventEmitter.cjs +4 -0
  123. package/dist/v1/jsdoc/EventEmitter.d.mts +33 -0
  124. package/dist/v1/jsdoc/EventEmitter.d.mts.map +1 -0
  125. package/dist/v1/jsdoc/EventEmitter.mjs +18 -0
  126. package/dist/v1/libs/array/TinyArrayComparator.cjs +240 -25
  127. package/dist/v1/libs/array/TinyArrayComparator.d.mts +130 -22
  128. package/dist/v1/libs/array/TinyArrayComparator.d.mts.map +1 -1
  129. package/dist/v1/libs/array/TinyArrayComparator.mjs +210 -24
  130. package/dist/v1/libs/fs/constants.cjs +74 -0
  131. package/dist/v1/libs/fs/constants.d.mts +22 -0
  132. package/dist/v1/libs/fs/constants.d.mts.map +1 -0
  133. package/dist/v1/libs/fs/constants.mjs +53 -0
  134. package/dist/v1/libs/fs/encoding.cjs +118 -0
  135. package/dist/v1/libs/fs/encoding.d.mts +50 -0
  136. package/dist/v1/libs/fs/encoding.d.mts.map +1 -0
  137. package/dist/v1/libs/fs/encoding.mjs +102 -0
  138. package/dist/v1/libs/fs/error.cjs +188 -0
  139. package/dist/v1/libs/fs/error.d.mts +105 -0
  140. package/dist/v1/libs/fs/error.d.mts.map +1 -0
  141. package/dist/v1/libs/fs/error.mjs +158 -0
  142. package/dist/v1/libs/fs/handle.cjs +121 -0
  143. package/dist/v1/libs/fs/handle.d.mts +56 -0
  144. package/dist/v1/libs/fs/handle.d.mts.map +1 -0
  145. package/dist/v1/libs/fs/handle.mjs +100 -0
  146. package/dist/v1/libs/fs/index.cjs +700 -0
  147. package/dist/v1/libs/fs/index.d.mts +377 -0
  148. package/dist/v1/libs/fs/index.d.mts.map +1 -0
  149. package/dist/v1/libs/fs/index.mjs +630 -0
  150. package/dist/v1/libs/fs/path.cjs +234 -0
  151. package/dist/v1/libs/fs/path.d.mts +176 -0
  152. package/dist/v1/libs/fs/path.d.mts.map +1 -0
  153. package/dist/v1/libs/fs/path.mjs +197 -0
  154. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.cjs +202 -0
  155. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts +121 -0
  156. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts.map +1 -0
  157. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.mjs +172 -0
  158. package/dist/v1/libs/fs/plugins/OPFS/index.cjs +334 -0
  159. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts +98 -0
  160. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts.map +1 -0
  161. package/dist/v1/libs/fs/plugins/OPFS/index.mjs +300 -0
  162. package/dist/v1/libs/fs/stats.cjs +245 -0
  163. package/dist/v1/libs/fs/stats.d.mts +226 -0
  164. package/dist/v1/libs/fs/stats.d.mts.map +1 -0
  165. package/dist/v1/libs/fs/stats.mjs +197 -0
  166. package/dist/v1/libs/html/events/TinyIframeEvents.cjs +10 -1
  167. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts +9 -2
  168. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts.map +1 -1
  169. package/dist/v1/libs/html/events/TinyIframeEvents.mjs +8 -1
  170. package/dist/v1/libs/html/events/TinyNewWinEvents.cjs +14 -3
  171. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts +21 -5
  172. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts.map +1 -1
  173. package/dist/v1/libs/html/events/TinyNewWinEvents.mjs +12 -3
  174. package/dist/v1/libs/html/scroll/TinySmartScroller.cjs +13 -1
  175. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts +29 -2
  176. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts.map +1 -1
  177. package/dist/v1/libs/html/scroll/TinySmartScroller.mjs +11 -1
  178. package/dist/v1/libs/math/TinyAdvancedRaffle.cjs +13 -1
  179. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts +32 -2
  180. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts.map +1 -1
  181. package/dist/v1/libs/math/TinyAdvancedRaffle.mjs +11 -1
  182. package/dist/v1/libs/math/TinyTimeout.cjs +0 -14
  183. package/dist/v1/libs/math/TinyTimeout.d.mts +0 -11
  184. package/dist/v1/libs/math/TinyTimeout.d.mts.map +1 -1
  185. package/dist/v1/libs/math/TinyTimeout.mjs +0 -13
  186. package/dist/v1/libs/media/TinyMediaPlayer/index.cjs +25 -1
  187. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts +35 -2
  188. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts.map +1 -1
  189. package/dist/v1/libs/media/TinyMediaPlayer/index.mjs +23 -1
  190. package/dist/v1/libs/media/TinyMediaPlayer.cjs +2 -2
  191. package/dist/v1/libs/media/TinyMediaPlayer.d.mts +2 -2
  192. package/dist/v1/libs/media/TinyMediaPlayer.d.mts.map +1 -1
  193. package/dist/v1/libs/media/TinyMediaPlayer.mjs +2 -2
  194. package/dist/v1/libs/media/TinyRadioFm.cjs +19 -1
  195. package/dist/v1/libs/media/TinyRadioFm.d.mts +78 -2
  196. package/dist/v1/libs/media/TinyRadioFm.d.mts.map +1 -1
  197. package/dist/v1/libs/media/TinyRadioFm.mjs +17 -1
  198. package/dist/v1/libs/plugin/TinyPlugin.cjs +1630 -0
  199. package/dist/v1/libs/plugin/TinyPlugin.d.mts +753 -0
  200. package/dist/v1/libs/plugin/TinyPlugin.d.mts.map +1 -0
  201. package/dist/v1/libs/plugin/TinyPlugin.mjs +1376 -0
  202. package/dist/v1/libs/plugin/TinyVersion.cjs +204 -0
  203. package/dist/v1/libs/plugin/TinyVersion.d.mts +70 -0
  204. package/dist/v1/libs/plugin/TinyVersion.d.mts.map +1 -0
  205. package/dist/v1/libs/plugin/TinyVersion.mjs +179 -0
  206. package/dist/v1/libs/router/TinyRouter.cjs +661 -0
  207. package/dist/v1/libs/router/TinyRouter.d.mts +320 -0
  208. package/dist/v1/libs/router/TinyRouter.d.mts.map +1 -0
  209. package/dist/v1/libs/router/TinyRouter.mjs +572 -0
  210. package/dist/v1/libs/storage/TinyLocalStorage.cjs +20 -1
  211. package/dist/v1/libs/storage/TinyLocalStorage.d.mts +64 -2
  212. package/dist/v1/libs/storage/TinyLocalStorage.d.mts.map +1 -1
  213. package/dist/v1/libs/storage/TinyLocalStorage.mjs +18 -1
  214. package/dist/v1/libs/storage/TinyMapCache.cjs +373 -0
  215. package/dist/v1/libs/storage/TinyMapCache.d.mts +274 -0
  216. package/dist/v1/libs/storage/TinyMapCache.d.mts.map +1 -0
  217. package/dist/v1/libs/storage/TinyMapCache.mjs +333 -0
  218. package/dist/v1/libs/storage/TinySetMapDatabase.cjs +1167 -0
  219. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts +603 -0
  220. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts.map +1 -0
  221. package/dist/v1/libs/storage/TinySetMapDatabase.mjs +1059 -0
  222. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.cjs +126 -0
  223. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts +132 -0
  224. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts.map +1 -0
  225. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.mjs +109 -0
  226. package/dist/v1/libs/sw/browser/TinyPushManager.cjs +310 -0
  227. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts +168 -0
  228. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts.map +1 -0
  229. package/dist/v1/libs/sw/browser/TinyPushManager.mjs +264 -0
  230. package/dist/v1/libs/sw/browser/TinyServiceWorker.cjs +1060 -0
  231. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts +348 -0
  232. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts.map +1 -0
  233. package/dist/v1/libs/sw/browser/TinyServiceWorker.mjs +933 -0
  234. package/dist/v1/libs/sw/browser/plugins/TabManager.cjs +315 -0
  235. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts +178 -0
  236. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts.map +1 -0
  237. package/dist/v1/libs/sw/browser/plugins/TabManager.mjs +274 -0
  238. package/dist/v1/libs/sw/browser/utils.cjs +28 -0
  239. package/dist/v1/libs/sw/browser/utils.d.mts +8 -0
  240. package/dist/v1/libs/sw/browser/utils.d.mts.map +1 -0
  241. package/dist/v1/libs/sw/browser/utils.mjs +21 -0
  242. package/dist/v1/libs/sw/service/TinyPushRouter.cjs +222 -0
  243. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts +138 -0
  244. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts.map +1 -0
  245. package/dist/v1/libs/sw/service/TinyPushRouter.mjs +201 -0
  246. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.cjs +3016 -0
  247. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts +993 -0
  248. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts.map +1 -0
  249. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.mjs +2558 -0
  250. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.cjs +88 -0
  251. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts +32 -0
  252. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts.map +1 -0
  253. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.mjs +69 -0
  254. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.cjs +112 -0
  255. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts +31 -0
  256. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts.map +1 -0
  257. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.mjs +91 -0
  258. package/dist/v1/libs/sw/service/plugins/Ping.cjs +32 -0
  259. package/dist/v1/libs/sw/service/plugins/Ping.d.mts +9 -0
  260. package/dist/v1/libs/sw/service/plugins/Ping.d.mts.map +1 -0
  261. package/dist/v1/libs/sw/service/plugins/Ping.mjs +25 -0
  262. package/dist/v1/libs/sw/service/plugins/TabManager.cjs +457 -0
  263. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts +91 -0
  264. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts.map +1 -0
  265. package/dist/v1/libs/sw/service/plugins/TabManager.mjs +372 -0
  266. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.cjs +180 -0
  267. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts +28 -0
  268. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts.map +1 -0
  269. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.mjs +148 -0
  270. package/dist/v1/libs/sw/service/shared/TinyPushPayload.cjs +199 -0
  271. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts +80 -0
  272. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts.map +1 -0
  273. package/dist/v1/libs/sw/service/shared/TinyPushPayload.mjs +174 -0
  274. package/dist/v1/libs/sw/utils.cjs +57 -0
  275. package/dist/v1/libs/sw/utils.d.mts +173 -0
  276. package/dist/v1/libs/sw/utils.d.mts.map +1 -0
  277. package/dist/v1/libs/sw/utils.mjs +50 -0
  278. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.cjs +57 -0
  279. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts +39 -0
  280. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts.map +1 -0
  281. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.mjs +48 -0
  282. package/dist/v1/libs/text/TinyI18/Browser.cjs +64 -0
  283. package/dist/v1/libs/text/TinyI18/Browser.d.mts +47 -0
  284. package/dist/v1/libs/text/TinyI18/Browser.d.mts.map +1 -0
  285. package/dist/v1/libs/text/TinyI18/Browser.mjs +57 -0
  286. package/dist/v1/libs/text/TinyI18/Node.cjs +49 -0
  287. package/dist/v1/libs/text/TinyI18/Node.d.mts +38 -0
  288. package/dist/v1/libs/text/TinyI18/Node.d.mts.map +1 -0
  289. package/dist/v1/libs/text/TinyI18/Node.mjs +43 -0
  290. package/dist/v1/libs/text/TinyI18/browser-utils.cjs +17 -0
  291. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts +8 -0
  292. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts.map +1 -0
  293. package/dist/v1/libs/text/TinyI18/browser-utils.mjs +13 -0
  294. package/dist/v1/libs/text/{TinyI18.cjs → TinyI18/index.cjs} +205 -104
  295. package/dist/v1/libs/text/{TinyI18.d.mts → TinyI18/index.d.mts} +141 -92
  296. package/dist/v1/libs/text/TinyI18/index.d.mts.map +1 -0
  297. package/dist/v1/libs/text/{TinyI18.mjs → TinyI18/index.mjs} +195 -101
  298. package/dist/v1/libs/tools/TinyBrowserMonitor.cjs +1088 -0
  299. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts +621 -0
  300. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts.map +1 -0
  301. package/dist/v1/libs/tools/TinyBrowserMonitor.mjs +940 -0
  302. package/dist/v1/libs/tools/TinyDebugger.cjs +180 -19
  303. package/dist/v1/libs/tools/TinyDebugger.d.mts +220 -24
  304. package/dist/v1/libs/tools/TinyDebugger.d.mts.map +1 -1
  305. package/dist/v1/libs/tools/TinyDebugger.mjs +161 -19
  306. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.cjs +256 -0
  307. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts +125 -0
  308. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts.map +1 -0
  309. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.mjs +223 -0
  310. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.cjs +23 -0
  311. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts +17 -0
  312. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts.map +1 -0
  313. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.mjs +19 -0
  314. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.cjs +23 -0
  315. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts +17 -0
  316. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts.map +1 -0
  317. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.mjs +19 -0
  318. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.cjs +390 -0
  319. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts +9 -0
  320. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts.map +1 -0
  321. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.mjs +387 -0
  322. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.cjs +2 -0
  323. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts +27 -0
  324. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts.map +1 -0
  325. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.mjs +12 -0
  326. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/LICENSE +53 -0
  327. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.cjs +405 -0
  328. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts +34 -0
  329. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts.map +1 -0
  330. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.mjs +342 -0
  331. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.cjs +23 -0
  332. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts +17 -0
  333. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts.map +1 -0
  334. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.mjs +19 -0
  335. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.cjs +327 -0
  336. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts +9 -0
  337. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts.map +1 -0
  338. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.mjs +324 -0
  339. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.cjs +268 -0
  340. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts +107 -0
  341. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts.map +1 -0
  342. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.mjs +238 -0
  343. package/dist/v1/libs/tools/TinyPasswordValidator.cjs +491 -0
  344. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts +246 -0
  345. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts.map +1 -0
  346. package/dist/v1/libs/tools/TinyPasswordValidator.mjs +434 -0
  347. package/dist/v1/libs/tools/TinyPkgExportValidator.cjs +48 -0
  348. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts +14 -0
  349. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts.map +1 -1
  350. package/dist/v1/libs/tools/TinyPkgExportValidator.mjs +44 -0
  351. package/dist/v1/libs/tools/TinySiteMap.cjs +1029 -0
  352. package/dist/v1/libs/tools/TinySiteMap.d.mts +429 -0
  353. package/dist/v1/libs/tools/TinySiteMap.d.mts.map +1 -0
  354. package/dist/v1/libs/tools/TinySiteMap.mjs +910 -0
  355. package/dist/v1/libs/tools/TinySiteMapStream.cjs +121 -0
  356. package/dist/v1/libs/tools/TinySiteMapStream.d.mts +51 -0
  357. package/dist/v1/libs/tools/TinySiteMapStream.d.mts.map +1 -0
  358. package/dist/v1/libs/tools/TinySiteMapStream.mjs +85 -0
  359. package/dist/v1/libs/tools/TinyURLSecurityVerifier.cjs +444 -0
  360. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts +217 -0
  361. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts.map +1 -0
  362. package/dist/v1/libs/tools/TinyURLSecurityVerifier.mjs +394 -0
  363. package/dist/v1/libs/tools/TinyUriParser/BlueSky.cjs +613 -0
  364. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts +152 -0
  365. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts.map +1 -0
  366. package/dist/v1/libs/tools/TinyUriParser/BlueSky.mjs +527 -0
  367. package/dist/v1/libs/tools/TinyUriParser/Discord.cjs +1119 -0
  368. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts +306 -0
  369. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts.map +1 -0
  370. package/dist/v1/libs/tools/TinyUriParser/Discord.mjs +968 -0
  371. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.cjs +469 -0
  372. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts +80 -0
  373. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts.map +1 -0
  374. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.mjs +379 -0
  375. package/dist/v1/libs/tools/TinyUriParser.cjs +217 -0
  376. package/dist/v1/libs/tools/TinyUriParser.d.mts +109 -0
  377. package/dist/v1/libs/tools/TinyUriParser.d.mts.map +1 -0
  378. package/dist/v1/libs/tools/TinyUriParser.mjs +183 -0
  379. package/dist/v1/libs/utils/TinyCloner.cjs +466 -0
  380. package/dist/v1/libs/utils/TinyCloner.d.mts +221 -0
  381. package/dist/v1/libs/utils/TinyCloner.d.mts.map +1 -0
  382. package/dist/v1/libs/utils/TinyCloner.mjs +416 -0
  383. package/dist/v1/libs/utils/TinyPromiseQueue.cjs +1 -1
  384. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts +2 -2
  385. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts.map +1 -1
  386. package/dist/v1/libs/utils/TinyPromiseQueue.mjs +1 -1
  387. package/dist/v1/libs/utils/TinyThrottledApi.cjs +333 -0
  388. package/dist/v1/libs/utils/TinyThrottledApi.d.mts +163 -0
  389. package/dist/v1/libs/utils/TinyThrottledApi.d.mts.map +1 -0
  390. package/dist/v1/libs/utils/TinyThrottledApi.mjs +294 -0
  391. package/dist/v1/libs/worker/browser/TinyWebWorker.cjs +342 -0
  392. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts +97 -0
  393. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts.map +1 -0
  394. package/dist/v1/libs/worker/browser/TinyWebWorker.mjs +305 -0
  395. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.cjs +346 -0
  396. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts +127 -0
  397. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts.map +1 -0
  398. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.mjs +304 -0
  399. package/dist/v1/regexp/Email.cjs +185 -0
  400. package/dist/v1/regexp/Email.d.mts +73 -0
  401. package/dist/v1/regexp/Email.d.mts.map +1 -0
  402. package/dist/v1/regexp/Email.mjs +153 -0
  403. package/dist/v1/regexp/Glob.cjs +293 -0
  404. package/dist/v1/regexp/Glob.d.mts +45 -0
  405. package/dist/v1/regexp/Glob.d.mts.map +1 -0
  406. package/dist/v1/regexp/Glob.mjs +260 -0
  407. package/dist/v1/regexp/Ipv4.cjs +57 -0
  408. package/dist/v1/regexp/Ipv4.d.mts +29 -0
  409. package/dist/v1/regexp/Ipv4.d.mts.map +1 -0
  410. package/dist/v1/regexp/Ipv4.mjs +45 -0
  411. package/dist/v1/regexp/Ipv6.cjs +67 -0
  412. package/dist/v1/regexp/Ipv6.d.mts +29 -0
  413. package/dist/v1/regexp/Ipv6.d.mts.map +1 -0
  414. package/dist/v1/regexp/Ipv6.mjs +54 -0
  415. package/dist/v1/regexp/SegmentExtractor.cjs +145 -0
  416. package/dist/v1/regexp/SegmentExtractor.d.mts +91 -0
  417. package/dist/v1/regexp/SegmentExtractor.d.mts.map +1 -0
  418. package/dist/v1/regexp/SegmentExtractor.mjs +116 -0
  419. package/dist/v1/regexp/UrlDetector.cjs +125 -0
  420. package/dist/v1/regexp/UrlDetector.d.mts +67 -0
  421. package/dist/v1/regexp/UrlDetector.d.mts.map +1 -0
  422. package/dist/v1/regexp/UrlDetector.mjs +102 -0
  423. package/dist/v1/regexp/Username/index.cjs +233 -0
  424. package/dist/v1/regexp/Username/index.d.mts +77 -0
  425. package/dist/v1/regexp/Username/index.d.mts.map +1 -0
  426. package/dist/v1/regexp/Username/index.mjs +199 -0
  427. package/dist/v1/regexp/Username/jsDoc.cjs +2 -0
  428. package/dist/v1/regexp/Username/jsDoc.d.mts +57 -0
  429. package/dist/v1/regexp/Username/jsDoc.d.mts.map +1 -0
  430. package/dist/v1/regexp/Username/jsDoc.mjs +18 -0
  431. package/dist/v1/regexp/Username/templates/BlueSky.cjs +56 -0
  432. package/dist/v1/regexp/Username/templates/BlueSky.d.mts +35 -0
  433. package/dist/v1/regexp/Username/templates/BlueSky.d.mts.map +1 -0
  434. package/dist/v1/regexp/Username/templates/BlueSky.mjs +52 -0
  435. package/dist/v1/regexp/Username/templates/Discord.cjs +505 -0
  436. package/dist/v1/regexp/Username/templates/Discord.d.mts +209 -0
  437. package/dist/v1/regexp/Username/templates/Discord.d.mts.map +1 -0
  438. package/dist/v1/regexp/Username/templates/Discord.mjs +458 -0
  439. package/dist/v1/regexp/Username/templates/MatrixProtocol.cjs +143 -0
  440. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts +70 -0
  441. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts.map +1 -0
  442. package/dist/v1/regexp/Username/templates/MatrixProtocol.mjs +128 -0
  443. package/dist/v1/regexp/Username/templates/deprecated/Discord.cjs +24 -0
  444. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts +17 -0
  445. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts.map +1 -0
  446. package/dist/v1/regexp/Username/templates/deprecated/Discord.mjs +20 -0
  447. package/dist/v1/regexp/Username/templates/index.cjs +11 -0
  448. package/dist/v1/regexp/Username/templates/index.d.mts +5 -0
  449. package/dist/v1/regexp/Username/templates/index.d.mts.map +1 -0
  450. package/dist/v1/regexp/Username/templates/index.mjs +4 -0
  451. package/dist/v1/regexp/index.cjs +41 -0
  452. package/dist/v1/regexp/index.d.mts +9 -0
  453. package/dist/v1/regexp/index.d.mts.map +1 -0
  454. package/dist/v1/regexp/index.mjs +8 -0
  455. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.cjs +64 -0
  456. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts +11 -0
  457. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts.map +1 -0
  458. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.mjs +51 -0
  459. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.cjs +66 -0
  460. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts +11 -0
  461. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts.map +1 -0
  462. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.mjs +51 -0
  463. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.cjs +39 -0
  464. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts +11 -0
  465. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts.map +1 -0
  466. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.mjs +28 -0
  467. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.cjs +494 -0
  468. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts +142 -0
  469. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts.map +1 -0
  470. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.mjs +445 -0
  471. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.cjs +725 -0
  472. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts +293 -0
  473. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts.map +1 -0
  474. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.mjs +614 -0
  475. package/dist/v1/webTemplates/bootstrap/5.3/scss/input/Placeholder-Colors-Fix.scss +64 -0
  476. package/dist/v1/webTemplates/bootstrap/5.3/scss/spacing/Spacing-Plus.scss +31 -0
  477. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.cjs +135 -0
  478. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts +83 -0
  479. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts.map +1 -0
  480. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.mjs +120 -0
  481. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.cjs +127 -0
  482. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts +95 -0
  483. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts.map +1 -0
  484. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.mjs +109 -0
  485. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.cjs +83 -0
  486. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts +46 -0
  487. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts.map +1 -0
  488. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.mjs +71 -0
  489. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.cjs +493 -0
  490. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts +67 -0
  491. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts.map +1 -0
  492. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.mjs +399 -0
  493. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.cjs +35 -0
  494. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts +6 -0
  495. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts.map +1 -0
  496. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.mjs +29 -0
  497. package/docs/info/RegExp.md +74 -0
  498. package/docs/v1/Exports.md +111 -0
  499. package/docs/v1/README.md +117 -13
  500. package/docs/v1/basics/asyncReplace.md +2 -0
  501. package/docs/v1/basics/browserDetector.md +28 -11
  502. package/docs/v1/basics/crypto.md +85 -0
  503. package/docs/v1/basics/deprecated/html.md +2 -0
  504. package/docs/v1/basics/deprecated/objFilter.md +2 -0
  505. package/docs/v1/basics/html.md +2 -0
  506. package/docs/v1/basics/objChecker.md +55 -0
  507. package/docs/v1/basics/objFilter.md +57 -86
  508. package/docs/v1/basics/promiseUtils.md +12 -3
  509. package/docs/v1/basics/text.md +0 -1
  510. package/docs/v1/libs/array/TinyArrayComparator.md +50 -39
  511. package/docs/v1/libs/fs/TinyFS.md +752 -0
  512. package/docs/v1/libs/fs/TinyOPFSFileSystem.md +495 -0
  513. package/docs/v1/libs/fs/TinyStorageBucketFileSystem.md +407 -0
  514. package/docs/v1/libs/plugin/TinyPlugin.md +441 -0
  515. package/docs/v1/libs/plugin/TinyVersion.md +145 -0
  516. package/docs/v1/libs/router/TinyRouter.md +216 -0
  517. package/docs/v1/libs/storage/TinyMapCache.md +219 -0
  518. package/docs/v1/libs/storage/TinySetMapDatabase.md +478 -0
  519. package/docs/v1/libs/sw/browser/TinyNotificationAdapter.md +280 -0
  520. package/docs/v1/libs/sw/browser/TinyPushManager.md +782 -0
  521. package/docs/v1/libs/sw/browser/TinyServiceWorker.md +365 -0
  522. package/docs/v1/libs/sw/browser/plugins/TabManager.md +133 -0
  523. package/docs/v1/libs/sw/service/TinyPushRouter.md +314 -0
  524. package/docs/v1/libs/sw/service/TinyServiceWorkerEngine.md +748 -0
  525. package/docs/v1/libs/sw/service/plugins/GlobBypassPlugin.md +229 -0
  526. package/docs/v1/libs/sw/service/plugins/GlobCachePlugin.md +91 -0
  527. package/docs/v1/libs/sw/service/plugins/Ping.md +36 -0
  528. package/docs/v1/libs/sw/service/plugins/TabManager.md +64 -0
  529. package/docs/v1/libs/sw/service/plugins/ViteFileDetector.md +92 -0
  530. package/docs/v1/libs/sw/service/shared/TinyPushPayload.md +316 -0
  531. package/docs/v1/libs/text/TinyI18.md +80 -56
  532. package/docs/v1/libs/tools/TinyBrowserMonitor.md +170 -0
  533. package/docs/v1/libs/tools/TinyDebugger.md +117 -1
  534. package/docs/v1/libs/tools/TinyHtmlTagRegexBuilder.md +141 -0
  535. package/docs/v1/libs/tools/TinyHttpResponseRegistry.md +129 -0
  536. package/docs/v1/libs/tools/TinyPasswordValidator.md +153 -0
  537. package/docs/v1/libs/tools/TinyPkgExportValidator.md +45 -1
  538. package/docs/v1/libs/tools/TinySiteMap.md +134 -0
  539. package/docs/v1/libs/tools/TinySiteMapStream.md +97 -0
  540. package/docs/v1/libs/tools/TinyURLSecurityVerifier.md +146 -0
  541. package/docs/v1/libs/tools/TinyUriParser/Discord.md +374 -0
  542. package/docs/v1/libs/tools/TinyUriParser/MatrixProtocol.md +54 -0
  543. package/docs/v1/libs/tools/TinyUriParser.md +128 -0
  544. package/docs/v1/libs/utils/TinyCloner.md +126 -0
  545. package/docs/v1/libs/utils/TinyPromiseQueue.md +1 -1
  546. package/docs/v1/libs/utils/TinyThrottledApi.md +219 -0
  547. package/docs/v1/libs/worker/browser/TinyWebWorker.md +331 -0
  548. package/docs/v1/libs/worker/engine/TinyWebWorkerEngine.md +137 -0
  549. package/docs/v1/regexp/Email.md +127 -0
  550. package/docs/v1/regexp/Glob.md +155 -0
  551. package/docs/v1/regexp/IPv4.md +103 -0
  552. package/docs/v1/regexp/IPv6.md +122 -0
  553. package/docs/v1/regexp/SegmentExtractor.md +120 -0
  554. package/docs/v1/regexp/UrlDetector.md +117 -0
  555. package/docs/v1/regexp/Username/Base.md +131 -0
  556. package/docs/v1/regexp/Username/Discord.md +267 -0
  557. package/docs/v1/regexp/Username/MatrixProtocol.md +131 -0
  558. package/docs/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters.md +569 -0
  559. package/docs/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.md +174 -0
  560. package/docs/v1/webTemplates/media/MediaValidator/v1/Browser.md +123 -0
  561. package/docs/v1/webTemplates/media/MediaValidator/v1/Node.md +136 -0
  562. package/docs/v1/webTemplates/multiformats/14.0/IPFSHasher.md +310 -0
  563. package/docs/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.md +131 -0
  564. package/docs/v1/webTemplates/vite/7.3/plugins/githubUtils.md +50 -0
  565. package/package.json +313 -18
  566. package/types/EventEmitter.d.ts +48 -0
  567. package/dist/v1/libs/text/TinyI18.d.mts.map +0 -1
@@ -0,0 +1,145 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @typedef {Record<string, string>} PathParams
5
+ * Represents a mapping of parameter names to their extracted values.
6
+ */
7
+
8
+ /**
9
+ * @typedef {Object} SegExErrorConfig
10
+ * @property {string} pathPatternErrorMsg - Custom error message used when the pathPattern is not a string.
11
+ */
12
+
13
+ /**
14
+ * Represents the result of a path execution, containing extracted parameters and the match status.
15
+ * @typedef {Object} SegExData
16
+ * @property {PathParams} params - The extracted parameters as a key-value mapping.
17
+ * @property {boolean} match - Indicates whether the path successfully matched the pattern.
18
+ */
19
+
20
+ /**
21
+ * @callback SegExExec
22
+ * @param {string} path - The URL path to be processed.
23
+ * @returns {SegExData} An object containing the parameters extracted from the path.
24
+ */
25
+
26
+ /**
27
+ * @callback SegExIsUsed
28
+ * @returns {boolean} Returns true if the template has been used to perform a match.
29
+ */
30
+
31
+ /**
32
+ * @typedef {Object} SegExResult
33
+ * @property {RegExp} regex - The compiled regular expression for the path pattern.
34
+ * @property {string[]} paramNames - The list of parameter names extracted from the pattern.
35
+ * @property {SegExExec} exec - Function to extract parameters from a real path.
36
+ */
37
+
38
+ /**
39
+ * @callback SegExReplacer
40
+ * @param {string[]} paramNames - The accumulated list of parameter names.
41
+ * @param {string} substring - The original substring found by the search.
42
+ * @param {...any} args - Additional arguments captured by the RegExp (capture groups).
43
+ * @returns {string} The replacement value for the RegExp template.
44
+ */
45
+
46
+ /**
47
+ * A function that accepts a path pattern string and returns a SegExResult object.
48
+ * @typedef {(pathPattern: string) => SegExResult} SegExFunction
49
+ */
50
+
51
+ /**
52
+ * Factory to create a path segment extractor based on a specific pattern.
53
+ *
54
+ * @param {string|RegExp} searchValue - The search pattern (string or RegExp) used to identify dynamic segments.
55
+ * @param {SegExReplacer} replaceValue - The function defining how to transform a segment into a capture group.
56
+ * @param {SegExErrorConfig} errorConfig - Optional configuration to customize error messages.
57
+ * @returns {SegExFunction} A function that accepts a path pattern string and returns a SegExResult.
58
+ * @throws {TypeError} If `searchValue` is not a string or RegExp, or if `replaceValue` is not a function.
59
+ */
60
+ const makeSegmentExtractor = (searchValue, replaceValue, errorConfig) => {
61
+ // Validate searchValue
62
+ if (
63
+ searchValue === null ||
64
+ (typeof searchValue !== 'string' && !(searchValue instanceof RegExp))
65
+ ) {
66
+ throw new TypeError('The searchValue must be a string or a RegExp.');
67
+ }
68
+
69
+ // Validate replaceValue
70
+ if (typeof replaceValue !== 'function') {
71
+ throw new TypeError('The replaceValue must be a function.');
72
+ }
73
+
74
+ // Deep validation for errorConfig
75
+ if (typeof errorConfig !== 'object' || errorConfig === null) {
76
+ throw new TypeError('The errorConfig must be an object.');
77
+ }
78
+ if (typeof errorConfig.pathPatternErrorMsg !== 'string') {
79
+ throw new TypeError('The errorConfig.pathPatternErrorMsg property must be a string.');
80
+ }
81
+
82
+ /**
83
+ * @param {string} pathPattern - The path pattern to compile.
84
+ * @returns {SegExResult} The extraction logic object.
85
+ * @throws {TypeError} If pathPattern is not a string.
86
+ */
87
+ return (pathPattern) => {
88
+ if (typeof pathPattern !== 'string') {
89
+ throw new TypeError(errorConfig.pathPatternErrorMsg);
90
+ }
91
+
92
+ /** @type {string[]} */
93
+ const paramNames = [];
94
+
95
+ const regexPath = pathPattern.replace(searchValue, (_, ...args) =>
96
+ replaceValue(paramNames, _, ...args),
97
+ );
98
+
99
+ const regex = new RegExp(`^${regexPath}$`);
100
+
101
+ /**
102
+ * @type {SegExExec}
103
+ * Function to perform the regex matching and extract parameters from a given path.
104
+ */
105
+ const exec = (path) => {
106
+ /** @type {PathParams} */
107
+ const params = {};
108
+
109
+ const match = path.match(regex);
110
+
111
+ if (!match) return { params, match: false };
112
+
113
+ // Extract dynamic parameters based on the order they were found in the regex
114
+ paramNames.forEach((name, index) => {
115
+ params[name] = decodeURIComponent(match[index + 1]);
116
+ });
117
+
118
+ return { params, match: true };
119
+ };
120
+
121
+ return { regex, paramNames, exec };
122
+ };
123
+ };
124
+
125
+ /**
126
+ * Standard implementation for extracting parameters in the `:paramName` format (e.g., "/user/:id").
127
+ * @type {SegExFunction}
128
+ */
129
+ const segmentExtractorV1 = makeSegmentExtractor(
130
+ /:([^/]+)/g,
131
+ /**
132
+ * @param {string[]} paramNames - The accumulated list of parameter names.
133
+ * @param {string} _ - The full matched substring (e.g., ":id").
134
+ * @param {string} paramName - The captured parameter name (e.g., "id").
135
+ * @returns {string} The regex capture group string.
136
+ */
137
+ (paramNames, _, paramName) => {
138
+ paramNames.push(paramName);
139
+ return '([^/]+)';
140
+ },
141
+ { pathPatternErrorMsg: 'The argument must be a string (e.g., "/user/:id")' },
142
+ );
143
+
144
+ exports.makeSegmentExtractor = makeSegmentExtractor;
145
+ exports.segmentExtractorV1 = segmentExtractorV1;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * @typedef {Record<string, string>} PathParams
3
+ * Represents a mapping of parameter names to their extracted values.
4
+ */
5
+ export type PathParams = Record<string, string>;
6
+ export type SegExErrorConfig = {
7
+ /**
8
+ * - Custom error message used when the pathPattern is not a string.
9
+ */
10
+ pathPatternErrorMsg: string;
11
+ };
12
+ export type SegExData = {
13
+ /**
14
+ * - The extracted parameters as a key-value mapping.
15
+ */
16
+ params: PathParams;
17
+ /**
18
+ * - Indicates whether the path successfully matched the pattern.
19
+ */
20
+ match: boolean;
21
+ };
22
+ export type SegExExec = (path: string) => SegExData;
23
+ export type SegExIsUsed = () => boolean;
24
+ export type SegExResult = {
25
+ /**
26
+ * - The compiled regular expression for the path pattern.
27
+ */
28
+ regex: RegExp;
29
+ /**
30
+ * - The list of parameter names extracted from the pattern.
31
+ */
32
+ paramNames: string[];
33
+ /**
34
+ * - Function to extract parameters from a real path.
35
+ */
36
+ exec: SegExExec;
37
+ };
38
+ export type SegExReplacer = (paramNames: string[], substring: string, ...args: any) => string;
39
+ export type SegExFunction = (pathPattern: string) => SegExResult;
40
+ /**
41
+ * @typedef {Object} SegExErrorConfig
42
+ * @property {string} pathPatternErrorMsg - Custom error message used when the pathPattern is not a string.
43
+ */
44
+ /**
45
+ * Represents the result of a path execution, containing extracted parameters and the match status.
46
+ * @typedef {Object} SegExData
47
+ * @property {PathParams} params - The extracted parameters as a key-value mapping.
48
+ * @property {boolean} match - Indicates whether the path successfully matched the pattern.
49
+ */
50
+ /**
51
+ * @callback SegExExec
52
+ * @param {string} path - The URL path to be processed.
53
+ * @returns {SegExData} An object containing the parameters extracted from the path.
54
+ */
55
+ /**
56
+ * @callback SegExIsUsed
57
+ * @returns {boolean} Returns true if the template has been used to perform a match.
58
+ */
59
+ /**
60
+ * @typedef {Object} SegExResult
61
+ * @property {RegExp} regex - The compiled regular expression for the path pattern.
62
+ * @property {string[]} paramNames - The list of parameter names extracted from the pattern.
63
+ * @property {SegExExec} exec - Function to extract parameters from a real path.
64
+ */
65
+ /**
66
+ * @callback SegExReplacer
67
+ * @param {string[]} paramNames - The accumulated list of parameter names.
68
+ * @param {string} substring - The original substring found by the search.
69
+ * @param {...any} args - Additional arguments captured by the RegExp (capture groups).
70
+ * @returns {string} The replacement value for the RegExp template.
71
+ */
72
+ /**
73
+ * A function that accepts a path pattern string and returns a SegExResult object.
74
+ * @typedef {(pathPattern: string) => SegExResult} SegExFunction
75
+ */
76
+ /**
77
+ * Factory to create a path segment extractor based on a specific pattern.
78
+ *
79
+ * @param {string|RegExp} searchValue - The search pattern (string or RegExp) used to identify dynamic segments.
80
+ * @param {SegExReplacer} replaceValue - The function defining how to transform a segment into a capture group.
81
+ * @param {SegExErrorConfig} errorConfig - Optional configuration to customize error messages.
82
+ * @returns {SegExFunction} A function that accepts a path pattern string and returns a SegExResult.
83
+ * @throws {TypeError} If `searchValue` is not a string or RegExp, or if `replaceValue` is not a function.
84
+ */
85
+ export declare const makeSegmentExtractor: (searchValue: string | RegExp, replaceValue: SegExReplacer, errorConfig: SegExErrorConfig) => SegExFunction;
86
+ /**
87
+ * Standard implementation for extracting parameters in the `:paramName` format (e.g., "/user/:id").
88
+ * @type {SegExFunction}
89
+ */
90
+ export declare const segmentExtractorV1: SegExFunction;
91
+ //# sourceMappingURL=SegmentExtractor.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentExtractor.d.mts","sourceRoot":"","sources":["../../../src/v1/regexp/SegmentExtractor.mjs"],"names":[],"mappings":"AAAA;;;GAGG;AAFA,YAAkC,UAAU,GAAlC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAElC;AAGE,YAAkB,gBAAgB,GAClC;;;;IAAmB,mBAAmB,EAA3B,MAAM,CACnB;CAAA,CAAA;AAIE,YAAkB,SAAS,GAC3B;;;;IAAuB,MAAM,EAAlB,UAAU,CACrB;;;;IAAoB,KAAK,EAAd,OAAO,CACpB;CAAA,CAAA;AAGE,YAAU,SAAS,GACnB,CAAgB,IAAI,EAAZ,MACR,KAAU,SACZ,CAAA;AAGE,YAAU,WAAW,GACrB,MAAU,OACZ,CAAA;AAGE,YAAkB,WAAW,GAC7B;;;;IAAmB,KAAK,EAAb,MAAM,CACjB;;;;IAAqB,UAAU,EAApB,MAAM,EAAE,CACnB;;;;IAAsB,IAAI,EAAf,SAAS,CACtB;CAAA,CAAA;AAGE,YAAU,aAAa,GACvB,CAAkB,UAAU,EAApB,MAAM,EACd,EAAgB,SAAS,EAAjB,MACR,EAAA,GACA,AADgB,IAAI,EAAT,GACX,KAAU,MACZ,CAAA;AAIE,YAAgD,aAAa,GAAnD,CAAC,WAAW,EAAE,MAAM,KAAK,WAAW,CAAe;AAxChE;;;GAGG;AAEH;;;;;GAKG;AAEH;;;;GAIG;AAEH;;;GAGG;AAEH;;;;;GAKG;AAEH;;;;;;GAMG;AAEH;;;GAGG;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,gBANtB,MAAM,GAAC,MAAM,gBACb,aAAa,eACb,gBAAgB,KACd,aAsEZ,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAFrB,aAeT,CAAC"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * @typedef {Record<string, string>} PathParams
3
+ * Represents a mapping of parameter names to their extracted values.
4
+ */
5
+ /**
6
+ * @typedef {Object} SegExErrorConfig
7
+ * @property {string} pathPatternErrorMsg - Custom error message used when the pathPattern is not a string.
8
+ */
9
+ /**
10
+ * Represents the result of a path execution, containing extracted parameters and the match status.
11
+ * @typedef {Object} SegExData
12
+ * @property {PathParams} params - The extracted parameters as a key-value mapping.
13
+ * @property {boolean} match - Indicates whether the path successfully matched the pattern.
14
+ */
15
+ /**
16
+ * @callback SegExExec
17
+ * @param {string} path - The URL path to be processed.
18
+ * @returns {SegExData} An object containing the parameters extracted from the path.
19
+ */
20
+ /**
21
+ * @callback SegExIsUsed
22
+ * @returns {boolean} Returns true if the template has been used to perform a match.
23
+ */
24
+ /**
25
+ * @typedef {Object} SegExResult
26
+ * @property {RegExp} regex - The compiled regular expression for the path pattern.
27
+ * @property {string[]} paramNames - The list of parameter names extracted from the pattern.
28
+ * @property {SegExExec} exec - Function to extract parameters from a real path.
29
+ */
30
+ /**
31
+ * @callback SegExReplacer
32
+ * @param {string[]} paramNames - The accumulated list of parameter names.
33
+ * @param {string} substring - The original substring found by the search.
34
+ * @param {...any} args - Additional arguments captured by the RegExp (capture groups).
35
+ * @returns {string} The replacement value for the RegExp template.
36
+ */
37
+ /**
38
+ * A function that accepts a path pattern string and returns a SegExResult object.
39
+ * @typedef {(pathPattern: string) => SegExResult} SegExFunction
40
+ */
41
+ /**
42
+ * Factory to create a path segment extractor based on a specific pattern.
43
+ *
44
+ * @param {string|RegExp} searchValue - The search pattern (string or RegExp) used to identify dynamic segments.
45
+ * @param {SegExReplacer} replaceValue - The function defining how to transform a segment into a capture group.
46
+ * @param {SegExErrorConfig} errorConfig - Optional configuration to customize error messages.
47
+ * @returns {SegExFunction} A function that accepts a path pattern string and returns a SegExResult.
48
+ * @throws {TypeError} If `searchValue` is not a string or RegExp, or if `replaceValue` is not a function.
49
+ */
50
+ export const makeSegmentExtractor = (searchValue, replaceValue, errorConfig) => {
51
+ // Validate searchValue
52
+ if (searchValue === null ||
53
+ (typeof searchValue !== 'string' && !(searchValue instanceof RegExp))) {
54
+ throw new TypeError('The searchValue must be a string or a RegExp.');
55
+ }
56
+ // Validate replaceValue
57
+ if (typeof replaceValue !== 'function') {
58
+ throw new TypeError('The replaceValue must be a function.');
59
+ }
60
+ // Deep validation for errorConfig
61
+ if (typeof errorConfig !== 'object' || errorConfig === null) {
62
+ throw new TypeError('The errorConfig must be an object.');
63
+ }
64
+ if (typeof errorConfig.pathPatternErrorMsg !== 'string') {
65
+ throw new TypeError('The errorConfig.pathPatternErrorMsg property must be a string.');
66
+ }
67
+ /**
68
+ * @param {string} pathPattern - The path pattern to compile.
69
+ * @returns {SegExResult} The extraction logic object.
70
+ * @throws {TypeError} If pathPattern is not a string.
71
+ */
72
+ return (pathPattern) => {
73
+ if (typeof pathPattern !== 'string') {
74
+ throw new TypeError(errorConfig.pathPatternErrorMsg);
75
+ }
76
+ /** @type {boolean} */
77
+ let used = false;
78
+ /** @type {string[]} */
79
+ const paramNames = [];
80
+ const regexPath = pathPattern.replace(searchValue, (_, ...args) => replaceValue(paramNames, _, ...args));
81
+ const regex = new RegExp(`^${regexPath}$`);
82
+ /**
83
+ * @type {SegExExec}
84
+ * Function to perform the regex matching and extract parameters from a given path.
85
+ */
86
+ const exec = (path) => {
87
+ /** @type {PathParams} */
88
+ const params = {};
89
+ const match = path.match(regex);
90
+ used = true;
91
+ if (!match)
92
+ return { params, match: false };
93
+ // Extract dynamic parameters based on the order they were found in the regex
94
+ paramNames.forEach((name, index) => {
95
+ params[name] = decodeURIComponent(match[index + 1]);
96
+ });
97
+ return { params, match: true };
98
+ };
99
+ return { regex, paramNames, exec };
100
+ };
101
+ };
102
+ /**
103
+ * Standard implementation for extracting parameters in the `:paramName` format (e.g., "/user/:id").
104
+ * @type {SegExFunction}
105
+ */
106
+ export const segmentExtractorV1 = makeSegmentExtractor(/:([^/]+)/g,
107
+ /**
108
+ * @param {string[]} paramNames - The accumulated list of parameter names.
109
+ * @param {string} _ - The full matched substring (e.g., ":id").
110
+ * @param {string} paramName - The captured parameter name (e.g., "id").
111
+ * @returns {string} The regex capture group string.
112
+ */
113
+ (paramNames, _, paramName) => {
114
+ paramNames.push(paramName);
115
+ return '([^/]+)';
116
+ }, { pathPatternErrorMsg: 'The argument must be a string (e.g., "/user/:id")' });
@@ -0,0 +1,125 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @typedef {Object} UrlRegexOptions - Configuration options for customizing the generated URL regular expression.
5
+ * @property {string} [protocol='https?'] - The protocol scheme (e.g., 'http', 'https').
6
+ * @property {string} [subDomain=''] - The subdomain string to match.
7
+ * @property {boolean} [subDomainOptional=true] - Whether the subdomain is required or optional.
8
+ * @property {[number, number]} [nameMaxLength=[1, 256]] - An array containing the minimum and maximum length for the domain name.
9
+ * @property {[number, number]} [topLevelDomainLength=[1, 6]] - An array containing the minimum and maximum length for the TLD.
10
+ */
11
+
12
+ /**
13
+ * Validates the UrlRegexOptions object to ensure all properties match the required types.
14
+ * This is a private helper used to maintain strict type safety at runtime.
15
+ *
16
+ * @param {UrlRegexOptions} options - The configuration options to validate.
17
+ * @throws {TypeError} If the options are not an object or if any property fails type validation.
18
+ * @private
19
+ */
20
+ const validateUrlRegexOptions = (options) => {
21
+ if (options === undefined) return;
22
+ if (typeof options !== 'object' || options === null || Array.isArray(options)) {
23
+ throw new TypeError('Options must be an object.');
24
+ }
25
+ if (options.protocol !== undefined && typeof options.protocol !== 'string') {
26
+ throw new TypeError('The "protocol" property must be a string.');
27
+ }
28
+ if (options.subDomain !== undefined && typeof options.subDomain !== 'string') {
29
+ throw new TypeError('The "subDomain" property must be a string.');
30
+ }
31
+ if (options.subDomainOptional !== undefined && typeof options.subDomainOptional !== 'boolean') {
32
+ throw new TypeError('The "subDomainOptional" property must be a boolean.');
33
+ }
34
+ if (options.nameMaxLength !== undefined) {
35
+ if (
36
+ !Array.isArray(options.nameMaxLength) ||
37
+ options.nameMaxLength.length !== 2 ||
38
+ typeof options.nameMaxLength[0] !== 'number' ||
39
+ typeof options.nameMaxLength[1] !== 'number'
40
+ ) {
41
+ throw new TypeError('The "nameMaxLength" property must be an array of two numbers.');
42
+ }
43
+ }
44
+ if (options.topLevelDomainLength !== undefined) {
45
+ if (
46
+ !Array.isArray(options.topLevelDomainLength) ||
47
+ options.topLevelDomainLength.length !== 2 ||
48
+ typeof options.topLevelDomainLength[0] !== 'number' ||
49
+ typeof options.topLevelDomainLength[1] !== 'number'
50
+ ) {
51
+ throw new TypeError('The "topLevelDomainLength" property must be an array of two numbers.');
52
+ }
53
+ }
54
+ };
55
+
56
+ /**
57
+ * Constructs a URL regular expression pattern string based on the provided configuration options.
58
+ * @param {UrlRegexOptions} [options] - The configuration options.
59
+ * @returns {string} The generated regex pattern string.
60
+ */
61
+ const urlStringRegexBuilder = (options = {}) => {
62
+ validateUrlRegexOptions(options);
63
+ const {
64
+ protocol = 'https?',
65
+ subDomain = '',
66
+ subDomainOptional = true,
67
+ nameMaxLength = [1, 256],
68
+ topLevelDomainLength = [1, 6],
69
+ } = options;
70
+ return `${protocol}:\\/\\/${subDomain ? `(${subDomain}\\.)${subDomainOptional ? '?' : ''}` : ''}[-a-zA-Z0-9@:%._\\+~#=]{${String(nameMaxLength[0])},${String(nameMaxLength[1])}}\\.[a-zA-Z0-9()]{${String(topLevelDomainLength[0])},${String(topLevelDomainLength[1])}}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)`;
71
+ };
72
+
73
+ /**
74
+ * Creates a RegExp object anchored to the start and end of the string using the provided configuration.
75
+ * @param {UrlRegexOptions} [options] - The configuration options.
76
+ * @returns {RegExp} The resulting RegExp object.
77
+ */
78
+ function urlRegex(options) {
79
+ return new RegExp(`^${urlStringRegexBuilder(options)}$`);
80
+ }
81
+
82
+ /**
83
+ * Validates whether a given string matches the specified URL pattern.
84
+ * @param {string} s - The string to validate.
85
+ * @param {UrlRegexOptions} [options] - The configuration options.
86
+ * @param {RegExp} [regex] - The regex used to execute the function.
87
+ * @returns {boolean} True if the string is a valid URL according to the pattern, false otherwise.
88
+ * @throws {TypeError} If the input string is not a string.
89
+ */
90
+ function isValidUrl(s, options, regex) {
91
+ if (typeof s !== 'string') {
92
+ throw new TypeError('The input must be a string.');
93
+ }
94
+ return (regex ?? urlRegex(options)).test(s);
95
+ }
96
+
97
+ /**
98
+ * Generates a global RegExp object used to find all occurrences of URLs within a text.
99
+ * @param {UrlRegexOptions} [options] - The configuration options.
100
+ * @returns {RegExp} The resulting global RegExp object.
101
+ */
102
+ function findUrlRegex(options) {
103
+ return new RegExp(`\\b${urlStringRegexBuilder(options)}\\b`, 'g');
104
+ }
105
+
106
+ /**
107
+ * Extracts all matching URL strings from a given text using the provided configuration.
108
+ * @param {string} text - The text to search.
109
+ * @param {UrlRegexOptions} [options] - The configuration options.
110
+ * @param {RegExp} [regex] - The regex used to execute the function.
111
+ * @returns {string[]} An array of matches or null if no matches are found.
112
+ * @throws {TypeError} If the input text is not a string.
113
+ */
114
+ function extractUrls(text, options, regex) {
115
+ if (typeof text !== 'string') {
116
+ throw new TypeError('The input must be a string.');
117
+ }
118
+ return text.match(regex ?? findUrlRegex(options)) ?? [];
119
+ }
120
+
121
+ exports.extractUrls = extractUrls;
122
+ exports.findUrlRegex = findUrlRegex;
123
+ exports.isValidUrl = isValidUrl;
124
+ exports.urlRegex = urlRegex;
125
+ exports.urlStringRegexBuilder = urlStringRegexBuilder;
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @typedef {Object} UrlRegexOptions - Configuration options for customizing the generated URL regular expression.
3
+ * @property {string} [protocol='https?'] - The protocol scheme (e.g., 'http', 'https').
4
+ * @property {string} [subDomain=''] - The subdomain string to match.
5
+ * @property {boolean} [subDomainOptional=true] - Whether the subdomain is required or optional.
6
+ * @property {[number, number]} [nameMaxLength=[1, 256]] - An array containing the minimum and maximum length for the domain name.
7
+ * @property {[number, number]} [topLevelDomainLength=[1, 6]] - An array containing the minimum and maximum length for the TLD.
8
+ */
9
+ export type UrlRegexOptions = {
10
+ /**
11
+ * - The protocol scheme (e.g., 'http', 'https').
12
+ */
13
+ protocol?: string;
14
+ /**
15
+ * - The subdomain string to match.
16
+ */
17
+ subDomain?: string;
18
+ /**
19
+ * - Whether the subdomain is required or optional.
20
+ */
21
+ subDomainOptional?: boolean;
22
+ /**
23
+ * - An array containing the minimum and maximum length for the domain name.
24
+ */
25
+ nameMaxLength?: [number, number];
26
+ /**
27
+ * - An array containing the minimum and maximum length for the TLD.
28
+ */
29
+ topLevelDomainLength?: [number, number];
30
+ };
31
+ /**
32
+ * Constructs a URL regular expression pattern string based on the provided configuration options.
33
+ * @param {UrlRegexOptions} [options] - The configuration options.
34
+ * @returns {string} The generated regex pattern string.
35
+ */
36
+ export declare const urlStringRegexBuilder: (options?: UrlRegexOptions) => string;
37
+ /**
38
+ * Creates a RegExp object anchored to the start and end of the string using the provided configuration.
39
+ * @param {UrlRegexOptions} [options] - The configuration options.
40
+ * @returns {RegExp} The resulting RegExp object.
41
+ */
42
+ export declare function urlRegex(options?: UrlRegexOptions): RegExp;
43
+ /**
44
+ * Validates whether a given string matches the specified URL pattern.
45
+ * @param {string} s - The string to validate.
46
+ * @param {UrlRegexOptions} [options] - The configuration options.
47
+ * @param {RegExp} [regex] - The regex used to execute the function.
48
+ * @returns {boolean} True if the string is a valid URL according to the pattern, false otherwise.
49
+ * @throws {TypeError} If the input string is not a string.
50
+ */
51
+ export declare function isValidUrl(s: string, options?: UrlRegexOptions, regex?: RegExp): boolean;
52
+ /**
53
+ * Generates a global RegExp object used to find all occurrences of URLs within a text.
54
+ * @param {UrlRegexOptions} [options] - The configuration options.
55
+ * @returns {RegExp} The resulting global RegExp object.
56
+ */
57
+ export declare function findUrlRegex(options?: UrlRegexOptions): RegExp;
58
+ /**
59
+ * Extracts all matching URL strings from a given text using the provided configuration.
60
+ * @param {string} text - The text to search.
61
+ * @param {UrlRegexOptions} [options] - The configuration options.
62
+ * @param {RegExp} [regex] - The regex used to execute the function.
63
+ * @returns {string[]} An array of matches or null if no matches are found.
64
+ * @throws {TypeError} If the input text is not a string.
65
+ */
66
+ export declare function extractUrls(text: string, options?: UrlRegexOptions, regex?: RegExp): string[];
67
+ //# sourceMappingURL=UrlDetector.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UrlDetector.d.mts","sourceRoot":"","sources":["../../../src/v1/regexp/UrlDetector.mjs"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AANA,YAAkB,eAAe,GACjC;;;;IAAoB,QAAQ,AAA5B,CACA,EADW,MAAM,CACjB;;;;IAAoB,SAAS,AAA7B,CACA,EADW,MAAM,CACjB;;;;IAAqB,iBAAiB,AAAtC,CACA,EADW,OAAO,CAClB;;;;IAA8B,aAAa,AAA3C,CACA,EADW,CAAC,MAAM,EAAE,MAAM,CAAC,CAC3B;;;;IAA8B,oBAAoB,AAAlD,CACF,EADa,CAAC,MAAM,EAAE,MAAM,CAAC,CAC7B;CAAA,CAAA;AA8CD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,aAHvB,eAAe,KACb,MAYZ,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,OAAO,AAH7B,CACA,EADQ,eAGqB,GAFnB,MAAM,CAIlB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EANjB,MAMiB,EAAE,OAAO,AALlC,CACA,EADQ,eAK0B,EAAE,KAAK,AAJzC,CACA,EADQ,MAIiC,GAH/B,OAAO,CAQnB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,AAHjC,CACA,EADQ,eAGyB,GAFvB,MAAM,CAIlB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,EANrB,MAMqB,EAAE,OAAO,AALtC,CACA,EADQ,eAK8B,EAAE,KAAK,AAJ7C,CACA,EADQ,MAIqC,GAHnC,MAAM,EAAE,CAQpB"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * @typedef {Object} UrlRegexOptions - Configuration options for customizing the generated URL regular expression.
3
+ * @property {string} [protocol='https?'] - The protocol scheme (e.g., 'http', 'https').
4
+ * @property {string} [subDomain=''] - The subdomain string to match.
5
+ * @property {boolean} [subDomainOptional=true] - Whether the subdomain is required or optional.
6
+ * @property {[number, number]} [nameMaxLength=[1, 256]] - An array containing the minimum and maximum length for the domain name.
7
+ * @property {[number, number]} [topLevelDomainLength=[1, 6]] - An array containing the minimum and maximum length for the TLD.
8
+ */
9
+ /**
10
+ * Validates the UrlRegexOptions object to ensure all properties match the required types.
11
+ * This is a private helper used to maintain strict type safety at runtime.
12
+ *
13
+ * @param {UrlRegexOptions} options - The configuration options to validate.
14
+ * @throws {TypeError} If the options are not an object or if any property fails type validation.
15
+ * @private
16
+ */
17
+ const validateUrlRegexOptions = (options) => {
18
+ if (options === undefined)
19
+ return;
20
+ if (typeof options !== 'object' || options === null || Array.isArray(options)) {
21
+ throw new TypeError('Options must be an object.');
22
+ }
23
+ if (options.protocol !== undefined && typeof options.protocol !== 'string') {
24
+ throw new TypeError('The "protocol" property must be a string.');
25
+ }
26
+ if (options.subDomain !== undefined && typeof options.subDomain !== 'string') {
27
+ throw new TypeError('The "subDomain" property must be a string.');
28
+ }
29
+ if (options.subDomainOptional !== undefined && typeof options.subDomainOptional !== 'boolean') {
30
+ throw new TypeError('The "subDomainOptional" property must be a boolean.');
31
+ }
32
+ if (options.nameMaxLength !== undefined) {
33
+ if (!Array.isArray(options.nameMaxLength) ||
34
+ options.nameMaxLength.length !== 2 ||
35
+ typeof options.nameMaxLength[0] !== 'number' ||
36
+ typeof options.nameMaxLength[1] !== 'number') {
37
+ throw new TypeError('The "nameMaxLength" property must be an array of two numbers.');
38
+ }
39
+ }
40
+ if (options.topLevelDomainLength !== undefined) {
41
+ if (!Array.isArray(options.topLevelDomainLength) ||
42
+ options.topLevelDomainLength.length !== 2 ||
43
+ typeof options.topLevelDomainLength[0] !== 'number' ||
44
+ typeof options.topLevelDomainLength[1] !== 'number') {
45
+ throw new TypeError('The "topLevelDomainLength" property must be an array of two numbers.');
46
+ }
47
+ }
48
+ };
49
+ /**
50
+ * Constructs a URL regular expression pattern string based on the provided configuration options.
51
+ * @param {UrlRegexOptions} [options] - The configuration options.
52
+ * @returns {string} The generated regex pattern string.
53
+ */
54
+ export const urlStringRegexBuilder = (options = {}) => {
55
+ validateUrlRegexOptions(options);
56
+ const { protocol = 'https?', subDomain = '', subDomainOptional = true, nameMaxLength = [1, 256], topLevelDomainLength = [1, 6], } = options;
57
+ return `${protocol}:\\/\\/${subDomain ? `(${subDomain}\\.)${subDomainOptional ? '?' : ''}` : ''}[-a-zA-Z0-9@:%._\\+~#=]{${String(nameMaxLength[0])},${String(nameMaxLength[1])}}\\.[a-zA-Z0-9()]{${String(topLevelDomainLength[0])},${String(topLevelDomainLength[1])}}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)`;
58
+ };
59
+ /**
60
+ * Creates a RegExp object anchored to the start and end of the string using the provided configuration.
61
+ * @param {UrlRegexOptions} [options] - The configuration options.
62
+ * @returns {RegExp} The resulting RegExp object.
63
+ */
64
+ export function urlRegex(options) {
65
+ return new RegExp(`^${urlStringRegexBuilder(options)}$`);
66
+ }
67
+ /**
68
+ * Validates whether a given string matches the specified URL pattern.
69
+ * @param {string} s - The string to validate.
70
+ * @param {UrlRegexOptions} [options] - The configuration options.
71
+ * @param {RegExp} [regex] - The regex used to execute the function.
72
+ * @returns {boolean} True if the string is a valid URL according to the pattern, false otherwise.
73
+ * @throws {TypeError} If the input string is not a string.
74
+ */
75
+ export function isValidUrl(s, options, regex) {
76
+ if (typeof s !== 'string') {
77
+ throw new TypeError('The input must be a string.');
78
+ }
79
+ return (regex ?? urlRegex(options)).test(s);
80
+ }
81
+ /**
82
+ * Generates a global RegExp object used to find all occurrences of URLs within a text.
83
+ * @param {UrlRegexOptions} [options] - The configuration options.
84
+ * @returns {RegExp} The resulting global RegExp object.
85
+ */
86
+ export function findUrlRegex(options) {
87
+ return new RegExp(`\\b${urlStringRegexBuilder(options)}\\b`, 'g');
88
+ }
89
+ /**
90
+ * Extracts all matching URL strings from a given text using the provided configuration.
91
+ * @param {string} text - The text to search.
92
+ * @param {UrlRegexOptions} [options] - The configuration options.
93
+ * @param {RegExp} [regex] - The regex used to execute the function.
94
+ * @returns {string[]} An array of matches or null if no matches are found.
95
+ * @throws {TypeError} If the input text is not a string.
96
+ */
97
+ export function extractUrls(text, options, regex) {
98
+ if (typeof text !== 'string') {
99
+ throw new TypeError('The input must be a string.');
100
+ }
101
+ return text.match(regex ?? findUrlRegex(options)) ?? [];
102
+ }