wsemi 1.9.19 → 1.9.21
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 +5 -5
- 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/-_errToStr.mjs.html +1 -1
- package/docs/-_execThrownMsg.mjs.html +1 -1
- package/docs/-_isRealError.mjs.html +1 -1
- package/docs/-_optNum.mjs.html +1 -1
- package/docs/-_pmMarkHandled.mjs.html +1 -1
- package/docs/-_pmReadItems.mjs.html +1 -1
- package/docs/-_pmSettleByState.mjs.html +1 -1
- package/docs/-_realErrorToStr.mjs.html +1 -1
- package/docs/-_toResultError.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 +1 -1
- 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 +1 -1
- package/docs/cacheBd.mjs.html +1 -1
- package/docs/cacheSt.mjs.html +1 -1
- 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/cvOrmFind.mjs.html +161 -23
- 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 +1 -1
- 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 +1 -1
- package/docs/execCliCore.mjs.html +1 -1
- package/docs/execCliJsonRpc.mjs.html +1 -1
- package/docs/execCliSession.mjs.html +1 -1
- package/docs/execJsCode.mjs.html +1 -1
- package/docs/execProcess.mjs.html +1 -1
- package/docs/execProcessKillPid.mjs.html +1 -1
- 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 +1 -1
- 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 +5 -5
- package/package.json +2 -2
- package/src/_cvOrmFindCases.mjs +16 -0
- package/src/cvOrmFind.mjs +160 -22
- package/test/cvOrmFind.test.mjs +666 -17
- package/test/tools/cvOrmFindRunner.mjs +7 -1
- 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
package/docs/cvOrmFind.mjs.html
CHANGED
|
@@ -61,12 +61,17 @@
|
|
|
61
61
|
//預設上限, opt只可下調
|
|
62
62
|
let DEF = { maxDepth: 32, maxList: 1000, maxIn: 10000, maxNodes: 100000, maxKey: 128 }
|
|
63
63
|
|
|
64
|
+
//結構化複製對重複出現之字串每次皆寫出並讀回, 記憶體與(字串總長 x 出現次數)成正比(同一字串被引用一萬次即放大一萬倍),
|
|
65
|
+
//走訪時累計字串碼元總長(含重複), 逾此門檻不複製而改走探針(探針成本與物件數成正比、與字串長度無關)
|
|
66
|
+
let CLONE_MAX_CHARS = 4000000
|
|
67
|
+
|
|
64
68
|
//內建函數(模組載入時取得, 不受其後之全域汙染影響)
|
|
65
69
|
let ownKeys = Reflect.ownKeys
|
|
66
70
|
let getDesc = Object.getOwnPropertyDescriptor
|
|
67
71
|
let getProto = Object.getPrototypeOf
|
|
68
72
|
let defProp = Object.defineProperty
|
|
69
73
|
let create = Object.create
|
|
74
|
+
let setProto = Object.setPrototypeOf
|
|
70
75
|
let isArray = Array.isArray
|
|
71
76
|
let isInt = Number.isInteger
|
|
72
77
|
let isFin = Number.isFinite
|
|
@@ -90,7 +95,7 @@ let toStr = String
|
|
|
90
95
|
//內部槽之品牌檢查: Map、Set、Promise等之標籤取自其原型之Symbol.toStringTag, 原型被改為null或Object.prototype後
|
|
91
96
|
//Object.prototype.toString回[object Object]而判為一般物件. TypedArray之標籤getter對非TypedArray回傳undefined(不拋錯),
|
|
92
97
|
//可於每個物件檢查(其自有索引鍵之數量與元素數成正比, 須在列舉自有鍵之前擋下); 其餘以品牌方法對非該型別拋錯判定,
|
|
93
|
-
|
|
98
|
+
//每次拋錯約3us, 逐物件探測於常見輸入慢約29倍至100倍, 故走訪完畢後先以一次結構化複製證明無品牌物件, 證明不成立才逐物件探針(規則16)
|
|
94
99
|
let taTag = call.bind(getDesc(getProto(Uint8Array.prototype), Symbol.toStringTag).get)
|
|
95
100
|
let probeKey = {}
|
|
96
101
|
let noop = () => {}
|
|
@@ -98,7 +103,7 @@ let mapHas = call.bind(Map.prototype.has)
|
|
|
98
103
|
let setHas = call.bind(Set.prototype.has)
|
|
99
104
|
let weakMapHas = call.bind(WeakMap.prototype.has)
|
|
100
105
|
let abLength = call.bind(getDesc(ArrayBuffer.prototype, 'byteLength').get)
|
|
101
|
-
let
|
|
106
|
+
let dvBuffer = call.bind(getDesc(DataView.prototype, 'buffer').get) //不用byteLength: detached或越界之DataView其byteLength getter亦拋錯而被誤判為非DataView, buffer getter不受影響
|
|
102
107
|
let symValueOf = call.bind(Symbol.prototype.valueOf)
|
|
103
108
|
let promiseThen = call.bind(Promise.prototype.then)
|
|
104
109
|
let probes = [
|
|
@@ -107,7 +112,7 @@ let probes = [
|
|
|
107
112
|
(v) => weakMapHas(v, probeKey),
|
|
108
113
|
(v) => oursHas(v, probeKey),
|
|
109
114
|
(v) => abLength(v),
|
|
110
|
-
(v) =>
|
|
115
|
+
(v) => dvBuffer(v),
|
|
111
116
|
(v) => symValueOf(v),
|
|
112
117
|
(v) => promiseThen(v, noop, noop), //兩個處理器皆給, 使真Promise衍生之Promise不致產生未處理之rejection
|
|
113
118
|
]
|
|
@@ -119,11 +124,71 @@ if (typeof WeakRef === 'function') {
|
|
|
119
124
|
let deref = call.bind(WeakRef.prototype.deref)
|
|
120
125
|
probes[probes.length] = (v) => deref(v)
|
|
121
126
|
}
|
|
127
|
+
if (typeof FinalizationRegistry === 'function') {
|
|
128
|
+
let frUnregister = call.bind(FinalizationRegistry.prototype.unregister)
|
|
129
|
+
probes[probes.length] = (v) => frUnregister(v, probeKey) //token為物件故不拋錯(回false), 非FinalizationRegistry則拋錯
|
|
130
|
+
}
|
|
122
131
|
if (typeof BigInt === 'function') {
|
|
123
132
|
let bigValueOf = call.bind(BigInt.prototype.valueOf)
|
|
124
133
|
probes[probes.length] = (v) => bigValueOf(v)
|
|
125
134
|
}
|
|
126
135
|
|
|
136
|
+
//sClone, 結構化複製(Web標準全域, 非Node API; 規則16): 用於證明條件物件中無品牌物件, 不可用時為null(改走精確探針).
|
|
137
|
+
//載入時自檢: 對Proxy須拋錯(Proxy無內部槽, 不拋錯者表示會經陷阱讀取, 不可用)、Map複製後仍為Map、{}複製後為標籤[object Object]且原型為
|
|
138
|
+
//有效之Object.prototype(自身無原型、含hasOwnProperty); 原型取複製函數所屬領域者(cloneProto), 使jest等以vm分領域、
|
|
139
|
+
//全域函數來自外層領域之環境仍可用(複本之原型為外層領域之Object.prototype), 而複本原型為null或他物者視為不可用
|
|
140
|
+
let sClone = null
|
|
141
|
+
let cloneProto = null
|
|
142
|
+
if (typeof structuredClone === 'function') {
|
|
143
|
+
try {
|
|
144
|
+
let f = structuredClone
|
|
145
|
+
let throwsOnProxy = false
|
|
146
|
+
try {
|
|
147
|
+
f(new Proxy({}, {}))
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
throwsOnProxy = true
|
|
151
|
+
}
|
|
152
|
+
let e = f({})
|
|
153
|
+
let p = getProto(e)
|
|
154
|
+
if (throwsOnProxy && toTag(f(new Map())) === '[object Map]' && toTag(e) === '[object Object]' && ownKeys(e).length === 0 && p !== null && getProto(p) === null && hasOwn(p, 'hasOwnProperty') && getProto(f({ a: 1 })) === p) {
|
|
155
|
+
//品牌樣本(原型改為null): 複製須拋錯或複本不再是一般物件(原型不為p); 否則此實作不能用來證明無品牌物件
|
|
156
|
+
let good = true
|
|
157
|
+
let samples = [() => new Map(), () => new Set(), () => new WeakMap(), () => new WeakSet(), () => Promise.resolve(0), () => new ArrayBuffer(1), () => new DataView(new ArrayBuffer(1)), () => Object(Symbol('s'))]
|
|
158
|
+
if (typeof SharedArrayBuffer === 'function') {
|
|
159
|
+
samples[samples.length] = () => new SharedArrayBuffer(1)
|
|
160
|
+
}
|
|
161
|
+
if (typeof WeakRef === 'function') {
|
|
162
|
+
samples[samples.length] = () => new WeakRef(probeKey)
|
|
163
|
+
}
|
|
164
|
+
if (typeof FinalizationRegistry === 'function') {
|
|
165
|
+
samples[samples.length] = () => new FinalizationRegistry(noop)
|
|
166
|
+
}
|
|
167
|
+
if (typeof BigInt === 'function') {
|
|
168
|
+
samples[samples.length] = () => Object(BigInt(1))
|
|
169
|
+
}
|
|
170
|
+
for (let i = 0; i < samples.length && good; i++) {
|
|
171
|
+
let o = setProto(samples[i](), null)
|
|
172
|
+
try {
|
|
173
|
+
if (getProto(f(o)) === p) {
|
|
174
|
+
good = false
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (err) {
|
|
178
|
+
//拋錯: 符合
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
if (good) {
|
|
182
|
+
sClone = f
|
|
183
|
+
cloneProto = p
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
//不可用, 走精確探針
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
127
192
|
//原因詞彙(單一出處; 案例表src/_cvOrmFindCases.mjs之why為其子字串)
|
|
128
193
|
let R = {
|
|
129
194
|
plain: 'condition must be a plain object',
|
|
@@ -149,6 +214,7 @@ let R = {
|
|
|
149
214
|
deep: 'nesting is too deep',
|
|
150
215
|
big: 'condition is too large',
|
|
151
216
|
exc: 'an exception was thrown while reading the condition',
|
|
217
|
+
emptyOdd: 'an empty find must be an ordinary object',
|
|
152
218
|
}
|
|
153
219
|
|
|
154
220
|
//欄名文法: 字母或底線開頭, 其後字母/組合附加符號/數字/底線
|
|
@@ -274,11 +340,74 @@ let hasSlot = (v) => {
|
|
|
274
340
|
return false
|
|
275
341
|
}
|
|
276
342
|
|
|
277
|
-
//
|
|
278
|
-
|
|
343
|
+
//cloneIsPlain, 對走訪時記錄之條件物件(c.ob: 實際讀過並接受之物件本身, 不是走訪後才可能被呼叫端陷阱改動之find可達樹)做一次結構化複製
|
|
344
|
+
//(規則16): 成功且每個複本之原型皆為複製函數所屬領域之Object.prototype(只看原型身分, 不看標籤: 複本由引擎產生, 標籤可被全域汙染改變),
|
|
345
|
+
//即證明這些物件皆非品牌物件(Map、Set、ArrayBuffer、DataView、BigInt包裝等複製後仍為原品牌, 原型為其內建原型; 其下層條件物件皆各自在記錄內, 故只需逐筆淺檢).
|
|
346
|
+
//不可複製之物件(Proxy、WeakMap、Promise、WeakRef、Symbol包裝、FinalizationRegistry等)使其拋錯而回false, 改走精確探針
|
|
347
|
+
let cloneIsPlain = (ob, n) => {
|
|
348
|
+
if (sClone === null) {
|
|
349
|
+
return false
|
|
350
|
+
}
|
|
351
|
+
try {
|
|
352
|
+
let cl = sClone(ob)
|
|
353
|
+
for (let i = 0; i < n; i++) {
|
|
354
|
+
if (getProto(cl[i]) !== cloneProto) {
|
|
355
|
+
return false
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return true
|
|
359
|
+
}
|
|
360
|
+
catch (err) {
|
|
361
|
+
return false
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
//emptyCloneOk, 頂層空物件(語意為「全部」)是否可證明為真實空物件: 結構化複製成功且複本為一般空物件
|
|
366
|
+
//(複本可為空物件者仍可能是含私有欄位之類別實例或宿主物件改原型為null之結果, 純JS無法辨別, 見已知限制⑤)
|
|
367
|
+
let emptyCloneOk = (v) => {
|
|
368
|
+
if (sClone === null) {
|
|
369
|
+
return false
|
|
370
|
+
}
|
|
371
|
+
try {
|
|
372
|
+
let cl = sClone(v)
|
|
373
|
+
return getProto(cl) === cloneProto && ownKeys(cl).length === 0
|
|
374
|
+
}
|
|
375
|
+
catch (err) {
|
|
376
|
+
return false
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
//track, 記錄通過一般物件判定之非空條件物件、其路徑與是否為欄位運算子物件, 供走訪完畢後之品牌檢查使用;
|
|
381
|
+
//記錄陣列為null原型(直接指派不查找Array.prototype之索引setter, 不受汙染; 比defineProperty快約45倍)
|
|
382
|
+
let track = (c, obj, ops) => {
|
|
383
|
+
let n = c.nt
|
|
384
|
+
c.ob[n] = obj
|
|
385
|
+
c.pa[n] = c.path
|
|
386
|
+
c.op[n] = ops
|
|
387
|
+
c.nt = n + 1
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
//chkSlots, 走訪完畢後檢查所有被記錄之條件物件皆非內建品牌物件: 先以一次結構化複製證明, 證明不成立才依走訪順序逐物件探針, 命中者以其路徑reject
|
|
391
|
+
let chkSlots = (c) => {
|
|
392
|
+
let n = c.nt
|
|
393
|
+
if (n === 0 || (c.chars <= CLONE_MAX_CHARS && cloneIsPlain(c.ob, n))) {
|
|
394
|
+
return
|
|
395
|
+
}
|
|
396
|
+
for (let i = 0; i < n; i++) {
|
|
397
|
+
if (hasSlot(c.ob[i])) {
|
|
398
|
+
c.path = c.pa[i]
|
|
399
|
+
fail(c.op[i] ? `${R.type} [object]` : `${R.plain}, got [object]`)
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
//readProp, 讀物件之自有屬性值(僅讀一次, 以屬性描述子): 拒絕Symbol鍵(無法安全顯示, 報所屬物件之路徑)、不可列舉、存取器;
|
|
405
|
+
//路徑先推進至該屬性鍵, 描述子陷阱拋錯與存取器等失敗皆報至該鍵(由呼叫端於處理完該屬性後退回)
|
|
406
|
+
let readProp = (c, obj, k) => {
|
|
279
407
|
if (typeof k !== 'string') {
|
|
280
408
|
fail(R.sym)
|
|
281
409
|
}
|
|
410
|
+
c.path = { up: c.path, k }
|
|
282
411
|
let d = getDesc(obj, k)
|
|
283
412
|
if (d === undefined || !d.enumerable) {
|
|
284
413
|
fail(R.nonEnumProp)
|
|
@@ -298,18 +427,19 @@ let readLen = (arr) => {
|
|
|
298
427
|
return n
|
|
299
428
|
}
|
|
300
429
|
|
|
301
|
-
//readElem, 讀陣列元素(僅讀一次, 以屬性描述子):
|
|
430
|
+
//readElem, 讀陣列元素(僅讀一次, 以屬性描述子): 路徑先推進至該元素(由呼叫端於處理完該元素後退回),
|
|
431
|
+
//描述子陷阱拋錯、不可列舉與存取器皆報至元素索引; 洞無元素可指, 退回而於陣列路徑報告
|
|
302
432
|
let readElem = (c, arr, i) => {
|
|
433
|
+
c.path = { up: c.path, k: i }
|
|
303
434
|
let d = getDesc(arr, i)
|
|
304
435
|
if (d === undefined) {
|
|
436
|
+
c.path = c.path.up
|
|
305
437
|
fail(`sparse array hole at index ${i}`)
|
|
306
438
|
}
|
|
307
439
|
if (!d.enumerable) {
|
|
308
|
-
c.path = { up: c.path, k: i }
|
|
309
440
|
fail(R.nonEnumEl)
|
|
310
441
|
}
|
|
311
442
|
if (!hasOwn(d, 'value')) {
|
|
312
|
-
c.path = { up: c.path, k: i }
|
|
313
443
|
fail(R.accEl)
|
|
314
444
|
}
|
|
315
445
|
return d.value
|
|
@@ -368,6 +498,7 @@ let scalar = (c, v, allowNull) => {
|
|
|
368
498
|
switch (typeof v) {
|
|
369
499
|
case 'string':
|
|
370
500
|
chkStr(v)
|
|
501
|
+
c.chars += v.length
|
|
371
502
|
return v
|
|
372
503
|
case 'number':
|
|
373
504
|
if (!isFin(v)) {
|
|
@@ -418,7 +549,6 @@ let chkSet = (c, op, arr) => {
|
|
|
418
549
|
let out = []
|
|
419
550
|
for (let i = 0; i < n; i++) {
|
|
420
551
|
let v = readElem(c, arr, i)
|
|
421
|
-
c.path = { up: c.path, k: i }
|
|
422
552
|
put(out, i, scalar(c, v, false))
|
|
423
553
|
c.path = c.path.up
|
|
424
554
|
}
|
|
@@ -437,11 +567,11 @@ let chkOps = (c, obj) => {
|
|
|
437
567
|
if (n === 0) {
|
|
438
568
|
fail(R.emptyOp)
|
|
439
569
|
}
|
|
570
|
+
track(c, obj, true)
|
|
440
571
|
let out = create(null)
|
|
441
572
|
for (let i = 0; i < n; i++) {
|
|
442
573
|
let k = keys[i]
|
|
443
|
-
let v = readProp(obj, k)
|
|
444
|
-
c.path = { up: c.path, k }
|
|
574
|
+
let v = readProp(c, obj, k)
|
|
445
575
|
switch (k) {
|
|
446
576
|
case '$eq':
|
|
447
577
|
case '$ne':
|
|
@@ -503,7 +633,6 @@ let chkList = (c, op, arr, depth) => {
|
|
|
503
633
|
let out = []
|
|
504
634
|
for (let i = 0; i < n; i++) {
|
|
505
635
|
let v = readElem(c, arr, i)
|
|
506
|
-
c.path = { up: c.path, k: i }
|
|
507
636
|
put(out, i, chkDoc(c, v, depth, false))
|
|
508
637
|
c.path = c.path.up
|
|
509
638
|
}
|
|
@@ -524,19 +653,25 @@ let chkDoc = (c, obj, depth, top) => {
|
|
|
524
653
|
let n = keys.length
|
|
525
654
|
if (n === 0) {
|
|
526
655
|
if (top) {
|
|
527
|
-
//頂層空物件代表「全部」,
|
|
528
|
-
|
|
529
|
-
|
|
656
|
+
//頂層空物件代表「全部」, 誤判代價最大: 須可證明為真實空物件(規則16), 排除原型被改為null或Object.prototype之Map、Set等
|
|
657
|
+
//(其標籤被誤判為一般物件)與Proxy、不可複製之宿主物件; 無可用結構化複製之環境只能以探針辨品牌物件
|
|
658
|
+
if (!emptyCloneOk(obj)) {
|
|
659
|
+
if (hasSlot(obj)) {
|
|
660
|
+
fail(`${R.plain}, got [object]`)
|
|
661
|
+
}
|
|
662
|
+
if (sClone !== null) {
|
|
663
|
+
fail(R.emptyOdd)
|
|
664
|
+
}
|
|
530
665
|
}
|
|
531
666
|
return create(null)
|
|
532
667
|
}
|
|
533
668
|
fail(R.emptyDoc)
|
|
534
669
|
}
|
|
670
|
+
track(c, obj, false)
|
|
535
671
|
let out = create(null)
|
|
536
672
|
for (let i = 0; i < n; i++) {
|
|
537
673
|
let k = keys[i]
|
|
538
|
-
let v = readProp(obj, k)
|
|
539
|
-
c.path = { up: c.path, k }
|
|
674
|
+
let v = readProp(c, obj, k)
|
|
540
675
|
if (k === '$and' || k === '$or') {
|
|
541
676
|
put(out, k, chkList(c, k, v, depth + 1))
|
|
542
677
|
}
|
|
@@ -609,7 +744,7 @@ let getLimits = (opt) => {
|
|
|
609
744
|
*
|
|
610
745
|
* 白名單:
|
|
611
746
|
*
|
|
612
|
-
* 1. 頂層與每層條件物件須為一般物件(原型為Object.prototype或null),null、陣列、字串、數值、布林、函數、Date、RegExp、Map、Set、類別實例等一律reject,不得視同{};原型被改為null或Object.prototype之Map、Set、Promise、ArrayBuffer、DataView、TypedArray
|
|
747
|
+
* 1. 頂層與每層條件物件須為一般物件(原型為Object.prototype或null),null、陣列、字串、數值、布林、函數、Date、RegExp、Map、Set、類別實例等一律reject,不得視同{};原型被改為null或Object.prototype之Map、Set、WeakMap、WeakSet、Promise、ArrayBuffer、DataView、TypedArray、Symbol與BigInt包裝、WeakRef、FinalizationRegistry等內建品牌物件,於任何位置(頂層、欄位運算子物件、$and/$or元素,空或帶自有鍵)亦reject;頂層空物件(代表全部)須可證明為真實空物件,Proxy與不可複製之宿主物件不視為全部
|
|
613
748
|
*
|
|
614
749
|
* 2. 欄位等值{欄: 純量},多欄隱含AND;純量為字串、有限數字(含-0)、布林、有效Date,字串不得含NUL與孤立代理字元;null僅可用於欄位等值、$eq、$ne
|
|
615
750
|
*
|
|
@@ -625,9 +760,9 @@ let getLimits = (opt) => {
|
|
|
625
760
|
*
|
|
626
761
|
* 8. 上限(opt只可下調,不可放寬):邏輯巢狀深度32、$and/$or長度1000、$in/$nin長度10000、節點總數100000(條件物件、運算子物件、純量各計1)、欄名128
|
|
627
762
|
*
|
|
628
|
-
* 錯誤一律為同步拋出之Error('invalid find: 原因 at [路徑]'),不回顯值(鍵名為路徑之一部分,限30字元並以?取代控制字元、格式字元與方括號);走訪中任何例外(含呼叫端之getter、Proxy陷阱、Symbol.toStringTag getter)
|
|
763
|
+
* 錯誤一律為同步拋出之Error('invalid find: 原因 at [路徑]'),不回顯值(鍵名為路徑之一部分,限30字元並以?取代控制字元、格式字元與方括號);走訪中任何例外(含呼叫端之getter、Proxy陷阱、Symbol.toStringTag getter)一律轉為此格式,不轉述呼叫端之錯誤訊息,描述子陷阱拋錯、存取器與不可列舉屬性之路徑含該屬性鍵或元素索引;可重入。opt須為物件、null或未給,僅可含下列五個鍵(自有資料屬性),設定錯誤另拋Error('invalid opt: 原因')。
|
|
629
764
|
*
|
|
630
|
-
* 已知限制:判定內部標籤須讀Symbol.toStringTag,可能執行呼叫端之Proxy陷阱或getter(例外一律轉為invalid find)
|
|
765
|
+
* 已知限制:判定內部標籤須讀Symbol.toStringTag,可能執行呼叫端之Proxy陷阱或getter(例外一律轉為invalid find);Proxy無法穿透,非空位置之Proxy包住原型被改之品牌物件視同其經陷阱暴露之條件物件;無法觀察品牌者(含私有欄位之類別實例與AbortController等宿主物件改原型為null、自有鍵為純量constructor之Promise)不被辨出;品牌檢查先以一次結構化複製(structuredClone)證明被記錄之條件物件皆非品牌物件,環境無可用之該全域、字串總長逾400萬碼元或樹內含Proxy時改逐物件探針(每物件約50微秒,含Proxy之近節點上限輸入可達數秒),且無可用之該全域時無法辨出空Proxy;被判為品牌物件而reject者,其內部資料(Map/Set之項目、ArrayBuffer之位元組)可能被複製讀取一次,成本不受節點預算約束;Proxy之ownKeys結果於引擎內先被完整具現化,其成本不受節點預算約束;共享參照(同一物件出現於多處)每出現一次即各讀各檢各複製,節點數亦逐次計入
|
|
631
766
|
*
|
|
632
767
|
* 後端專屬之檢核(欄位型別、欄是否存在、主鍵正規化、DATE範圍、NULL三值語意)不在此,由各後端於本函數之後自行處理;契約案例表見wsemi/src/_cvOrmFindCases.mjs。
|
|
633
768
|
*
|
|
@@ -677,13 +812,16 @@ function cvOrmFind(find, opt) {
|
|
|
677
812
|
let lim = getLimits(opt)
|
|
678
813
|
|
|
679
814
|
//c, 單次呼叫之狀態(無模組層可變狀態)
|
|
680
|
-
|
|
815
|
+
//ob/pa/op/nt為走訪中記錄之條件物件、其路徑、是否運算子物件與筆數, 供走訪完畢後之品牌檢查使用
|
|
816
|
+
let c = { nodes: 0, path: null, maxDepth: lim.maxDepth, maxList: lim.maxList, maxIn: lim.maxIn, maxNodes: lim.maxNodes, maxKey: lim.maxKey, chars: 0, ob: setProto([], null), pa: setProto([], null), op: setProto([], null), nt: 0 }
|
|
681
817
|
|
|
682
818
|
try {
|
|
683
819
|
if (find === undefined) {
|
|
684
820
|
return create(null)
|
|
685
821
|
}
|
|
686
|
-
|
|
822
|
+
let out = chkDoc(c, find, 0, true)
|
|
823
|
+
chkSlots(c)
|
|
824
|
+
return out
|
|
687
825
|
}
|
|
688
826
|
catch (err) {
|
|
689
827
|
//本模組之失敗取其原因詞彙, 其餘例外(呼叫端之getter、Proxy陷阱等)一律為固定原因, 不轉述其訊息
|
|
@@ -709,7 +847,7 @@ export default cvOrmFind
|
|
|
709
847
|
<br class="clear">
|
|
710
848
|
|
|
711
849
|
<footer>
|
|
712
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
850
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
713
851
|
</footer>
|
|
714
852
|
|
|
715
853
|
<script>prettyPrint();</script>
|
package/docs/day2cht.mjs.html
CHANGED
|
@@ -98,7 +98,7 @@ export default day2cht
|
|
|
98
98
|
<br class="clear">
|
|
99
99
|
|
|
100
100
|
<footer>
|
|
101
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
101
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
102
102
|
</footer>
|
|
103
103
|
|
|
104
104
|
<script>prettyPrint();</script>
|
package/docs/debounce.mjs.html
CHANGED
|
@@ -263,7 +263,7 @@ export default debounce
|
|
|
263
263
|
<br class="clear">
|
|
264
264
|
|
|
265
265
|
<footer>
|
|
266
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
266
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
267
267
|
</footer>
|
|
268
268
|
|
|
269
269
|
<script>prettyPrint();</script>
|
package/docs/delay.mjs.html
CHANGED
|
@@ -95,7 +95,7 @@ export default delay
|
|
|
95
95
|
<br class="clear">
|
|
96
96
|
|
|
97
97
|
<footer>
|
|
98
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
98
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
99
99
|
</footer>
|
|
100
100
|
|
|
101
101
|
<script>prettyPrint();</script>
|
package/docs/detectXSS.mjs.html
CHANGED
|
@@ -245,7 +245,7 @@ export default detectXSS
|
|
|
245
245
|
<br class="clear">
|
|
246
246
|
|
|
247
247
|
<footer>
|
|
248
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
248
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
249
249
|
</footer>
|
|
250
250
|
|
|
251
251
|
<script>prettyPrint();</script>
|
|
@@ -107,7 +107,7 @@ export default detectXSSDyn
|
|
|
107
107
|
<br class="clear">
|
|
108
108
|
|
|
109
109
|
<footer>
|
|
110
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
110
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
111
111
|
</footer>
|
|
112
112
|
|
|
113
113
|
<script>prettyPrint();</script>
|
package/docs/dig.mjs.html
CHANGED
|
@@ -104,7 +104,7 @@ export default dig
|
|
|
104
104
|
<br class="clear">
|
|
105
105
|
|
|
106
106
|
<footer>
|
|
107
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
107
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
108
108
|
</footer>
|
|
109
109
|
|
|
110
110
|
<script>prettyPrint();</script>
|
package/docs/digExp.mjs.html
CHANGED
|
@@ -108,7 +108,7 @@ export default digExp
|
|
|
108
108
|
<br class="clear">
|
|
109
109
|
|
|
110
110
|
<footer>
|
|
111
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
111
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
112
112
|
</footer>
|
|
113
113
|
|
|
114
114
|
<script>prettyPrint();</script>
|
package/docs/domAlert.mjs.html
CHANGED
|
@@ -452,7 +452,7 @@ export default domAlert
|
|
|
452
452
|
<br class="clear">
|
|
453
453
|
|
|
454
454
|
<footer>
|
|
455
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
455
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
456
456
|
</footer>
|
|
457
457
|
|
|
458
458
|
<script>prettyPrint();</script>
|
package/docs/domAppend.mjs.html
CHANGED
|
@@ -98,7 +98,7 @@ export default domAppend
|
|
|
98
98
|
<br class="clear">
|
|
99
99
|
|
|
100
100
|
<footer>
|
|
101
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
101
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
102
102
|
</footer>
|
|
103
103
|
|
|
104
104
|
<script>prettyPrint();</script>
|
|
@@ -104,7 +104,7 @@ export default domCancelEvent
|
|
|
104
104
|
<br class="clear">
|
|
105
105
|
|
|
106
106
|
<footer>
|
|
107
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
107
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
108
108
|
</footer>
|
|
109
109
|
|
|
110
110
|
<script>prettyPrint();</script>
|
|
@@ -179,7 +179,7 @@ export default domCompareText
|
|
|
179
179
|
<br class="clear">
|
|
180
180
|
|
|
181
181
|
<footer>
|
|
182
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
182
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
183
183
|
</footer>
|
|
184
184
|
|
|
185
185
|
<script>prettyPrint();</script>
|
|
@@ -174,7 +174,7 @@ export default domConvertToPic
|
|
|
174
174
|
<br class="clear">
|
|
175
175
|
|
|
176
176
|
<footer>
|
|
177
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
177
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
178
178
|
</footer>
|
|
179
179
|
|
|
180
180
|
<script>prettyPrint();</script>
|
|
@@ -96,7 +96,7 @@ export default domConvertToPicDyn
|
|
|
96
96
|
<br class="clear">
|
|
97
97
|
|
|
98
98
|
<footer>
|
|
99
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
99
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
100
100
|
</footer>
|
|
101
101
|
|
|
102
102
|
<script>prettyPrint();</script>
|
package/docs/domDetect.mjs.html
CHANGED
|
@@ -810,7 +810,7 @@ export default domDetect
|
|
|
810
810
|
<br class="clear">
|
|
811
811
|
|
|
812
812
|
<footer>
|
|
813
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
813
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
814
814
|
</footer>
|
|
815
815
|
|
|
816
816
|
<script>prettyPrint();</script>
|
package/docs/domDrag.mjs.html
CHANGED
|
@@ -818,7 +818,7 @@ export default domDrag
|
|
|
818
818
|
<br class="clear">
|
|
819
819
|
|
|
820
820
|
<footer>
|
|
821
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
821
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
822
822
|
</footer>
|
|
823
823
|
|
|
824
824
|
<script>prettyPrint();</script>
|
|
@@ -346,7 +346,7 @@ export default domDragBarAndScroll
|
|
|
346
346
|
<br class="clear">
|
|
347
347
|
|
|
348
348
|
<footer>
|
|
349
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
349
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
350
350
|
</footer>
|
|
351
351
|
|
|
352
352
|
<script>prettyPrint();</script>
|
|
@@ -433,7 +433,7 @@ export default domDragPointer
|
|
|
433
433
|
<br class="clear">
|
|
434
434
|
|
|
435
435
|
<footer>
|
|
436
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
436
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
437
437
|
</footer>
|
|
438
438
|
|
|
439
439
|
<script>prettyPrint();</script>
|
|
@@ -372,7 +372,7 @@ export default domDragPreview
|
|
|
372
372
|
<br class="clear">
|
|
373
373
|
|
|
374
374
|
<footer>
|
|
375
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
375
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
376
376
|
</footer>
|
|
377
377
|
|
|
378
378
|
<script>prettyPrint();</script>
|
|
@@ -325,7 +325,7 @@ export default domDropFiles
|
|
|
325
325
|
<br class="clear">
|
|
326
326
|
|
|
327
327
|
<footer>
|
|
328
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
328
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
329
329
|
</footer>
|
|
330
330
|
|
|
331
331
|
<script>prettyPrint();</script>
|
|
@@ -90,7 +90,7 @@ export default domElementsFromPoint
|
|
|
90
90
|
<br class="clear">
|
|
91
91
|
|
|
92
92
|
<footer>
|
|
93
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
93
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
94
94
|
</footer>
|
|
95
95
|
|
|
96
96
|
<script>prettyPrint();</script>
|
package/docs/domFadeIn.mjs.html
CHANGED
|
@@ -165,7 +165,7 @@ export default domFadeIn
|
|
|
165
165
|
<br class="clear">
|
|
166
166
|
|
|
167
167
|
<footer>
|
|
168
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
168
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
169
169
|
</footer>
|
|
170
170
|
|
|
171
171
|
<script>prettyPrint();</script>
|
package/docs/domFadeOut.mjs.html
CHANGED
|
@@ -165,7 +165,7 @@ export default domFadeOut
|
|
|
165
165
|
<br class="clear">
|
|
166
166
|
|
|
167
167
|
<footer>
|
|
168
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
168
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
169
169
|
</footer>
|
|
170
170
|
|
|
171
171
|
<script>prettyPrint();</script>
|
package/docs/domFind.mjs.html
CHANGED
|
@@ -80,7 +80,7 @@ export default domFind
|
|
|
80
80
|
<br class="clear">
|
|
81
81
|
|
|
82
82
|
<footer>
|
|
83
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
83
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
84
84
|
</footer>
|
|
85
85
|
|
|
86
86
|
<script>prettyPrint();</script>
|
package/docs/domFinds.mjs.html
CHANGED
|
@@ -79,7 +79,7 @@ export default domFinds
|
|
|
79
79
|
<br class="clear">
|
|
80
80
|
|
|
81
81
|
<footer>
|
|
82
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
82
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
83
83
|
</footer>
|
|
84
84
|
|
|
85
85
|
<script>prettyPrint();</script>
|
package/docs/domGetAttr.mjs.html
CHANGED
|
@@ -100,7 +100,7 @@ export default domGetAttr
|
|
|
100
100
|
<br class="clear">
|
|
101
101
|
|
|
102
102
|
<footer>
|
|
103
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
103
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
104
104
|
</footer>
|
|
105
105
|
|
|
106
106
|
<script>prettyPrint();</script>
|
|
@@ -103,7 +103,7 @@ export default domGetBoudRect
|
|
|
103
103
|
<br class="clear">
|
|
104
104
|
|
|
105
105
|
<footer>
|
|
106
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
106
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:54:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
107
107
|
</footer>
|
|
108
108
|
|
|
109
109
|
<script>prettyPrint();</script>
|