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.
Files changed (516) hide show
  1. package/README.md +1 -1
  2. package/dist/wsemi.umd.js +7 -7
  3. package/dist/wsemi.umd.js.map +1 -1
  4. package/docs/-_class.mjs.html +1 -1
  5. package/docs/-_const.mjs.html +1 -1
  6. package/docs/-_detector.mjs.html +1 -1
  7. package/docs/-_optNum.mjs.html +1 -1
  8. package/docs/ab2blob.mjs.html +1 -1
  9. package/docs/ab2u8arr.mjs.html +1 -1
  10. package/docs/addExcelWorksheetFromData.mjs.html +1 -1
  11. package/docs/addMonth.mjs.html +1 -1
  12. package/docs/aes2str.mjs.html +1 -1
  13. package/docs/alive.mjs.html +106 -5
  14. package/docs/arr2dt.mjs.html +1 -1
  15. package/docs/arrAccum.mjs.html +1 -1
  16. package/docs/arrAdd.mjs.html +1 -1
  17. package/docs/arrAt.mjs.html +1 -1
  18. package/docs/arrDiff.mjs.html +1 -1
  19. package/docs/arrFilterByKeywords.mjs.html +1 -1
  20. package/docs/arrFilterByNum.mjs.html +1 -1
  21. package/docs/arrFilterByPnum.mjs.html +1 -1
  22. package/docs/arrFilterByPnumAndToLog.mjs.html +1 -1
  23. package/docs/arrFind.mjs.html +1 -1
  24. package/docs/arrGroupByMaxmin.mjs.html +1 -1
  25. package/docs/arrHas.mjs.html +1 -1
  26. package/docs/arrInsert.mjs.html +1 -1
  27. package/docs/arrLookupByMaxmin.mjs.html +1 -1
  28. package/docs/arrMax.mjs.html +1 -1
  29. package/docs/arrMin.mjs.html +1 -1
  30. package/docs/arrMulti.mjs.html +1 -1
  31. package/docs/arrNorm.mjs.html +1 -1
  32. package/docs/arrProduct.mjs.html +1 -1
  33. package/docs/arrPull.mjs.html +1 -1
  34. package/docs/arrPullAt.mjs.html +1 -1
  35. package/docs/arrReduce.mjs.html +1 -1
  36. package/docs/arrReverse.mjs.html +1 -1
  37. package/docs/arrSep.mjs.html +1 -1
  38. package/docs/arrSort.mjs.html +1 -1
  39. package/docs/asind.mjs.html +1 -1
  40. package/docs/atan2d.mjs.html +1 -1
  41. package/docs/atand.mjs.html +1 -1
  42. package/docs/attstr.mjs.html +1 -1
  43. package/docs/b642obj.mjs.html +1 -1
  44. package/docs/b642str.mjs.html +1 -1
  45. package/docs/b642u16arr.mjs.html +1 -1
  46. package/docs/b642u8arr.mjs.html +1 -1
  47. package/docs/binstr.mjs.html +1 -1
  48. package/docs/blob2ab.mjs.html +1 -1
  49. package/docs/blob2b64.mjs.html +1 -1
  50. package/docs/blob2str.mjs.html +1 -1
  51. package/docs/blob2u8arr.mjs.html +1 -1
  52. package/docs/blobs2b64s.mjs.html +1 -1
  53. package/docs/blobs2u8arrs.mjs.html +1 -1
  54. package/docs/bodyLog.mjs.html +1 -1
  55. package/docs/browserView.mjs.html +1 -1
  56. package/docs/browserViewFromBlob.mjs.html +1 -1
  57. package/docs/browserViewFromText.mjs.html +1 -1
  58. package/docs/browserViewFromU8arr.mjs.html +1 -1
  59. package/docs/bs2u8arr.mjs.html +1 -1
  60. package/docs/bufRead.mjs.html +1 -1
  61. package/docs/bufReadDbl.mjs.html +1 -1
  62. package/docs/bufWrite.mjs.html +1 -1
  63. package/docs/bufWriteDbl.mjs.html +1 -1
  64. package/docs/cache.mjs.html +3 -3
  65. package/docs/cacheBd.mjs.html +1 -1
  66. package/docs/cacheSt.mjs.html +2 -2
  67. package/docs/cbol.mjs.html +1 -1
  68. package/docs/cdbl.mjs.html +1 -1
  69. package/docs/ceil.mjs.html +1 -1
  70. package/docs/cfilesize.mjs.html +1 -1
  71. package/docs/cfinancial.mjs.html +1 -1
  72. package/docs/cint.mjs.html +1 -1
  73. package/docs/clearXSS.mjs.html +1 -1
  74. package/docs/clearXSSDyn.mjs.html +1 -1
  75. package/docs/color.mjs.html +1 -1
  76. package/docs/composeToTree.mjs.html +1 -1
  77. package/docs/convertToTree.mjs.html +1 -1
  78. package/docs/copyStrToClipboard.mjs.html +1 -1
  79. package/docs/cosd.mjs.html +1 -1
  80. package/docs/cotd.mjs.html +1 -1
  81. package/docs/createExcelWorkbook.mjs.html +1 -1
  82. package/docs/cscd.mjs.html +1 -1
  83. package/docs/cstr.mjs.html +1 -1
  84. package/docs/day2cht.mjs.html +1 -1
  85. package/docs/debounce.mjs.html +1 -1
  86. package/docs/delay.mjs.html +1 -1
  87. package/docs/detectXSS.mjs.html +1 -1
  88. package/docs/detectXSSDyn.mjs.html +1 -1
  89. package/docs/dig.mjs.html +1 -1
  90. package/docs/digExp.mjs.html +1 -1
  91. package/docs/domAlert.mjs.html +1 -1
  92. package/docs/domAppend.mjs.html +1 -1
  93. package/docs/domCancelEvent.mjs.html +1 -1
  94. package/docs/domCompareText.mjs.html +1 -1
  95. package/docs/domConvertToPic.mjs.html +1 -1
  96. package/docs/domConvertToPicDyn.mjs.html +1 -1
  97. package/docs/domDetect.mjs.html +1 -1
  98. package/docs/domDrag.mjs.html +1 -1
  99. package/docs/domDragBarAndScroll.mjs.html +1 -1
  100. package/docs/domDragPointer.mjs.html +1 -1
  101. package/docs/domDragPreview.mjs.html +1 -1
  102. package/docs/domDropFiles.mjs.html +1 -1
  103. package/docs/domElementsFromPoint.mjs.html +1 -1
  104. package/docs/domFadeIn.mjs.html +1 -1
  105. package/docs/domFadeOut.mjs.html +1 -1
  106. package/docs/domFind.mjs.html +1 -1
  107. package/docs/domFinds.mjs.html +1 -1
  108. package/docs/domGetAttr.mjs.html +1 -1
  109. package/docs/domGetBoudRect.mjs.html +1 -1
  110. package/docs/domGetBoudRectRefSelf.mjs.html +1 -1
  111. package/docs/domGetFileAccept.mjs.html +1 -1
  112. package/docs/domGetFiles.mjs.html +1 -1
  113. package/docs/domGetParents.mjs.html +1 -1
  114. package/docs/domGetPointFromEvent.mjs.html +1 -1
  115. package/docs/domGetScrollableParent.mjs.html +1 -1
  116. package/docs/domGetWindowSize.mjs.html +1 -1
  117. package/docs/domIsClientXYIn.mjs.html +1 -1
  118. package/docs/domIsFocused.mjs.html +1 -1
  119. package/docs/domIsRendered.mjs.html +1 -1
  120. package/docs/domIsStable.mjs.html +1 -1
  121. package/docs/domIsVisible.mjs.html +1 -1
  122. package/docs/domPrepend.mjs.html +1 -1
  123. package/docs/domRemove.mjs.html +1 -1
  124. package/docs/domRenderMarkdownMind.mjs.html +1 -1
  125. package/docs/domRenderMarkdownMindDyn.mjs.html +1 -1
  126. package/docs/domRipple.mjs.html +1 -1
  127. package/docs/domScrollIntoView.mjs.html +1 -1
  128. package/docs/domScrollTo.mjs.html +1 -1
  129. package/docs/domSetAttr.mjs.html +1 -1
  130. package/docs/domShowImages.mjs.html +1 -1
  131. package/docs/domShowImagesDyn.mjs.html +1 -1
  132. package/docs/domShowInputAndGetFiles.mjs.html +1 -1
  133. package/docs/domShowInputAndGetFilesU8Arrs.mjs.html +1 -1
  134. package/docs/domShowInputDatatime.mjs.html +1 -1
  135. package/docs/domTooltip.mjs.html +1 -1
  136. package/docs/domTriggerEvent.mjs.html +1 -1
  137. package/docs/domVirtualCreate.mjs.html +1 -1
  138. package/docs/domVirtualCreateQueue.mjs.html +1 -1
  139. package/docs/downloadExcelFileFromData.mjs.html +1 -1
  140. package/docs/downloadExcelFileFromDataDyn.mjs.html +1 -1
  141. package/docs/downloadFileFromB64.mjs.html +1 -1
  142. package/docs/downloadFileFromBlob.mjs.html +1 -1
  143. package/docs/downloadFileFromText.mjs.html +1 -1
  144. package/docs/downloadFileFromU8Arr.mjs.html +1 -1
  145. package/docs/dtmapping.mjs.html +1 -1
  146. package/docs/dtpick.mjs.html +1 -1
  147. package/docs/estimateTicks.mjs.html +1 -1
  148. package/docs/evEmit.mjs.html +2 -2
  149. package/docs/evEmitDelay.mjs.html +1 -1
  150. package/docs/evem.mjs.html +1 -1
  151. package/docs/examples/ex-blob2b64.html +1 -1
  152. package/docs/examples/ex-clearXSS.html +1 -1
  153. package/docs/examples/ex-clearXSSDyn.html +1 -1
  154. package/docs/examples/ex-colorConverter.html +1 -1
  155. package/docs/examples/ex-detectXSS.html +1 -1
  156. package/docs/examples/ex-detectXSSDyn.html +1 -1
  157. package/docs/examples/ex-domCompareText.html +1 -1
  158. package/docs/examples/ex-domConvertToPic.html +1 -1
  159. package/docs/examples/ex-domDrag.html +1 -1
  160. package/docs/examples/ex-domDropFiles.html +1 -1
  161. package/docs/examples/ex-domIsVisible.html +1 -1
  162. package/docs/examples/ex-domRenderMarkdownMind.html +1 -1
  163. package/docs/examples/ex-domRenderMarkdownMindDyn.html +1 -1
  164. package/docs/examples/ex-domRipple.html +1 -1
  165. package/docs/examples/ex-domScrollIntoView.html +1 -1
  166. package/docs/examples/ex-domScrollTo.html +1 -1
  167. package/docs/examples/ex-domShowImages.html +1 -1
  168. package/docs/examples/ex-domShowImagesDyn.html +1 -1
  169. package/docs/examples/ex-domShowInputAndGetFiles.html +1 -1
  170. package/docs/examples/ex-domTooltip.html +1 -1
  171. package/docs/examples/ex-getFileHash.html +1 -1
  172. package/docs/examples/ex-getUserAgent.html +1 -1
  173. package/docs/examples/ex-getUserAgentDyn.html +1 -1
  174. package/docs/examples/ex-html2str.html +1 -1
  175. package/docs/examples/ex-obj2u8arr-u8arr2obj.html +1 -1
  176. package/docs/examples/ex-openLink.html +1 -1
  177. package/docs/examples/ex-str2aes-aes2str.html +1 -1
  178. package/docs/examples/ex-str2b64-b642str.html +1 -1
  179. package/docs/examples/ex-strFindFuzz.html +1 -1
  180. package/docs/examples/ex-timeTZ2expire-timeTZ2past.html +1 -1
  181. package/docs/examples/ex-xlsx.html +1 -1
  182. package/docs/execCli.mjs.html +67 -33
  183. package/docs/execCliCore.mjs.html +4 -1
  184. package/docs/execCliJsonRpc.mjs.html +3 -3
  185. package/docs/execCliSession.mjs.html +24 -12
  186. package/docs/execJsCode.mjs.html +1 -1
  187. package/docs/execProcess.mjs.html +58 -35
  188. package/docs/execProcessKillPid.mjs.html +5 -3
  189. package/docs/filepathToTree.mjs.html +1 -1
  190. package/docs/files2data.mjs.html +1 -1
  191. package/docs/flattenToConn.mjs.html +1 -1
  192. package/docs/flattenTree.mjs.html +1 -1
  193. package/docs/floor.mjs.html +1 -1
  194. package/docs/fsBuildReadStreamText.mjs.html +1 -1
  195. package/docs/fsBuildWriteStreamText.mjs.html +1 -1
  196. package/docs/fsCleanFolder.mjs.html +1 -1
  197. package/docs/fsCleanFolderCore.mjs.html +1 -1
  198. package/docs/fsCopyFile.mjs.html +1 -1
  199. package/docs/fsCopyFileCore.mjs.html +1 -1
  200. package/docs/fsCopyFolder.mjs.html +1 -1
  201. package/docs/fsCopyFolderCore.mjs.html +1 -1
  202. package/docs/fsCreateFile.mjs.html +1 -1
  203. package/docs/fsCreateFileCore.mjs.html +1 -1
  204. package/docs/fsCreateFolder.mjs.html +1 -1
  205. package/docs/fsCreateFolderCore.mjs.html +1 -1
  206. package/docs/fsDeleteFile.mjs.html +1 -1
  207. package/docs/fsDeleteFileCore.mjs.html +1 -1
  208. package/docs/fsDeleteFileSafe.mjs.html +1 -1
  209. package/docs/fsDeleteFileSafeCore.mjs.html +1 -1
  210. package/docs/fsDeleteFolder.mjs.html +1 -1
  211. package/docs/fsDeleteFolderCore.mjs.html +1 -1
  212. package/docs/fsDeleteFolderSafe.mjs.html +1 -1
  213. package/docs/fsDeleteFolderSafeCore.mjs.html +1 -1
  214. package/docs/fsDownloadFile.mjs.html +1 -1
  215. package/docs/fsDownloadFileCore.mjs.html +1 -1
  216. package/docs/fsEvem.mjs.html +1 -1
  217. package/docs/fsExists.mjs.html +1 -1
  218. package/docs/fsExistsCore.mjs.html +1 -1
  219. package/docs/fsGetFileBasicHash.mjs.html +1 -1
  220. package/docs/fsGetFileBasicHashCore.mjs.html +1 -1
  221. package/docs/fsGetFileHash.mjs.html +1 -1
  222. package/docs/fsGetFileHashCore.mjs.html +1 -1
  223. package/docs/fsGetFileXxHash.mjs.html +1 -1
  224. package/docs/fsGetFileXxHashCore.mjs.html +1 -1
  225. package/docs/fsGetFilesInFolder.mjs.html +1 -1
  226. package/docs/fsGetFilesInFolderCore.mjs.html +1 -1
  227. package/docs/fsGetFilesWithHashInFolder.mjs.html +1 -1
  228. package/docs/fsGetFilesWithHashInFolderCore.mjs.html +1 -1
  229. package/docs/fsGetFolderBasicHash.mjs.html +1 -1
  230. package/docs/fsGetFolderBasicHashCore.mjs.html +1 -1
  231. package/docs/fsGetFoldersInFolder.mjs.html +1 -1
  232. package/docs/fsGetFoldersInFolderCore.mjs.html +1 -1
  233. package/docs/fsIsFile.mjs.html +1 -1
  234. package/docs/fsIsFileCore.mjs.html +1 -1
  235. package/docs/fsIsFolder.mjs.html +1 -1
  236. package/docs/fsIsFolderCore.mjs.html +1 -1
  237. package/docs/fsMergeFiles.mjs.html +1 -1
  238. package/docs/fsMergeFilesCore.mjs.html +1 -1
  239. package/docs/fsReadJson.mjs.html +1 -1
  240. package/docs/fsReadText.mjs.html +1 -1
  241. package/docs/fsReadTextCore.mjs.html +1 -1
  242. package/docs/fsRenameFile.mjs.html +1 -1
  243. package/docs/fsRenameFileCore.mjs.html +1 -1
  244. package/docs/fsRenameFolder.mjs.html +1 -1
  245. package/docs/fsRenameFolderCore.mjs.html +1 -1
  246. package/docs/fsSrlog.mjs.html +1 -1
  247. package/docs/fsSyncFolder.mjs.html +1 -1
  248. package/docs/fsSyncFolderCore.mjs.html +1 -1
  249. package/docs/fsTask.mjs.html +1 -1
  250. package/docs/fsTaskCp.mjs.html +1 -1
  251. package/docs/fsTreeFolder.mjs.html +1 -1
  252. package/docs/fsTreeFolderCore.mjs.html +1 -1
  253. package/docs/fsTreeFolderWithHash.mjs.html +1 -1
  254. package/docs/fsTreeFolderWithHashCore.mjs.html +1 -1
  255. package/docs/fsWatchFile.mjs.html +1 -1
  256. package/docs/fsWatchFolder.mjs.html +1 -1
  257. package/docs/fsWriteJson.mjs.html +1 -1
  258. package/docs/fsWriteText.mjs.html +1 -1
  259. package/docs/fsWriteTextCore.mjs.html +1 -1
  260. package/docs/genGradientColor.mjs.html +1 -1
  261. package/docs/genID.mjs.html +1 -1
  262. package/docs/genIDSeq.mjs.html +1 -1
  263. package/docs/genPm.mjs.html +1 -1
  264. package/docs/getBufferSize.mjs.html +1 -1
  265. package/docs/getClearPathName.mjs.html +1 -1
  266. package/docs/getCsvStrFromData.mjs.html +1 -1
  267. package/docs/getDataFromExcelFileU8Arr.mjs.html +1 -1
  268. package/docs/getDataFromExcelFileU8ArrDyn.mjs.html +1 -1
  269. package/docs/getEnv.mjs.html +1 -1
  270. package/docs/getErrorMessage.mjs.html +1 -1
  271. package/docs/getExcelU8ArrFromData.mjs.html +1 -1
  272. package/docs/getExcelU8ArrFromWorkbook.mjs.html +1 -1
  273. package/docs/getExcelWorkbookFromData.mjs.html +1 -1
  274. package/docs/getExcelWorkbookFromWorksheet.mjs.html +1 -1
  275. package/docs/getExcelWorksheetFromData.mjs.html +1 -1
  276. package/docs/getFileAccept.mjs.html +1 -1
  277. package/docs/getFileBasicHash.mjs.html +1 -1
  278. package/docs/getFileHash.mjs.html +1 -1
  279. package/docs/getFileName.mjs.html +1 -1
  280. package/docs/getFileNameExt.mjs.html +1 -1
  281. package/docs/getFileTrueName.mjs.html +1 -1
  282. package/docs/getFileType.mjs.html +1 -1
  283. package/docs/getFileXxHash.mjs.html +1 -1
  284. package/docs/getGlobal.mjs.html +1 -1
  285. package/docs/getObjSize.mjs.html +1 -1
  286. package/docs/getPathParent.mjs.html +1 -1
  287. package/docs/getTimeBetween.mjs.html +1 -1
  288. package/docs/getTimeFromUnit.mjs.html +1 -1
  289. package/docs/getTimeHp.mjs.html +1 -1
  290. package/docs/getTimeObject.mjs.html +1 -1
  291. package/docs/getTimeRange.mjs.html +1 -1
  292. package/docs/getUserAgent.mjs.html +1 -1
  293. package/docs/getUserAgentDyn.mjs.html +1 -1
  294. package/docs/getltdtkeys.mjs.html +1 -1
  295. package/docs/global.html +7 -7
  296. package/docs/haskey.mjs.html +1 -1
  297. package/docs/html2str.mjs.html +1 -1
  298. package/docs/htmlDecode.mjs.html +1 -1
  299. package/docs/htmlEncode.mjs.html +1 -1
  300. package/docs/importResources.mjs.html +1 -1
  301. package/docs/index.html +1 -1
  302. package/docs/interp1.mjs.html +1 -1
  303. package/docs/isDate.mjs.html +1 -1
  304. package/docs/isDev.mjs.html +1 -1
  305. package/docs/isEle.mjs.html +1 -1
  306. package/docs/isEleExistByID.mjs.html +1 -1
  307. package/docs/isEmail.mjs.html +1 -1
  308. package/docs/isErr.mjs.html +1 -1
  309. package/docs/isIE.mjs.html +1 -1
  310. package/docs/isNarrow.mjs.html +1 -1
  311. package/docs/isStrHasCapital.mjs.html +1 -1
  312. package/docs/isStrHasLetter.mjs.html +1 -1
  313. package/docs/isStrHasLowerCase.mjs.html +1 -1
  314. package/docs/isStrHasNumber.mjs.html +1 -1
  315. package/docs/isStrHasSpace.mjs.html +1 -1
  316. package/docs/isStrHasSymbol.mjs.html +1 -1
  317. package/docs/isUserIdentify.mjs.html +1 -1
  318. package/docs/isUserName.mjs.html +1 -1
  319. package/docs/isUserPw.mjs.html +1 -1
  320. package/docs/isWindow.mjs.html +1 -1
  321. package/docs/isab.mjs.html +1 -1
  322. package/docs/isarr.mjs.html +1 -1
  323. package/docs/isarr0.mjs.html +1 -1
  324. package/docs/isarr1.mjs.html +1 -1
  325. package/docs/isbigint.mjs.html +1 -1
  326. package/docs/isblob.mjs.html +1 -1
  327. package/docs/isbol.mjs.html +1 -1
  328. package/docs/isday.mjs.html +1 -1
  329. package/docs/isearr.mjs.html +1 -1
  330. package/docs/iseobj.mjs.html +1 -1
  331. package/docs/iser.mjs.html +1 -1
  332. package/docs/isernot.mjs.html +1 -1
  333. package/docs/isestr.mjs.html +1 -1
  334. package/docs/isfile.mjs.html +1 -1
  335. package/docs/isfun.mjs.html +1 -1
  336. package/docs/isint.mjs.html +1 -1
  337. package/docs/ismonth.mjs.html +1 -1
  338. package/docs/isn0int.mjs.html +1 -1
  339. package/docs/isn0num.mjs.html +1 -1
  340. package/docs/isnan.mjs.html +1 -1
  341. package/docs/isnbr.mjs.html +1 -1
  342. package/docs/isnint.mjs.html +1 -1
  343. package/docs/isnnum.mjs.html +1 -1
  344. package/docs/isnull.mjs.html +1 -1
  345. package/docs/isnum.mjs.html +1 -1
  346. package/docs/isobj.mjs.html +1 -1
  347. package/docs/isobj0.mjs.html +1 -1
  348. package/docs/isp0int.mjs.html +1 -1
  349. package/docs/isp0num.mjs.html +1 -1
  350. package/docs/ispint.mjs.html +1 -1
  351. package/docs/ispm.mjs.html +1 -1
  352. package/docs/ispnum.mjs.html +1 -1
  353. package/docs/isstr.mjs.html +1 -1
  354. package/docs/isstr0.mjs.html +1 -1
  355. package/docs/istime.mjs.html +1 -1
  356. package/docs/istimeTZ.mjs.html +1 -1
  357. package/docs/istimems.mjs.html +1 -1
  358. package/docs/istimemsTZ.mjs.html +1 -1
  359. package/docs/isu16arr.mjs.html +1 -1
  360. package/docs/isu8arr.mjs.html +1 -1
  361. package/docs/isundefined.mjs.html +1 -1
  362. package/docs/j2o.mjs.html +1 -1
  363. package/docs/judge.mjs.html +1 -1
  364. package/docs/keysmat2ltdt.mjs.html +1 -1
  365. package/docs/ltdt2vrtsable.mjs.html +1 -1
  366. package/docs/ltdtDiff.mjs.html +1 -1
  367. package/docs/ltdtDiffByKey.mjs.html +1 -1
  368. package/docs/ltdtkeys2mat.mjs.html +1 -1
  369. package/docs/ltdtkeysheads2mat.mjs.html +1 -1
  370. package/docs/ltdtmapping.mjs.html +1 -1
  371. package/docs/ltdtmerge.mjs.html +1 -1
  372. package/docs/ltdtpick.mjs.html +1 -1
  373. package/docs/ltdtpull.mjs.html +1 -1
  374. package/docs/mat2ltdt.mjs.html +1 -1
  375. package/docs/matConcat.mjs.html +1 -1
  376. package/docs/matDiff.mjs.html +1 -1
  377. package/docs/matat.mjs.html +1 -1
  378. package/docs/now2str.mjs.html +1 -1
  379. package/docs/now2strp.mjs.html +1 -1
  380. package/docs/nowDay2str.mjs.html +1 -1
  381. package/docs/nowms2str.mjs.html +1 -1
  382. package/docs/nowms2strp.mjs.html +1 -1
  383. package/docs/o2j.mjs.html +1 -1
  384. package/docs/obj2b64.mjs.html +1 -1
  385. package/docs/obj2pb64.mjs.html +1 -1
  386. package/docs/obj2str.mjs.html +1 -1
  387. package/docs/obj2stru8arr.mjs.html +1 -1
  388. package/docs/obj2u8arr.mjs.html +1 -1
  389. package/docs/objSortBy.mjs.html +1 -1
  390. package/docs/objSortByKeys.mjs.html +1 -1
  391. package/docs/oo.mjs.html +1 -1
  392. package/docs/openLink.mjs.html +1 -1
  393. package/docs/pb642obj.mjs.html +1 -1
  394. package/docs/pmChain.mjs.html +1 -1
  395. package/docs/pmConvertResolve.mjs.html +1 -1
  396. package/docs/pmDebounce.mjs.html +1 -1
  397. package/docs/pmHook.mjs.html +1 -1
  398. package/docs/pmHookReject.mjs.html +1 -1
  399. package/docs/pmIni.mjs.html +1 -1
  400. package/docs/pmInvResolve.mjs.html +1 -1
  401. package/docs/pmKeyMutex.mjs.html +1 -1
  402. package/docs/pmMap.mjs.html +1 -1
  403. package/docs/pmQueue.mjs.html +1 -1
  404. package/docs/pmSeries.mjs.html +1 -1
  405. package/docs/pmThrottle.mjs.html +1 -1
  406. package/docs/pmTimeout.mjs.html +1 -1
  407. package/docs/preciseNum.mjs.html +1 -1
  408. package/docs/pseudoRandom.mjs.html +1 -1
  409. package/docs/pseudoRandomIntRange.mjs.html +1 -1
  410. package/docs/pseudoRandomIntsNdpRange.mjs.html +1 -1
  411. package/docs/pseudoRandomIntsRange.mjs.html +1 -1
  412. package/docs/pseudoRandomRange.mjs.html +1 -1
  413. package/docs/pseudoRandomsRange.mjs.html +1 -1
  414. package/docs/queue.mjs.html +1 -1
  415. package/docs/random.mjs.html +1 -1
  416. package/docs/randomIntRange.mjs.html +1 -1
  417. package/docs/randomIntsNdpRange.mjs.html +1 -1
  418. package/docs/randomIntsRange.mjs.html +1 -1
  419. package/docs/randomRange.mjs.html +1 -1
  420. package/docs/randomsRange.mjs.html +1 -1
  421. package/docs/rang.mjs.html +1 -1
  422. package/docs/rep.mjs.html +1 -1
  423. package/docs/repObj.mjs.html +1 -1
  424. package/docs/replace.mjs.html +1 -1
  425. package/docs/replaceObj.mjs.html +1 -1
  426. package/docs/replacePlus.mjs.html +1 -1
  427. package/docs/round.mjs.html +1 -1
  428. package/docs/secd.mjs.html +1 -1
  429. package/docs/sep.mjs.html +1 -1
  430. package/docs/sepInt.mjs.html +1 -1
  431. package/docs/setIntervalHp.mjs.html +1 -1
  432. package/docs/setTimeoutHp.mjs.html +1 -1
  433. package/docs/sind.mjs.html +1 -1
  434. package/docs/split.mjs.html +1 -1
  435. package/docs/str2aes.mjs.html +1 -1
  436. package/docs/str2b64.mjs.html +1 -1
  437. package/docs/str2hint.mjs.html +1 -1
  438. package/docs/str2md5.mjs.html +1 -1
  439. package/docs/str2obj.mjs.html +1 -1
  440. package/docs/str2sha.mjs.html +1 -1
  441. package/docs/str2sha512.mjs.html +1 -1
  442. package/docs/str2u8arr.mjs.html +1 -1
  443. package/docs/strCompare.mjs.html +1 -1
  444. package/docs/strCompareForVersion.mjs.html +1 -1
  445. package/docs/strDiff.mjs.html +1 -1
  446. package/docs/strDiffToHtml.mjs.html +1 -1
  447. package/docs/strFindFuzz.mjs.html +1 -1
  448. package/docs/strFindSimilar.mjs.html +1 -1
  449. package/docs/strTruncate.mjs.html +1 -1
  450. package/docs/strdelleft.mjs.html +1 -1
  451. package/docs/strdelright.mjs.html +1 -1
  452. package/docs/strleft.mjs.html +1 -1
  453. package/docs/strmid.mjs.html +1 -1
  454. package/docs/strright.mjs.html +1 -1
  455. package/docs/stru8arr2obj.mjs.html +1 -1
  456. package/docs/tand.mjs.html +1 -1
  457. package/docs/time2day.mjs.html +1 -1
  458. package/docs/time2hour.mjs.html +1 -1
  459. package/docs/time2min.mjs.html +1 -1
  460. package/docs/timeTZ2day.mjs.html +1 -1
  461. package/docs/timeTZ2expire.mjs.html +1 -1
  462. package/docs/timeTZ2hour.mjs.html +1 -1
  463. package/docs/timeTZ2min.mjs.html +1 -1
  464. package/docs/timeTZ2past.mjs.html +1 -1
  465. package/docs/timems2day.mjs.html +1 -1
  466. package/docs/timems2hour.mjs.html +1 -1
  467. package/docs/timems2min.mjs.html +1 -1
  468. package/docs/timems2time.mjs.html +1 -1
  469. package/docs/timemsTZ2day.mjs.html +1 -1
  470. package/docs/timemsTZ2expire.mjs.html +1 -1
  471. package/docs/timemsTZ2hour.mjs.html +1 -1
  472. package/docs/timemsTZ2min.mjs.html +1 -1
  473. package/docs/timemsTZ2past.mjs.html +1 -1
  474. package/docs/timemsTZ2time.mjs.html +1 -1
  475. package/docs/treeObj.mjs.html +1 -1
  476. package/docs/treeToFilepath.mjs.html +1 -1
  477. package/docs/trim.mjs.html +1 -1
  478. package/docs/u16arr2b64.mjs.html +1 -1
  479. package/docs/u16arr2u8arr.mjs.html +1 -1
  480. package/docs/u8arr2ab.mjs.html +1 -1
  481. package/docs/u8arr2b64.mjs.html +1 -1
  482. package/docs/u8arr2blob.mjs.html +1 -1
  483. package/docs/u8arr2bs.mjs.html +1 -1
  484. package/docs/u8arr2obj.mjs.html +1 -1
  485. package/docs/u8arr2str.mjs.html +1 -1
  486. package/docs/u8arr2u16arr.mjs.html +1 -1
  487. package/docs/urlParse.mjs.html +1 -1
  488. package/docs/verifyValue.mjs.html +1 -1
  489. package/docs/waitFun.mjs.html +1 -1
  490. package/docs/wsemi.html +24 -23
  491. package/package.json +2 -2
  492. package/script.txt +1 -1
  493. package/src/_execSpawnError.mjs +41 -0
  494. package/src/alive.mjs +105 -4
  495. package/src/cache.mjs +2 -2
  496. package/src/cacheSt.mjs +1 -1
  497. package/src/evEmit.mjs +1 -1
  498. package/src/execCli.mjs +66 -32
  499. package/src/execCliCore.mjs +3 -0
  500. package/src/execCliJsonRpc.mjs +2 -2
  501. package/src/execCliSession.mjs +23 -11
  502. package/src/execProcess.mjs +57 -34
  503. package/src/execProcessKillPid.mjs +4 -2
  504. package/test/_execSpawnError.test.mjs +81 -0
  505. package/test/alive.test.mjs +201 -0
  506. package/test/cache.test.mjs +26 -0
  507. package/test/cacheSt.test.mjs +40 -0
  508. package/test/execCli.test.mjs +95 -0
  509. package/test/execCliJsonRpc.test.mjs +27 -0
  510. package/test/execCliSession.test.mjs +82 -0
  511. package/test/execProcess.test.mjs +135 -3
  512. package/test/execProcessKillPid.test.mjs +34 -0
  513. package/test/tools/spawnEmfileRunner.mjs +55 -0
  514. package/toolfp/dist/wsemip.umd.js +1 -1
  515. package/toolparfor/dist/wpf.umd.js +1 -1
  516. 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同步拋錯(如參數無效EINVAL)
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: `${err.code || 'UNKNOWN'}: ${err.message}` }) //待確認用err.toString()還是err.message更佳 bbb
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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>
@@ -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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 isearr from './isearr.mjs'
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回傳錯誤訊息,離開碼非0時為`code[N]:\n訊息`,逾時為`timeout[Nms]:\n訊息`
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) &amp;&amp; !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) &amp;&amp; !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
- pm.reject(err)
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.on('data', onData('out', decOut, cbStdout))
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.on('data', onData('err', decErr, cbStderr))
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
- pm.reject(err)
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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回傳成功訊息,reject回傳錯誤訊息
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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>
@@ -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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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>
@@ -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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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>
@@ -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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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 Mon Oct 12 2026 12:18:17 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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>