vivth 1.4.9 → 1.5.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 (379) hide show
  1. package/README.md +6060 -2037
  2. package/README.src.md +22 -14
  3. package/bun.lock +154 -194
  4. package/dev/auto/.src.ignore +25 -0
  5. package/dev/auto-doc.mjs +137 -0
  6. package/generated/types/generated/vivth/exports/all.d.mts +145 -0
  7. package/generated/types/generated/vivth/exports/neutral.d.mts +105 -0
  8. package/generated/types/generated/vivth/exports/node.d.mts +40 -0
  9. package/generated/types/src/bundler/CompileAS.d.mts +30 -0
  10. package/generated/types/src/bundler/CompileJS.d.mts +109 -0
  11. package/{types → generated/types}/src/bundler/CreateESPlugin.d.mts +1 -1
  12. package/{types → generated/types}/src/bundler/EsBundler.d.mts +9 -7
  13. package/generated/types/src/bundler/FSAnalyzer.d.mts +58 -0
  14. package/generated/types/src/bundler/FSasar.bundled.d.mts +28 -0
  15. package/generated/types/src/bundler/FSasar.d.mts +51 -0
  16. package/generated/types/src/bundler/FileSelfMapper.d.mts +137 -0
  17. package/generated/types/src/bundler/JSDirMapper.d.mts +128 -0
  18. package/generated/types/src/bundler/RunWatchThenCompileJSOnSafeExit.d.mts +63 -0
  19. package/generated/types/src/bundler/adds/BrowserExternals.d.mts +21 -0
  20. package/generated/types/src/bundler/adds/CreateTransform.d.mts +26 -0
  21. package/generated/types/src/bundler/adds/LastEditedUnix.d.mts +5 -0
  22. package/generated/types/src/bundler/adds/NodeModuleList.d.mts +15 -0
  23. package/generated/types/src/bundler/adds/PathFSBundles.bundled.d.mts +25 -0
  24. package/generated/types/src/bundler/adds/PathFSBundles.d.mts +48 -0
  25. package/generated/types/src/bundler/adds/PathFSDir.bundled.d.mts +30 -0
  26. package/generated/types/src/bundler/adds/PathFSDir.d.mts +48 -0
  27. package/generated/types/src/bundler/adds/PathFSFile.bundled.d.mts +25 -0
  28. package/generated/types/src/bundler/adds/PathFSFile.d.mts +40 -0
  29. package/{types → generated/types}/src/bundler/adds/ToBundledJSPlugin.d.mts +6 -6
  30. package/generated/types/src/bundler/adds/autoExternalize.d.mts +2 -0
  31. package/generated/types/src/bundler/adds/emptyBufferValue.d.mts +1 -0
  32. package/generated/types/src/bundler/adds/isModuleTheBundledVersion.d.mts +1 -0
  33. package/generated/types/src/bundler/adds/onEndEsBuildErrorLogger.d.mts +1 -0
  34. package/generated/types/src/bundler/adds/resolveJSDependencyPath.d.mts +1 -0
  35. package/generated/types/src/class/AwaitSignal.d.mts +48 -0
  36. package/generated/types/src/class/Console.d.mts +82 -0
  37. package/generated/types/src/class/DataLog.d.mts +25 -0
  38. package/generated/types/src/class/Derived.d.mts +74 -0
  39. package/generated/types/src/class/Effect.d.mts +213 -0
  40. package/{types → generated/types}/src/class/EnvSignal.d.mts +6 -2
  41. package/generated/types/src/class/EsWatcher.d.mts +36 -0
  42. package/{types → generated/types}/src/class/EventSignal.d.mts +39 -39
  43. package/generated/types/src/class/FSDirArchWatcher.d.mts +110 -0
  44. package/{types → generated/types}/src/class/FileSafe.d.mts +32 -16
  45. package/generated/types/src/class/ForEach.d.mts +57 -0
  46. package/generated/types/src/class/ForSignal.d.mts +63 -0
  47. package/generated/types/src/class/GetterSetter.d.mts +38 -0
  48. package/generated/types/src/class/JSONFileHandler.d.mts +50 -0
  49. package/{types → generated/types}/src/class/ListSignal.d.mts +49 -15
  50. package/{types → generated/types}/src/class/LitExp.d.mts +18 -18
  51. package/generated/types/src/class/ObjectSignal.d.mts +267 -0
  52. package/generated/types/src/class/Paths.d.mts +95 -0
  53. package/generated/types/src/class/Prettivy.d.mts +26 -0
  54. package/{types → generated/types}/src/class/QChannel.d.mts +24 -16
  55. package/generated/types/src/class/SafeExit.d.mts +69 -0
  56. package/{types → generated/types}/src/class/Setup.d.mts +29 -16
  57. package/{types → generated/types}/src/class/Signal.d.mts +29 -15
  58. package/generated/types/src/class/SignalCollection.d.mts +96 -0
  59. package/{types → generated/types}/src/class/WalkThrough.d.mts +4 -19
  60. package/generated/types/src/class/WorkerMainThread.bundled.d.mts +83 -0
  61. package/{types → generated/types}/src/class/WorkerMainThread.d.mts +33 -39
  62. package/{types → generated/types}/src/class/WorkerThread.d.mts +11 -5
  63. package/{types → generated/types}/src/common/Base64URL.d.mts +2 -1
  64. package/generated/types/src/common/Base64URLFromFile.d.mts +20 -0
  65. package/generated/types/src/common/BundledV.bundled.d.mts +3 -0
  66. package/generated/types/src/common/BundledV.d.mts +36 -0
  67. package/{types → generated/types}/src/common/CreateStringID.d.mts +5 -4
  68. package/generated/types/src/common/EnvMode.d.mts +79 -0
  69. package/generated/types/src/common/FactoryKey.d.mts +9 -0
  70. package/generated/types/src/common/Preferrence.d.mts +25 -0
  71. package/{types → generated/types}/src/common/Trace.d.mts +1 -1
  72. package/{types → generated/types}/src/common/TracePath.d.mts +1 -1
  73. package/generated/types/src/common/VivthUnBundledCodeBlock.d.mts +6 -0
  74. package/generated/types/src/doc/JSautoDOC.d.mts +172 -0
  75. package/generated/types/src/doc/cleanPreserveTypedef.d.mts +1 -0
  76. package/{types/src/doc/parsedFile.d.mts → generated/types/src/doc/parsedFileForDOC.d.mts} +56 -27
  77. package/generated/types/src/function/ClearRequireCache.d.mts +1 -0
  78. package/{types → generated/types}/src/function/CreateImmutable.d.mts +5 -4
  79. package/{types → generated/types}/src/function/EventCheck.d.mts +3 -1
  80. package/{types → generated/types}/src/function/EventObject.d.mts +2 -6
  81. package/generated/types/src/function/ForInAsync.d.mts +36 -0
  82. package/generated/types/src/function/ForInSync.d.mts +36 -0
  83. package/generated/types/src/function/ForOfAsync.d.mts +25 -0
  84. package/generated/types/src/function/ForOfSync.d.mts +36 -0
  85. package/generated/types/src/function/GetBufferFromRelativePath.d.mts +15 -0
  86. package/generated/types/src/function/GetFilesFromDir.d.mts +14 -0
  87. package/generated/types/src/function/GetMaxFilenameLength.d.mts +9 -0
  88. package/generated/types/src/function/GetModuleEsbuildPlatform.d.mts +13 -0
  89. package/{types → generated/types}/src/function/GetNamedImportAlias.d.mts +1 -1
  90. package/generated/types/src/function/GetRuntime.d.mts +2 -0
  91. package/generated/types/src/function/InstantiateAssemblyScript.d.mts +15 -0
  92. package/{types → generated/types}/src/function/IsAsync.d.mts +1 -1
  93. package/generated/types/src/function/IsInstanceOf.d.mts +25 -0
  94. package/generated/types/src/function/IsSameFile.d.mts +16 -0
  95. package/generated/types/src/function/IsStringLooksLikeAPath.d.mts +16 -0
  96. package/generated/types/src/function/IsTypeOf.d.mts +25 -0
  97. package/{types → generated/types}/src/function/LazyFactory.d.mts +9 -10
  98. package/generated/types/src/function/MonkeyPatch.d.mts +33 -0
  99. package/generated/types/src/function/NewAnimationTimeline.d.mts +24 -0
  100. package/generated/types/src/function/NewChainable.d.mts +35 -0
  101. package/generated/types/src/function/NewDynamicsExport.d.mts +49 -0
  102. package/generated/types/src/function/NewObjectWrapper.d.mts +10 -0
  103. package/generated/types/src/function/ObjectRegistrar.d.mts +17 -0
  104. package/generated/types/src/function/ParseSQLFile.d.mts +25 -0
  105. package/generated/types/src/function/PipeAsync.d.mts +19 -0
  106. package/generated/types/src/function/PipeSync.d.mts +17 -0
  107. package/generated/types/src/function/SafeImport.d.mts +21 -0
  108. package/generated/types/src/function/TemplateLiteral.d.mts +23 -0
  109. package/{types → generated/types}/src/function/Timeout.d.mts +1 -1
  110. package/{types → generated/types}/src/function/Tries.d.mts +4 -4
  111. package/{types → generated/types}/src/function/TryAsync.d.mts +2 -2
  112. package/{types → generated/types}/src/function/TryNew.d.mts +1 -1
  113. package/generated/types/src/function/TsToMjs.d.mts +27 -0
  114. package/generated/types/src/function/UniqueFSTempName.d.mts +9 -0
  115. package/generated/types/src/function/errorToMessage.d.mts +5 -0
  116. package/generated/types/src/neinth/VivthyNeinth.d.mts +202 -0
  117. package/generated/types/src/typehints/ArrayToKeys.d.mts +23 -0
  118. package/generated/types/src/typehints/AssemblyScriptExportsType.d.mts +4 -0
  119. package/generated/types/src/typehints/AssemblyScriptLoaderInstantiate.d.mts +4 -0
  120. package/generated/types/src/typehints/AutoDocASOptions.d.mts +15 -0
  121. package/generated/types/src/typehints/ChainableType.d.mts +3 -0
  122. package/generated/types/src/typehints/ComponentDecorator_Constructor.d.mts +3 -0
  123. package/generated/types/src/typehints/ConsoleAdditionalSettingType.d.mts +3 -0
  124. package/generated/types/src/typehints/Decorator.d.mts +11 -0
  125. package/generated/types/src/typehints/DecoratorMonkeyPatch.d.mts +15 -0
  126. package/{types/src/types → generated/types/src/typehints}/DevTestCB.d.mts +2 -2
  127. package/generated/types/src/typehints/EnvModeType.d.mts +4 -0
  128. package/generated/types/src/typehints/ListArg.d.mts +4 -0
  129. package/generated/types/src/typehints/MonkeyPatchedType.d.mts +1 -0
  130. package/generated/types/src/typehints/ParametersFollowingN.d.mts +13 -0
  131. package/generated/types/src/typehints/PrefixedKeysOf.d.mts +1 -0
  132. package/generated/types/src/typehints/Runtime.d.mts +4 -0
  133. package/generated/types/src/typehints/SafeImportReturnType.d.mts +1 -0
  134. package/generated/types/src/typehints/StylePropRefType.d.mts +2 -0
  135. package/generated/types/src/typehints/TemplateLiteralValueHandler.d.mts +10 -0
  136. package/generated/types/src/typehints/VLifecycleCallbacks.d.mts +6 -0
  137. package/generated/types/src/typehints/VivthCleanup.d.mts +12 -0
  138. package/generated/types/src/web/BrowserDirMapper.d.mts +70 -0
  139. package/generated/types/src/web/EnsureValidTag.d.mts +7 -0
  140. package/generated/types/src/web/ViteAddDynamics.d.mts +28 -0
  141. package/generated/types/src/web/ViteGetAllHTMLFile.d.mts +9 -0
  142. package/generated/types/src/web/WC_extendsA.d.mts +135 -0
  143. package/generated/types/src/web/WC_extendsB.d.mts +135 -0
  144. package/generated/types/src/web/bindings/WC_StyleProp_bind.d.mts +42 -0
  145. package/generated/types/src/web/bindings/WC_createElement_bind.d.mts +51 -0
  146. package/generated/types/src/web/bindings/WC_createNamedSlot.d.mts +26 -0
  147. package/generated/types/src/web/bindings/WC_litRender_bind.d.mts +20 -0
  148. package/generated/types/src/web/bindings/WC_litStyleMap.d.mts +7 -0
  149. package/generated/types/src/web/common/CSS.d.mts +23 -0
  150. package/generated/types/src/web/common/E.d.mts +41 -0
  151. package/generated/types/src/web/common/NewStyleSheetAsync.d.mts +15 -0
  152. package/generated/types/src/web/common/NewStyleSheetSync.d.mts +15 -0
  153. package/generated/types/src/web/common/WC_TagName_type.d.mts +15 -0
  154. package/generated/types/src/web/signals/IsInViewPortSignal.d.mts +52 -0
  155. package/generated/types/src/web/signals/ObserverSignal.d.mts +32 -0
  156. package/generated/types/src/web/signals/WC_litRef.d.mts +26 -0
  157. package/generated/types/src/web/signals/WC_loopedSiblingsRef.d.mts +44 -0
  158. package/generated/vivth/exports/all.mjs +233 -0
  159. package/generated/vivth/exports/neutral.mjs +193 -0
  160. package/generated/vivth/exports/node.mjs +46 -0
  161. package/package.json +50 -14
  162. package/src/bundler/CompileAS.mjs +36 -0
  163. package/src/bundler/CompileJS.mjs +98 -171
  164. package/src/bundler/CreateESPlugin.mjs +1 -1
  165. package/src/bundler/EsBundler.mjs +38 -13
  166. package/src/bundler/FSAnalyzer.mjs +253 -0
  167. package/src/bundler/FSasar.bundled.mjs +128 -0
  168. package/src/bundler/FSasar.mjs +96 -0
  169. package/src/bundler/FileSelfMapper.mjs +491 -0
  170. package/src/bundler/JSDirMapper.mjs +528 -0
  171. package/src/bundler/RunWatchThenCompileJSOnSafeExit.mjs +129 -0
  172. package/src/bundler/adds/BrowserExternals.mjs +37 -0
  173. package/src/bundler/adds/CreateTransform.mjs +36 -0
  174. package/src/bundler/adds/LastEditedUnix.mjs +12 -0
  175. package/src/bundler/adds/NodeModuleList.mjs +33 -0
  176. package/src/bundler/adds/PathFSBundles.bundled.mjs +41 -0
  177. package/src/bundler/adds/PathFSBundles.mjs +91 -0
  178. package/src/bundler/adds/PathFSDir.bundled.mjs +53 -0
  179. package/src/bundler/adds/PathFSDir.mjs +100 -0
  180. package/src/bundler/adds/PathFSFile.bundled.mjs +40 -0
  181. package/src/bundler/adds/PathFSFile.mjs +85 -0
  182. package/src/bundler/adds/ToBundledJSPlugin.mjs +116 -55
  183. package/src/bundler/adds/autoExternalize.mjs +81 -0
  184. package/src/bundler/adds/emptyBufferValue.mjs +5 -0
  185. package/src/bundler/adds/isModuleTheBundledVersion.mjs +10 -0
  186. package/src/bundler/adds/onEndEsBuildErrorLogger.mjs +34 -0
  187. package/src/bundler/adds/resolveJSDependencyPath.mjs +17 -0
  188. package/src/class/AwaitSignal.mjs +119 -0
  189. package/src/class/Console.mjs +36 -14
  190. package/src/class/DataLog.mjs +29 -0
  191. package/src/class/Derived.mjs +67 -55
  192. package/src/class/Effect.mjs +270 -84
  193. package/src/class/EnvSignal.mjs +11 -8
  194. package/src/class/EsWatcher.mjs +60 -0
  195. package/src/class/EventSignal.mjs +46 -58
  196. package/src/class/FSDirArchWatcher.mjs +246 -0
  197. package/src/class/FileSafe.mjs +72 -24
  198. package/src/class/ForEach.mjs +78 -0
  199. package/src/class/ForSignal.mjs +115 -0
  200. package/src/class/GetterSetter.mjs +40 -0
  201. package/src/class/JSONFileHandler.mjs +90 -0
  202. package/src/class/ListSignal.mjs +68 -26
  203. package/src/class/LitExp.mjs +59 -36
  204. package/src/class/ObjectSignal.mjs +225 -0
  205. package/src/class/Paths.mjs +56 -20
  206. package/src/class/Prettivy.mjs +51 -0
  207. package/src/class/QChannel.mjs +48 -26
  208. package/src/class/SafeExit.mjs +156 -99
  209. package/src/class/Setup.mjs +28 -16
  210. package/src/class/Signal.mjs +50 -27
  211. package/src/class/SignalCollection.mjs +130 -0
  212. package/src/class/WalkThrough.mjs +6 -23
  213. package/src/class/{WorkerMainThreadBundled.mjs → WorkerMainThread.bundled.mjs} +61 -84
  214. package/src/class/WorkerMainThread.mjs +103 -102
  215. package/src/class/WorkerThread.mjs +24 -17
  216. package/src/common/Base64URL.mjs +6 -3
  217. package/src/common/Base64URLFromFile.mjs +17 -4
  218. package/src/common/BundledV.bundled.mjs +7 -0
  219. package/src/common/BundledV.mjs +45 -0
  220. package/src/common/CreateStringID.mjs +8 -7
  221. package/src/common/EnvMode.mjs +172 -0
  222. package/src/common/FactoryKey.mjs +11 -0
  223. package/src/common/Preferrence.mjs +27 -0
  224. package/src/common/Trace.mjs +1 -1
  225. package/src/common/TracePath.mjs +53 -3
  226. package/src/common/VivthUnBundledCodeBlock.mjs +8 -0
  227. package/src/doc/JSautoDOC.mjs +673 -284
  228. package/src/doc/cleanPreserveTypedef.mjs +27 -0
  229. package/src/doc/correctBeforeParse.mjs +57 -48
  230. package/src/doc/{parsedFile.mjs → parsedFileForDOC.mjs} +133 -120
  231. package/src/function/ClearRequireCache.mjs +33 -0
  232. package/src/function/CreateImmutable.mjs +40 -37
  233. package/src/function/EventCheck.mjs +5 -2
  234. package/src/function/EventObject.mjs +2 -6
  235. package/src/function/ForInAsync.mjs +76 -0
  236. package/src/function/ForInSync.mjs +87 -0
  237. package/src/function/ForOfAsync.mjs +61 -0
  238. package/src/function/ForOfSync.mjs +70 -0
  239. package/src/function/GetBufferFromRelativePath.mjs +25 -0
  240. package/src/function/GetFilesFromDir.mjs +49 -0
  241. package/src/function/GetMaxFilenameLength.mjs +32 -0
  242. package/src/function/GetModuleEsbuildPlatform.mjs +118 -0
  243. package/src/function/GetNamedImportAlias.mjs +2 -2
  244. package/src/function/GetRuntime.mjs +10 -14
  245. package/src/function/InstantiateAssemblyScript.mjs +22 -0
  246. package/src/function/IsAsync.mjs +1 -1
  247. package/src/function/IsInstanceOf.mjs +29 -0
  248. package/src/function/IsSameFile.mjs +41 -0
  249. package/src/function/IsStringLooksLikeAPath.mjs +20 -0
  250. package/src/function/IsTypeOf.mjs +27 -0
  251. package/src/function/IsTypeOf.mts +31 -0
  252. package/src/function/LazyFactory.mjs +25 -23
  253. package/src/function/MonkeyPatch.mjs +38 -0
  254. package/src/function/NewAnimationTimeline.mjs +55 -0
  255. package/src/function/NewChainable.mjs +69 -0
  256. package/src/function/NewDynamicsExport.mjs +312 -0
  257. package/src/function/NewObjectWrapper.mjs +14 -0
  258. package/src/function/ObjectRegistrar.mjs +23 -0
  259. package/src/function/ParseSQLFile.mjs +129 -0
  260. package/src/function/PipeAsync.mjs +30 -0
  261. package/src/function/PipeSync.mjs +28 -0
  262. package/src/function/SafeImport.mjs +77 -0
  263. package/src/function/TemplateLiteral.mjs +42 -23
  264. package/src/function/Timeout.mjs +4 -4
  265. package/src/function/Tries.mjs +22 -16
  266. package/src/function/TryAsync.mjs +3 -2
  267. package/src/function/TryNew.mjs +1 -1
  268. package/src/function/TsToMjs.mjs +184 -21
  269. package/src/function/UniqueFSTempName.mjs +33 -0
  270. package/src/function/errorToMessage.mjs +21 -0
  271. package/src/function/resolveErrorArray.mjs +15 -1
  272. package/src/neinth/VivthyNeinth.mjs +487 -0
  273. package/src/typehints/ArrayToKeys.mjs +17 -0
  274. package/src/typehints/ArrayToKeys.mts +31 -0
  275. package/src/typehints/AssemblyScriptExportsType.mjs +7 -0
  276. package/src/typehints/AssemblyScriptLoaderInstantiate.mjs +7 -0
  277. package/src/typehints/AutoDocASOptions.mjs +14 -0
  278. package/src/typehints/ChainableType.mjs +11 -0
  279. package/src/typehints/ComponentDecorator_Constructor.mjs +10 -0
  280. package/src/typehints/ConsoleAdditionalSettingType.mjs +6 -0
  281. package/src/typehints/Decorator.mjs +9 -0
  282. package/src/typehints/Decorator.mts +31 -0
  283. package/src/typehints/DecoratorMonkeyPatch.mjs +10 -0
  284. package/src/typehints/DecoratorMonkeyPatch.mts +43 -0
  285. package/src/{types → typehints}/DevTestCB.mjs +2 -2
  286. package/src/typehints/EnvModeType.mjs +6 -0
  287. package/src/{types → typehints}/ListArg.mjs +1 -1
  288. package/src/{types → typehints}/LitExpResultType.mjs +1 -1
  289. package/src/typehints/MonkeyPatchedType.mjs +13 -0
  290. package/src/typehints/ParametersFollowingN.mjs +8 -0
  291. package/src/typehints/ParametersFollowingN.mts +17 -0
  292. package/src/typehints/PrefixedKeysOf.mjs +9 -0
  293. package/src/typehints/Runtime.mjs +6 -0
  294. package/src/typehints/SafeImportReturnType.mjs +6 -0
  295. package/src/typehints/StylePropRefType.mjs +12 -0
  296. package/src/typehints/TemplateLiteralValueHandler.mjs +14 -0
  297. package/src/typehints/VLifecycleCallbacks.mjs +10 -0
  298. package/src/typehints/VivthCleanup.mjs +14 -0
  299. package/src/web/BrowserDirMapper.mjs +255 -0
  300. package/src/web/EnsureValidTag.mjs +5 -0
  301. package/src/web/EnsureValidTag.mts +10 -0
  302. package/src/web/ViteAddDynamics.mjs +34 -0
  303. package/src/web/ViteGetAllHTMLFile.mjs +97 -0
  304. package/src/web/WC_extendsA.mjs +330 -0
  305. package/src/web/WC_extendsB.mjs +332 -0
  306. package/src/web/bindings/WC_StyleProp_bind.mjs +70 -0
  307. package/src/web/bindings/WC_createElement_bind.mjs +95 -0
  308. package/src/web/bindings/WC_createNamedSlot.mjs +29 -0
  309. package/src/web/bindings/WC_litRender_bind.mjs +26 -0
  310. package/src/web/bindings/WC_litStyleMap.mjs +14 -0
  311. package/src/web/common/CSS.mjs +35 -0
  312. package/src/web/common/E.mjs +126 -0
  313. package/src/web/common/NewStyleSheetAsync.mjs +21 -0
  314. package/src/web/common/NewStyleSheetSync.mjs +21 -0
  315. package/src/web/common/WC_TagName_type.mjs +10 -0
  316. package/src/web/common/WC_TagName_type.mts +36 -0
  317. package/src/web/signals/IsInViewPortSignal.mjs +140 -0
  318. package/src/web/signals/ObserverSignal.mjs +93 -0
  319. package/src/web/signals/WC_litRef.mjs +61 -0
  320. package/src/web/signals/WC_loopedSiblingsRef.mjs +100 -0
  321. package/tsconfig.json +44 -41
  322. package/index.mjs +0 -91
  323. package/src/bundler/FSInline.mjs +0 -67
  324. package/src/bundler/FSInlineAnalyzer.mjs +0 -228
  325. package/src/bundler/FSInlineBundled.mjs +0 -38
  326. package/src/bundler/adds/externals.mjs +0 -8
  327. package/src/class/ListDerived.mjs +0 -42
  328. package/src/common/Dev.mjs +0 -134
  329. package/src/common/DevBundled.mjs +0 -5
  330. package/src/common/lazie.mjs +0 -3
  331. package/src/types/IsListSignal.mjs +0 -6
  332. package/src/types/Runtime.mjs +0 -6
  333. package/src/types/VivthDevCodeBlockStringType.mjs +0 -6
  334. package/types/index.d.mts +0 -58
  335. package/types/src/bundler/CompileJS.d.mts +0 -119
  336. package/types/src/bundler/FSInline.d.mts +0 -50
  337. package/types/src/bundler/FSInlineAnalyzer.d.mts +0 -37
  338. package/types/src/bundler/FSInlineBundled.d.mts +0 -22
  339. package/types/src/bundler/adds/externals.d.mts +0 -1
  340. package/types/src/class/Console.d.mts +0 -71
  341. package/types/src/class/Derived.d.mts +0 -98
  342. package/types/src/class/Effect.d.mts +0 -216
  343. package/types/src/class/ListDerived.d.mts +0 -38
  344. package/types/src/class/Paths.d.mts +0 -69
  345. package/types/src/class/SafeExit.d.mts +0 -103
  346. package/types/src/class/WorkerMainThreadBundled.d.mts +0 -83
  347. package/types/src/common/Base64URLFromFile.d.mts +0 -16
  348. package/types/src/common/Dev.d.mts +0 -68
  349. package/types/src/common/DevBundled.d.mts +0 -3
  350. package/types/src/common/lazie.d.mts +0 -1
  351. package/types/src/doc/JSautoDOC.d.mts +0 -83
  352. package/types/src/function/GetRuntime.d.mts +0 -2
  353. package/types/src/function/TemplateLiteral.d.mts +0 -22
  354. package/types/src/function/TsToMjs.d.mts +0 -23
  355. package/types/src/types/IsListSignal.d.mts +0 -4
  356. package/types/src/types/ListArg.d.mts +0 -4
  357. package/types/src/types/Runtime.d.mts +0 -4
  358. package/types/src/types/VivthDevCodeBlockStringType.d.mts +0 -4
  359. /package/{types → generated/types}/src/bundler/adds/pluginVivthBundle.d.mts +0 -0
  360. /package/{types → generated/types}/src/class/WorkerResult.d.mts +0 -0
  361. /package/{types → generated/types}/src/common/EventNameSpace.d.mts +0 -0
  362. /package/{types → generated/types}/src/common/eventObjects.d.mts +0 -0
  363. /package/{types → generated/types}/src/common/keys.d.mts +0 -0
  364. /package/{types → generated/types}/src/doc/correctBeforeParse.d.mts +0 -0
  365. /package/{types → generated/types}/src/function/TrySync.d.mts +0 -0
  366. /package/{types → generated/types}/src/function/resolveErrorArray.d.mts +0 -0
  367. /package/{types/src/types → generated/types/src/typehints}/AnyButUndefined.d.mts +0 -0
  368. /package/{types/src/types → generated/types/src/typehints}/ExtnameType.d.mts +0 -0
  369. /package/{types/src/types → generated/types/src/typehints}/LitExpKeyType.d.mts +0 -0
  370. /package/{types/src/types → generated/types/src/typehints}/LitExpResultType.d.mts +0 -0
  371. /package/{types/src/types → generated/types/src/typehints}/MutationType.d.mts +0 -0
  372. /package/{types/src/types → generated/types/src/typehints}/QCBFIFOReturn.d.mts +0 -0
  373. /package/{types/src/types → generated/types/src/typehints}/QCBReturn.d.mts +0 -0
  374. /package/src/{types → typehints}/AnyButUndefined.mjs +0 -0
  375. /package/src/{types → typehints}/ExtnameType.mjs +0 -0
  376. /package/src/{types → typehints}/LitExpKeyType.mjs +0 -0
  377. /package/src/{types → typehints}/MutationType.mjs +0 -0
  378. /package/src/{types → typehints}/QCBFIFOReturn.mjs +0 -0
  379. /package/src/{types → typehints}/QCBReturn.mjs +0 -0
@@ -8,20 +8,18 @@ import { Console } from './Console.mjs';
8
8
  import { Derived } from './Derived.mjs';
9
9
  import { Effect } from './Effect.mjs';
10
10
  import { Paths } from './Paths.mjs';
11
- import { SafeExit } from './SafeExit.mjs';
12
11
  import { Signal } from './Signal.mjs';
13
12
 
14
13
  /**
15
- * @template POST
16
- * @typedef {import('./WorkerResult.mjs').WorkerResult<POST>} WorkerResult
17
- */
18
- /**
19
- * @template RECEIVE
20
- * @template POST
21
- * @typedef {import('./WorkerThread.mjs').WorkerThread<RECEIVE, POST>} WorkerThread
14
+ * it supposed to be able to call on browser too
15
+ * ```js
16
+ * import { SafeExit } from './SafeExit.mjs';
17
+ * ```
18
+ * need to add cleaner for SafeExit.instance?.addCallback
22
19
  */
20
+
23
21
  /**
24
- * @typedef {import('../common/lazie.mjs').unwrapLazy} unwrapLazy
22
+ * @typedef {import('../typehints/VivthCleanup.mjs').VivthCleanup} VivthCleanup
25
23
  */
26
24
 
27
25
  /**
@@ -29,8 +27,18 @@ import { Signal } from './Signal.mjs';
29
27
  * - class helper to create `Worker` instance;
30
28
  * - before any `Worker` functionaily to be used, you need to setup it with `WorkerThread.setup` and `WorkerMainThread.setup` before runing anytyhing;
31
29
  * @template {WorkerThread<any, any>} WT
30
+ * @implements {VivthCleanup}
32
31
  */
33
32
  export class WorkerMainThread {
33
+ /**
34
+ * @template POST
35
+ * @typedef {import('./WorkerResult.mjs').WorkerResult<POST>} WorkerResult
36
+ */
37
+ /**
38
+ * @template RECEIVE
39
+ * @template POST
40
+ * @typedef {import('./WorkerThread.mjs').WorkerThread<RECEIVE, POST>} WorkerThread
41
+ */
34
42
  /**
35
43
  * @type {boolean}
36
44
  */
@@ -56,7 +64,7 @@ export class WorkerMainThread {
56
64
  * ```
57
65
  * @example
58
66
  * import { Worker } from 'node:worker_threads';
59
- * import { WorkerMainThread } from 'vivth';
67
+ * import { WorkerMainThread } from 'vivth/neutral';
60
68
  *
61
69
  * WorkerMainThread.setup({
62
70
  * workerClass: Worker,
@@ -73,10 +81,10 @@ export class WorkerMainThread {
73
81
  * });
74
82
  */
75
83
  static setup = ({ workerClass, pathValidator }) => {
76
- if (Paths.root === undefined) {
77
- return;
78
- }
79
- if (WorkerMainThread.#isRegistered) {
84
+ if (
85
+ /** */
86
+ WorkerMainThread.#isRegistered
87
+ ) {
80
88
  Console.warn({ message: 'WorkerMainThread.setup, can only be called once' });
81
89
  return;
82
90
  }
@@ -103,28 +111,14 @@ export class WorkerMainThread {
103
111
  type: 'module',
104
112
  });
105
113
  /**
106
- * @template {WorkerThread<any, any>} WT
107
114
  * @description
108
115
  * - create Worker_instance;
109
- * @param {string} handler
110
- * @param {Omit<WorkerOptions|import('node:worker_threads').WorkerOptions, 'eval'|'type'>} [options]
111
- * @returns {WorkerMainThread<WT>}
112
- * @example
113
- * import { WorkerMainThread } from 'vivth';
114
- *
115
- * export const myDoubleWorker = WorkerMainThread.newVivthWorker('./doubleWorkerThread.mjs');
116
- */
117
- static newVivthWorker(handler, options = {}) {
118
- return new WorkerMainThread(handler, options);
119
- }
120
- /**
121
- * @private
122
- * @param {Parameters<typeof WorkerMainThread<WT>["newVivthWorker"]>[0]} handler
123
- * @param {Parameters<typeof WorkerMainThread<WT>["newVivthWorker"]>[1]} [options]
116
+ * @param {import('../bundler/adds/PathFSBundles.mjs').PathFSBundles} handler
117
+ * @param {Omit<WorkerOptions|import('node:worker_threads').WorkerOptions, 'eval'|'type'>} options
124
118
  * @example
125
- * import { WorkerMainThread } from 'vivth';
119
+ * import { WorkerMainThread } from 'vivth/neutral';
126
120
  *
127
- * export const myDoubleWorker = WorkerMainThread.newVivthWorker('./doubleWorkerThread.mjs');
121
+ * export const myDoubleWorker = new WorkerMainThread(PathFSBundles.vivthBundles('./doubleWorkerThread.mjs'));
128
122
  */
129
123
  constructor(handler, options = {}) {
130
124
  /**
@@ -134,7 +128,7 @@ export class WorkerMainThread {
134
128
  const listener = (ev) => {
135
129
  this.#proxyReceiver.value = ev;
136
130
  };
137
- WorkerMainThread.#workerFilehandler(handler, options, this, listener);
131
+ WorkerMainThread.#workerFilehandler(handler.path, options, this, listener);
138
132
  }
139
133
  /**
140
134
  * @type {import('./Signal.mjs').Signal<import('./WorkerResult.mjs').WorkerResult<WT["POST"]>|MessageEvent<import('./WorkerResult.mjs').WorkerResult<WT["POST"]>>>}
@@ -151,99 +145,99 @@ export class WorkerMainThread {
151
145
  * @returns {Promise<void>}
152
146
  */
153
147
  static async #workerFilehandler(handler, options, worker, listener) {
154
- let resolvedPath;
155
148
  const pathValidator = WorkerMainThread.pathValidator;
156
149
  const [resolvedPath_, error] = await TryAsync(async () => {
157
- if (Paths.root === undefined) {
158
- throw new Error('path root undefined');
159
- }
160
150
  return await pathValidator({
161
151
  worker: handler,
162
152
  root: Paths.root,
163
153
  });
164
154
  });
165
- if (error) {
166
- Console.error({
167
- error,
168
- pathValidator,
169
- message: 'invalid pathValidator inputed to `WorkerMainThread`;',
170
- });
155
+ if (
156
+ /** */
157
+ error
158
+ ) {
159
+ Console.error(
160
+ {
161
+ error,
162
+ pathValidator,
163
+ message: 'invalid pathValidator inputed to `WorkerMainThread`;',
164
+ },
165
+ { now: true },
166
+ );
171
167
  return;
172
168
  }
173
- resolvedPath = resolvedPath_;
169
+ const resolvedPath = resolvedPath_;
174
170
  const runtime = GetRuntime();
175
171
  const workerClass = WorkerMainThread.workerClass;
176
172
  if (
177
- //
173
+ /** */
178
174
  !workerClass
179
175
  ) {
180
- Console.error('invalid `Worker` inputed to `WorkerMainThread`;');
176
+ Console.error('invalid `Worker` inputed to `WorkerMainThread`;', { now: true });
181
177
  return;
182
178
  }
183
- const [, errorCreatingWorker] = await Tries({
179
+ const [[key], errorCreatingWorker] = await Tries({
184
180
  browser: async () => {
185
- if (runtime !== 'browser') {
186
- throw new Error('not a browser');
181
+ if (
182
+ /** */
183
+ runtime !== 'browser'
184
+ ) {
185
+ throw 'not a browser';
187
186
  }
188
- let worker_;
189
- worker_ = worker.#worker.value = new workerClass(
190
- resolvedPath,
191
- // @ts-expect-error
192
- {
193
- ...options,
194
- ...WorkerMainThread.#options,
195
- }
196
- );
197
- if ('onmessage' in worker_ === false) {
198
- throw new Error('not a browser');
187
+ const worker_ = (worker.#worker.value = new workerClass(resolvedPath, {
188
+ ...options,
189
+ ...WorkerMainThread.#options,
190
+ }));
191
+ if (
192
+ /** */
193
+ 'onmessage' in worker_ ===
194
+ false
195
+ ) {
196
+ throw 'not a browser';
199
197
  }
200
198
  worker_.onmessage = listener;
201
- if (SafeExit.instance) {
202
- SafeExit.instance.addCallback(async () => {
203
- worker_.onmessage = null;
204
- });
205
- }
199
+ // SafeExit.instance?.addCallback(async () => {
200
+ // worker_.onmessage = null;
201
+ // });
206
202
  },
207
203
  nonBrowser: async () => {
208
- const worker_ = (worker.#worker.value = new workerClass(
209
- resolvedPath,
210
- // @ts-expect-error
211
- {
212
- ...options,
213
- ...WorkerMainThread.#options,
214
- }
215
- ));
216
- if ('addEventListener' in worker_) {
204
+ const worker_ = (worker.#worker.value = new workerClass(resolvedPath, {
205
+ ...options,
206
+ ...WorkerMainThread.#options,
207
+ }));
208
+ if (
209
+ /** */
210
+ 'addEventListener' in worker_
211
+ ) {
217
212
  worker_.addEventListener('message', listener);
218
- if (SafeExit.instance) {
219
- SafeExit.instance.addCallback(async () => {
220
- worker_.removeEventListener('message', listener);
221
- });
222
- }
223
- } else if ('addListener' in worker_) {
213
+ // SafeExit.instance?.addCallback(async () => {
214
+ // worker_.removeEventListener('message', listener);
215
+ // });
216
+ return;
217
+ }
218
+ if (
219
+ /** */
220
+ 'addListener' in worker_
221
+ ) {
224
222
  worker_.addListener('message', listener);
225
- if (SafeExit.instance) {
226
- SafeExit.instance.addCallback(async () => {
227
- worker_.removeListener('message', listener);
228
- });
229
- }
230
- } else {
231
- throw new Error('not a standard non browser');
223
+ // SafeExit.instance?.addCallback(async () => {
224
+ // worker_.removeListener('message', listener);
225
+ // });
226
+ return;
232
227
  }
228
+ throw 'not a standard non browser';
233
229
  },
234
230
  });
235
- if (errorCreatingWorker) {
236
- Console.error(errorCreatingWorker);
231
+ if (
232
+ /** */
233
+ !key
234
+ ) {
235
+ Console.error({ errorCreatingWorker }, { now: true });
237
236
  return;
238
237
  }
239
- if (SafeExit.instance) {
240
- SafeExit.instance.addCallback(async () => {
241
- if (worker.#worker.value) {
242
- worker.#worker.value.postMessage(closeWorkerThreadEventObject, []);
243
- }
244
- worker.terminate();
245
- });
246
- }
238
+ // SafeExit.instance?.addCallback(async () => {
239
+ // worker.terminate();
240
+ // });
247
241
  }
248
242
  /**
249
243
  * lazyly generated because node version need to await
@@ -258,7 +252,11 @@ export class WorkerMainThread {
258
252
  #handler = new Effect(async ({ subscribe }) => {
259
253
  const postData = subscribe(this.#proxyPost).value;
260
254
  const worker = subscribe(this.#worker).value;
261
- if (worker === undefined || postData === undefined) {
255
+ if (
256
+ /** */
257
+ worker === undefined ||
258
+ postData === undefined
259
+ ) {
262
260
  return;
263
261
  }
264
262
  worker.postMessage(postData, []);
@@ -266,9 +264,9 @@ export class WorkerMainThread {
266
264
  /**
267
265
  * @description
268
266
  * - terminate all signals that are used on this instance;
269
- * @return {void}
267
+ * @return {Promise<void>}
270
268
  */
271
- terminate = () => {
269
+ vivthCleanup = async () => {
272
270
  this.postMessage(closeWorkerThreadEventObject);
273
271
  /**
274
272
  * this is more for browser, as most of this are automatically cleaned with `SafeExit`;
@@ -285,7 +283,7 @@ export class WorkerMainThread {
285
283
  * - result signal of the processed message;
286
284
  * @type {Derived<WorkerResult<WT["POST"]>>}
287
285
  * @example
288
- * import { Effect } from 'vivth';
286
+ * import { Effect } from 'vivth/neutral';
289
287
  * import { myDoubleWorker } from './myDoubleWorker.mjs';
290
288
  *
291
289
  * const doubleReceiverSignal = myDoubleWorker.receiverSignal;
@@ -296,7 +294,10 @@ export class WorkerMainThread {
296
294
  */
297
295
  receiverSignal = new Derived(async ({ subscribe }) => {
298
296
  const val = subscribe(this.#proxyReceiver).value;
299
- if (val instanceof MessageEvent) {
297
+ if (
298
+ /** */
299
+ val instanceof MessageEvent
300
+ ) {
300
301
  return val.data;
301
302
  }
302
303
  return val;
@@ -1,23 +1,38 @@
1
1
  // @ts-check
2
+ /// <reference lib='dom' />
2
3
 
3
4
  import { closeWorkerThreadEventObject } from '../common/eventObjects.mjs';
4
5
  import { EventCheck } from '../function/EventCheck.mjs';
6
+ import { LazyFactory } from '../function/LazyFactory.mjs';
5
7
  import { Tries } from '../function/Tries.mjs';
6
8
  import { TryAsync } from '../function/TryAsync.mjs';
7
9
  import { Console } from './Console.mjs';
8
10
  import { QChannel } from './QChannel.mjs';
9
11
  import { WorkerResult } from './WorkerResult.mjs';
10
12
 
13
+ /**
14
+ * @typedef { import('../typehints/VivthCleanup.mjs').VivthCleanup } VivthCleanup
15
+ */
16
+
11
17
  /**
12
18
  * @description
13
19
  * - class helper for `WorkerThread` creation;
14
20
  * - before any `Worker` functionaily to be used, you need to setup it with `WorkerThread.setup` and `WorkerMainThread.setup` before runing anytyhing;
15
21
  * @template RECEIVE
16
22
  * @template POST
23
+ * @implements {VivthCleanup}
17
24
  */
18
25
  export class WorkerThread {
26
+ vivthCleanup = async () => {
27
+ WorkerThread.#refs?.parentPort?.removeAllListeners();
28
+ WorkerThread.#refs?.parentPort?.close();
29
+ };
19
30
  /**
20
- * @typedef {import('../types/QCBReturn.mjs').QCBReturn} QCBReturn
31
+ * @returns {QChannel<WorkerThread>}
32
+ */
33
+ #q = LazyFactory(() => new QChannel('WorkerThread'));
34
+ /**
35
+ * @typedef {import('../typehints/QCBReturn.mjs').QCBReturn} QCBReturn
21
36
  */
22
37
  /**
23
38
  * @type {Parameters<typeof WorkerThread["setup"]>[0]|undefined}
@@ -35,8 +50,8 @@ export class WorkerThread {
35
50
  * ```
36
51
  * @returns {typeof WorkerThread<RECEIVE, POST>}
37
52
  * @example
38
- * import { WorkerThread } from 'vivth';
39
53
  * import { parentPort } from 'node:worker_threads';
54
+ * import { WorkerThread } from 'vivth/neutral';
40
55
  *
41
56
  * export const MyWorkerThreadRef = WorkerThread.setup({ parentPort });
42
57
  */
@@ -44,10 +59,6 @@ export class WorkerThread {
44
59
  WorkerThread.#refs = refs;
45
60
  return WorkerThread;
46
61
  }
47
- /**
48
- * @returns {QChannel<WorkerThread>}
49
- */
50
- #qChannel = new QChannel('`WorkerThread` individuals');
51
62
  /**
52
63
  * @param {any} ev
53
64
  */
@@ -82,30 +93,26 @@ export class WorkerThread {
82
93
  * @param {MessageEvent<RECEIVE>|RECEIVE} ev
83
94
  * @returns {Promise<void>}
84
95
  */
85
- // @ts-expect-error
86
96
  self.onmessage = async function (ev) {
87
97
  const [, error] = await TryAsync(async () => {
88
98
  ev = ev instanceof MessageEvent ? ev.data : ev;
89
99
  if (WorkerThread.#isCloseWorkerEvent(ev)) {
90
- this_.#qChannel.close();
91
- // @ts-expect-error
100
+ this_.#q.close();
92
101
  self.onmessage = null;
93
102
  return;
94
103
  }
95
- const [data, error] = await this_.#qChannel.callback(this, async ({ isLastOnQ }) => {
104
+ const [data, error] = await this_.#q.callback(this, async ({ isLastOnQ }) => {
96
105
  // @ts-expect-error
97
106
  return await handler(ev, isLastOnQ);
98
107
  });
99
108
  if (error) {
100
109
  throw error;
101
110
  }
102
- // @ts-expect-error
103
111
  self.postMessage(new WorkerResult(data, undefined));
104
112
  });
105
113
  if (error === undefined) {
106
114
  return;
107
115
  }
108
- // @ts-expect-error
109
116
  self.postMessage(new WorkerResult(undefined, error?.message ?? 'Unknown error'));
110
117
  };
111
118
  },
@@ -125,11 +132,11 @@ export class WorkerThread {
125
132
  const [, error] = await TryAsync(async () => {
126
133
  ev = ev instanceof MessageEvent ? ev.data : ev;
127
134
  if (WorkerThread.#isCloseWorkerEvent(ev)) {
128
- this_.#qChannel.close();
135
+ this_.#q.close();
129
136
  parentPort.off('message', listener);
130
137
  return;
131
138
  }
132
- const [data, error] = await this_.#qChannel.callback(this_, async ({ isLastOnQ }) => {
139
+ const [data, error] = await this_.#q.callback(this_, async ({ isLastOnQ }) => {
133
140
  // @ts-expect-error
134
141
  return await handler(ev, isLastOnQ);
135
142
  });
@@ -145,11 +152,11 @@ export class WorkerThread {
145
152
  };
146
153
  parentPort.on('message', listener);
147
154
  },
148
- }).then(([, error]) => {
149
- if (error === undefined) {
155
+ }).then(([, errorMakingWorkerThread]) => {
156
+ if (errorMakingWorkerThread === undefined || !errorMakingWorkerThread.size) {
150
157
  return;
151
158
  }
152
- Console.error(error);
159
+ Console.error({ errorMakingWorkerThread }, { now: true });
153
160
  });
154
161
  }
155
162
  /**
@@ -1,5 +1,7 @@
1
1
  // @ts-check
2
2
 
3
+ import { ForOfSync } from '../function/ForOfSync.mjs';
4
+
3
5
  /**
4
6
  * @description
5
7
  * - create inline base64 url;
@@ -17,7 +19,8 @@
17
19
  * ```
18
20
  * @returns {string}
19
21
  * @example
20
- * import { Base64URL } from 'vivth'
22
+ * import { Base64URL } from 'vivth/neutral';
23
+ *
21
24
  * import fileString from './fileString.mjs';
22
25
  *
23
26
  * // example for browser;
@@ -26,8 +29,8 @@
26
29
  export function Base64URL(fileString, mimeType, btoaFunction) {
27
30
  const utf8 = new TextEncoder().encode(fileString);
28
31
  let binary = '';
29
- for (let byte of utf8) {
32
+ ForOfSync(utf8, (byte) => {
30
33
  binary += String.fromCharCode(byte);
31
- }
34
+ });
32
35
  return `data:${mimeType.toString()};base64,${btoaFunction(binary)}`;
33
36
  }
@@ -4,21 +4,34 @@ import { readFile } from 'node:fs/promises';
4
4
 
5
5
  import { lookup } from 'mime-types';
6
6
 
7
+ import { TryAsync } from '../function/TryAsync.mjs';
8
+ import { Console } from '../class/Console.mjs';
9
+
7
10
  /**
8
11
  * @description
9
12
  * - create inline base64 url;
10
13
  * - usage:
11
14
  * >- can be extremely usefull to display file on desktop app webview, without exposing http server;
12
- * >- when using `FSInline`, use [Base64URL](#base64url) instead;
15
+ * >- when using `FSasar`, use [Base64URL](#base64url) instead;
13
16
  * @param {string} filePath
14
- * @returns {Promise<string>}
17
+ * @returns {Promise<{data:string, mime:string|false}|undefined>}
15
18
  * @example
16
19
  * import { join } from 'node:path'
17
20
  *
18
- * import { Base64URLFromFile, Paths } from 'vivth'
21
+ * import { Base64URLFromFile } from 'vivth/node';
22
+ * import { Paths } from 'vivth/neutral';
19
23
  *
20
24
  * await Base64URLFromFile(join(Paths.root, '/path/to/file'));
21
25
  */
22
26
  export async function Base64URLFromFile(filePath) {
23
- return `data:${lookup(filePath)};base64,${await readFile(filePath, { encoding: 'base64' })}`;
27
+ const [res, errorBase64URLFromFile] = await TryAsync(async () => {
28
+ const mime = lookup(filePath);
29
+ const data = `data:${lookup(filePath)};base64,${await readFile(filePath, { encoding: 'base64' })}`;
30
+ return { data, mime };
31
+ });
32
+ if (errorBase64URLFromFile) {
33
+ Console.error({ errorBase64URLFromFile });
34
+ return;
35
+ }
36
+ return res;
24
37
  }
@@ -0,0 +1,7 @@
1
+ // @ts-check
2
+
3
+ export class BundledV {
4
+ static get isBundled() {
5
+ return true;
6
+ }
7
+ }
@@ -0,0 +1,45 @@
1
+ // @ts-check
2
+
3
+ /**
4
+ * @description
5
+ * - class helper for `vivth` `Bundled` values;
6
+ */
7
+ export class BundledV {
8
+ static #isBundled = false;
9
+ /**
10
+ * @description
11
+ * - readonly value of whether the script run after being bundled with `vivth` or not;
12
+ * @readonly
13
+ * @type {boolean}
14
+ * @example
15
+ * import { BundledV } from 'vivth/neutral';
16
+ *
17
+ * if(BundledV.isBundled){
18
+ * // code
19
+ * }
20
+ */
21
+ static get isBundled() {
22
+ return BundledV.#isBundled;
23
+ }
24
+ /**
25
+ * @description
26
+ * - to create `unbundled` only codeBlock;
27
+ * >- when properly bundled via `vivth` bundling mechanism, this code block will be removed;
28
+ * @param {()=>void} callback
29
+ * @param {import('./VivthUnBundledCodeBlock.mjs').VivthUnBundledCodeBlock} _closing
30
+ * - must be filled for regexp detection;
31
+ * @returns {void}
32
+ * @example
33
+ * import { BundledV } from 'vivth/neutral';
34
+ *
35
+ * BundledV.vivthUnBundledCodeBlock(() => {
36
+ * // code
37
+ * }, 'vivthUnBundledCodeBlock')
38
+ */
39
+ static vivthUnBundledCodeBlock = (callback, _closing) => {
40
+ if (BundledV.isBundled) {
41
+ return;
42
+ }
43
+ callback();
44
+ };
45
+ }
@@ -5,7 +5,7 @@ import { LazyFactory } from '../function/LazyFactory.mjs';
5
5
  import { Timeout } from '../function/Timeout.mjs';
6
6
  import { TryAsync } from '../function/TryAsync.mjs';
7
7
 
8
- const qchannel = LazyFactory(() => new QChannel('CreateStringID'));
8
+ const q = LazyFactory(() => new QChannel('CreateStringID'));
9
9
 
10
10
  /**
11
11
  * @description
@@ -13,21 +13,22 @@ const qchannel = LazyFactory(() => new QChannel('CreateStringID'));
13
13
  * - the asynchrounous nature is to prevent race condition that might resulting same Id being generated;
14
14
  * >- queued using QChannel;
15
15
  * @param {string} [prefix]
16
+ * @param {string} [suffix]
16
17
  * @returns {ReturnType<typeof TryAsync<string>>}
17
18
  * @example
18
- * import { CreateStringID } from 'vivth';
19
+ * import { CreateStringID } from 'vivth/neutral';
19
20
  *
20
21
  * (async () => {
21
- * const [myUniqueID, errorCreatingUniqueID] = await CreateStringID('myPrefix');
22
+ * const [myUniqueID, errorCreatingUniqueID] = await CreateStringID('myPrefix', 'mySuffix');
22
23
  * if(errorCreatingUniqueID) {
23
24
  * return;
24
25
  * }
25
- * Console.log(myUniqueID); // `myPrefix${Date.now()}`
26
+ * Console.log(myUniqueID); // `myPrefix${Date.now()}mySuffix`
26
27
  * })()
27
28
  */
28
- export async function CreateStringID(prefix = '') {
29
- return await qchannel.callback('newStringID', async () => {
29
+ export async function CreateStringID(prefix = '', suffix = '') {
30
+ return await q.callback('newStringID', async () => {
30
31
  await Timeout(1);
31
- return `${prefix}${Date.now()}`;
32
+ return `${prefix}${Date.now()}${suffix}`;
32
33
  });
33
34
  }