wsemi 1.9.13 → 1.9.15
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 +1 -1
- package/dist/wsemi.umd.js +7 -7
- package/dist/wsemi.umd.js.map +1 -1
- package/docs/-_class.mjs.html +1 -1
- package/docs/-_const.mjs.html +1 -1
- package/docs/-_detector.mjs.html +1 -1
- package/docs/-_optNum.mjs.html +1 -1
- package/docs/ab2blob.mjs.html +1 -1
- package/docs/ab2u8arr.mjs.html +1 -1
- package/docs/addExcelWorksheetFromData.mjs.html +1 -1
- package/docs/addMonth.mjs.html +1 -1
- package/docs/aes2str.mjs.html +1 -1
- package/docs/alive.mjs.html +106 -5
- package/docs/arr2dt.mjs.html +1 -1
- package/docs/arrAccum.mjs.html +1 -1
- package/docs/arrAdd.mjs.html +1 -1
- package/docs/arrAt.mjs.html +1 -1
- package/docs/arrDiff.mjs.html +1 -1
- package/docs/arrFilterByKeywords.mjs.html +1 -1
- package/docs/arrFilterByNum.mjs.html +1 -1
- package/docs/arrFilterByPnum.mjs.html +1 -1
- package/docs/arrFilterByPnumAndToLog.mjs.html +1 -1
- package/docs/arrFind.mjs.html +1 -1
- package/docs/arrGroupByMaxmin.mjs.html +1 -1
- package/docs/arrHas.mjs.html +1 -1
- package/docs/arrInsert.mjs.html +1 -1
- package/docs/arrLookupByMaxmin.mjs.html +1 -1
- package/docs/arrMax.mjs.html +1 -1
- package/docs/arrMin.mjs.html +1 -1
- package/docs/arrMulti.mjs.html +1 -1
- package/docs/arrNorm.mjs.html +1 -1
- package/docs/arrProduct.mjs.html +1 -1
- package/docs/arrPull.mjs.html +1 -1
- package/docs/arrPullAt.mjs.html +1 -1
- package/docs/arrReduce.mjs.html +1 -1
- package/docs/arrReverse.mjs.html +1 -1
- package/docs/arrSep.mjs.html +1 -1
- package/docs/arrSort.mjs.html +1 -1
- package/docs/asind.mjs.html +1 -1
- package/docs/atan2d.mjs.html +1 -1
- package/docs/atand.mjs.html +1 -1
- package/docs/attstr.mjs.html +1 -1
- package/docs/b642obj.mjs.html +1 -1
- package/docs/b642str.mjs.html +1 -1
- package/docs/b642u16arr.mjs.html +1 -1
- package/docs/b642u8arr.mjs.html +1 -1
- package/docs/binstr.mjs.html +1 -1
- package/docs/blob2ab.mjs.html +1 -1
- package/docs/blob2b64.mjs.html +1 -1
- package/docs/blob2str.mjs.html +1 -1
- package/docs/blob2u8arr.mjs.html +1 -1
- package/docs/blobs2b64s.mjs.html +1 -1
- package/docs/blobs2u8arrs.mjs.html +1 -1
- package/docs/bodyLog.mjs.html +1 -1
- package/docs/browserView.mjs.html +1 -1
- package/docs/browserViewFromBlob.mjs.html +1 -1
- package/docs/browserViewFromText.mjs.html +1 -1
- package/docs/browserViewFromU8arr.mjs.html +1 -1
- package/docs/bs2u8arr.mjs.html +1 -1
- package/docs/bufRead.mjs.html +1 -1
- package/docs/bufReadDbl.mjs.html +1 -1
- package/docs/bufWrite.mjs.html +1 -1
- package/docs/bufWriteDbl.mjs.html +1 -1
- package/docs/cache.mjs.html +3 -3
- package/docs/cacheBd.mjs.html +1 -1
- package/docs/cacheSt.mjs.html +2 -2
- package/docs/cbol.mjs.html +1 -1
- package/docs/cdbl.mjs.html +1 -1
- package/docs/ceil.mjs.html +1 -1
- package/docs/cfilesize.mjs.html +1 -1
- package/docs/cfinancial.mjs.html +1 -1
- package/docs/cint.mjs.html +1 -1
- package/docs/clearXSS.mjs.html +1 -1
- package/docs/clearXSSDyn.mjs.html +1 -1
- package/docs/color.mjs.html +1 -1
- package/docs/composeToTree.mjs.html +1 -1
- package/docs/convertToTree.mjs.html +1 -1
- package/docs/copyStrToClipboard.mjs.html +1 -1
- package/docs/cosd.mjs.html +1 -1
- package/docs/cotd.mjs.html +1 -1
- package/docs/createExcelWorkbook.mjs.html +1 -1
- package/docs/cscd.mjs.html +1 -1
- package/docs/cstr.mjs.html +1 -1
- package/docs/day2cht.mjs.html +1 -1
- package/docs/debounce.mjs.html +1 -1
- package/docs/delay.mjs.html +1 -1
- package/docs/detectXSS.mjs.html +1 -1
- package/docs/detectXSSDyn.mjs.html +1 -1
- package/docs/dig.mjs.html +1 -1
- package/docs/digExp.mjs.html +1 -1
- package/docs/domAlert.mjs.html +1 -1
- package/docs/domAppend.mjs.html +1 -1
- package/docs/domCancelEvent.mjs.html +1 -1
- package/docs/domCompareText.mjs.html +1 -1
- package/docs/domConvertToPic.mjs.html +1 -1
- package/docs/domConvertToPicDyn.mjs.html +1 -1
- package/docs/domDetect.mjs.html +1 -1
- package/docs/domDrag.mjs.html +1 -1
- package/docs/domDragBarAndScroll.mjs.html +1 -1
- package/docs/domDragPointer.mjs.html +1 -1
- package/docs/domDragPreview.mjs.html +1 -1
- package/docs/domDropFiles.mjs.html +1 -1
- package/docs/domElementsFromPoint.mjs.html +1 -1
- package/docs/domFadeIn.mjs.html +1 -1
- package/docs/domFadeOut.mjs.html +1 -1
- package/docs/domFind.mjs.html +1 -1
- package/docs/domFinds.mjs.html +1 -1
- package/docs/domGetAttr.mjs.html +1 -1
- package/docs/domGetBoudRect.mjs.html +1 -1
- package/docs/domGetBoudRectRefSelf.mjs.html +1 -1
- package/docs/domGetFileAccept.mjs.html +1 -1
- package/docs/domGetFiles.mjs.html +1 -1
- package/docs/domGetParents.mjs.html +1 -1
- package/docs/domGetPointFromEvent.mjs.html +1 -1
- package/docs/domGetScrollableParent.mjs.html +1 -1
- package/docs/domGetWindowSize.mjs.html +1 -1
- package/docs/domIsClientXYIn.mjs.html +1 -1
- package/docs/domIsFocused.mjs.html +1 -1
- package/docs/domIsRendered.mjs.html +1 -1
- package/docs/domIsStable.mjs.html +1 -1
- package/docs/domIsVisible.mjs.html +1 -1
- package/docs/domPrepend.mjs.html +1 -1
- package/docs/domRemove.mjs.html +1 -1
- package/docs/domRenderMarkdownMind.mjs.html +1 -1
- package/docs/domRenderMarkdownMindDyn.mjs.html +1 -1
- package/docs/domRipple.mjs.html +1 -1
- package/docs/domScrollIntoView.mjs.html +1 -1
- package/docs/domScrollTo.mjs.html +1 -1
- package/docs/domSetAttr.mjs.html +1 -1
- package/docs/domShowImages.mjs.html +1 -1
- package/docs/domShowImagesDyn.mjs.html +1 -1
- package/docs/domShowInputAndGetFiles.mjs.html +1 -1
- package/docs/domShowInputAndGetFilesU8Arrs.mjs.html +1 -1
- package/docs/domShowInputDatatime.mjs.html +1 -1
- package/docs/domTooltip.mjs.html +1 -1
- package/docs/domTriggerEvent.mjs.html +1 -1
- package/docs/domVirtualCreate.mjs.html +1 -1
- package/docs/domVirtualCreateQueue.mjs.html +1 -1
- package/docs/downloadExcelFileFromData.mjs.html +1 -1
- package/docs/downloadExcelFileFromDataDyn.mjs.html +1 -1
- package/docs/downloadFileFromB64.mjs.html +1 -1
- package/docs/downloadFileFromBlob.mjs.html +1 -1
- package/docs/downloadFileFromText.mjs.html +1 -1
- package/docs/downloadFileFromU8Arr.mjs.html +1 -1
- package/docs/dtmapping.mjs.html +1 -1
- package/docs/dtpick.mjs.html +1 -1
- package/docs/estimateTicks.mjs.html +1 -1
- package/docs/evEmit.mjs.html +2 -2
- package/docs/evEmitDelay.mjs.html +1 -1
- package/docs/evem.mjs.html +1 -1
- package/docs/examples/ex-blob2b64.html +1 -1
- package/docs/examples/ex-clearXSS.html +1 -1
- package/docs/examples/ex-clearXSSDyn.html +1 -1
- package/docs/examples/ex-colorConverter.html +1 -1
- package/docs/examples/ex-detectXSS.html +1 -1
- package/docs/examples/ex-detectXSSDyn.html +1 -1
- package/docs/examples/ex-domCompareText.html +1 -1
- package/docs/examples/ex-domConvertToPic.html +1 -1
- package/docs/examples/ex-domDrag.html +1 -1
- package/docs/examples/ex-domDropFiles.html +1 -1
- package/docs/examples/ex-domIsVisible.html +1 -1
- package/docs/examples/ex-domRenderMarkdownMind.html +1 -1
- package/docs/examples/ex-domRenderMarkdownMindDyn.html +1 -1
- package/docs/examples/ex-domRipple.html +1 -1
- package/docs/examples/ex-domScrollIntoView.html +1 -1
- package/docs/examples/ex-domScrollTo.html +1 -1
- package/docs/examples/ex-domShowImages.html +1 -1
- package/docs/examples/ex-domShowImagesDyn.html +1 -1
- package/docs/examples/ex-domShowInputAndGetFiles.html +1 -1
- package/docs/examples/ex-domTooltip.html +1 -1
- package/docs/examples/ex-getFileHash.html +1 -1
- package/docs/examples/ex-getUserAgent.html +1 -1
- package/docs/examples/ex-getUserAgentDyn.html +1 -1
- package/docs/examples/ex-html2str.html +1 -1
- package/docs/examples/ex-obj2u8arr-u8arr2obj.html +1 -1
- package/docs/examples/ex-openLink.html +1 -1
- package/docs/examples/ex-str2aes-aes2str.html +1 -1
- package/docs/examples/ex-str2b64-b642str.html +1 -1
- package/docs/examples/ex-strFindFuzz.html +1 -1
- package/docs/examples/ex-timeTZ2expire-timeTZ2past.html +1 -1
- package/docs/examples/ex-xlsx.html +1 -1
- package/docs/execCli.mjs.html +67 -33
- package/docs/execCliCore.mjs.html +4 -1
- package/docs/execCliJsonRpc.mjs.html +3 -3
- package/docs/execCliSession.mjs.html +24 -12
- package/docs/execJsCode.mjs.html +1 -1
- package/docs/execProcess.mjs.html +58 -35
- package/docs/execProcessKillPid.mjs.html +5 -3
- package/docs/filepathToTree.mjs.html +1 -1
- package/docs/files2data.mjs.html +1 -1
- package/docs/flattenToConn.mjs.html +1 -1
- package/docs/flattenTree.mjs.html +1 -1
- package/docs/floor.mjs.html +1 -1
- package/docs/fsBuildReadStreamText.mjs.html +1 -1
- package/docs/fsBuildWriteStreamText.mjs.html +1 -1
- package/docs/fsCleanFolder.mjs.html +1 -1
- package/docs/fsCleanFolderCore.mjs.html +1 -1
- package/docs/fsCopyFile.mjs.html +1 -1
- package/docs/fsCopyFileCore.mjs.html +1 -1
- package/docs/fsCopyFolder.mjs.html +1 -1
- package/docs/fsCopyFolderCore.mjs.html +1 -1
- package/docs/fsCreateFile.mjs.html +1 -1
- package/docs/fsCreateFileCore.mjs.html +1 -1
- package/docs/fsCreateFolder.mjs.html +1 -1
- package/docs/fsCreateFolderCore.mjs.html +1 -1
- package/docs/fsDeleteFile.mjs.html +1 -1
- package/docs/fsDeleteFileCore.mjs.html +1 -1
- package/docs/fsDeleteFileSafe.mjs.html +1 -1
- package/docs/fsDeleteFileSafeCore.mjs.html +1 -1
- package/docs/fsDeleteFolder.mjs.html +1 -1
- package/docs/fsDeleteFolderCore.mjs.html +1 -1
- package/docs/fsDeleteFolderSafe.mjs.html +1 -1
- package/docs/fsDeleteFolderSafeCore.mjs.html +1 -1
- package/docs/fsDownloadFile.mjs.html +1 -1
- package/docs/fsDownloadFileCore.mjs.html +1 -1
- package/docs/fsEvem.mjs.html +1 -1
- package/docs/fsExists.mjs.html +1 -1
- package/docs/fsExistsCore.mjs.html +1 -1
- package/docs/fsGetFileBasicHash.mjs.html +1 -1
- package/docs/fsGetFileBasicHashCore.mjs.html +1 -1
- package/docs/fsGetFileHash.mjs.html +1 -1
- package/docs/fsGetFileHashCore.mjs.html +1 -1
- package/docs/fsGetFileXxHash.mjs.html +1 -1
- package/docs/fsGetFileXxHashCore.mjs.html +1 -1
- package/docs/fsGetFilesInFolder.mjs.html +1 -1
- package/docs/fsGetFilesInFolderCore.mjs.html +1 -1
- package/docs/fsGetFilesWithHashInFolder.mjs.html +1 -1
- package/docs/fsGetFilesWithHashInFolderCore.mjs.html +1 -1
- package/docs/fsGetFolderBasicHash.mjs.html +1 -1
- package/docs/fsGetFolderBasicHashCore.mjs.html +1 -1
- package/docs/fsGetFoldersInFolder.mjs.html +1 -1
- package/docs/fsGetFoldersInFolderCore.mjs.html +1 -1
- package/docs/fsIsFile.mjs.html +1 -1
- package/docs/fsIsFileCore.mjs.html +1 -1
- package/docs/fsIsFolder.mjs.html +1 -1
- package/docs/fsIsFolderCore.mjs.html +1 -1
- package/docs/fsMergeFiles.mjs.html +1 -1
- package/docs/fsMergeFilesCore.mjs.html +1 -1
- package/docs/fsReadJson.mjs.html +1 -1
- package/docs/fsReadText.mjs.html +1 -1
- package/docs/fsReadTextCore.mjs.html +1 -1
- package/docs/fsRenameFile.mjs.html +1 -1
- package/docs/fsRenameFileCore.mjs.html +1 -1
- package/docs/fsRenameFolder.mjs.html +1 -1
- package/docs/fsRenameFolderCore.mjs.html +1 -1
- package/docs/fsSrlog.mjs.html +1 -1
- package/docs/fsSyncFolder.mjs.html +1 -1
- package/docs/fsSyncFolderCore.mjs.html +1 -1
- package/docs/fsTask.mjs.html +1 -1
- package/docs/fsTaskCp.mjs.html +1 -1
- package/docs/fsTreeFolder.mjs.html +1 -1
- package/docs/fsTreeFolderCore.mjs.html +1 -1
- package/docs/fsTreeFolderWithHash.mjs.html +1 -1
- package/docs/fsTreeFolderWithHashCore.mjs.html +1 -1
- package/docs/fsWatchFile.mjs.html +1 -1
- package/docs/fsWatchFolder.mjs.html +1 -1
- package/docs/fsWriteJson.mjs.html +1 -1
- package/docs/fsWriteText.mjs.html +1 -1
- package/docs/fsWriteTextCore.mjs.html +1 -1
- package/docs/genGradientColor.mjs.html +1 -1
- package/docs/genID.mjs.html +1 -1
- package/docs/genIDSeq.mjs.html +1 -1
- package/docs/genPm.mjs.html +1 -1
- package/docs/getBufferSize.mjs.html +1 -1
- package/docs/getClearPathName.mjs.html +1 -1
- package/docs/getCsvStrFromData.mjs.html +1 -1
- package/docs/getDataFromExcelFileU8Arr.mjs.html +1 -1
- package/docs/getDataFromExcelFileU8ArrDyn.mjs.html +1 -1
- package/docs/getEnv.mjs.html +1 -1
- package/docs/getErrorMessage.mjs.html +1 -1
- package/docs/getExcelU8ArrFromData.mjs.html +1 -1
- package/docs/getExcelU8ArrFromWorkbook.mjs.html +1 -1
- package/docs/getExcelWorkbookFromData.mjs.html +1 -1
- package/docs/getExcelWorkbookFromWorksheet.mjs.html +1 -1
- package/docs/getExcelWorksheetFromData.mjs.html +1 -1
- package/docs/getFileAccept.mjs.html +1 -1
- package/docs/getFileBasicHash.mjs.html +1 -1
- package/docs/getFileHash.mjs.html +1 -1
- package/docs/getFileName.mjs.html +1 -1
- package/docs/getFileNameExt.mjs.html +1 -1
- package/docs/getFileTrueName.mjs.html +1 -1
- package/docs/getFileType.mjs.html +1 -1
- package/docs/getFileXxHash.mjs.html +1 -1
- package/docs/getGlobal.mjs.html +1 -1
- package/docs/getObjSize.mjs.html +1 -1
- package/docs/getPathParent.mjs.html +1 -1
- package/docs/getTimeBetween.mjs.html +1 -1
- package/docs/getTimeFromUnit.mjs.html +1 -1
- package/docs/getTimeHp.mjs.html +1 -1
- package/docs/getTimeObject.mjs.html +1 -1
- package/docs/getTimeRange.mjs.html +1 -1
- package/docs/getUserAgent.mjs.html +1 -1
- package/docs/getUserAgentDyn.mjs.html +1 -1
- package/docs/getltdtkeys.mjs.html +1 -1
- package/docs/global.html +7 -7
- package/docs/haskey.mjs.html +1 -1
- package/docs/html2str.mjs.html +1 -1
- package/docs/htmlDecode.mjs.html +1 -1
- package/docs/htmlEncode.mjs.html +1 -1
- package/docs/importResources.mjs.html +1 -1
- package/docs/index.html +1 -1
- package/docs/interp1.mjs.html +1 -1
- package/docs/isDate.mjs.html +1 -1
- package/docs/isDev.mjs.html +1 -1
- package/docs/isEle.mjs.html +1 -1
- package/docs/isEleExistByID.mjs.html +1 -1
- package/docs/isEmail.mjs.html +1 -1
- package/docs/isErr.mjs.html +1 -1
- package/docs/isIE.mjs.html +1 -1
- package/docs/isNarrow.mjs.html +1 -1
- package/docs/isStrHasCapital.mjs.html +1 -1
- package/docs/isStrHasLetter.mjs.html +1 -1
- package/docs/isStrHasLowerCase.mjs.html +1 -1
- package/docs/isStrHasNumber.mjs.html +1 -1
- package/docs/isStrHasSpace.mjs.html +1 -1
- package/docs/isStrHasSymbol.mjs.html +1 -1
- package/docs/isUserIdentify.mjs.html +1 -1
- package/docs/isUserName.mjs.html +1 -1
- package/docs/isUserPw.mjs.html +1 -1
- package/docs/isWindow.mjs.html +1 -1
- package/docs/isab.mjs.html +1 -1
- package/docs/isarr.mjs.html +1 -1
- package/docs/isarr0.mjs.html +1 -1
- package/docs/isarr1.mjs.html +1 -1
- package/docs/isbigint.mjs.html +1 -1
- package/docs/isblob.mjs.html +1 -1
- package/docs/isbol.mjs.html +1 -1
- package/docs/isday.mjs.html +1 -1
- package/docs/isearr.mjs.html +1 -1
- package/docs/iseobj.mjs.html +1 -1
- package/docs/iser.mjs.html +1 -1
- package/docs/isernot.mjs.html +1 -1
- package/docs/isestr.mjs.html +1 -1
- package/docs/isfile.mjs.html +1 -1
- package/docs/isfun.mjs.html +1 -1
- package/docs/isint.mjs.html +1 -1
- package/docs/ismonth.mjs.html +1 -1
- package/docs/isn0int.mjs.html +1 -1
- package/docs/isn0num.mjs.html +1 -1
- package/docs/isnan.mjs.html +1 -1
- package/docs/isnbr.mjs.html +1 -1
- package/docs/isnint.mjs.html +1 -1
- package/docs/isnnum.mjs.html +1 -1
- package/docs/isnull.mjs.html +1 -1
- package/docs/isnum.mjs.html +1 -1
- package/docs/isobj.mjs.html +1 -1
- package/docs/isobj0.mjs.html +1 -1
- package/docs/isp0int.mjs.html +1 -1
- package/docs/isp0num.mjs.html +1 -1
- package/docs/ispint.mjs.html +1 -1
- package/docs/ispm.mjs.html +1 -1
- package/docs/ispnum.mjs.html +1 -1
- package/docs/isstr.mjs.html +1 -1
- package/docs/isstr0.mjs.html +1 -1
- package/docs/istime.mjs.html +1 -1
- package/docs/istimeTZ.mjs.html +1 -1
- package/docs/istimems.mjs.html +1 -1
- package/docs/istimemsTZ.mjs.html +1 -1
- package/docs/isu16arr.mjs.html +1 -1
- package/docs/isu8arr.mjs.html +1 -1
- package/docs/isundefined.mjs.html +1 -1
- package/docs/j2o.mjs.html +1 -1
- package/docs/judge.mjs.html +1 -1
- package/docs/keysmat2ltdt.mjs.html +1 -1
- package/docs/ltdt2vrtsable.mjs.html +1 -1
- package/docs/ltdtDiff.mjs.html +1 -1
- package/docs/ltdtDiffByKey.mjs.html +1 -1
- package/docs/ltdtkeys2mat.mjs.html +1 -1
- package/docs/ltdtkeysheads2mat.mjs.html +1 -1
- package/docs/ltdtmapping.mjs.html +1 -1
- package/docs/ltdtmerge.mjs.html +1 -1
- package/docs/ltdtpick.mjs.html +1 -1
- package/docs/ltdtpull.mjs.html +1 -1
- package/docs/mat2ltdt.mjs.html +1 -1
- package/docs/matConcat.mjs.html +1 -1
- package/docs/matDiff.mjs.html +1 -1
- package/docs/matat.mjs.html +1 -1
- package/docs/now2str.mjs.html +1 -1
- package/docs/now2strp.mjs.html +1 -1
- package/docs/nowDay2str.mjs.html +1 -1
- package/docs/nowms2str.mjs.html +1 -1
- package/docs/nowms2strp.mjs.html +1 -1
- package/docs/o2j.mjs.html +1 -1
- package/docs/obj2b64.mjs.html +1 -1
- package/docs/obj2pb64.mjs.html +1 -1
- package/docs/obj2str.mjs.html +1 -1
- package/docs/obj2stru8arr.mjs.html +1 -1
- package/docs/obj2u8arr.mjs.html +1 -1
- package/docs/objSortBy.mjs.html +1 -1
- package/docs/objSortByKeys.mjs.html +1 -1
- package/docs/oo.mjs.html +1 -1
- package/docs/openLink.mjs.html +1 -1
- package/docs/pb642obj.mjs.html +1 -1
- package/docs/pmChain.mjs.html +1 -1
- package/docs/pmConvertResolve.mjs.html +1 -1
- package/docs/pmDebounce.mjs.html +1 -1
- package/docs/pmHook.mjs.html +1 -1
- package/docs/pmHookReject.mjs.html +1 -1
- package/docs/pmIni.mjs.html +1 -1
- package/docs/pmInvResolve.mjs.html +1 -1
- package/docs/pmKeyMutex.mjs.html +1 -1
- package/docs/pmMap.mjs.html +1 -1
- package/docs/pmQueue.mjs.html +1 -1
- package/docs/pmSeries.mjs.html +1 -1
- package/docs/pmThrottle.mjs.html +1 -1
- package/docs/pmTimeout.mjs.html +1 -1
- package/docs/preciseNum.mjs.html +1 -1
- package/docs/pseudoRandom.mjs.html +1 -1
- package/docs/pseudoRandomIntRange.mjs.html +1 -1
- package/docs/pseudoRandomIntsNdpRange.mjs.html +1 -1
- package/docs/pseudoRandomIntsRange.mjs.html +1 -1
- package/docs/pseudoRandomRange.mjs.html +1 -1
- package/docs/pseudoRandomsRange.mjs.html +1 -1
- package/docs/queue.mjs.html +1 -1
- package/docs/random.mjs.html +1 -1
- package/docs/randomIntRange.mjs.html +1 -1
- package/docs/randomIntsNdpRange.mjs.html +1 -1
- package/docs/randomIntsRange.mjs.html +1 -1
- package/docs/randomRange.mjs.html +1 -1
- package/docs/randomsRange.mjs.html +1 -1
- package/docs/rang.mjs.html +1 -1
- package/docs/rep.mjs.html +1 -1
- package/docs/repObj.mjs.html +1 -1
- package/docs/replace.mjs.html +1 -1
- package/docs/replaceObj.mjs.html +1 -1
- package/docs/replacePlus.mjs.html +1 -1
- package/docs/round.mjs.html +1 -1
- package/docs/secd.mjs.html +1 -1
- package/docs/sep.mjs.html +1 -1
- package/docs/sepInt.mjs.html +1 -1
- package/docs/setIntervalHp.mjs.html +1 -1
- package/docs/setTimeoutHp.mjs.html +1 -1
- package/docs/sind.mjs.html +1 -1
- package/docs/split.mjs.html +1 -1
- package/docs/str2aes.mjs.html +1 -1
- package/docs/str2b64.mjs.html +1 -1
- package/docs/str2hint.mjs.html +1 -1
- package/docs/str2md5.mjs.html +1 -1
- package/docs/str2obj.mjs.html +1 -1
- package/docs/str2sha.mjs.html +1 -1
- package/docs/str2sha512.mjs.html +1 -1
- package/docs/str2u8arr.mjs.html +1 -1
- package/docs/strCompare.mjs.html +1 -1
- package/docs/strCompareForVersion.mjs.html +1 -1
- package/docs/strDiff.mjs.html +1 -1
- package/docs/strDiffToHtml.mjs.html +1 -1
- package/docs/strFindFuzz.mjs.html +1 -1
- package/docs/strFindSimilar.mjs.html +1 -1
- package/docs/strTruncate.mjs.html +1 -1
- package/docs/strdelleft.mjs.html +1 -1
- package/docs/strdelright.mjs.html +1 -1
- package/docs/strleft.mjs.html +1 -1
- package/docs/strmid.mjs.html +1 -1
- package/docs/strright.mjs.html +1 -1
- package/docs/stru8arr2obj.mjs.html +1 -1
- package/docs/tand.mjs.html +1 -1
- package/docs/time2day.mjs.html +1 -1
- package/docs/time2hour.mjs.html +1 -1
- package/docs/time2min.mjs.html +1 -1
- package/docs/timeTZ2day.mjs.html +1 -1
- package/docs/timeTZ2expire.mjs.html +1 -1
- package/docs/timeTZ2hour.mjs.html +1 -1
- package/docs/timeTZ2min.mjs.html +1 -1
- package/docs/timeTZ2past.mjs.html +1 -1
- package/docs/timems2day.mjs.html +1 -1
- package/docs/timems2hour.mjs.html +1 -1
- package/docs/timems2min.mjs.html +1 -1
- package/docs/timems2time.mjs.html +1 -1
- package/docs/timemsTZ2day.mjs.html +1 -1
- package/docs/timemsTZ2expire.mjs.html +1 -1
- package/docs/timemsTZ2hour.mjs.html +1 -1
- package/docs/timemsTZ2min.mjs.html +1 -1
- package/docs/timemsTZ2past.mjs.html +1 -1
- package/docs/timemsTZ2time.mjs.html +1 -1
- package/docs/treeObj.mjs.html +1 -1
- package/docs/treeToFilepath.mjs.html +1 -1
- package/docs/trim.mjs.html +1 -1
- package/docs/u16arr2b64.mjs.html +1 -1
- package/docs/u16arr2u8arr.mjs.html +1 -1
- package/docs/u8arr2ab.mjs.html +1 -1
- package/docs/u8arr2b64.mjs.html +1 -1
- package/docs/u8arr2blob.mjs.html +1 -1
- package/docs/u8arr2bs.mjs.html +1 -1
- package/docs/u8arr2obj.mjs.html +1 -1
- package/docs/u8arr2str.mjs.html +1 -1
- package/docs/u8arr2u16arr.mjs.html +1 -1
- package/docs/urlParse.mjs.html +1 -1
- package/docs/verifyValue.mjs.html +1 -1
- package/docs/waitFun.mjs.html +1 -1
- package/docs/wsemi.html +24 -23
- package/package.json +2 -2
- package/script.txt +1 -1
- package/src/_execSpawnError.mjs +41 -0
- package/src/alive.mjs +105 -4
- package/src/cache.mjs +2 -2
- package/src/cacheSt.mjs +1 -1
- package/src/evEmit.mjs +1 -1
- package/src/execCli.mjs +66 -32
- package/src/execCliCore.mjs +3 -0
- package/src/execCliJsonRpc.mjs +2 -2
- package/src/execCliSession.mjs +23 -11
- package/src/execProcess.mjs +57 -34
- package/src/execProcessKillPid.mjs +4 -2
- package/test/_execSpawnError.test.mjs +81 -0
- package/test/alive.test.mjs +201 -0
- package/test/cache.test.mjs +26 -0
- package/test/cacheSt.test.mjs +40 -0
- package/test/execCli.test.mjs +95 -0
- package/test/execCliJsonRpc.test.mjs +27 -0
- package/test/execCliSession.test.mjs +82 -0
- package/test/execProcess.test.mjs +135 -3
- package/test/execProcessKillPid.test.mjs +34 -0
- package/test/tools/spawnEmfileRunner.mjs +55 -0
- package/toolfp/dist/wsemip.umd.js +1 -1
- package/toolparfor/dist/wpf.umd.js +1 -1
- package/toolparfor/dist/wpf_pmSeries.umd.js +1 -1
|
@@ -57,6 +57,7 @@ import ispint from './ispint.mjs'
|
|
|
57
57
|
import isp0int from './isp0int.mjs'
|
|
58
58
|
import execProcessKillPid from './execProcessKillPid.mjs'
|
|
59
59
|
import execCliCore from './execCliCore.mjs'
|
|
60
|
+
import execSpawnError from './_execSpawnError.mjs'
|
|
60
61
|
|
|
61
62
|
|
|
62
63
|
//buildSpawnArgs, buildSpawnEnv, 共用核心
|
|
@@ -66,7 +67,7 @@ let { buildSpawnArgs, buildSpawnEnv } = execCliCore
|
|
|
66
67
|
/**
|
|
67
68
|
* 建立互動式stdio工作階段(session),用於stdio協定型之長駐CLI(如MCP之stdio伺服器、codex app-server等一行一則JSON之程式),與execCli「寫完input即關閉stdin並等待結束」之一次性契約不同,本函數維持stdin開啟,由呼叫端逐次write,直到呼叫stop()才關閉stdin並等待子進程自行退出,逾寬限期則以execProcessKillPid樹殺
|
|
68
69
|
* Windows下npm全域安裝之命令為.cmd批次檔,內部經execCliCore.buildSpawnArgs解析為以node執行其JS入口,不使用shell:true,故樹殺可確實涵蓋子孫程序
|
|
69
|
-
* 本函數不throw亦不reject,spawn失敗(如ENOENT)以onExit與stop()
|
|
70
|
+
* 本函數不throw亦不reject,spawn失敗(如ENOENT)以onExit與stop()之結果物件回報,其error不含args與env之值
|
|
70
71
|
*
|
|
71
72
|
* Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/execCliSession.test.mjs Github}
|
|
72
73
|
* @memberOf wsemi
|
|
@@ -82,7 +83,7 @@ let { buildSpawnArgs, buildSpawnEnv } = execCliCore
|
|
|
82
83
|
* @param {Function} [opt.onLine=undefined] 輸入stdout逐行回調函數,格式為(line)=>{},line不含換行(\\r\\n與\\n皆視為換行),子進程結束時殘餘之不完整行亦會發出,預設undefined
|
|
83
84
|
* @param {Function} [opt.onStdout=undefined] 輸入stdout原始片段回調函數,格式為(chunk)=>{},已經UTF-8跨chunk解碼,供非行式協定(如LSP之Content-Length分幀)自行分幀,預設undefined
|
|
84
85
|
* @param {Function} [opt.onStderr=undefined] 輸入stderr片段回調函數,格式為(chunk)=>{},預設undefined
|
|
85
|
-
* @param {Function} [opt.onExit=undefined] 輸入子進程結束回調函數,格式為(result)=>{},result同stop()之回傳,預設undefined
|
|
86
|
+
* @param {Function} [opt.onExit=undefined] 輸入子進程結束回調函數,格式為(result)=>{},result同stop()之回傳,預設undefined。onLine、onStdout、onStderr、onExit內拋出之錯誤不會被攔截,將成為未捕捉例外,請於回調內自行處理
|
|
86
87
|
* @returns {Object} 回傳工作階段物件s,內含pid(子進程pid,spawn失敗為null)、exited(是否已結束布林值)、write(str)(寫入stdin,回傳Promise,resolve為是否寫入成功布林值,子進程已結束時靜默resolve(false))、writeLine(str)(補換行後寫入)、stop()(關閉stdin並等待結束,回傳Promise,resolve回傳結果物件,內含code、signal、exited、timeout、killed、error、stderr、durationMs、pid;多次呼叫回傳同一Promise)
|
|
87
88
|
* @example
|
|
88
89
|
* //need test in nodejs
|
|
@@ -259,10 +260,10 @@ function execCliSession(command, args = [], opt = {}) {
|
|
|
259
260
|
return s
|
|
260
261
|
}
|
|
261
262
|
|
|
262
|
-
//spawn
|
|
263
|
-
let sp = buildSpawnArgs(command, args)
|
|
263
|
+
//spawn, buildSpawnArgs之拋錯亦於此回報
|
|
264
264
|
let proc
|
|
265
265
|
try {
|
|
266
|
+
let sp = buildSpawnArgs(command, args)
|
|
266
267
|
proc = spawn(sp.file, sp.args, {
|
|
267
268
|
cwd,
|
|
268
269
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
@@ -272,17 +273,33 @@ function execCliSession(command, args = [], opt = {}) {
|
|
|
272
273
|
})
|
|
273
274
|
}
|
|
274
275
|
catch (err) {
|
|
275
|
-
//spawn同步拋錯(
|
|
276
|
+
//spawn同步拋錯(如EPERM、ENAMETOOLONG、參數檢查錯誤), 訊息經execSpawnError去除參數值
|
|
277
|
+
let e = execSpawnError(err)
|
|
276
278
|
s.write = async () => false
|
|
277
279
|
s.writeLine = async () => false
|
|
278
280
|
s.stop = stopNoProc
|
|
279
281
|
setTimeout(() => {
|
|
280
|
-
settle({ error: `${
|
|
282
|
+
settle({ error: `${e.code}: ${e.message}` })
|
|
281
283
|
}, 1)
|
|
282
284
|
return s
|
|
283
285
|
}
|
|
284
286
|
s.pid = proc.pid || null
|
|
285
287
|
|
|
288
|
+
//error, 須於存取stdio前監聽: node對EMFILE、ENFILE不建立stdio即於nextTick發出'error', 先存取會拋TypeError且'error'無人監聽而拉倒程序
|
|
289
|
+
// 可能為'找不到可執行檔'(ENOENT), '權限不足', '系統資源用盡'等, 訊息經execSpawnError去除參數值
|
|
290
|
+
proc.on('error', (err) => {
|
|
291
|
+
let e = execSpawnError(err)
|
|
292
|
+
settle({ error: `${e.code}: ${e.message}` })
|
|
293
|
+
})
|
|
294
|
+
|
|
295
|
+
//stdio, EMFILE、ENFILE時node未建立(undefined), 由上方error回報
|
|
296
|
+
if (!proc.stdout || !proc.stderr || !proc.stdin) {
|
|
297
|
+
s.write = async () => false
|
|
298
|
+
s.writeLine = async () => false
|
|
299
|
+
s.stop = stopNoProc
|
|
300
|
+
return s
|
|
301
|
+
}
|
|
302
|
+
|
|
286
303
|
//TextDecoder, 跨chunk邊界正確解碼UTF-8, 避免多位元組中文字元被切成亂碼(U+FFFD)
|
|
287
304
|
let stdoutDecoder = new TextDecoder('utf-8')
|
|
288
305
|
let stderrDecoder = new TextDecoder('utf-8')
|
|
@@ -374,11 +391,6 @@ function execCliSession(command, args = [], opt = {}) {
|
|
|
374
391
|
}, timeoutMs)
|
|
375
392
|
}
|
|
376
393
|
|
|
377
|
-
//error, 監聽(例如執行spawn本身)錯誤訊息, 可能為'找不到可執行檔'(ENOENT), '權限不足', '系統資源用盡'等
|
|
378
|
-
proc.on('error', (err) => {
|
|
379
|
-
settle({ error: `${err.code || 'UNKNOWN'}: ${err.message}` }) //待確認用err.toString()還是err.message更佳 bbb
|
|
380
|
-
})
|
|
381
|
-
|
|
382
394
|
//close
|
|
383
395
|
proc.on('close', (code, signal) => {
|
|
384
396
|
if (settled) {
|
|
@@ -488,7 +500,7 @@ export default execCliSession
|
|
|
488
500
|
<br class="clear">
|
|
489
501
|
|
|
490
502
|
<footer>
|
|
491
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
503
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
492
504
|
</footer>
|
|
493
505
|
|
|
494
506
|
<script>prettyPrint();</script>
|
package/docs/execJsCode.mjs.html
CHANGED
|
@@ -125,7 +125,7 @@ export default execJsCode
|
|
|
125
125
|
<br class="clear">
|
|
126
126
|
|
|
127
127
|
<footer>
|
|
128
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
128
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
129
129
|
</footer>
|
|
130
130
|
|
|
131
131
|
<script>prettyPrint();</script>
|
|
@@ -50,15 +50,17 @@ import codec from './_execProcessCodec.mjs'
|
|
|
50
50
|
import cp from 'child_process'
|
|
51
51
|
import get from 'lodash-es/get.js'
|
|
52
52
|
import genPm from './genPm.mjs'
|
|
53
|
-
import
|
|
53
|
+
import isarr from './isarr.mjs'
|
|
54
54
|
import isbol from './isbol.mjs'
|
|
55
55
|
import isfun from './isfun.mjs'
|
|
56
|
+
import isstr from './isstr.mjs'
|
|
56
57
|
import isestr from './isestr.mjs'
|
|
57
58
|
import isnum from './isnum.mjs'
|
|
58
59
|
import strleft from './strleft.mjs'
|
|
59
60
|
import strright from './strright.mjs'
|
|
60
61
|
import arrHas from './arrHas.mjs'
|
|
61
62
|
import execProcessKillPid from './execProcessKillPid.mjs'
|
|
63
|
+
import execSpawnError from './_execSpawnError.mjs'
|
|
62
64
|
|
|
63
65
|
|
|
64
66
|
/**
|
|
@@ -67,15 +69,15 @@ import execProcessKillPid from './execProcessKillPid.mjs'
|
|
|
67
69
|
* Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/execProcess.test.mjs Github}
|
|
68
70
|
* @memberOf wsemi
|
|
69
71
|
* @param {String} prog 輸入執行檔或程式語言位置字串,若為註冊系統的全域指令,例如可直接給'Python',腳本需自行接收呼叫引數,並將回傳資料轉json字串後print/log到dos視窗,即可由nodejs接收
|
|
70
|
-
* @param {String|Array} args
|
|
72
|
+
* @param {String|Array} args 輸入參數陣列或字串,例如腳本檔案位置字串,空陣列或空字串代表無參數;非陣列亦非字串時reject錯誤訊息(不拋錯)
|
|
71
73
|
* @param {Object} [opt={}] 輸入設定物件
|
|
72
|
-
* @param {String} [opt.mode='spawn'] 輸入執行模式字串,可選'spawn'、'exec'、'execFile',預設'spawn'。'spawn'不經shell直接執行,輸出以串流處理,適合大量輸出或長時間執行,prog與args不需也不可加引號;'exec'經shell執行,prog與args以空白串接成指令字串,適合須用到shell語法之情形,陣列型args之元素含空白且未含雙引號者會自動以雙引號包住,prog含空白亦同,已含雙引號者視為呼叫端自行處理而原樣串接,字串型args視為呼叫端已自組之指令列,原樣串接不加引號;'execFile'不經shell直接執行可執行檔,args須為陣列,給字串會被當成單一參數。三種模式之stdout與stderr皆以Buffer
|
|
73
|
-
* @param {Function} [opt.cbStdout=null] 輸入回調stdout函數,預設null。收到的是經串流解碼之字串,多位元組字元跨chunk時會等到完整才給,故不會收到空字串;codeCmd為'auto'時回調為盡力判定,該串流首次遇到非utf-8位元組後才改用系統字碼頁,之前已回調之字串不追溯,最終結果以resolve或reject
|
|
74
|
+
* @param {String} [opt.mode='spawn'] 輸入執行模式字串,可選'spawn'、'exec'、'execFile',預設'spawn'。'spawn'不經shell直接執行,輸出以串流處理,適合大量輸出或長時間執行,prog與args不需也不可加引號;'exec'經shell執行,prog與args以空白串接成指令字串,適合須用到shell語法之情形,陣列型args之元素含空白且未含雙引號者會自動以雙引號包住,prog含空白亦同,已含雙引號者視為呼叫端自行處理而原樣串接,字串型args視為呼叫端已自組之指令列,原樣串接不加引號;'execFile'不經shell直接執行可執行檔,args須為陣列,給字串會被當成單一參數。三種模式之stdout與stderr皆以Buffer接收後走同一條解碼路徑;惟'exec'與'execFile'之stdout或stderr超過1MB(node之maxBuffer預設值)時子程序會被node終止,reject為`code[null]:\n訊息`,大量輸出請用'spawn'
|
|
75
|
+
* @param {Function} [opt.cbStdout=null] 輸入回調stdout函數,預設null。收到的是經串流解碼之字串,多位元組字元跨chunk時會等到完整才給,故不會收到空字串;codeCmd為'auto'時回調為盡力判定,該串流首次遇到非utf-8位元組後才改用系統字碼頁,之前已回調之字串不追溯,最終結果以resolve或reject之字串為準。回調內拋出之錯誤不會被攔截,將成為未捕捉例外,請於回調內自行處理
|
|
74
76
|
* @param {Function} [opt.cbStderr=null] 輸入回調stderr函數,預設null,行為同cbStdout
|
|
75
77
|
* @param {String} [opt.codeCmd='utf8'] 輸入解碼stdout與stderr之編碼字串,預設'utf8'。可給TextDecoder支援之標籤,例如'utf8'、'big5'、'gbk'、'gb18030'、'shift_jis'、'euc-kr'、'euc-jp'、'latin1'、'utf-16le',亦可給Windows字碼頁編號寫法如'cp950'、'950'、'cp936'、'cp932'、'cp949'、'cp437'、'cp1252';給'system'表示用當前作業系統字碼頁,win32以chcp查詢一次後快取,其他平台為utf-8;給'auto'表示先以utf-8嚴格解碼,遇非utf-8位元組之串流改用系統字碼頁,適合不確定子程序輸出編碼之情形,例如Windows原生指令與以ANSI字碼頁輸出之打包程式。非有效字串視為未設定而用預設值,有效字串但不支援之編碼則於執行前reject並帶該標籤。輸出開頭之utf-8 BOM會被移除
|
|
76
78
|
* @param {Boolean} [opt.useChcp=false] 輸入是否於指令前置chcp 65001,僅'exec'模式生效,預設false。可使主控台工具改以utf-8輸出,副作用是其訊息語言可能變為英文;使用時codeCmd請維持預設'utf8'或給'auto',不要搭配'system'
|
|
77
79
|
* @param {Number} [opt.timeout=null] 輸入逾時毫秒數,預設null表示不限制;逾時觸發時會調用execProcessKillPid強制關閉子進程及其子孫程序,並reject回傳逾時訊息
|
|
78
|
-
* @returns {Promise} 回傳Promise,resolve回傳stdout與stderr依到達順序合併之字串,不另加換行,子程序自己的換行原樣保留;reject
|
|
80
|
+
* @returns {Promise} 回傳Promise,resolve回傳stdout與stderr依到達順序合併之字串,不另加換行,子程序自己的換行原樣保留;reject回傳錯誤訊息字串:離開碼非0時為`code[N]:\n訊息`,訊息為子程序之輸出,子程序因訊號結束時N為null;逾時為`timeout[Nms]:\n訊息`;無法啟動子程序時(找不到執行檔、權限不足、非有效執行檔、參數過長、參數含空字元、系統資源用盡等)為`spawn[錯誤碼]:\n訊息`,訊息為node之錯誤說明(可含執行檔路徑),不含args之內容;args型別不符、codeCmd不支援或spawn模式prog含引號時為說明字串
|
|
79
81
|
* @example
|
|
80
82
|
* //need test in nodejs
|
|
81
83
|
*
|
|
@@ -92,6 +94,7 @@ import execProcessKillPid from './execProcessKillPid.mjs'
|
|
|
92
94
|
*
|
|
93
95
|
* if (true) {
|
|
94
96
|
* //execFile與spawn之args須為陣列, 每個元素為一個參數; 給字串會被當成單一參數而失敗
|
|
97
|
+
* //密碼置於命令列參數時同機其他使用者可由程序列表看到; 失敗訊息不含args, 但子程序自身之輸出可能回顯
|
|
95
98
|
* let prog = `C:\\Program Files\\7-Zip\\7z.exe`
|
|
96
99
|
* let pw = 'AbcD1234'
|
|
97
100
|
* let args = ['a', 'abc.7z', 'abc.txt', `-p${pw}`]
|
|
@@ -107,15 +110,6 @@ import execProcessKillPid from './execProcessKillPid.mjs'
|
|
|
107
110
|
*/
|
|
108
111
|
function execProcess(prog, args, opt = {}) {
|
|
109
112
|
|
|
110
|
-
//check
|
|
111
|
-
if (!isearr(args) && !isestr(args)) {
|
|
112
|
-
throw new Error(`args is not an effective array or string`)
|
|
113
|
-
}
|
|
114
|
-
let bArgsStr = isestr(args) //字串型args於exec模式視為呼叫端已自組之指令列
|
|
115
|
-
if (isestr(args)) {
|
|
116
|
-
args = [args]
|
|
117
|
-
}
|
|
118
|
-
|
|
119
113
|
//mode
|
|
120
114
|
// spawn: 非同步執行命令,適合處理大量資料或長時間執行的程式,輸出以串流方式處理。spawnSync 為 spawn 的同步版本。
|
|
121
115
|
// exec: 在 shell 中非同步執行命令,輸出被緩衝,適合輸出量較小的情況。execSync 為 exec 的同步版本。
|
|
@@ -154,6 +148,19 @@ function execProcess(prog, args, opt = {}) {
|
|
|
154
148
|
//pm
|
|
155
149
|
let pm = genPm()
|
|
156
150
|
|
|
151
|
+
//check args, 須為陣列(可為空陣列)或字串(可為空字串), 空陣列與空字串代表無參數; 其餘型別以reject回報, 不同步拋錯, 訊息不帶args之值
|
|
152
|
+
if (!isarr(args) && !isstr(args)) {
|
|
153
|
+
pm.reject(`args is not an array or string`)
|
|
154
|
+
return pm
|
|
155
|
+
}
|
|
156
|
+
let bArgsStr = isestr(args) //非空字串型args於exec模式視為呼叫端已自組之指令列
|
|
157
|
+
if (isestr(args)) {
|
|
158
|
+
args = [args]
|
|
159
|
+
}
|
|
160
|
+
else if (isstr(args)) {
|
|
161
|
+
args = [] //空字串代表無參數
|
|
162
|
+
}
|
|
163
|
+
|
|
157
164
|
//check
|
|
158
165
|
if (!arrHas(mode, ['spawn', 'exec', 'execFile'])) {
|
|
159
166
|
pm.reject(`invalid mode[${mode}]`)
|
|
@@ -168,16 +175,21 @@ function execProcess(prog, args, opt = {}) {
|
|
|
168
175
|
//start, 建立子進程並接線, labelSystem為系統字碼頁標籤, 僅codeCmd為'auto'或'system'時需要
|
|
169
176
|
let start = (labelSystem) => {
|
|
170
177
|
|
|
178
|
+
//spawn不經shell, prog含引號會被當成檔名之一部分, 於啟動前reject
|
|
179
|
+
if (mode === 'spawn') {
|
|
180
|
+
let cr = strleft(prog, 1)
|
|
181
|
+
let cl = strright(prog, 1)
|
|
182
|
+
if (cr === `"` || cl === `"` || cr === `'` || cl === `'`) {
|
|
183
|
+
pm.reject(`prog[${prog}] of spawn does not need to add quotes`)
|
|
184
|
+
return
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
171
188
|
//r
|
|
172
189
|
let r = null
|
|
173
190
|
try {
|
|
174
191
|
if (mode === 'spawn') {
|
|
175
192
|
// console.log('mode',mode)
|
|
176
|
-
let cr = strleft(prog, 1)
|
|
177
|
-
let cl = strright(prog, 1)
|
|
178
|
-
if (cr === `"` || cl === `"` || cr === `'` || cl === `'`) {
|
|
179
|
-
throw new Error('prog of spawn doens not need to add quotes')
|
|
180
|
-
}
|
|
181
193
|
r = cp.spawn(prog, args, {
|
|
182
194
|
windowsHide: true, //執行的主程序若沒有主控台調用執行程序就不會有視窗, 但若通過pm2執行會有, 須設定windowsHide=true
|
|
183
195
|
shell: false,
|
|
@@ -214,10 +226,26 @@ function execProcess(prog, args, opt = {}) {
|
|
|
214
226
|
}
|
|
215
227
|
}
|
|
216
228
|
catch (err) {
|
|
217
|
-
|
|
229
|
+
//同步拋錯(EPERM、UNKNOWN、ENAMETOOLONG、參數檢查錯誤等), 轉為不含參數值之字串
|
|
230
|
+
let e = execSpawnError(err)
|
|
231
|
+
pm.reject(`spawn[${e.code}]:\n${e.message}`)
|
|
218
232
|
return
|
|
219
233
|
}
|
|
220
234
|
|
|
235
|
+
//timer, bTimeout, 逾時計時器於下方設定, 先宣告供error與close使用
|
|
236
|
+
let timer = null
|
|
237
|
+
let bTimeout = false
|
|
238
|
+
|
|
239
|
+
//error, 須於存取stdout與stderr前監聽: node對EMFILE、ENFILE不建立stdio即於nextTick發出'error', 先存取會拋TypeError且'error'無人監聽而拉倒程序
|
|
240
|
+
// 可能為'找不到可執行檔','權限不足','系統資源用盡'等, node所附之spawnargs含完整參數(exec模式為整條指令列), 故轉為不含參數值之字串
|
|
241
|
+
r.on('error', (err) => {
|
|
242
|
+
if (timer !== null) {
|
|
243
|
+
clearTimeout(timer)
|
|
244
|
+
}
|
|
245
|
+
let e = execSpawnError(err)
|
|
246
|
+
pm.reject(`spawn[${e.code}]:\n${e.message}`)
|
|
247
|
+
})
|
|
248
|
+
|
|
221
249
|
//decOut, decErr, stdout與stderr各持一個串流解碼器, 多位元組字元跨chunk時由解碼器暫存, 不會被切成U+FFFD
|
|
222
250
|
let label = cc.label
|
|
223
251
|
if (cc.mode === 'system') {
|
|
@@ -248,11 +276,15 @@ function execProcess(prog, args, opt = {}) {
|
|
|
248
276
|
}
|
|
249
277
|
}
|
|
250
278
|
|
|
251
|
-
//stdout data
|
|
252
|
-
r.stdout
|
|
279
|
+
//stdout data, EMFILE、ENFILE時node未建立stdio(undefined), 由上方error回報
|
|
280
|
+
if (r.stdout) {
|
|
281
|
+
r.stdout.on('data', onData('out', decOut, cbStdout))
|
|
282
|
+
}
|
|
253
283
|
|
|
254
284
|
//stderr data, 太多程式把warning或log輸出到stderr, 已無法視為有err發生
|
|
255
|
-
r.stderr
|
|
285
|
+
if (r.stderr) {
|
|
286
|
+
r.stderr.on('data', onData('err', decErr, cbStderr))
|
|
287
|
+
}
|
|
256
288
|
|
|
257
289
|
//buildMsg, 於close時收尾: 各解碼器flush, 'auto'且已改判之串流以全新解碼器重播原始chunk, 最後依到達順序合併, 不另加換行(chunk切點由作業系統決定, 附加換行會落在子程序輸出的任意位置)
|
|
258
290
|
let buildMsg = () => {
|
|
@@ -304,8 +336,6 @@ function execProcess(prog, args, opt = {}) {
|
|
|
304
336
|
// })
|
|
305
337
|
|
|
306
338
|
//timer, 若有設定timeout, 逾時觸發時調用execProcessKillPid殺整棵程序樹
|
|
307
|
-
let timer = null
|
|
308
|
-
let bTimeout = false
|
|
309
339
|
if (timeout !== null) {
|
|
310
340
|
timer = setTimeout(() => {
|
|
311
341
|
bTimeout = true
|
|
@@ -335,14 +365,6 @@ function execProcess(prog, args, opt = {}) {
|
|
|
335
365
|
}
|
|
336
366
|
})
|
|
337
367
|
|
|
338
|
-
//error, 監聽(例如執行spawn本身)錯誤訊息, 可能為'找不到可執行檔','權限不足','系統資源用盡'等
|
|
339
|
-
r.on('error', (err) => {
|
|
340
|
-
if (timer !== null) {
|
|
341
|
-
clearTimeout(timer)
|
|
342
|
-
}
|
|
343
|
-
pm.reject(err)
|
|
344
|
-
})
|
|
345
|
-
|
|
346
368
|
}
|
|
347
369
|
|
|
348
370
|
//系統字碼頁僅'auto'與'system'需要, 首次會等chcp查詢完才啟動子進程, 之後為快取; 固定標籤同步啟動, 與既有時序相同
|
|
@@ -353,7 +375,8 @@ function execProcess(prog, args, opt = {}) {
|
|
|
353
375
|
codec.getSystemCodePage()
|
|
354
376
|
.then(start)
|
|
355
377
|
.catch((err) => {
|
|
356
|
-
|
|
378
|
+
let e = execSpawnError(err)
|
|
379
|
+
pm.reject(`spawn[${e.code}]:\n${e.message}`)
|
|
357
380
|
})
|
|
358
381
|
}
|
|
359
382
|
|
|
@@ -376,7 +399,7 @@ export default execProcess
|
|
|
376
399
|
<br class="clear">
|
|
377
400
|
|
|
378
401
|
<footer>
|
|
379
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
402
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
380
403
|
</footer>
|
|
381
404
|
|
|
382
405
|
<script>prettyPrint();</script>
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
<article>
|
|
48
48
|
<pre class="prettyprint source linenums"><code>import treeKill from 'tree-kill'
|
|
49
49
|
import genPm from './genPm.mjs'
|
|
50
|
+
import getErrorMessage from './getErrorMessage.mjs'
|
|
50
51
|
|
|
51
52
|
|
|
52
53
|
/**
|
|
@@ -55,7 +56,7 @@ import genPm from './genPm.mjs'
|
|
|
55
56
|
* Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/execProcessKillPid.test.mjs Github}
|
|
56
57
|
* @memberOf wsemi
|
|
57
58
|
* @param {Number|String} pid 輸入程序pid
|
|
58
|
-
* @returns {Promise} 回傳Promise,resolve
|
|
59
|
+
* @returns {Promise} 回傳Promise,resolve回傳成功訊息`pid[N] killed`,reject回傳錯誤訊息字串`pid[N] kill failed: 訊息`;Windows下訊息含taskkill之輸出,其為系統字碼頁而可能無法正確顯示
|
|
59
60
|
* @example
|
|
60
61
|
* //need test in nodejs
|
|
61
62
|
*
|
|
@@ -87,9 +88,10 @@ function execProcessKillPid(pid) {
|
|
|
87
88
|
let pm = genPm()
|
|
88
89
|
|
|
89
90
|
//treeKill, Windows內部呼叫「taskkill /pid PID /T /F」, Linux/macOS則以ps/pgrep遞迴尋找子pid後逐一發signal
|
|
91
|
+
//失敗時tree-kill給Error物件(pid非數字、taskkill失敗等), 轉為錯誤訊息字串, 與resolve之訊息格式對稱
|
|
90
92
|
treeKill(Number(pid), 'SIGKILL', (err) => {
|
|
91
93
|
if (err) {
|
|
92
|
-
pm.reject(err)
|
|
94
|
+
pm.reject(`pid[${pid}] kill failed: ${getErrorMessage(err)}`)
|
|
93
95
|
}
|
|
94
96
|
else {
|
|
95
97
|
pm.resolve(`pid[${pid}] killed`)
|
|
@@ -115,7 +117,7 @@ export default execProcessKillPid
|
|
|
115
117
|
<br class="clear">
|
|
116
118
|
|
|
117
119
|
<footer>
|
|
118
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
120
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
119
121
|
</footer>
|
|
120
122
|
|
|
121
123
|
<script>prettyPrint();</script>
|
|
@@ -1414,7 +1414,7 @@ export default filepathToTree
|
|
|
1414
1414
|
<br class="clear">
|
|
1415
1415
|
|
|
1416
1416
|
<footer>
|
|
1417
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
1417
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
1418
1418
|
</footer>
|
|
1419
1419
|
|
|
1420
1420
|
<script>prettyPrint();</script>
|
package/docs/files2data.mjs.html
CHANGED
|
@@ -123,7 +123,7 @@ export default files2data
|
|
|
123
123
|
<br class="clear">
|
|
124
124
|
|
|
125
125
|
<footer>
|
|
126
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
126
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
127
127
|
</footer>
|
|
128
128
|
|
|
129
129
|
<script>prettyPrint();</script>
|
|
@@ -799,7 +799,7 @@ export default flattenToConn
|
|
|
799
799
|
<br class="clear">
|
|
800
800
|
|
|
801
801
|
<footer>
|
|
802
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
802
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
803
803
|
</footer>
|
|
804
804
|
|
|
805
805
|
<script>prettyPrint();</script>
|
|
@@ -217,7 +217,7 @@ export default flattenTree
|
|
|
217
217
|
<br class="clear">
|
|
218
218
|
|
|
219
219
|
<footer>
|
|
220
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
220
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
221
221
|
</footer>
|
|
222
222
|
|
|
223
223
|
<script>prettyPrint();</script>
|
package/docs/floor.mjs.html
CHANGED
|
@@ -145,7 +145,7 @@ export default floor
|
|
|
145
145
|
<br class="clear">
|
|
146
146
|
|
|
147
147
|
<footer>
|
|
148
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
148
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
149
149
|
</footer>
|
|
150
150
|
|
|
151
151
|
<script>prettyPrint();</script>
|
|
@@ -190,7 +190,7 @@ export default fsBuildReadStreamText
|
|
|
190
190
|
<br class="clear">
|
|
191
191
|
|
|
192
192
|
<footer>
|
|
193
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
193
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
194
194
|
</footer>
|
|
195
195
|
|
|
196
196
|
<script>prettyPrint();</script>
|
|
@@ -167,7 +167,7 @@ export default fsBuildWriteStreamText
|
|
|
167
167
|
<br class="clear">
|
|
168
168
|
|
|
169
169
|
<footer>
|
|
170
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
170
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
171
171
|
</footer>
|
|
172
172
|
|
|
173
173
|
<script>prettyPrint();</script>
|
|
@@ -154,7 +154,7 @@ export default fsCleanFolder
|
|
|
154
154
|
<br class="clear">
|
|
155
155
|
|
|
156
156
|
<footer>
|
|
157
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
157
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
158
158
|
</footer>
|
|
159
159
|
|
|
160
160
|
<script>prettyPrint();</script>
|
|
@@ -134,7 +134,7 @@ export default fsCleanFolderCore
|
|
|
134
134
|
<br class="clear">
|
|
135
135
|
|
|
136
136
|
<footer>
|
|
137
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
137
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
138
138
|
</footer>
|
|
139
139
|
|
|
140
140
|
<script>prettyPrint();</script>
|
package/docs/fsCopyFile.mjs.html
CHANGED
|
@@ -160,7 +160,7 @@ export default fsCopyFile
|
|
|
160
160
|
<br class="clear">
|
|
161
161
|
|
|
162
162
|
<footer>
|
|
163
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
163
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
164
164
|
</footer>
|
|
165
165
|
|
|
166
166
|
<script>prettyPrint();</script>
|
|
@@ -197,7 +197,7 @@ export default fsCopyFileCore
|
|
|
197
197
|
<br class="clear">
|
|
198
198
|
|
|
199
199
|
<footer>
|
|
200
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
200
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
201
201
|
</footer>
|
|
202
202
|
|
|
203
203
|
<script>prettyPrint();</script>
|
|
@@ -275,7 +275,7 @@ export default fsCopyFolder
|
|
|
275
275
|
<br class="clear">
|
|
276
276
|
|
|
277
277
|
<footer>
|
|
278
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
278
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
279
279
|
</footer>
|
|
280
280
|
|
|
281
281
|
<script>prettyPrint();</script>
|
|
@@ -273,7 +273,7 @@ export default fsCopyFolderCore
|
|
|
273
273
|
<br class="clear">
|
|
274
274
|
|
|
275
275
|
<footer>
|
|
276
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
276
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
277
277
|
</footer>
|
|
278
278
|
|
|
279
279
|
<script>prettyPrint();</script>
|
|
@@ -128,7 +128,7 @@ export default fsCreateFile
|
|
|
128
128
|
<br class="clear">
|
|
129
129
|
|
|
130
130
|
<footer>
|
|
131
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
131
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
132
132
|
</footer>
|
|
133
133
|
|
|
134
134
|
<script>prettyPrint();</script>
|
|
@@ -136,7 +136,7 @@ export default fsCreateFileCore
|
|
|
136
136
|
<br class="clear">
|
|
137
137
|
|
|
138
138
|
<footer>
|
|
139
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
139
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
140
140
|
</footer>
|
|
141
141
|
|
|
142
142
|
<script>prettyPrint();</script>
|
|
@@ -109,7 +109,7 @@ export default fsCreateFolder
|
|
|
109
109
|
<br class="clear">
|
|
110
110
|
|
|
111
111
|
<footer>
|
|
112
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
112
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
113
113
|
</footer>
|
|
114
114
|
|
|
115
115
|
<script>prettyPrint();</script>
|
|
@@ -113,7 +113,7 @@ export default fsCreateFolderCore
|
|
|
113
113
|
<br class="clear">
|
|
114
114
|
|
|
115
115
|
<footer>
|
|
116
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
116
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
117
117
|
</footer>
|
|
118
118
|
|
|
119
119
|
<script>prettyPrint();</script>
|
|
@@ -113,7 +113,7 @@ export default fsDeleteFile
|
|
|
113
113
|
<br class="clear">
|
|
114
114
|
|
|
115
115
|
<footer>
|
|
116
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
116
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
117
117
|
</footer>
|
|
118
118
|
|
|
119
119
|
<script>prettyPrint();</script>
|
|
@@ -113,7 +113,7 @@ export default fsDeleteFileCore
|
|
|
113
113
|
<br class="clear">
|
|
114
114
|
|
|
115
115
|
<footer>
|
|
116
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
116
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
117
117
|
</footer>
|
|
118
118
|
|
|
119
119
|
<script>prettyPrint();</script>
|
|
@@ -116,7 +116,7 @@ export default fsDeleteFileSafe
|
|
|
116
116
|
<br class="clear">
|
|
117
117
|
|
|
118
118
|
<footer>
|
|
119
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
119
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
120
120
|
</footer>
|
|
121
121
|
|
|
122
122
|
<script>prettyPrint();</script>
|
|
@@ -139,7 +139,7 @@ export default fsDeleteFileSafeCore
|
|
|
139
139
|
<br class="clear">
|
|
140
140
|
|
|
141
141
|
<footer>
|
|
142
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
142
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
143
143
|
</footer>
|
|
144
144
|
|
|
145
145
|
<script>prettyPrint();</script>
|
|
@@ -137,7 +137,7 @@ export default fsDeleteFolder
|
|
|
137
137
|
<br class="clear">
|
|
138
138
|
|
|
139
139
|
<footer>
|
|
140
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
140
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
141
141
|
</footer>
|
|
142
142
|
|
|
143
143
|
<script>prettyPrint();</script>
|
|
@@ -113,7 +113,7 @@ export default fsDeleteFolderCore
|
|
|
113
113
|
<br class="clear">
|
|
114
114
|
|
|
115
115
|
<footer>
|
|
116
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
116
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
117
117
|
</footer>
|
|
118
118
|
|
|
119
119
|
<script>prettyPrint();</script>
|
|
@@ -139,7 +139,7 @@ export default fsDeleteFolderSafe
|
|
|
139
139
|
<br class="clear">
|
|
140
140
|
|
|
141
141
|
<footer>
|
|
142
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
142
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
143
143
|
</footer>
|
|
144
144
|
|
|
145
145
|
<script>prettyPrint();</script>
|
|
@@ -150,7 +150,7 @@ export default fsDeleteFolderSafeCore
|
|
|
150
150
|
<br class="clear">
|
|
151
151
|
|
|
152
152
|
<footer>
|
|
153
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
153
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 13 2026 23:59:16 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
154
154
|
</footer>
|
|
155
155
|
|
|
156
156
|
<script>prettyPrint();</script>
|