vivth 1.4.10 → 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} +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,330 @@
1
+ // @ts-check
2
+
3
+ // import { Signal } from '../class/Signal.mjs';
4
+ import { WalkThrough } from '../class/WalkThrough.mjs';
5
+ import { ForInSync } from '../function/ForInSync.mjs';
6
+ import { ForOfSync } from '../function/ForOfSync.mjs';
7
+ import { IsTypeOf } from '../function/IsTypeOf.mjs';
8
+ import { WC_createElement_bind } from './bindings/WC_createElement_bind.mjs';
9
+ import { WC_createNamedSlot } from './bindings/WC_createNamedSlot.mjs';
10
+
11
+ /**
12
+ * @import {ArrayToKeys} from '../typehints/ArrayToKeys.mjs'
13
+ * @import {WC_TagName_type} from './common/WC_TagName_type.mjs'
14
+ */
15
+ /**
16
+ * @typedef {typeof import('../function/IsTypeOf.mjs').TypeMap} TypeMap
17
+ */
18
+ /**
19
+ * @description
20
+ * - Generates a base class for Web Component definitions.
21
+ * - Note: This generator does not support `connectedMoveCallback`.
22
+ * For the needs of opting in to [connectedMoveCallback](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements) functionality, use [WC_extendsB](#wc_extendsb) instead.
23
+ * - This class relies heavily on complex type inference which can cause issues, during declaration file generation. To avoid "circular type" errors or build failures, set the following in your `tsconfig.json`:
24
+ * ```json
25
+ * {
26
+ * "compilerOptions": {
27
+ * "declaration": false
28
+ * }
29
+ * }
30
+ * ```
31
+ * - By disabling `declaration`, you prevent the TypeScript compiler from attempting to resolve and export the complex recursive type definitions generated by this factory;
32
+ * @template {new (...args: any[]) => HTMLElement} BASE_CONSTRUCTOR
33
+ * @template {{
34
+ * class?:string;
35
+ * style?:string;
36
+ * observedAttributes?: readonly string[];
37
+ * namedSlots?: readonly string[];
38
+ * props?: Record<string, keyof TypeMap|(new (...args:any[])=>any)>;
39
+ * }} STANDARD
40
+ * @template {(BASE_CONSTRUCTOR) & {
41
+ * tagName: string;
42
+ * extendIs: string;
43
+ * observedAttributes?: STANDARD["observedAttributes"];
44
+ * namedSlots?: STANDARD["namedSlots"];
45
+ * props?: STANDARD["props"];
46
+ * }} CREATEARGS
47
+ * @template { (new (...args: any[]) => InstanceType<BASE_CONSTRUCTOR> & {
48
+ * setObservedAttributes(attributes:Partial<
49
+ * Record<ArrayToKeys<STANDARD["observedAttributes"]extends readonly string[]
50
+ * ? STANDARD["observedAttributes"]
51
+ * :never>,
52
+ * string>
53
+ * >):void;
54
+ * props: NonNullable<NonNullable<Parameters<ReturnType<typeof WC_createElement_bind<CREATEARGS>>>[0]>["props"]>;
55
+ * adoptedCallback():void;
56
+ * connectedCallback():void;
57
+ * disonnectedCallback():void;
58
+ * attributeChangedCallback(name:ArrayToKeys<STANDARD["observedAttributes"]extends readonly string[]?STANDARD["observedAttributes"]:never>, oldValue:string|null, newValue:string|null): void;
59
+ * ON:<OBJ extends Record<any, any> & {
60
+ * onConnected?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["connected"];
61
+ * onDisconnected?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["disconnected"];
62
+ * onAdopted?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["adopted"];
63
+ * onAttributeChanged?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["attributeChanged"];
64
+ * }>
65
+ * (obj:OBJ, callbacks?:
66
+ * {
67
+ * connected?:(obj:OBJ)=>void;
68
+ * disconnected?:(obj:OBJ)=>void;
69
+ * adopted?:(obj:OBJ)=>void;
70
+ * attributeChanged?:(
71
+ * obj:OBJ,
72
+ * name:STANDARD["observedAttributes"]extends readonly string[]
73
+ * ? ArrayToKeys<STANDARD["observedAttributes"]>
74
+ * : never,
75
+ * oldValue:string|null,
76
+ * newValue:string|null
77
+ * )=>void;
78
+ * })=>OBJ;
79
+ * }) & {
80
+ * tagName:string;
81
+ * extendIs:string;
82
+ * namedSlots: STANDARD["namedSlots"];
83
+ * observedAttributes: STANDARD["observedAttributes"];
84
+ * createNamedSlot: typeof WC_createNamedSlot<STANDARD>;
85
+ * props?: STANDARD["props"];
86
+ * define:<TAG extends string, CLASSREF extends CREATEARGS>
87
+ * (
88
+ * tagName:WC_TagName_type<TAG>,
89
+ * classRef:CLASSREF,
90
+ * elementDefinitionOptions?:ElementDefinitionOptions,
91
+ * )=>ReturnType<typeof WC_createElement_bind<CLASSREF>>;
92
+ * }
93
+ * } RET
94
+ * @param {BASE_CONSTRUCTOR} Base
95
+ * @param {STANDARD} [staticMember]
96
+ * @returns {RET}
97
+ * @example
98
+ * export MyWebComponent extends WC_extendsA(HTMLElement, {...options}){
99
+ * static create = this.define('my-webcomponent');
100
+ * }
101
+ */
102
+ export function WC_extendsA(Base, staticMember = /** @type {any} */ ({})) {
103
+ const { class: class_ = '', style = '', observedAttributes = [], namedSlots = [] } = staticMember;
104
+ class MyClass extends Base {
105
+ static observedAttributes = observedAttributes;
106
+
107
+ /**
108
+ * @description
109
+ * - props objects from define -> createElement;
110
+ * @type {STANDARD["props"]}
111
+ */
112
+ props = {};
113
+
114
+ /** @type {Set<()=>void>} */
115
+ #setOfConnected = new Set();
116
+ /** @type {Set<()=>void>} */
117
+ #setOfDisconnected = new Set();
118
+ /** @type {Set<()=>void>} */
119
+ #setOfAdopted = new Set();
120
+ /** @type {Set<(name:string, oldValue:string|null, newValue:string|null)=>void>} */
121
+ #setOfAttributeChanged = new Set();
122
+
123
+ /**
124
+ * @description
125
+ * - wrapper helper to handle returned to be assigned property on `WebComponent` lifecycle callbacks;
126
+ * @template {Record<any, any>} OBJ
127
+ * @param {OBJ & {
128
+ * onConnected?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["connected"];
129
+ * onDisconnected?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["disconnected"];
130
+ * onAdopted?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["adopted"];
131
+ * onAttributeChanged?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["attributeChanged"];
132
+ * }} obj
133
+ * @param {Object} [callbacks]
134
+ * @param {(obj:OBJ)=>void} [callbacks.connected]
135
+ * @param {(obj:OBJ)=>void} [callbacks.disconnected]
136
+ * @param {(obj:OBJ)=>void} [callbacks.adopted]
137
+ * @param {(
138
+ * obj:OBJ,
139
+ * name:STANDARD["observedAttributes"]extends readonly string[]
140
+ * ? ArrayToKeys<STANDARD["observedAttributes"]>
141
+ * : never,
142
+ * oldValue:string|null,
143
+ * newValue:string|null
144
+ * )=>void} [callbacks.attributeChanged]
145
+ * @returns {OBJ}
146
+ * @example
147
+ * // inside WebComponent context
148
+ * #mySignal = this.ON(createSignalFromExternalLib(0),{
149
+ * disconnected:(s)=>{
150
+ * s.cleanup(); // <-or any equivalent;
151
+ * },
152
+ * });
153
+ * //
154
+ */
155
+ ON(obj, callbacks = {}) {
156
+ const { connected, disconnected, adopted, attributeChanged } = callbacks;
157
+ if (connected) {
158
+ this.#setOfConnected.add(() => {
159
+ connected(obj);
160
+ });
161
+ }
162
+ if ('onConnected' in obj && IsTypeOf(obj.onConnected, 'function')) {
163
+ this.#setOfConnected.add(obj.onConnected);
164
+ }
165
+ if (disconnected) {
166
+ this.#setOfDisconnected.add(() => {
167
+ disconnected(obj);
168
+ });
169
+ }
170
+ if ('onDisconnected' in obj && IsTypeOf(obj.onDisconnected, 'function')) {
171
+ this.#setOfDisconnected.add(obj.onDisconnected);
172
+ }
173
+ if (adopted) {
174
+ this.#setOfAdopted.add(() => {
175
+ adopted(obj);
176
+ });
177
+ }
178
+ if ('onAdopted' in obj && IsTypeOf(obj.onAdopted, 'function')) {
179
+ this.#setOfAdopted.add(obj.onAdopted);
180
+ }
181
+ if (attributeChanged) {
182
+ this.#setOfAttributeChanged.add((name, oldValue, newValue) => {
183
+ attributeChanged(
184
+ obj,
185
+ // @ts-expect-error
186
+ name,
187
+ oldValue,
188
+ newValue,
189
+ );
190
+ });
191
+ }
192
+ if ('onAttributeChanged' in obj && IsTypeOf(obj.onAttributeChanged, 'function')) {
193
+ this.#setOfAttributeChanged.add(obj.onAttributeChanged);
194
+ }
195
+ return obj;
196
+ }
197
+ /**
198
+ * @protected
199
+ */
200
+ connectedCallback() {
201
+ // @ts-expect-error
202
+ if (super.connectedCallback) {
203
+ // @ts-expect-error
204
+ super.connectedCallback();
205
+ }
206
+ if (class_) {
207
+ this.setAttribute('class', class_);
208
+ }
209
+ if (style) {
210
+ this.setAttribute('style', style);
211
+ }
212
+ WalkThrough.set(this.#setOfConnected, (cb) => cb());
213
+ ForOfSync(observedAttributes, (key) => {
214
+ this.attributeChangedCallback(key, null, this.getAttribute(key));
215
+ });
216
+ }
217
+
218
+ /**
219
+ * @protected
220
+ */
221
+ disconnectedCallback() {
222
+ // @ts-expect-error
223
+ if (super.disconnectedCallback) {
224
+ // @ts-expect-error
225
+ super.disconnectedCallback();
226
+ }
227
+ WalkThrough.set(this.#setOfDisconnected, (cb) => cb());
228
+ }
229
+
230
+ /**
231
+ * @protected
232
+ */
233
+ adoptedCallback() {
234
+ // If super has a connectedCallback, it's good practice to call it
235
+ // @ts-expect-error
236
+ if (super.adoptedCallback) {
237
+ // @ts-expect-error
238
+ super.adoptedCallback();
239
+ }
240
+ WalkThrough.set(this.#setOfAdopted, (cb) => cb());
241
+ }
242
+
243
+ /**
244
+ * @protected
245
+ * @param {string} name
246
+ * @param {string | null} oldValue
247
+ * @param {string | null} newValue
248
+ */
249
+ attributeChangedCallback(name, oldValue, newValue) {
250
+ // @ts-expect-error
251
+ if (super.attributeChangedCallback) {
252
+ // @ts-expect-error
253
+ super.attributeChangedCallback(name, oldValue, newValue);
254
+ }
255
+ WalkThrough.set(this.#setOfAttributeChanged, (cb) => cb(name, oldValue, newValue));
256
+ }
257
+ /**
258
+ * @description
259
+ * @type {InstanceType<RET>["setObservedAttributes"]}
260
+ */
261
+ setObservedAttributes = (attributes) => {
262
+ ForInSync(attributes, (key, value) => {
263
+ this.setAttribute(key.toString(), value ?? '');
264
+ });
265
+ };
266
+ /**
267
+ * @protected
268
+ * @type {string}
269
+ */
270
+ static tagName;
271
+ /**
272
+ * @protected
273
+ * @type {keyof HTMLElementTagNameMap}
274
+ */
275
+ static extendIsValue;
276
+ /**
277
+ * @protected
278
+ * @type {readonly string[]|undefined}
279
+ */
280
+ static namedSlots = namedSlots;
281
+ /**
282
+ * @description
283
+ * @protected
284
+ */
285
+ static createNamedSlot = WC_createNamedSlot;
286
+ /**
287
+ * @description
288
+ * - to be called before calling `ClassRef.new`;
289
+ * @type {<TAG extends string, CLASSREF extends CREATEARGS>
290
+ * (
291
+ * tagName:WC_TagName_type<TAG>,
292
+ * classRef:CLASSREF,
293
+ * elementDefinitionOptions?:ElementDefinitionOptions,
294
+ * )=>ReturnType<typeof WC_createElement_bind<CLASSREF>>
295
+ * }
296
+ * }
297
+ */
298
+ static define(...args) {
299
+ const [tagName, classref, elementDefinitionOptions] = args;
300
+ if (elementDefinitionOptions && elementDefinitionOptions.extends) {
301
+ this.tagName = elementDefinitionOptions.extends;
302
+ // @ts-expect-error
303
+ this.extendIsValue = tagName;
304
+ } else {
305
+ this.tagName = tagName;
306
+ }
307
+ customElements.define(tagName, classref, elementDefinitionOptions);
308
+ return WC_createElement_bind(classref);
309
+ }
310
+ }
311
+ return /** @type {RET} */ (/** @type {unknown} */ (MyClass));
312
+ }
313
+
314
+ // class e extends WC_extendsA(HTMLElement, {
315
+ // namedSlots: /** @type {const} */ (['a', 'b']),
316
+ // props: {
317
+ // a: 'string',
318
+ // /** @type {typeof Signal<string[]>} */
319
+ // k: Signal,
320
+ // },
321
+ // }) {
322
+ // static create = this.define('a-a', this);
323
+ // constructor() {
324
+ // super();
325
+ // this.props.k.length;
326
+ // }
327
+ // }
328
+ // e.create({
329
+ // props: { a: '0', k: new Signal(['']) },
330
+ // });
@@ -0,0 +1,332 @@
1
+ // @ts-check
2
+
3
+ import { WalkThrough } from '../class/WalkThrough.mjs';
4
+ import { ForInSync } from '../function/ForInSync.mjs';
5
+ import { ForOfSync } from '../function/ForOfSync.mjs';
6
+ import { IsTypeOf } from '../function/IsTypeOf.mjs';
7
+ import { WC_createElement_bind } from './bindings/WC_createElement_bind.mjs';
8
+ import { WC_createNamedSlot } from './bindings/WC_createNamedSlot.mjs';
9
+
10
+ /**
11
+ * @import {ArrayToKeys} from '../typehints/ArrayToKeys.mjs'
12
+ * @import {WC_TagName_type} from './common/WC_TagName_type.mjs'
13
+ */
14
+ /**
15
+ * @typedef {typeof import('../function/IsTypeOf.mjs').TypeMap} TypeMap
16
+ */
17
+ /**
18
+ * @description
19
+ * - Generates a base class for Web Component definitions.
20
+ * - Note: This generator does not support `connectedMoveCallback`.
21
+ * For the needs of opting in to [connectedMoveCallback](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements) functionality, use [WC_extendsB](#wc_extendsb) instead.
22
+ * - This class relies heavily on complex type inference which can cause issues, during declaration file generation. To avoid "circular type" errors or build failures, set the following in your `tsconfig.json`:
23
+ * ```json
24
+ * {
25
+ * "compilerOptions": {
26
+ * "declaration": false
27
+ * }
28
+ * }
29
+ * ```
30
+ * - By disabling `declaration`, you prevent the TypeScript compiler from attempting to resolve and export the complex recursive type definitions generated by this factory;
31
+ * @template {new (...args: any[]) => HTMLElement} BASE_CONSTRUCTOR
32
+ * @template {{
33
+ * class?:string;
34
+ * style?:string;
35
+ * observedAttributes?: readonly string[];
36
+ * namedSlots?: readonly string[];
37
+ * props?: Record<string, keyof TypeMap|(new (...args:any[])=>any)>;
38
+ * }} STANDARD
39
+ * @template {(BASE_CONSTRUCTOR) & {
40
+ * tagName: string;
41
+ * extendIs: string;
42
+ * observedAttributes?: STANDARD["observedAttributes"];
43
+ * namedSlots?: STANDARD["namedSlots"];
44
+ * props?: STANDARD["props"];
45
+ * }} CREATEARGS
46
+ * @template { (new (...args: any[]) => InstanceType<BASE_CONSTRUCTOR> & {
47
+ * setObservedAttributes(attributes:Partial<
48
+ * Record<ArrayToKeys<STANDARD["observedAttributes"]extends readonly string[]
49
+ * ? STANDARD["observedAttributes"]
50
+ * :never>,
51
+ * string>
52
+ * >):void;
53
+ * props: NonNullable<NonNullable<Parameters<ReturnType<typeof WC_createElement_bind<CREATEARGS>>>[0]>["props"]>;
54
+ * adoptedCallback():void;
55
+ * connectedCallback():void;
56
+ * disonnectedCallback():void;
57
+ * attributeChangedCallback(name:ArrayToKeys<STANDARD["observedAttributes"]extends readonly string[]?STANDARD["observedAttributes"]:never>, oldValue:string|null, newValue:string|null): void;
58
+ * ON:<OBJ extends Record<any, any> & {
59
+ * onConnected?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["connected"];
60
+ * onConnectedMove?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["connectedMove"];
61
+ * onDisconnected?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["disconnected"];
62
+ * onAdopted?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["adopted"];
63
+ * onAttributeChanged?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["attributeChanged"];
64
+ * }>
65
+ * (obj:OBJ, callbacks?:
66
+ * {
67
+ * connected?:(obj:OBJ)=>void;
68
+ * connectedMove?:(obj:OBJ)=>void;
69
+ * disconnected?:(obj:OBJ)=>void;
70
+ * adopted?:(obj:OBJ)=>void;
71
+ * attributeChanged?:(
72
+ * obj:OBJ,
73
+ * name:STANDARD["observedAttributes"]extends readonly string[]
74
+ * ? ArrayToKeys<STANDARD["observedAttributes"]>
75
+ * : never,
76
+ * oldValue:string|null,
77
+ * newValue:string|null
78
+ * )=>void;
79
+ * })=>OBJ;
80
+ * }) & {
81
+ * tagName:string;
82
+ * extendIs:string;
83
+ * namedSlots: STANDARD["namedSlots"];
84
+ * observedAttributes: STANDARD["observedAttributes"];
85
+ * createNamedSlot: typeof WC_createNamedSlot<STANDARD>;
86
+ * props?: STANDARD["props"];
87
+ * define:<TAG extends string, CLASSREF extends RET>
88
+ * (
89
+ * tagName:WC_TagName_type<TAG>,
90
+ * classRef:CLASSREF,
91
+ * elementDefinitionOptions?:ElementDefinitionOptions,
92
+ * )=>ReturnType<typeof WC_createElement_bind<CLASSREF>>;
93
+ * }
94
+ * } RET
95
+ * @param {BASE_CONSTRUCTOR} Base
96
+ * @param {STANDARD} [staticMember]
97
+ * @returns {RET}
98
+ */
99
+ export function WC_extendsB(Base, staticMember = /** @type {any} */ ({})) {
100
+ const { class: class_ = '', style = '', observedAttributes = [], namedSlots = [] } = staticMember;
101
+ class MyClass extends Base {
102
+ static observedAttributes = observedAttributes;
103
+
104
+ /**
105
+ * @description
106
+ * - props objects from define -> createElement;
107
+ * @type {STANDARD["props"]}
108
+ */
109
+ props = {};
110
+
111
+ /** @type {Set<()=>void>} */
112
+ #setOfConnected = new Set();
113
+ /** @type {Set<()=>void>} */
114
+ #setOfConnectedMove = new Set();
115
+ /** @type {Set<()=>void>} */
116
+ #setOfDisconnected = new Set();
117
+ /** @type {Set<()=>void>} */
118
+ #setOfAdopted = new Set();
119
+ /** @type {Set<(name:string, oldValue:string|null, newValue:string|null)=>void>} */
120
+ #setOfAttributeChanged = new Set();
121
+
122
+ /**
123
+ * @description
124
+ * - wrapper helper to handle returned to be assigned property on `WebComponent` lifecycle callbacks;
125
+ * @template {Record<any, any>} OBJ
126
+ * @param {OBJ & {
127
+ * onConnected?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["connected"];
128
+ * onConnectedMove?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["connectedMove"];
129
+ * onDisconnected?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["disconnected"];
130
+ * onAdopted?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["adopted"];
131
+ * onAttributeChanged?: NonNullable<Parameters<InstanceType<RET>["ON"]>[1]>["attributeChanged"];
132
+ * }} obj
133
+ * @param {Object} [callbacks]
134
+ * @param {(obj:OBJ)=>void} [callbacks.connected]
135
+ * @param {(obj:OBJ)=>void} [callbacks.connectedMove]
136
+ * @param {(obj:OBJ)=>void} [callbacks.disconnected]
137
+ * @param {(obj:OBJ)=>void} [callbacks.adopted]
138
+ * @param {(
139
+ * obj:OBJ,
140
+ * name:STANDARD["observedAttributes"]extends readonly string[]
141
+ * ? ArrayToKeys<STANDARD["observedAttributes"]>
142
+ * : never,
143
+ * oldValue:string|null,
144
+ * newValue:string|null
145
+ * )=>void} [callbacks.attributeChanged]
146
+ * @returns {OBJ}
147
+ * @example
148
+ * // inside WebComponent context
149
+ * #mySignal = this.ON(createSignalFromExternalLib(0),{
150
+ * disconnected:(s)=>{
151
+ * s.cleanup(); // <-or any equivalent;
152
+ * },
153
+ * });
154
+ * //
155
+ */
156
+ ON(obj, callbacks = {}) {
157
+ const { connected, connectedMove, disconnected, adopted, attributeChanged } = callbacks;
158
+ if (connected) {
159
+ this.#setOfConnected.add(() => {
160
+ connected(obj);
161
+ });
162
+ }
163
+ if ('onConnected' in obj && IsTypeOf(obj.onConnected, 'function')) {
164
+ this.#setOfConnected.add(obj.onConnected);
165
+ }
166
+ if (connectedMove) {
167
+ this.#setOfConnectedMove.add(() => {
168
+ connectedMove(obj);
169
+ });
170
+ }
171
+ if ('onConnectedMove' in obj && IsTypeOf(obj.onConnectedMove, 'function')) {
172
+ this.#setOfConnectedMove.add(obj.onConnectedMove);
173
+ }
174
+ if (disconnected) {
175
+ this.#setOfDisconnected.add(() => {
176
+ disconnected(obj);
177
+ });
178
+ }
179
+ if ('onDisconnected' in obj && IsTypeOf(obj.onDisconnected, 'function')) {
180
+ this.#setOfDisconnected.add(obj.onDisconnected);
181
+ }
182
+ if (adopted) {
183
+ this.#setOfAdopted.add(() => {
184
+ adopted(obj);
185
+ });
186
+ }
187
+ if ('onAdopted' in obj && IsTypeOf(obj.onAdopted, 'function')) {
188
+ this.#setOfAdopted.add(obj.onAdopted);
189
+ }
190
+ if (attributeChanged) {
191
+ this.#setOfAttributeChanged.add((name, oldValue, newValue) => {
192
+ attributeChanged(
193
+ obj,
194
+ // @ts-expect-error
195
+ name,
196
+ oldValue,
197
+ newValue,
198
+ );
199
+ });
200
+ }
201
+ if ('onAttributeChanged' in obj && IsTypeOf(obj.onAttributeChanged, 'function')) {
202
+ this.#setOfAttributeChanged.add(obj.onAttributeChanged);
203
+ }
204
+ return obj;
205
+ }
206
+ /**
207
+ * @protected
208
+ */
209
+ connectedCallback() {
210
+ // @ts-expect-error
211
+ if (super.connectedCallback) {
212
+ // @ts-expect-error
213
+ super.connectedCallback();
214
+ }
215
+ if (class_) {
216
+ this.setAttribute('class', class_);
217
+ }
218
+ if (style) {
219
+ this.setAttribute('style', style);
220
+ }
221
+ WalkThrough.set(this.#setOfConnected, (cb) => cb());
222
+ ForOfSync(observedAttributes, (key) => {
223
+ this.attributeChangedCallback(key, null, this.getAttribute(key));
224
+ });
225
+ }
226
+ /**
227
+ * @protected
228
+ */
229
+ connectedMoveCallback() {
230
+ // @ts-expect-error
231
+ if (super.connectedMoveCallback) {
232
+ // @ts-expect-error
233
+ super.connectedMoveCallback();
234
+ }
235
+ WalkThrough.set(this.#setOfConnectedMove, (cb) => cb());
236
+ }
237
+
238
+ /**
239
+ * @protected
240
+ */
241
+ disconnectedCallback() {
242
+ // @ts-expect-error
243
+ if (super.disconnectedCallback) {
244
+ // @ts-expect-error
245
+ super.disconnectedCallback();
246
+ }
247
+ WalkThrough.set(this.#setOfDisconnected, (cb) => cb());
248
+ }
249
+
250
+ /**
251
+ * @protected
252
+ */
253
+ adoptedCallback() {
254
+ // If super has a connectedCallback, it's good practice to call it
255
+ // @ts-expect-error
256
+ if (super.adoptedCallback) {
257
+ // @ts-expect-error
258
+ super.adoptedCallback();
259
+ }
260
+ WalkThrough.set(this.#setOfAdopted, (cb) => cb());
261
+ }
262
+
263
+ /**
264
+ * @protected
265
+ * @param {string} name
266
+ * @param {string | null} oldValue
267
+ * @param {string | null} newValue
268
+ */
269
+ attributeChangedCallback(name, oldValue, newValue) {
270
+ // @ts-expect-error
271
+ if (super.attributeChangedCallback) {
272
+ // @ts-expect-error
273
+ super.attributeChangedCallback(name, oldValue, newValue);
274
+ }
275
+ WalkThrough.set(this.#setOfAttributeChanged, (cb) => cb(name, oldValue, newValue));
276
+ }
277
+ /**
278
+ * @description
279
+ * @type {InstanceType<RET>["setObservedAttributes"]}
280
+ */
281
+ setObservedAttributes = (attributes) => {
282
+ ForInSync(attributes, (key, value) => {
283
+ this.setAttribute(key.toString(), value ?? '');
284
+ });
285
+ };
286
+ /**
287
+ * @protected
288
+ * @type {string}
289
+ */
290
+ static tagName;
291
+ /**
292
+ * @protected
293
+ * @type {keyof HTMLElementTagNameMap}
294
+ */
295
+ static extendIsValue;
296
+ /**
297
+ * @protected
298
+ * @type {readonly string[]|undefined}
299
+ */
300
+ static namedSlots = namedSlots;
301
+ /**
302
+ * @description
303
+ * @protected
304
+ */
305
+ static createNamedSlot = WC_createNamedSlot;
306
+ /**
307
+ * @description
308
+ * - to be called before calling `ClassRef.new`;
309
+ * @type {<TAG extends string, CLASSREF extends CREATEARGS>
310
+ * (
311
+ * tagName:WC_TagName_type<TAG>,
312
+ * classRef:CLASSREF,
313
+ * elementDefinitionOptions?:ElementDefinitionOptions,
314
+ * )=>ReturnType<typeof WC_createElement_bind<CLASSREF>>
315
+ * }
316
+ * }
317
+ */
318
+ static define(...args) {
319
+ const [tagName, classref, elementDefinitionOptions] = args;
320
+ if (elementDefinitionOptions && elementDefinitionOptions.extends) {
321
+ this.tagName = elementDefinitionOptions.extends;
322
+ // @ts-expect-error
323
+ this.extendIsValue = tagName;
324
+ } else {
325
+ this.tagName = tagName;
326
+ }
327
+ customElements.define(tagName, classref, elementDefinitionOptions);
328
+ return WC_createElement_bind(classref);
329
+ }
330
+ }
331
+ return /** @type {RET} */ (/** @type {unknown} */ (MyClass));
332
+ }