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.
- package/README.md +6060 -2037
- package/README.src.md +22 -14
- package/bun.lock +154 -194
- package/dev/auto/.src.ignore +25 -0
- package/dev/auto-doc.mjs +137 -0
- package/generated/types/generated/vivth/exports/all.d.mts +145 -0
- package/generated/types/generated/vivth/exports/neutral.d.mts +105 -0
- package/generated/types/generated/vivth/exports/node.d.mts +40 -0
- package/generated/types/src/bundler/CompileAS.d.mts +30 -0
- package/generated/types/src/bundler/CompileJS.d.mts +109 -0
- package/{types → generated/types}/src/bundler/CreateESPlugin.d.mts +1 -1
- package/{types → generated/types}/src/bundler/EsBundler.d.mts +9 -7
- package/generated/types/src/bundler/FSAnalyzer.d.mts +58 -0
- package/generated/types/src/bundler/FSasar.bundled.d.mts +28 -0
- package/generated/types/src/bundler/FSasar.d.mts +51 -0
- package/generated/types/src/bundler/FileSelfMapper.d.mts +137 -0
- package/generated/types/src/bundler/JSDirMapper.d.mts +128 -0
- package/generated/types/src/bundler/RunWatchThenCompileJSOnSafeExit.d.mts +63 -0
- package/generated/types/src/bundler/adds/BrowserExternals.d.mts +21 -0
- package/generated/types/src/bundler/adds/CreateTransform.d.mts +26 -0
- package/generated/types/src/bundler/adds/LastEditedUnix.d.mts +5 -0
- package/generated/types/src/bundler/adds/NodeModuleList.d.mts +15 -0
- package/generated/types/src/bundler/adds/PathFSBundles.bundled.d.mts +25 -0
- package/generated/types/src/bundler/adds/PathFSBundles.d.mts +48 -0
- package/generated/types/src/bundler/adds/PathFSDir.bundled.d.mts +30 -0
- package/generated/types/src/bundler/adds/PathFSDir.d.mts +48 -0
- package/generated/types/src/bundler/adds/PathFSFile.bundled.d.mts +25 -0
- package/generated/types/src/bundler/adds/PathFSFile.d.mts +40 -0
- package/{types → generated/types}/src/bundler/adds/ToBundledJSPlugin.d.mts +6 -6
- package/generated/types/src/bundler/adds/autoExternalize.d.mts +2 -0
- package/generated/types/src/bundler/adds/emptyBufferValue.d.mts +1 -0
- package/generated/types/src/bundler/adds/isModuleTheBundledVersion.d.mts +1 -0
- package/generated/types/src/bundler/adds/onEndEsBuildErrorLogger.d.mts +1 -0
- package/generated/types/src/bundler/adds/resolveJSDependencyPath.d.mts +1 -0
- package/generated/types/src/class/AwaitSignal.d.mts +48 -0
- package/generated/types/src/class/Console.d.mts +82 -0
- package/generated/types/src/class/DataLog.d.mts +25 -0
- package/generated/types/src/class/Derived.d.mts +74 -0
- package/generated/types/src/class/Effect.d.mts +213 -0
- package/{types → generated/types}/src/class/EnvSignal.d.mts +6 -2
- package/generated/types/src/class/EsWatcher.d.mts +36 -0
- package/{types → generated/types}/src/class/EventSignal.d.mts +39 -39
- package/generated/types/src/class/FSDirArchWatcher.d.mts +110 -0
- package/{types → generated/types}/src/class/FileSafe.d.mts +32 -16
- package/generated/types/src/class/ForEach.d.mts +57 -0
- package/generated/types/src/class/ForSignal.d.mts +63 -0
- package/generated/types/src/class/GetterSetter.d.mts +38 -0
- package/generated/types/src/class/JSONFileHandler.d.mts +50 -0
- package/{types → generated/types}/src/class/ListSignal.d.mts +49 -15
- package/{types → generated/types}/src/class/LitExp.d.mts +18 -18
- package/generated/types/src/class/ObjectSignal.d.mts +267 -0
- package/generated/types/src/class/Paths.d.mts +95 -0
- package/generated/types/src/class/Prettivy.d.mts +26 -0
- package/{types → generated/types}/src/class/QChannel.d.mts +24 -16
- package/generated/types/src/class/SafeExit.d.mts +69 -0
- package/{types → generated/types}/src/class/Setup.d.mts +29 -16
- package/{types → generated/types}/src/class/Signal.d.mts +29 -15
- package/generated/types/src/class/SignalCollection.d.mts +96 -0
- package/{types → generated/types}/src/class/WalkThrough.d.mts +4 -19
- package/generated/types/src/class/WorkerMainThread.bundled.d.mts +83 -0
- package/{types → generated/types}/src/class/WorkerMainThread.d.mts +33 -39
- package/{types → generated/types}/src/class/WorkerThread.d.mts +11 -5
- package/{types → generated/types}/src/common/Base64URL.d.mts +2 -1
- package/generated/types/src/common/Base64URLFromFile.d.mts +20 -0
- package/generated/types/src/common/BundledV.bundled.d.mts +3 -0
- package/generated/types/src/common/BundledV.d.mts +36 -0
- package/{types → generated/types}/src/common/CreateStringID.d.mts +5 -4
- package/generated/types/src/common/EnvMode.d.mts +79 -0
- package/generated/types/src/common/FactoryKey.d.mts +9 -0
- package/generated/types/src/common/Preferrence.d.mts +25 -0
- package/{types → generated/types}/src/common/Trace.d.mts +1 -1
- package/{types → generated/types}/src/common/TracePath.d.mts +1 -1
- package/generated/types/src/common/VivthUnBundledCodeBlock.d.mts +6 -0
- package/generated/types/src/doc/JSautoDOC.d.mts +172 -0
- package/generated/types/src/doc/cleanPreserveTypedef.d.mts +1 -0
- package/{types/src/doc/parsedFile.d.mts → generated/types/src/doc/parsedFileForDOC.d.mts} +56 -27
- package/generated/types/src/function/ClearRequireCache.d.mts +1 -0
- package/{types → generated/types}/src/function/CreateImmutable.d.mts +5 -4
- package/{types → generated/types}/src/function/EventCheck.d.mts +3 -1
- package/{types → generated/types}/src/function/EventObject.d.mts +2 -6
- package/generated/types/src/function/ForInAsync.d.mts +36 -0
- package/generated/types/src/function/ForInSync.d.mts +36 -0
- package/generated/types/src/function/ForOfAsync.d.mts +25 -0
- package/generated/types/src/function/ForOfSync.d.mts +36 -0
- package/generated/types/src/function/GetBufferFromRelativePath.d.mts +15 -0
- package/generated/types/src/function/GetFilesFromDir.d.mts +14 -0
- package/generated/types/src/function/GetMaxFilenameLength.d.mts +9 -0
- package/generated/types/src/function/GetModuleEsbuildPlatform.d.mts +13 -0
- package/{types → generated/types}/src/function/GetNamedImportAlias.d.mts +1 -1
- package/generated/types/src/function/GetRuntime.d.mts +2 -0
- package/generated/types/src/function/InstantiateAssemblyScript.d.mts +15 -0
- package/{types → generated/types}/src/function/IsAsync.d.mts +1 -1
- package/generated/types/src/function/IsInstanceOf.d.mts +25 -0
- package/generated/types/src/function/IsSameFile.d.mts +16 -0
- package/generated/types/src/function/IsStringLooksLikeAPath.d.mts +16 -0
- package/generated/types/src/function/IsTypeOf.d.mts +25 -0
- package/{types → generated/types}/src/function/LazyFactory.d.mts +9 -10
- package/generated/types/src/function/MonkeyPatch.d.mts +33 -0
- package/generated/types/src/function/NewAnimationTimeline.d.mts +24 -0
- package/generated/types/src/function/NewChainable.d.mts +35 -0
- package/generated/types/src/function/NewDynamicsExport.d.mts +49 -0
- package/generated/types/src/function/NewObjectWrapper.d.mts +10 -0
- package/generated/types/src/function/ObjectRegistrar.d.mts +17 -0
- package/generated/types/src/function/ParseSQLFile.d.mts +25 -0
- package/generated/types/src/function/PipeAsync.d.mts +19 -0
- package/generated/types/src/function/PipeSync.d.mts +17 -0
- package/generated/types/src/function/SafeImport.d.mts +21 -0
- package/generated/types/src/function/TemplateLiteral.d.mts +23 -0
- package/{types → generated/types}/src/function/Timeout.d.mts +1 -1
- package/{types → generated/types}/src/function/Tries.d.mts +4 -4
- package/{types → generated/types}/src/function/TryAsync.d.mts +2 -2
- package/{types → generated/types}/src/function/TryNew.d.mts +1 -1
- package/generated/types/src/function/TsToMjs.d.mts +27 -0
- package/generated/types/src/function/UniqueFSTempName.d.mts +9 -0
- package/generated/types/src/function/errorToMessage.d.mts +5 -0
- package/generated/types/src/neinth/VivthyNeinth.d.mts +202 -0
- package/generated/types/src/typehints/ArrayToKeys.d.mts +23 -0
- package/generated/types/src/typehints/AssemblyScriptExportsType.d.mts +4 -0
- package/generated/types/src/typehints/AssemblyScriptLoaderInstantiate.d.mts +4 -0
- package/generated/types/src/typehints/AutoDocASOptions.d.mts +15 -0
- package/generated/types/src/typehints/ChainableType.d.mts +3 -0
- package/generated/types/src/typehints/ComponentDecorator_Constructor.d.mts +3 -0
- package/generated/types/src/typehints/ConsoleAdditionalSettingType.d.mts +3 -0
- package/generated/types/src/typehints/Decorator.d.mts +11 -0
- package/generated/types/src/typehints/DecoratorMonkeyPatch.d.mts +15 -0
- package/{types/src/types → generated/types/src/typehints}/DevTestCB.d.mts +2 -2
- package/generated/types/src/typehints/EnvModeType.d.mts +4 -0
- package/generated/types/src/typehints/ListArg.d.mts +4 -0
- package/generated/types/src/typehints/MonkeyPatchedType.d.mts +1 -0
- package/generated/types/src/typehints/ParametersFollowingN.d.mts +13 -0
- package/generated/types/src/typehints/PrefixedKeysOf.d.mts +1 -0
- package/generated/types/src/typehints/Runtime.d.mts +4 -0
- package/generated/types/src/typehints/SafeImportReturnType.d.mts +1 -0
- package/generated/types/src/typehints/StylePropRefType.d.mts +2 -0
- package/generated/types/src/typehints/TemplateLiteralValueHandler.d.mts +10 -0
- package/generated/types/src/typehints/VLifecycleCallbacks.d.mts +6 -0
- package/generated/types/src/typehints/VivthCleanup.d.mts +12 -0
- package/generated/types/src/web/BrowserDirMapper.d.mts +70 -0
- package/generated/types/src/web/EnsureValidTag.d.mts +7 -0
- package/generated/types/src/web/ViteAddDynamics.d.mts +28 -0
- package/generated/types/src/web/ViteGetAllHTMLFile.d.mts +9 -0
- package/generated/types/src/web/WC_extendsA.d.mts +135 -0
- package/generated/types/src/web/WC_extendsB.d.mts +135 -0
- package/generated/types/src/web/bindings/WC_StyleProp_bind.d.mts +42 -0
- package/generated/types/src/web/bindings/WC_createElement_bind.d.mts +51 -0
- package/generated/types/src/web/bindings/WC_createNamedSlot.d.mts +26 -0
- package/generated/types/src/web/bindings/WC_litRender_bind.d.mts +20 -0
- package/generated/types/src/web/bindings/WC_litStyleMap.d.mts +7 -0
- package/generated/types/src/web/common/CSS.d.mts +23 -0
- package/generated/types/src/web/common/E.d.mts +41 -0
- package/generated/types/src/web/common/NewStyleSheetAsync.d.mts +15 -0
- package/generated/types/src/web/common/NewStyleSheetSync.d.mts +15 -0
- package/generated/types/src/web/common/WC_TagName_type.d.mts +15 -0
- package/generated/types/src/web/signals/IsInViewPortSignal.d.mts +52 -0
- package/generated/types/src/web/signals/ObserverSignal.d.mts +32 -0
- package/generated/types/src/web/signals/WC_litRef.d.mts +26 -0
- package/generated/types/src/web/signals/WC_loopedSiblingsRef.d.mts +44 -0
- package/generated/vivth/exports/all.mjs +233 -0
- package/generated/vivth/exports/neutral.mjs +193 -0
- package/generated/vivth/exports/node.mjs +46 -0
- package/package.json +50 -14
- package/src/bundler/CompileAS.mjs +36 -0
- package/src/bundler/CompileJS.mjs +98 -171
- package/src/bundler/CreateESPlugin.mjs +1 -1
- package/src/bundler/EsBundler.mjs +38 -13
- package/src/bundler/FSAnalyzer.mjs +253 -0
- package/src/bundler/FSasar.bundled.mjs +128 -0
- package/src/bundler/FSasar.mjs +96 -0
- package/src/bundler/FileSelfMapper.mjs +491 -0
- package/src/bundler/JSDirMapper.mjs +528 -0
- package/src/bundler/RunWatchThenCompileJSOnSafeExit.mjs +129 -0
- package/src/bundler/adds/BrowserExternals.mjs +37 -0
- package/src/bundler/adds/CreateTransform.mjs +36 -0
- package/src/bundler/adds/LastEditedUnix.mjs +12 -0
- package/src/bundler/adds/NodeModuleList.mjs +33 -0
- package/src/bundler/adds/PathFSBundles.bundled.mjs +41 -0
- package/src/bundler/adds/PathFSBundles.mjs +91 -0
- package/src/bundler/adds/PathFSDir.bundled.mjs +53 -0
- package/src/bundler/adds/PathFSDir.mjs +100 -0
- package/src/bundler/adds/PathFSFile.bundled.mjs +40 -0
- package/src/bundler/adds/PathFSFile.mjs +85 -0
- package/src/bundler/adds/ToBundledJSPlugin.mjs +116 -55
- package/src/bundler/adds/autoExternalize.mjs +81 -0
- package/src/bundler/adds/emptyBufferValue.mjs +5 -0
- package/src/bundler/adds/isModuleTheBundledVersion.mjs +10 -0
- package/src/bundler/adds/onEndEsBuildErrorLogger.mjs +34 -0
- package/src/bundler/adds/resolveJSDependencyPath.mjs +17 -0
- package/src/class/AwaitSignal.mjs +119 -0
- package/src/class/Console.mjs +36 -14
- package/src/class/DataLog.mjs +29 -0
- package/src/class/Derived.mjs +67 -55
- package/src/class/Effect.mjs +270 -84
- package/src/class/EnvSignal.mjs +11 -8
- package/src/class/EsWatcher.mjs +60 -0
- package/src/class/EventSignal.mjs +46 -58
- package/src/class/FSDirArchWatcher.mjs +246 -0
- package/src/class/FileSafe.mjs +72 -24
- package/src/class/ForEach.mjs +78 -0
- package/src/class/ForSignal.mjs +115 -0
- package/src/class/GetterSetter.mjs +40 -0
- package/src/class/JSONFileHandler.mjs +90 -0
- package/src/class/ListSignal.mjs +68 -26
- package/src/class/LitExp.mjs +59 -36
- package/src/class/ObjectSignal.mjs +225 -0
- package/src/class/Paths.mjs +56 -20
- package/src/class/Prettivy.mjs +51 -0
- package/src/class/QChannel.mjs +48 -26
- package/src/class/SafeExit.mjs +156 -99
- package/src/class/Setup.mjs +28 -16
- package/src/class/Signal.mjs +50 -27
- package/src/class/SignalCollection.mjs +130 -0
- package/src/class/WalkThrough.mjs +6 -23
- package/src/class/{WorkerMainThreadBundled.mjs → WorkerMainThread.bundled.mjs} +61 -84
- package/src/class/WorkerMainThread.mjs +103 -102
- package/src/class/WorkerThread.mjs +24 -17
- package/src/common/Base64URL.mjs +6 -3
- package/src/common/Base64URLFromFile.mjs +17 -4
- package/src/common/BundledV.bundled.mjs +7 -0
- package/src/common/BundledV.mjs +45 -0
- package/src/common/CreateStringID.mjs +8 -7
- package/src/common/EnvMode.mjs +172 -0
- package/src/common/FactoryKey.mjs +11 -0
- package/src/common/Preferrence.mjs +27 -0
- package/src/common/Trace.mjs +1 -1
- package/src/common/TracePath.mjs +53 -3
- package/src/common/VivthUnBundledCodeBlock.mjs +8 -0
- package/src/doc/JSautoDOC.mjs +673 -284
- package/src/doc/cleanPreserveTypedef.mjs +27 -0
- package/src/doc/correctBeforeParse.mjs +57 -48
- package/src/doc/{parsedFile.mjs → parsedFileForDOC.mjs} +133 -120
- package/src/function/ClearRequireCache.mjs +33 -0
- package/src/function/CreateImmutable.mjs +40 -37
- package/src/function/EventCheck.mjs +5 -2
- package/src/function/EventObject.mjs +2 -6
- package/src/function/ForInAsync.mjs +76 -0
- package/src/function/ForInSync.mjs +87 -0
- package/src/function/ForOfAsync.mjs +61 -0
- package/src/function/ForOfSync.mjs +70 -0
- package/src/function/GetBufferFromRelativePath.mjs +25 -0
- package/src/function/GetFilesFromDir.mjs +49 -0
- package/src/function/GetMaxFilenameLength.mjs +32 -0
- package/src/function/GetModuleEsbuildPlatform.mjs +118 -0
- package/src/function/GetNamedImportAlias.mjs +2 -2
- package/src/function/GetRuntime.mjs +10 -14
- package/src/function/InstantiateAssemblyScript.mjs +22 -0
- package/src/function/IsAsync.mjs +1 -1
- package/src/function/IsInstanceOf.mjs +29 -0
- package/src/function/IsSameFile.mjs +41 -0
- package/src/function/IsStringLooksLikeAPath.mjs +20 -0
- package/src/function/IsTypeOf.mjs +27 -0
- package/src/function/IsTypeOf.mts +31 -0
- package/src/function/LazyFactory.mjs +25 -23
- package/src/function/MonkeyPatch.mjs +38 -0
- package/src/function/NewAnimationTimeline.mjs +55 -0
- package/src/function/NewChainable.mjs +69 -0
- package/src/function/NewDynamicsExport.mjs +312 -0
- package/src/function/NewObjectWrapper.mjs +14 -0
- package/src/function/ObjectRegistrar.mjs +23 -0
- package/src/function/ParseSQLFile.mjs +129 -0
- package/src/function/PipeAsync.mjs +30 -0
- package/src/function/PipeSync.mjs +28 -0
- package/src/function/SafeImport.mjs +77 -0
- package/src/function/TemplateLiteral.mjs +42 -23
- package/src/function/Timeout.mjs +4 -4
- package/src/function/Tries.mjs +22 -16
- package/src/function/TryAsync.mjs +3 -2
- package/src/function/TryNew.mjs +1 -1
- package/src/function/TsToMjs.mjs +184 -21
- package/src/function/UniqueFSTempName.mjs +33 -0
- package/src/function/errorToMessage.mjs +21 -0
- package/src/function/resolveErrorArray.mjs +15 -1
- package/src/neinth/VivthyNeinth.mjs +487 -0
- package/src/typehints/ArrayToKeys.mjs +17 -0
- package/src/typehints/ArrayToKeys.mts +31 -0
- package/src/typehints/AssemblyScriptExportsType.mjs +7 -0
- package/src/typehints/AssemblyScriptLoaderInstantiate.mjs +7 -0
- package/src/typehints/AutoDocASOptions.mjs +14 -0
- package/src/typehints/ChainableType.mjs +11 -0
- package/src/typehints/ComponentDecorator_Constructor.mjs +10 -0
- package/src/typehints/ConsoleAdditionalSettingType.mjs +6 -0
- package/src/typehints/Decorator.mjs +9 -0
- package/src/typehints/Decorator.mts +31 -0
- package/src/typehints/DecoratorMonkeyPatch.mjs +10 -0
- package/src/typehints/DecoratorMonkeyPatch.mts +43 -0
- package/src/{types → typehints}/DevTestCB.mjs +2 -2
- package/src/typehints/EnvModeType.mjs +6 -0
- package/src/{types → typehints}/ListArg.mjs +1 -1
- package/src/{types → typehints}/LitExpResultType.mjs +1 -1
- package/src/typehints/MonkeyPatchedType.mjs +13 -0
- package/src/typehints/ParametersFollowingN.mjs +8 -0
- package/src/typehints/ParametersFollowingN.mts +17 -0
- package/src/typehints/PrefixedKeysOf.mjs +9 -0
- package/src/typehints/Runtime.mjs +6 -0
- package/src/typehints/SafeImportReturnType.mjs +6 -0
- package/src/typehints/StylePropRefType.mjs +12 -0
- package/src/typehints/TemplateLiteralValueHandler.mjs +14 -0
- package/src/typehints/VLifecycleCallbacks.mjs +10 -0
- package/src/typehints/VivthCleanup.mjs +14 -0
- package/src/web/BrowserDirMapper.mjs +255 -0
- package/src/web/EnsureValidTag.mjs +5 -0
- package/src/web/EnsureValidTag.mts +10 -0
- package/src/web/ViteAddDynamics.mjs +34 -0
- package/src/web/ViteGetAllHTMLFile.mjs +97 -0
- package/src/web/WC_extendsA.mjs +330 -0
- package/src/web/WC_extendsB.mjs +332 -0
- package/src/web/bindings/WC_StyleProp_bind.mjs +70 -0
- package/src/web/bindings/WC_createElement_bind.mjs +95 -0
- package/src/web/bindings/WC_createNamedSlot.mjs +29 -0
- package/src/web/bindings/WC_litRender_bind.mjs +26 -0
- package/src/web/bindings/WC_litStyleMap.mjs +14 -0
- package/src/web/common/CSS.mjs +35 -0
- package/src/web/common/E.mjs +126 -0
- package/src/web/common/NewStyleSheetAsync.mjs +21 -0
- package/src/web/common/NewStyleSheetSync.mjs +21 -0
- package/src/web/common/WC_TagName_type.mjs +10 -0
- package/src/web/common/WC_TagName_type.mts +36 -0
- package/src/web/signals/IsInViewPortSignal.mjs +140 -0
- package/src/web/signals/ObserverSignal.mjs +93 -0
- package/src/web/signals/WC_litRef.mjs +61 -0
- package/src/web/signals/WC_loopedSiblingsRef.mjs +100 -0
- package/tsconfig.json +44 -41
- package/index.mjs +0 -91
- package/src/bundler/FSInline.mjs +0 -67
- package/src/bundler/FSInlineAnalyzer.mjs +0 -228
- package/src/bundler/FSInlineBundled.mjs +0 -38
- package/src/bundler/adds/externals.mjs +0 -8
- package/src/class/ListDerived.mjs +0 -42
- package/src/common/Dev.mjs +0 -134
- package/src/common/DevBundled.mjs +0 -5
- package/src/common/lazie.mjs +0 -3
- package/src/types/IsListSignal.mjs +0 -6
- package/src/types/Runtime.mjs +0 -6
- package/src/types/VivthDevCodeBlockStringType.mjs +0 -6
- package/types/index.d.mts +0 -58
- package/types/src/bundler/CompileJS.d.mts +0 -119
- package/types/src/bundler/FSInline.d.mts +0 -50
- package/types/src/bundler/FSInlineAnalyzer.d.mts +0 -37
- package/types/src/bundler/FSInlineBundled.d.mts +0 -22
- package/types/src/bundler/adds/externals.d.mts +0 -1
- package/types/src/class/Console.d.mts +0 -71
- package/types/src/class/Derived.d.mts +0 -98
- package/types/src/class/Effect.d.mts +0 -216
- package/types/src/class/ListDerived.d.mts +0 -38
- package/types/src/class/Paths.d.mts +0 -69
- package/types/src/class/SafeExit.d.mts +0 -103
- package/types/src/class/WorkerMainThreadBundled.d.mts +0 -83
- package/types/src/common/Base64URLFromFile.d.mts +0 -16
- package/types/src/common/Dev.d.mts +0 -68
- package/types/src/common/DevBundled.d.mts +0 -3
- package/types/src/common/lazie.d.mts +0 -1
- package/types/src/doc/JSautoDOC.d.mts +0 -83
- package/types/src/function/GetRuntime.d.mts +0 -2
- package/types/src/function/TemplateLiteral.d.mts +0 -22
- package/types/src/function/TsToMjs.d.mts +0 -23
- package/types/src/types/IsListSignal.d.mts +0 -4
- package/types/src/types/ListArg.d.mts +0 -4
- package/types/src/types/Runtime.d.mts +0 -4
- package/types/src/types/VivthDevCodeBlockStringType.d.mts +0 -4
- /package/{types → generated/types}/src/bundler/adds/pluginVivthBundle.d.mts +0 -0
- /package/{types → generated/types}/src/class/WorkerResult.d.mts +0 -0
- /package/{types → generated/types}/src/common/EventNameSpace.d.mts +0 -0
- /package/{types → generated/types}/src/common/eventObjects.d.mts +0 -0
- /package/{types → generated/types}/src/common/keys.d.mts +0 -0
- /package/{types → generated/types}/src/doc/correctBeforeParse.d.mts +0 -0
- /package/{types → generated/types}/src/function/TrySync.d.mts +0 -0
- /package/{types → generated/types}/src/function/resolveErrorArray.d.mts +0 -0
- /package/{types/src/types → generated/types/src/typehints}/AnyButUndefined.d.mts +0 -0
- /package/{types/src/types → generated/types/src/typehints}/ExtnameType.d.mts +0 -0
- /package/{types/src/types → generated/types/src/typehints}/LitExpKeyType.d.mts +0 -0
- /package/{types/src/types → generated/types/src/typehints}/LitExpResultType.d.mts +0 -0
- /package/{types/src/types → generated/types/src/typehints}/MutationType.d.mts +0 -0
- /package/{types/src/types → generated/types/src/typehints}/QCBFIFOReturn.d.mts +0 -0
- /package/{types/src/types → generated/types/src/typehints}/QCBReturn.d.mts +0 -0
- /package/src/{types → typehints}/AnyButUndefined.mjs +0 -0
- /package/src/{types → typehints}/ExtnameType.mjs +0 -0
- /package/src/{types → typehints}/LitExpKeyType.mjs +0 -0
- /package/src/{types → typehints}/MutationType.mjs +0 -0
- /package/src/{types → typehints}/QCBFIFOReturn.mjs +0 -0
- /package/src/{types → typehints}/QCBReturn.mjs +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Checks for a @preserve JSDoc block containing literal '@'+'[blank]'+'typedef'.
|
|
5
|
+
* Returns the modified string, or false if no such block exists.
|
|
6
|
+
* @param {string} sourceCode - The full source string/file content.
|
|
7
|
+
* @returns {string | false} The modified full string, or false if no target block matches.
|
|
8
|
+
*/
|
|
9
|
+
export const cleanPreserveTypedef = (sourceCode) => {
|
|
10
|
+
// A strict regex that ensures a block has both @preserve AND [blank] inside it
|
|
11
|
+
const validationRegex = /\/\*\*([\s\S]*?@preserve[\s\S]*?@\[blank\]typedef[\s\S]*?)\*\//i;
|
|
12
|
+
|
|
13
|
+
// 1. If the file doesn't have the target block combination, bail out immediately
|
|
14
|
+
if (!validationRegex.test(sourceCode)) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// 2. We have a guaranteed match, now safely perform the replacement loop
|
|
19
|
+
const jsDocRegex = /\/\*\*([\s\S]*?)\*\//g;
|
|
20
|
+
|
|
21
|
+
return sourceCode.replace(jsDocRegex, (fullMatch, commentContent) => {
|
|
22
|
+
if (commentContent.includes('@preserve')) {
|
|
23
|
+
return fullMatch.replace(/@\[blank\]typedef/gi, '@typedef');
|
|
24
|
+
}
|
|
25
|
+
return fullMatch;
|
|
26
|
+
});
|
|
27
|
+
};
|
|
@@ -7,48 +7,12 @@ import { TryAsync } from '../function/TryAsync.mjs';
|
|
|
7
7
|
import { Console } from '../class/Console.mjs';
|
|
8
8
|
import { Timeout } from '../function/Timeout.mjs';
|
|
9
9
|
import { LitExp } from '../class/LitExp.mjs';
|
|
10
|
+
import { Preferrence } from '../common/Preferrence.mjs';
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* @typedef {'shouldProceedNextCheck'|'waitForRewrite'|'doNotProcess'} RetType
|
|
13
14
|
*/
|
|
14
15
|
|
|
15
|
-
/**
|
|
16
|
-
* @param {string} path
|
|
17
|
-
* @param {BufferEncoding} [encoding]
|
|
18
|
-
* @returns {Promise<RetType>}
|
|
19
|
-
*/
|
|
20
|
-
export const correctBeforeParse = async (path, encoding = 'utf-8') => {
|
|
21
|
-
const validExportName = basename(path).split('.')[0] ?? '';
|
|
22
|
-
const firstLetter = validExportName[0];
|
|
23
|
-
const isStartWithCapital = firstLetter?.toUpperCase() === firstLetter;
|
|
24
|
-
if (validExportName === '' || isStartWithCapital === false) {
|
|
25
|
-
return 'doNotProcess';
|
|
26
|
-
}
|
|
27
|
-
const content = (await readFile(path, { encoding: 'utf-8' })).toString();
|
|
28
|
-
const [resFunctionCheck, errorFunctionCheck] = await checkIsFunction(
|
|
29
|
-
content,
|
|
30
|
-
validExportName,
|
|
31
|
-
path,
|
|
32
|
-
encoding
|
|
33
|
-
);
|
|
34
|
-
if (errorFunctionCheck) {
|
|
35
|
-
return 'doNotProcess';
|
|
36
|
-
}
|
|
37
|
-
if (resFunctionCheck === 'waitForRewrite') {
|
|
38
|
-
return 'waitForRewrite';
|
|
39
|
-
}
|
|
40
|
-
const [resClassCheck, errorClassCheck] = await checkIsClass(
|
|
41
|
-
content,
|
|
42
|
-
validExportName,
|
|
43
|
-
path,
|
|
44
|
-
encoding
|
|
45
|
-
);
|
|
46
|
-
if (errorClassCheck) {
|
|
47
|
-
return 'doNotProcess';
|
|
48
|
-
}
|
|
49
|
-
return resClassCheck;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
16
|
/**
|
|
53
17
|
* @type {(content:string,
|
|
54
18
|
* validExportName:string,
|
|
@@ -59,7 +23,7 @@ const checkIsFunction = async (content, validExportName, path, encoding) => {
|
|
|
59
23
|
return await TryAsync(async () => {
|
|
60
24
|
const regexConst = new RegExp(
|
|
61
25
|
`export\\s+const\\s+${validExportName}\\s+\\=\\s*?(?:async|)\\s*?\\(([\\s\\S]*?)\\)\\s*?\=\>`,
|
|
62
|
-
'g'
|
|
26
|
+
'g',
|
|
63
27
|
);
|
|
64
28
|
const matches = content.matchAll(regexConst).toArray()[0];
|
|
65
29
|
const useConst = regexConst.test(content);
|
|
@@ -69,9 +33,13 @@ const checkIsFunction = async (content, validExportName, path, encoding) => {
|
|
|
69
33
|
const newContent = content.replace(fullString, declaratorReplaceMent);
|
|
70
34
|
await Timeout(100); // to wait for pretify on autoSave;
|
|
71
35
|
await writeFile(path, newContent, { encoding });
|
|
72
|
-
Console.info(
|
|
73
|
-
|
|
74
|
-
|
|
36
|
+
Console.info(
|
|
37
|
+
`successfully modify '${path}' exported function to regullar function declaration, for correct type emition;`,
|
|
38
|
+
|
|
39
|
+
{
|
|
40
|
+
now: true,
|
|
41
|
+
},
|
|
42
|
+
);
|
|
75
43
|
return 'waitForRewrite';
|
|
76
44
|
}
|
|
77
45
|
return 'shouldProceedNextCheck';
|
|
@@ -91,7 +59,7 @@ const checkIsClass = async (content, validExportName, path, encoding) => {
|
|
|
91
59
|
*/
|
|
92
60
|
async () => {
|
|
93
61
|
const isAClassRegex = new RegExp(`export\\s+class\\s+${validExportName}`, 'g');
|
|
94
|
-
if (isAClassRegex.test(content)
|
|
62
|
+
if (!isAClassRegex.test(content)) {
|
|
95
63
|
return 'shouldProceedNextCheck';
|
|
96
64
|
}
|
|
97
65
|
let rewrite = false;
|
|
@@ -105,9 +73,9 @@ const checkIsClass = async (content, validExportName, path, encoding) => {
|
|
|
105
73
|
const check = new RegExp(
|
|
106
74
|
`(?<opening>${LitExp.escape(val).replace(
|
|
107
75
|
/\s+/g,
|
|
108
|
-
`\\\s
|
|
76
|
+
`\\\s*`,
|
|
109
77
|
)}\\\s*?(?:static\\\s+|))(?<funcname>(?:\#|)[a-zA-Z0-9]*)\\\s*?\\\=\\\s*?(?<async_>async\\\s*?|)\\\((?<parameters>[\\\s\\\S]*?)\\\)\\\s*?=>`,
|
|
110
|
-
'g'
|
|
78
|
+
'g',
|
|
111
79
|
);
|
|
112
80
|
const [checkContent] = content.matchAll(check).toArray();
|
|
113
81
|
if (checkContent === undefined) {
|
|
@@ -128,12 +96,53 @@ const checkIsClass = async (content, validExportName, path, encoding) => {
|
|
|
128
96
|
if (rewrite) {
|
|
129
97
|
await Timeout(100); // to wait for pretify on autoSave;
|
|
130
98
|
await writeFile(path, content, { encoding });
|
|
131
|
-
Console.info(
|
|
132
|
-
|
|
133
|
-
|
|
99
|
+
Console.info(
|
|
100
|
+
`successfully modify '${path}' class/instance method(s), that has generic template, for correct type emition;`,
|
|
101
|
+
|
|
102
|
+
{
|
|
103
|
+
now: true,
|
|
104
|
+
},
|
|
105
|
+
);
|
|
134
106
|
return 'waitForRewrite';
|
|
135
107
|
}
|
|
136
108
|
return 'shouldProceedNextCheck';
|
|
137
|
-
}
|
|
109
|
+
},
|
|
110
|
+
);
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @param {string} path
|
|
115
|
+
* @param {BufferEncoding} [encoding]
|
|
116
|
+
* @returns {Promise<RetType>}
|
|
117
|
+
*/
|
|
118
|
+
export const correctBeforeParse = async (path, encoding = Preferrence.encoding) => {
|
|
119
|
+
const validExportName = basename(path).split('.')[0] ?? '';
|
|
120
|
+
const firstLetter = validExportName[0];
|
|
121
|
+
const isStartWithCapital = firstLetter?.toUpperCase() === firstLetter;
|
|
122
|
+
if (validExportName === '' || !isStartWithCapital) {
|
|
123
|
+
return 'doNotProcess';
|
|
124
|
+
}
|
|
125
|
+
const content = (await readFile(path, { encoding })).toString();
|
|
126
|
+
const [resFunctionCheck, errorFunctionCheck] = await checkIsFunction(
|
|
127
|
+
content,
|
|
128
|
+
validExportName,
|
|
129
|
+
path,
|
|
130
|
+
encoding,
|
|
138
131
|
);
|
|
132
|
+
if (errorFunctionCheck) {
|
|
133
|
+
return 'doNotProcess';
|
|
134
|
+
}
|
|
135
|
+
if (resFunctionCheck === 'waitForRewrite') {
|
|
136
|
+
return 'waitForRewrite';
|
|
137
|
+
}
|
|
138
|
+
const [resClassCheck, errorClassCheck] = await checkIsClass(
|
|
139
|
+
content,
|
|
140
|
+
validExportName,
|
|
141
|
+
path,
|
|
142
|
+
encoding,
|
|
143
|
+
);
|
|
144
|
+
if (errorClassCheck) {
|
|
145
|
+
return 'doNotProcess';
|
|
146
|
+
}
|
|
147
|
+
return resClassCheck;
|
|
139
148
|
};
|
|
@@ -2,15 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
import { readFile } from 'node:fs/promises';
|
|
4
4
|
import { Stats } from 'node:fs';
|
|
5
|
-
import {
|
|
5
|
+
import { basename, join, relative, extname, dirname, resolve } from 'node:path';
|
|
6
6
|
|
|
7
7
|
import { Paths } from '../class/Paths.mjs';
|
|
8
8
|
import { LazyFactory } from '../function/LazyFactory.mjs';
|
|
9
9
|
import { TrySync } from '../function/TrySync.mjs';
|
|
10
10
|
import { Console } from '../class/Console.mjs';
|
|
11
11
|
import { TryAsync } from '../function/TryAsync.mjs';
|
|
12
|
+
import { Preferrence } from '../common/Preferrence.mjs';
|
|
13
|
+
import { GetModuleEsbuildPlatform } from '../function/GetModuleEsbuildPlatform.mjs';
|
|
14
|
+
import { multiExportEntryPointsPath } from './JSautoDOC.mjs';
|
|
15
|
+
import { SafeImport } from '../function/SafeImport.mjs';
|
|
16
|
+
import { isModuleTheBundledVersion } from '../bundler/adds/isModuleTheBundledVersion.mjs';
|
|
12
17
|
|
|
13
|
-
export class
|
|
18
|
+
export class parsedFileForDOC {
|
|
14
19
|
/**
|
|
15
20
|
* @typedef {{
|
|
16
21
|
* instanceOrStatic:{parent:string, type:string},
|
|
@@ -23,25 +28,29 @@ export class parsedFile {
|
|
|
23
28
|
* }} refType
|
|
24
29
|
*/
|
|
25
30
|
/**
|
|
26
|
-
* @param {string}
|
|
27
|
-
*
|
|
31
|
+
* @param {string} path
|
|
32
|
+
* - `relative`(to `Paths.root`) OR `absolute`, both are accepted;
|
|
33
|
+
* @param {import('fs').Stats} [stats]
|
|
28
34
|
* @param {BufferEncoding} [encoding]
|
|
29
35
|
*/
|
|
30
|
-
constructor(
|
|
31
|
-
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
this.#stats = _stats;
|
|
36
|
+
constructor(path, stats, encoding = Preferrence.encoding) {
|
|
37
|
+
this.#stats = stats;
|
|
35
38
|
const root = Paths.root.replace(/\\/g, '/');
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
this.#relativePath = Paths.normalize(relative(root, this.#fullPath));
|
|
39
|
+
this.#fullPath = Paths.diskAbsolute(path);
|
|
40
|
+
this.#relativePath = Paths.normalize(
|
|
41
|
+
relative(join(root, multiExportEntryPointsPath), this.#fullPath),
|
|
42
|
+
);
|
|
42
43
|
this.#encoding = encoding;
|
|
44
|
+
this.platform = GetModuleEsbuildPlatform(this.#fullPath);
|
|
43
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* @type {Promise<"browser" | "node" | "neutral" | "unsupported">}
|
|
48
|
+
*/
|
|
49
|
+
platform;
|
|
44
50
|
parse = async () => {
|
|
51
|
+
if (isModuleTheBundledVersion(this.path.full, this.ext.withDot)) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
45
54
|
const { details, error, exportName } = await this.content.parsed();
|
|
46
55
|
if (error || exportName === undefined) {
|
|
47
56
|
return;
|
|
@@ -74,11 +83,11 @@ export class parsedFile {
|
|
|
74
83
|
const interpreted = this.#interpreteArrayDesc(
|
|
75
84
|
exportName,
|
|
76
85
|
instanceOrStaticDef,
|
|
77
|
-
fullDescription,
|
|
86
|
+
fullDescription.replace(/\[at\]/g, '@'),
|
|
78
87
|
isExport,
|
|
79
88
|
typeOfVar,
|
|
80
89
|
getterOrSetter,
|
|
81
|
-
namedVar
|
|
90
|
+
namedVar,
|
|
82
91
|
);
|
|
83
92
|
if (interpreted === undefined) {
|
|
84
93
|
return;
|
|
@@ -88,6 +97,13 @@ export class parsedFile {
|
|
|
88
97
|
};
|
|
89
98
|
documented = LazyFactory(() => {
|
|
90
99
|
return {
|
|
100
|
+
/**
|
|
101
|
+
*
|
|
102
|
+
* @returns {Promise<{
|
|
103
|
+
* module: string;
|
|
104
|
+
* readme: string;
|
|
105
|
+
* } | undefined>}
|
|
106
|
+
*/
|
|
91
107
|
typedef: async () => {
|
|
92
108
|
const relativePath = this.path.relative;
|
|
93
109
|
if (relativePath === '') {
|
|
@@ -129,11 +145,11 @@ export class parsedFile {
|
|
|
129
145
|
* @param {string} exportName
|
|
130
146
|
* @param {string} relativePath
|
|
131
147
|
* @param {string} content
|
|
132
|
-
* @returns {
|
|
148
|
+
* @returns {parsedFileForDOC["parsedType"]}
|
|
133
149
|
*/
|
|
134
150
|
#parseTypedef = (exportName, relativePath, content) => {
|
|
135
151
|
const rootPath = Paths.root;
|
|
136
|
-
if (
|
|
152
|
+
if (!parsedFileForDOC.#isExportNameValid(exportName)) {
|
|
137
153
|
return undefined;
|
|
138
154
|
}
|
|
139
155
|
if (this.parsedType === undefined) {
|
|
@@ -145,7 +161,7 @@ export class parsedFile {
|
|
|
145
161
|
if (val === undefined) {
|
|
146
162
|
return;
|
|
147
163
|
}
|
|
148
|
-
if (
|
|
164
|
+
if (!/import\(['"][\s\S]*['"]\)/g.test(val)) {
|
|
149
165
|
return val;
|
|
150
166
|
}
|
|
151
167
|
const res = /import\(['"]([\s\S]*)['"]\)/g.exec(val);
|
|
@@ -156,10 +172,10 @@ export class parsedFile {
|
|
|
156
172
|
if (importDec === undefined) {
|
|
157
173
|
return;
|
|
158
174
|
}
|
|
159
|
-
const correctedPath = Paths.normalize(
|
|
175
|
+
const correctedPath = Paths.normalize(join(relativeDir, importDec));
|
|
160
176
|
const rep = val.replace(
|
|
161
177
|
importDec,
|
|
162
|
-
correctedPath.startsWith('.') ? correctedPath : `./${correctedPath}
|
|
178
|
+
correctedPath.startsWith('.') ? correctedPath : `./${correctedPath}`,
|
|
163
179
|
);
|
|
164
180
|
return rep;
|
|
165
181
|
})
|
|
@@ -169,18 +185,15 @@ export class parsedFile {
|
|
|
169
185
|
return false;
|
|
170
186
|
}
|
|
171
187
|
return new RegExp(
|
|
172
|
-
`(?:@typedef|@callback)[\\s\\S]*?${baseNameNoExt}\\s?[\\s\\S]*?`,
|
|
173
|
-
''
|
|
188
|
+
`(?:@typedef|@callback)[\\s\\S]*?${baseNameNoExt}[\\s]?[\\s\\S]*?`,
|
|
189
|
+
'',
|
|
174
190
|
).test(captured);
|
|
175
191
|
});
|
|
176
192
|
if (res0 === undefined) {
|
|
177
193
|
return undefined;
|
|
178
194
|
}
|
|
179
195
|
const [res] = res0;
|
|
180
|
-
if (
|
|
181
|
-
//
|
|
182
|
-
!res.length
|
|
183
|
-
) {
|
|
196
|
+
if (!res.length) {
|
|
184
197
|
return undefined;
|
|
185
198
|
}
|
|
186
199
|
const templates = res
|
|
@@ -192,15 +205,15 @@ export class parsedFile {
|
|
|
192
205
|
|
|
193
206
|
this.parsedType = {
|
|
194
207
|
module: `/**-templates-
|
|
195
|
-
* @typedef {import('
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
208
|
+
* @typedef {import('${relativePath}').${exportName}${
|
|
209
|
+
templates.length
|
|
210
|
+
? `<${templates
|
|
211
|
+
.map(({ name }) => {
|
|
212
|
+
return name;
|
|
213
|
+
})
|
|
214
|
+
.join(',')}>`
|
|
215
|
+
: ''
|
|
216
|
+
}} ${exportName}
|
|
204
217
|
*/`
|
|
205
218
|
.replace(/\\/g, '/')
|
|
206
219
|
.replace(
|
|
@@ -213,15 +226,18 @@ export class parsedFile {
|
|
|
213
226
|
if (matched && comment) {
|
|
214
227
|
comment = comment.replace(
|
|
215
228
|
matched,
|
|
216
|
-
`.${Paths.
|
|
217
|
-
relative(
|
|
218
|
-
|
|
229
|
+
`.${Paths.normalizeForRoot(
|
|
230
|
+
relative(
|
|
231
|
+
join(rootPath, multiExportEntryPointsPath),
|
|
232
|
+
resolve(dirname(this.#fullPath), matched),
|
|
233
|
+
),
|
|
234
|
+
)}`,
|
|
219
235
|
);
|
|
220
236
|
}
|
|
221
237
|
return comment;
|
|
222
238
|
})
|
|
223
239
|
.join('\n')
|
|
224
|
-
: ''
|
|
240
|
+
: '',
|
|
225
241
|
),
|
|
226
242
|
readme,
|
|
227
243
|
};
|
|
@@ -245,15 +261,15 @@ export class parsedFile {
|
|
|
245
261
|
isExport_,
|
|
246
262
|
typeOfVar,
|
|
247
263
|
getterOrSetter,
|
|
248
|
-
namedVar
|
|
264
|
+
namedVar,
|
|
249
265
|
) => {
|
|
250
266
|
const type = instanceOrStaticDef.includes('@instance')
|
|
251
267
|
? 'instance'
|
|
252
268
|
: instanceOrStaticDef.includes('@static')
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
269
|
+
? 'static'
|
|
270
|
+
: instanceOrStaticDef.includes('@helper')
|
|
271
|
+
? 'helper'
|
|
272
|
+
: '';
|
|
257
273
|
const parentSrc = instanceOrStaticDef
|
|
258
274
|
.matchAll(/(?:@instance|@static|@helper)\s+(\w+)/gm)
|
|
259
275
|
.toArray();
|
|
@@ -283,10 +299,10 @@ export class parsedFile {
|
|
|
283
299
|
reference = isExport
|
|
284
300
|
? `${exportName}`
|
|
285
301
|
: typeOfVar === 'static'
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
302
|
+
? `${exportName}.${namedVar}`
|
|
303
|
+
: typeOfVar === ''
|
|
304
|
+
? `${exportName}_instance.${namedVar}`
|
|
305
|
+
: '';
|
|
290
306
|
break;
|
|
291
307
|
}
|
|
292
308
|
if (getterOrSetter !== '') {
|
|
@@ -325,10 +341,16 @@ export class parsedFile {
|
|
|
325
341
|
.replace(/\s*(?<!\\)\*\s/g, '\n')
|
|
326
342
|
.trim();
|
|
327
343
|
fullDescTrue.shift();
|
|
328
|
-
|
|
344
|
+
/**
|
|
345
|
+
* @type {string}
|
|
346
|
+
*/
|
|
347
|
+
let example = '';
|
|
329
348
|
let jsPreview = `\n\`\`\`js
|
|
330
349
|
/**
|
|
331
|
-
* @${fullDescTrue
|
|
350
|
+
* @${fullDescTrue
|
|
351
|
+
.join('@')
|
|
352
|
+
.replace(/(?<!\\)\*/g, '\n *')
|
|
353
|
+
.replace(/\s+\*/g, '\n\t\*')}
|
|
332
354
|
*/\n\`\`\``;
|
|
333
355
|
const [example_] = jsPreview.matchAll(/@example([\s\S]*)\*\//gm).toArray();
|
|
334
356
|
if (example_ === undefined) {
|
|
@@ -348,33 +370,41 @@ export class parsedFile {
|
|
|
348
370
|
? `${jsPreview
|
|
349
371
|
.replace(/\/\*\*[\s\*]*\*\//g, '')
|
|
350
372
|
.replace(/\`\`\`js[\s]*\`\`\`/gm, '')
|
|
351
|
-
.replace(/\*[\*\s]*\*\//g, '*/')
|
|
352
|
-
|
|
353
|
-
|
|
373
|
+
.replace(/\*[\*\s]*\*\//g, '*/')
|
|
374
|
+
.replace(/\[at\]/g, '@')}${
|
|
375
|
+
!!example
|
|
376
|
+
? `\n - <i>example</i>:\n\`\`\`js\n${`${
|
|
377
|
+
/** */
|
|
378
|
+
example.trimEnd().replace(/\\\@/g, '@')
|
|
379
|
+
}\n`
|
|
380
|
+
.replace(/\n+/g, '\n')
|
|
381
|
+
.replace(/^\s([\w\W])/, '$1')}\`\`\``.replace(/\\\*/g, '*')
|
|
382
|
+
: ''
|
|
383
|
+
}`.replace(/\[at\]/g, '@')
|
|
354
384
|
: '',
|
|
355
385
|
};
|
|
356
386
|
};
|
|
357
387
|
/**
|
|
358
388
|
* @type {undefined|{exportName:undefined, details:undefined, error:{fullpath:string, message:string}}
|
|
359
|
-
* | {exportName:string|undefined, details:ReturnType<typeof
|
|
389
|
+
* | {exportName:string|undefined, details:ReturnType<typeof parsedFileForDOC["getDescription"]>, error:undefined}
|
|
360
390
|
* }
|
|
361
391
|
*/
|
|
362
392
|
#parsed;
|
|
363
393
|
/**
|
|
364
394
|
* @returns {Promise<{exportName:undefined, details:undefined, error:{fullpath:string, message:string}}
|
|
365
|
-
* | {exportName:string|undefined, details:ReturnType<typeof
|
|
395
|
+
* | {exportName:string|undefined, details:ReturnType<typeof parsedFileForDOC["getDescription"]>, error:undefined}
|
|
366
396
|
* >}
|
|
367
397
|
*/
|
|
368
398
|
#parse = async () => {
|
|
369
399
|
const fullpath = this.#fullPath;
|
|
370
400
|
const content = await this.content.string();
|
|
371
401
|
if (content === undefined) {
|
|
372
|
-
const
|
|
373
|
-
Console.error(
|
|
374
|
-
return { exportName: undefined, details: undefined, error };
|
|
402
|
+
const errorParse = { fullpath, message: 'invalid file content' };
|
|
403
|
+
Console.error({ errorParse }, { now: true });
|
|
404
|
+
return { exportName: undefined, details: undefined, error: errorParse };
|
|
375
405
|
}
|
|
376
406
|
const supposedName = this.baseName.noExt.split('.')[0];
|
|
377
|
-
if (supposedName === undefined || this.#getTopExport(supposedName, content)
|
|
407
|
+
if (supposedName === undefined || !this.#getTopExport(supposedName, content)) {
|
|
378
408
|
return {
|
|
379
409
|
details: undefined,
|
|
380
410
|
exportName: undefined,
|
|
@@ -383,7 +413,7 @@ export class parsedFile {
|
|
|
383
413
|
}
|
|
384
414
|
this.hasValidExportObject = true;
|
|
385
415
|
return {
|
|
386
|
-
details:
|
|
416
|
+
details: parsedFileForDOC.getDescription(content),
|
|
387
417
|
exportName: supposedName,
|
|
388
418
|
error: undefined,
|
|
389
419
|
};
|
|
@@ -395,12 +425,12 @@ export class parsedFile {
|
|
|
395
425
|
* @returns {boolean}
|
|
396
426
|
*/
|
|
397
427
|
#getTopExport = (name, content) => {
|
|
398
|
-
if (
|
|
428
|
+
if (!parsedFileForDOC.#isExportNameValid(name)) {
|
|
399
429
|
return false;
|
|
400
430
|
}
|
|
401
431
|
const regex = new RegExp(
|
|
402
|
-
`export\\s*(?:(?:async\\s*|)function|const|class|\\{)\\s*${name}`,
|
|
403
|
-
'g'
|
|
432
|
+
`export\\s*(?:(?:async\\s*|)function|const|class|\\{)\\s*${name}\[\\W\]`,
|
|
433
|
+
'g',
|
|
404
434
|
);
|
|
405
435
|
return regex.test(content);
|
|
406
436
|
};
|
|
@@ -410,8 +440,8 @@ export class parsedFile {
|
|
|
410
440
|
*/
|
|
411
441
|
static getDescription = (content) => {
|
|
412
442
|
const regexp =
|
|
413
|
-
/(\/\*\*([\s\S]*?)(?:@description)([\s\S]*?)\*\/\s
|
|
414
|
-
const modified = content.replace(/\r\n+/g, ' ');
|
|
443
|
+
/(\/\*\*([\s\S]*?)(?:@description)([\s\S]*?)\*\/\s*(?:@\w+(?:\([\s\S]*?\))?\s*)*(export|\s?)\s?(static|class|const|function|async\s+function|\s?)\s?(?:async|)\s?(get|set|)\s+?(\w+))/gm;
|
|
444
|
+
const modified = content.replace(/\s*\/\/\s+\@ts-[\w-]+\s*/gm, ' ').replace(/\r\n+/g, ' ');
|
|
415
445
|
const matches = modified.matchAll(regexp).toArray();
|
|
416
446
|
return matches;
|
|
417
447
|
};
|
|
@@ -424,33 +454,28 @@ export class parsedFile {
|
|
|
424
454
|
*/
|
|
425
455
|
#relativePath = '';
|
|
426
456
|
/**
|
|
427
|
-
* @returns {
|
|
457
|
+
* @returns {boolean|undefined}
|
|
428
458
|
*/
|
|
429
|
-
isFile
|
|
430
|
-
return this.#stats
|
|
431
|
-
}
|
|
459
|
+
get isFile() {
|
|
460
|
+
return this.#stats?.isFile();
|
|
461
|
+
}
|
|
432
462
|
/**
|
|
433
|
-
* @returns {
|
|
463
|
+
* @returns {boolean|undefined}
|
|
434
464
|
*/
|
|
435
|
-
isDirectory
|
|
436
|
-
return this.#stats
|
|
437
|
-
}
|
|
438
|
-
|
|
465
|
+
get isDirectory() {
|
|
466
|
+
return this.#stats?.isDirectory();
|
|
467
|
+
}
|
|
439
468
|
baseName = LazyFactory(() => {
|
|
440
469
|
const this_ = this;
|
|
441
470
|
return {
|
|
442
471
|
/**
|
|
443
472
|
* @returns {string}
|
|
444
473
|
*/
|
|
445
|
-
|
|
446
|
-
return basename(this_.#fullPath);
|
|
447
|
-
},
|
|
474
|
+
withExt: basename(this_.#fullPath),
|
|
448
475
|
/**
|
|
449
476
|
* @returns {string}
|
|
450
477
|
*/
|
|
451
|
-
|
|
452
|
-
return basename(this_.#fullPath, extname(this_.#fullPath));
|
|
453
|
-
},
|
|
478
|
+
noExt: basename(this_.#fullPath, extname(this_.#fullPath)),
|
|
454
479
|
};
|
|
455
480
|
});
|
|
456
481
|
path = LazyFactory(() => {
|
|
@@ -476,15 +501,11 @@ export class parsedFile {
|
|
|
476
501
|
/**
|
|
477
502
|
* @returns {string}
|
|
478
503
|
*/
|
|
479
|
-
|
|
480
|
-
return dirname(this_.#relativePath);
|
|
481
|
-
},
|
|
504
|
+
relative: dirname(this_.#relativePath),
|
|
482
505
|
/**
|
|
483
506
|
* @returns {string}
|
|
484
507
|
*/
|
|
485
|
-
|
|
486
|
-
return dirname(this_.#fullPath);
|
|
487
|
-
},
|
|
508
|
+
full: dirname(this_.#fullPath),
|
|
488
509
|
};
|
|
489
510
|
}
|
|
490
511
|
get ext() {
|
|
@@ -493,15 +514,11 @@ export class parsedFile {
|
|
|
493
514
|
/**
|
|
494
515
|
* @returns {string|undefined}
|
|
495
516
|
*/
|
|
496
|
-
|
|
497
|
-
return extname(this_.#fullPath);
|
|
498
|
-
},
|
|
517
|
+
withDot: extname(this_.#fullPath),
|
|
499
518
|
/**
|
|
500
519
|
* @returns {string|undefined}
|
|
501
520
|
*/
|
|
502
|
-
|
|
503
|
-
return extname(this_.#fullPath).replace(/^\./, '');
|
|
504
|
-
},
|
|
521
|
+
noDot: extname(this_.#fullPath).replace(/^\./, ''),
|
|
505
522
|
};
|
|
506
523
|
}
|
|
507
524
|
/**
|
|
@@ -509,24 +526,23 @@ export class parsedFile {
|
|
|
509
526
|
*/
|
|
510
527
|
#encoding;
|
|
511
528
|
/**
|
|
512
|
-
* @type {Stats}
|
|
529
|
+
* @type {Stats|undefined}
|
|
513
530
|
*/
|
|
514
|
-
// @ts-expect-error
|
|
515
531
|
#stats;
|
|
516
532
|
get timeStamp() {
|
|
517
533
|
const this_ = this;
|
|
518
534
|
return {
|
|
519
535
|
/**
|
|
520
|
-
* @returns {Promise<number>}
|
|
536
|
+
* @returns {Promise<number|undefined>}
|
|
521
537
|
*/
|
|
522
538
|
lastModified: async () => {
|
|
523
|
-
return this_.#stats
|
|
539
|
+
return this_.#stats?.mtimeMs;
|
|
524
540
|
},
|
|
525
541
|
/**
|
|
526
|
-
* @returns {Promise<number>}
|
|
542
|
+
* @returns {Promise<number|undefined>}
|
|
527
543
|
*/
|
|
528
544
|
createdAt: async () => {
|
|
529
|
-
return this_.#stats
|
|
545
|
+
return this_.#stats?.birthtimeMs;
|
|
530
546
|
},
|
|
531
547
|
};
|
|
532
548
|
}
|
|
@@ -541,7 +557,7 @@ export class parsedFile {
|
|
|
541
557
|
* @return {Promise<string|undefined>}
|
|
542
558
|
*/
|
|
543
559
|
string: async () => {
|
|
544
|
-
if (
|
|
560
|
+
if (!this_.isFile) {
|
|
545
561
|
return undefined;
|
|
546
562
|
}
|
|
547
563
|
const [raw, error] = await TryAsync(async () => {
|
|
@@ -551,13 +567,21 @@ export class parsedFile {
|
|
|
551
567
|
this_.#rawContent = raw;
|
|
552
568
|
return this_.#rawContent;
|
|
553
569
|
}
|
|
554
|
-
Console.error(
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
570
|
+
Console.error(
|
|
571
|
+
{
|
|
572
|
+
error,
|
|
573
|
+
fullPath: this_.#fullPath,
|
|
574
|
+
message: 'failed to read fullPath',
|
|
575
|
+
},
|
|
576
|
+
{ now: true },
|
|
577
|
+
);
|
|
559
578
|
return undefined;
|
|
560
579
|
},
|
|
580
|
+
/**
|
|
581
|
+
*
|
|
582
|
+
* @returns {Promise<{exportName:undefined, details:undefined, error:{fullpath:string, message:string}}|
|
|
583
|
+
* {exportName:string|undefined, details:ReturnType<typeof parsedFileForDOC["getDescription"]>, error:undefined}>}
|
|
584
|
+
*/
|
|
561
585
|
parsed: async () => {
|
|
562
586
|
if (this_.#parsed === undefined) {
|
|
563
587
|
this_.#parsed = await this_.#parse();
|
|
@@ -566,24 +590,13 @@ export class parsedFile {
|
|
|
566
590
|
},
|
|
567
591
|
};
|
|
568
592
|
});
|
|
593
|
+
|
|
569
594
|
/**
|
|
570
595
|
* @returns {ReturnType<typeof TryAsync<any>>}
|
|
571
596
|
*/
|
|
572
597
|
importAsModuleJS = async () => {
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
return await import(`file://${realTimePath}`);
|
|
576
|
-
});
|
|
577
|
-
if (error === undefined) {
|
|
578
|
-
return [importedModule, undefined];
|
|
579
|
-
}
|
|
580
|
-
[importedModule, error] = await TryAsync(async () => {
|
|
581
|
-
return await import(realTimePath);
|
|
598
|
+
return await TryAsync(async () => {
|
|
599
|
+
return await SafeImport(this.path.full);
|
|
582
600
|
});
|
|
583
|
-
if (error === undefined) {
|
|
584
|
-
return [importedModule, undefined];
|
|
585
|
-
}
|
|
586
|
-
Console.error({ error, timeStamp: Date.now() });
|
|
587
|
-
return [undefined, error];
|
|
588
601
|
};
|
|
589
602
|
}
|