vivth 1.4.10 → 1.5.1

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 +28 -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 +78 -42
  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} +56 -77
  214. package/src/class/WorkerMainThread.mjs +98 -94
  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 -142
  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
@@ -0,0 +1,491 @@
1
+ // @ts-check
2
+
3
+ import { dirname, extname, relative } from 'node:path';
4
+ import { readFile } from 'node:fs/promises';
5
+
6
+ import { watch } from 'chokidar';
7
+ import { compileAsync } from 'sass';
8
+
9
+ import { Paths } from '../class/Paths.mjs';
10
+ import { QChannel } from '../class/QChannel.mjs';
11
+ import { FileSafe } from '../class/FileSafe.mjs';
12
+ import { ForOfSync } from '../function/ForOfSync.mjs';
13
+ import { Console } from '../class/Console.mjs';
14
+ import { SafeExit } from '../class/SafeExit.mjs';
15
+ import { BrowserExternals } from './adds/BrowserExternals.mjs';
16
+ import { TryAsync } from '../function/TryAsync.mjs';
17
+ import { pluginVivthBundle } from './adds/pluginVivthBundle.mjs';
18
+ import { CreateESPlugin } from './CreateESPlugin.mjs';
19
+ import { UniqueFSTempName } from '../function/UniqueFSTempName.mjs';
20
+ import { EsWatcher } from '../class/EsWatcher.mjs';
21
+ import { TrySync } from '../function/TrySync.mjs';
22
+ import { onEndEsBuildErrorLogger } from './adds/onEndEsBuildErrorLogger.mjs';
23
+ import { Preferrence } from '../common/Preferrence.mjs';
24
+ import { LazyFactory } from '../function/LazyFactory.mjs';
25
+
26
+ /**
27
+ * @typedef {import('../typehints/VivthCleanup.mjs').VivthCleanup} VivthCleanup
28
+ */
29
+
30
+ /**
31
+ * @description
32
+ * - each file can define it's own `targetPaths` inline by adding comment then fullpath on the begining of the file:
33
+ * >- `mjs`;
34
+ * ```js
35
+ * // D://my/path/something.mjs
36
+ * // D://my/path/something-else.mjs
37
+ *
38
+ * console.log('hello');
39
+ * ```
40
+ * >- `scss`;
41
+ * ```scss
42
+ * /*[blank] D://my/path/something.css *[blank]/
43
+ *
44
+ * $somecolor: black;
45
+ *
46
+ * body {
47
+ * background-color: $somecolor;
48
+ * }
49
+ * ```
50
+ * >- `.ignore`;
51
+ * ```.ignore
52
+ * # D:/my/project/root/.gitignore
53
+ * # D:/my/project/root/.npmignore
54
+ *
55
+ * /dev/
56
+ * ```
57
+ * - files extention:
58
+ * >- `js`/`ts` files will be compiled with `vivth/node.EsWathcer`, using `option.esbuild` as argument;
59
+ * >- `sass`/`scss` it will be compiled to `css` first;
60
+ * >- other than those files, they will be just copied to `targetPaths`;
61
+ * - for runtime example see file `/dev/auto/` on source code;
62
+ * @implements {VivthCleanup}
63
+ */
64
+ export class FileSelfMapper {
65
+ /**
66
+ * @description
67
+ * @param {string} watchPath
68
+ * - `relative`(to `Paths.root`) OR `absolute`, both are accepted;
69
+ * @param {Object} options
70
+ * @param {Omit<Parameters<import('esbuild')["context"]>[0], "write"|"minify"|"format"|"mainFields"|"outfile"|"bundle">} [options.esbuild]
71
+ * - `logLimit`: default = `3`;
72
+ * - `outFile`: auto determined by comment line on top level of each files;
73
+ * - `minify`: determined by file `relativePath`(to dirname of `watchpath`) name included `.min.`;
74
+ * - `format`: determined by file `relativePath`(to dirname of `watchpath`) name included `.esm.` or `.iife.`;
75
+ * - `mainFields`: `module,main`;
76
+ * - `bundle`: automatically added by `vivth.FileSelfMapper`;
77
+ * - `write`: automatically added by `vivth.FileSelfMapper`;
78
+ * @param {boolean} [options.deleteTempFilesAfterExit]
79
+ * @param {(path:{mapTo:string, src:string}, content:string)=>(string|false)} [options.postProcessDirectCopy]
80
+ * - works for:
81
+ * >- `.js`;
82
+ * >- anything that are not `sass` and `module js/ts`;
83
+ * - return `false` to exclude `target` from mapping;
84
+ * @example
85
+ * import { FileSelfMapper } from 'vivth/node';
86
+ *
87
+ * new FileSelfMapper('../ssg-assets/', {
88
+ * esbuild: {},
89
+ * // deleteTempFilesAfterExit: true,
90
+ * });
91
+ */
92
+ constructor(watchPath, options) {
93
+ SafeExit.instance?.addCallback(this.vivthCleanup);
94
+ const watcherFullPath = Paths.diskAbsolute(watchPath);
95
+ const watcher = watch(watcherFullPath, { ignoreInitial: false });
96
+ watcher.addListener('all', async (eventName, path, stats) => {
97
+ path = Paths.normalize(path);
98
+ const [, errorWatcherListener] = await this.#q.callback(path, async ({ isLastOnQ }) => {
99
+ await this.#listenerQ(isLastOnQ, eventName, path, watcherFullPath, options, stats);
100
+ });
101
+ if (!errorWatcherListener) {
102
+ return;
103
+ }
104
+ Console.error(
105
+ {
106
+ errorWatcherListener,
107
+ },
108
+ {
109
+ now: true,
110
+ },
111
+ );
112
+ });
113
+ }
114
+ /**
115
+ * @type {QChannel<string>}
116
+ */
117
+ #q = LazyFactory(() => new QChannel('FileSelfMapper'));
118
+ /**
119
+ * @type { Map<string, ()=>Promise<void>> }
120
+ */
121
+ #releaseCallbackPerPath = new Map();
122
+
123
+ vivthCleanup = async () => {
124
+ SafeExit.instance?.removeCallback(this.vivthCleanup);
125
+ await Promise.all(
126
+ ForOfSync(this.#releaseCallbackPerPath, async ([path]) => {
127
+ await this.#runCleanupOfSpecificPath(path);
128
+ })[0],
129
+ );
130
+ };
131
+
132
+ /**
133
+ * @param { string } path
134
+ * @returns { Promise<void> }
135
+ */
136
+ #runCleanupOfSpecificPath = async (path) => {
137
+ const releaseCallback = this.#releaseCallbackPerPath.get(path);
138
+ if (!releaseCallback) {
139
+ return;
140
+ }
141
+ await releaseCallback();
142
+ this.#releaseCallbackPerPath.delete(path);
143
+ };
144
+
145
+ /**
146
+ *
147
+ * @param {() => boolean} isLastOnQ
148
+ * @param {import('chokidar/handler.js').EventName} eventName
149
+ * @param {string} path
150
+ * @param {string} watcherFullPath
151
+ * @param {ConstructorParameters<typeof FileSelfMapper>[1]} options
152
+ * @param {import('node:fs').Stats} [stats]
153
+ * @returns
154
+ */
155
+ #listenerQ = async (isLastOnQ, eventName, path, watcherFullPath, options, stats) => {
156
+ if (!isLastOnQ()) {
157
+ return;
158
+ }
159
+ switch (eventName) {
160
+ case 'add':
161
+ case 'change':
162
+ break;
163
+ case 'unlink':
164
+ case 'error':
165
+ await this.#runCleanupOfSpecificPath(path);
166
+ return;
167
+ default:
168
+ return;
169
+ }
170
+
171
+ if (this.#releaseCallbackPerPath.has(path) || !stats || !stats.isFile()) {
172
+ return;
173
+ }
174
+ const extension = extname(path);
175
+ if (
176
+ extension !== '.scss' &&
177
+ extension !== '.sass' &&
178
+ extension !== '.mjs' &&
179
+ extension !== '.mts' &&
180
+ extension !== '.ts'
181
+ ) {
182
+ await FileSelfMapper.#writeCommon(path, options.postProcessDirectCopy);
183
+ return;
184
+ }
185
+ if (extension === '.scss' || extension === '.sass') {
186
+ await FileSelfMapper.#bundleSCSS(path);
187
+ return;
188
+ }
189
+ await this.#bundleJS(watcherFullPath, path, options);
190
+ };
191
+ /**
192
+ * @param { string } path
193
+ * @param { (path:{mapTo:string, src:string}, content:string)=>(string|false) } [postprosess]
194
+ * @returns { Promise<void> }
195
+ */
196
+ static #writeCommon = async (path, postprosess) => {
197
+ const { content, targetPaths } = await FileSelfMapper.#getTargetPath(path);
198
+ const [promiseWrite] = ForOfSync(targetPaths, async (target) => {
199
+ /**
200
+ * @type {string|false}
201
+ */
202
+ let trueContent;
203
+ if (postprosess) {
204
+ trueContent = postprosess({ mapTo: target, src: path }, content);
205
+ } else {
206
+ trueContent = content;
207
+ }
208
+ if (trueContent === false) {
209
+ return;
210
+ }
211
+ const [, errorWriteCommonFile] = await FileSafe.write(target, trueContent, {
212
+ encoding: Preferrence.encoding,
213
+ });
214
+ if (errorWriteCommonFile) {
215
+ Console.error(
216
+ {
217
+ errorWriteCommonFile,
218
+ },
219
+ {
220
+ now: true,
221
+ },
222
+ );
223
+ return;
224
+ }
225
+ Console.info(
226
+ {
227
+ [FileSelfMapper.name]: `✅ Succeed write '${path}' 👉 '${Paths.normalize(target)}';`,
228
+ },
229
+ {
230
+ now: true,
231
+ },
232
+ );
233
+ });
234
+ await Promise.all(promiseWrite);
235
+ };
236
+
237
+ /**
238
+ * @param { string } path
239
+ * @returns { Promise<void> }
240
+ */
241
+ static #bundleSCSS = async (path) => {
242
+ const { targetPaths } = await FileSelfMapper.#getTargetPath(path);
243
+ const result = (await compileAsync(path, { style: 'compressed' })).css;
244
+ const promisedWrite = ForOfSync(targetPaths, async (target) => {
245
+ const [, errorWriteCSS] = await FileSafe.write(target, result, {
246
+ encoding: Preferrence.encoding,
247
+ });
248
+ if (errorWriteCSS) {
249
+ Console.error(
250
+ {
251
+ errorWriteCSS,
252
+ },
253
+ {
254
+ now: true,
255
+ },
256
+ );
257
+ return;
258
+ }
259
+ Console.info(
260
+ {
261
+ [FileSelfMapper.name]: `✅ Succeed convert '${path}' 👉 '${target}';`,
262
+ },
263
+ {
264
+ now: true,
265
+ },
266
+ );
267
+ });
268
+ await Promise.all(promisedWrite);
269
+ };
270
+
271
+ /**
272
+ * @param { string } watcherFullPath
273
+ * @param { string } path
274
+ * @param { ConstructorParameters<typeof FileSelfMapper>[1]} options
275
+ * @returns { Promise<void> }
276
+ */
277
+ #bundleJS = async (watcherFullPath, path, { esbuild = {}, deleteTempFilesAfterExit = false }) => {
278
+ if (esbuild.platform === 'browser') {
279
+ esbuild.external = Array.from(FileSelfMapper.#createBrowserExternals(esbuild.external ?? []));
280
+ }
281
+ Object.assign(esbuild, {
282
+ mainFields: ['module', 'main'],
283
+ });
284
+ const relativePath = FileSelfMapper.#getRelative(watcherFullPath, path);
285
+ Object.assign(esbuild, { minify: relativePath.includes('.min.') });
286
+ if (relativePath.includes('.iife.')) {
287
+ Object.assign(esbuild, { format: 'iife' });
288
+ } else {
289
+ Object.assign(esbuild, { format: 'esm' });
290
+ }
291
+ const tempPath = UniqueFSTempName(path);
292
+ const [eswatcherInstance, errorEsbuildContext] = TrySync(() => {
293
+ return new EsWatcher({
294
+ logLimit: 3,
295
+ ...esbuild,
296
+ bundle: true,
297
+ entryPoints: [path],
298
+ outfile: tempPath,
299
+ write: true,
300
+ logLevel: 'silent',
301
+ banner: {
302
+ js: relativePath.includes('.bin.') ? '#!/usr/bin/env node' : '',
303
+ ...esbuild.banner,
304
+ },
305
+ plugins: [
306
+ CreateESPlugin('FileSafeMapperWatch', ({ onEnd }) => {
307
+ onEnd(({ errors }) => {
308
+ if (errors.length) {
309
+ onEndEsBuildErrorLogger(errors);
310
+ return;
311
+ }
312
+ FileSelfMapper.#onJSDependencyChanges(tempPath, path, this.#q);
313
+ });
314
+ }),
315
+ ...(esbuild.plugins ?? []),
316
+ pluginVivthBundle,
317
+ ],
318
+ });
319
+ });
320
+ if (errorEsbuildContext) {
321
+ Console.error(
322
+ { errorEsbuildContext },
323
+ {
324
+ now: true,
325
+ },
326
+ );
327
+ return;
328
+ }
329
+
330
+ this.#releaseCallbackPerPath.set(path, async () => {
331
+ await Promise.all([
332
+ TryAsync(eswatcherInstance.vivthCleanup),
333
+ TryAsync(async () => {
334
+ if (!deleteTempFilesAfterExit) {
335
+ return;
336
+ }
337
+ await FileSafe.rm(tempPath);
338
+ }),
339
+ ]);
340
+ });
341
+ };
342
+
343
+ /**
344
+ * @param {string[]} esbuildExternal
345
+ * @returns {Set<string>}
346
+ */
347
+ static #createBrowserExternals = (esbuildExternal) => {
348
+ return BrowserExternals.union(new Set(esbuildExternal));
349
+ };
350
+
351
+ /**
352
+ * @param {()=>boolean} isLastOnQ
353
+ * @param {string} path
354
+ * @param {string} tempPath
355
+ * @param {string} target
356
+ * @returns {Promise<void>}
357
+ */
358
+ static #onJSDependencyChanges1 = async (isLastOnQ, path, tempPath, target) => {
359
+ if (!isLastOnQ()) {
360
+ return;
361
+ }
362
+ const [content, errorGetTempPath] = await TryAsync(async () => {
363
+ return await readFile(tempPath, { encoding: Preferrence.encoding });
364
+ });
365
+ if (errorGetTempPath) {
366
+ Console.error(
367
+ {
368
+ errorGetTempPath,
369
+ },
370
+ {
371
+ now: true,
372
+ },
373
+ );
374
+ return;
375
+ }
376
+ const [, errorWriteJS] = await FileSafe.write(target, content, {
377
+ encoding: Preferrence.encoding,
378
+ });
379
+ if (errorWriteJS) {
380
+ Console.error(
381
+ {
382
+ errorWriteJS,
383
+ },
384
+ {
385
+ now: true,
386
+ },
387
+ );
388
+ return;
389
+ }
390
+ Console.info(
391
+ {
392
+ [FileSelfMapper.name]: `✅ Build succeed: '${path}' 👉 '${target}'`,
393
+ },
394
+ {
395
+ now: true,
396
+ },
397
+ );
398
+ };
399
+ /**
400
+ * @param {()=>boolean} isLastOnQ
401
+ * @param {string} path
402
+ * @param {string} tempPath
403
+ * @param {QChannel<string>} q
404
+ * @returns {Promise<void>}
405
+ */
406
+ static #onJSDependencyChanges0 = async (isLastOnQ, path, tempPath, q) => {
407
+ if (!isLastOnQ()) {
408
+ return;
409
+ }
410
+ const { targetPaths } = await FileSelfMapper.#getTargetPath(path);
411
+ await Promise.all(
412
+ ForOfSync(targetPaths, async (target) => {
413
+ q.callback(target, async ({ isLastOnQ }) => {
414
+ await FileSelfMapper.#onJSDependencyChanges1(isLastOnQ, path, tempPath, target);
415
+ });
416
+ })[0],
417
+ );
418
+ };
419
+
420
+ /**
421
+ * @param {string} tempPath
422
+ * @param {string} path
423
+ * @param {QChannel<string>} q
424
+ * @returns {Promise<void>}
425
+ */
426
+ static #onJSDependencyChanges = async (tempPath, path, q) => {
427
+ q.callback(path, async ({ isLastOnQ }) => {
428
+ await FileSelfMapper.#onJSDependencyChanges0(isLastOnQ, path, tempPath, q);
429
+ });
430
+ };
431
+
432
+ /**
433
+ * @param { string } path
434
+ * @returns { Promise<{
435
+ * targetPaths: Set<string>,
436
+ * content: string,
437
+ * }> }
438
+ */
439
+ static #getTargetPath = async (path) => {
440
+ let raw = await readFile(path, 'utf8');
441
+ const perLines = raw.split(/\r?\n/);
442
+ const perLinesCode = structuredClone(perLines);
443
+ /**
444
+ * @type {Set<string>}
445
+ */
446
+ const targetPaths = new Set();
447
+ for (let i = 0; i < perLines.length; i++) {
448
+ const lineData = perLines[i];
449
+ if (!lineData) {
450
+ continue;
451
+ }
452
+ const commentRegexForPath =
453
+ /<!--\s*(.*?)\s*-->|\/\/\/?\s*(.*?)\s*$|\/\*{1,2}!\s*([\s\S]*?)\s*\*\/|\/\*{1,2}\s*([\s\S]*?)\s*\*\/|#\s*(.*?)\s*$|--\s*(.*?)\s*$|;\s*(.*?)\s*$/g;
454
+ const m = commentRegexForPath.exec(lineData);
455
+ if (m === null) {
456
+ break;
457
+ }
458
+ const [group] = m.slice(1).filter(Boolean);
459
+ if (!group) {
460
+ break;
461
+ }
462
+ const candidate = group.trim();
463
+ if (!/^(?:[A-Za-z]:[\\/]|[\\/]|\.{1,2}[\\/])?[A-Za-z0-9._\\/-]+$/g.test(candidate)) {
464
+ break;
465
+ }
466
+ if (!candidate) {
467
+ break;
468
+ }
469
+ perLinesCode[i] = '';
470
+ targetPaths.add(Paths.normalize(candidate));
471
+ }
472
+
473
+ return {
474
+ get content() {
475
+ let content = perLinesCode.join('\n').trim();
476
+ // Remove leading whitespace-only lines until first non-whitespace
477
+ return (content = content.replace(/^\s*\n+/, '').replace(/\n+/g, '\n'));
478
+ },
479
+ targetPaths,
480
+ };
481
+ };
482
+
483
+ /**
484
+ * @param {string} watcherFullPath
485
+ * @param {string} path
486
+ * @returns { string }
487
+ */
488
+ static #getRelative = (watcherFullPath, path) => {
489
+ return Paths.normalize(relative(dirname(watcherFullPath), path));
490
+ };
491
+ }