@l1yp/file-viewer 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +134 -0
- package/dist/FileViewer.js +7 -0
- package/dist/FileViewer.vue.d.ts +37 -0
- package/dist/FileViewer.vue_vue_type_script_setup_true_lang.js +103 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
- package/dist/components/AppxViewer.js +7 -0
- package/dist/components/AppxViewer.vue.d.ts +18 -0
- package/dist/components/AppxViewer.vue_vue_type_script_setup_true_lang.js +174 -0
- package/dist/components/ArchiveBrowser.js +7 -0
- package/dist/components/ArchiveBrowser.vue.d.ts +18 -0
- package/dist/components/ArchiveBrowser.vue_vue_type_script_setup_true_lang.js +279 -0
- package/dist/components/AudioViewer.js +7 -0
- package/dist/components/AudioViewer.vue.d.ts +21 -0
- package/dist/components/AudioViewer.vue_vue_type_script_setup_true_lang.js +201 -0
- package/dist/components/BinObjBrowser.js +7 -0
- package/dist/components/BinObjBrowser.vue.d.ts +19 -0
- package/dist/components/BinObjBrowser.vue_vue_type_script_setup_true_lang.js +141 -0
- package/dist/components/CertViewer.js +7 -0
- package/dist/components/CertViewer.vue.d.ts +17 -0
- package/dist/components/CertViewer.vue_vue_type_script_setup_true_lang.js +251 -0
- package/dist/components/ClassViewer.js +7 -0
- package/dist/components/ClassViewer.vue.d.ts +15 -0
- package/dist/components/ClassViewer.vue_vue_type_script_setup_true_lang.js +164 -0
- package/dist/components/CodeBlock.js +7 -0
- package/dist/components/CodeBlock.vue.d.ts +17 -0
- package/dist/components/CodeBlock.vue_vue_type_script_setup_true_lang.js +79 -0
- package/dist/components/CodeView.js +7 -0
- package/dist/components/CodeView.vue.d.ts +21 -0
- package/dist/components/CodeView.vue_vue_type_script_setup_true_lang.js +180 -0
- package/dist/components/CsvViewer.js +7 -0
- package/dist/components/CsvViewer.vue.d.ts +26 -0
- package/dist/components/CsvViewer.vue_vue_type_script_setup_true_lang.js +187 -0
- package/dist/components/DicomViewer.js +7 -0
- package/dist/components/DicomViewer.vue.d.ts +30 -0
- package/dist/components/DicomViewer.vue_vue_type_script_setup_true_lang.js +362 -0
- package/dist/components/DocxViewer.js +7 -0
- package/dist/components/DocxViewer.vue.d.ts +19 -0
- package/dist/components/DocxViewer.vue_vue_type_script_setup_true_lang.js +59 -0
- package/dist/components/DrawioViewer.js +7 -0
- package/dist/components/DrawioViewer.vue.d.ts +16 -0
- package/dist/components/DrawioViewer.vue_vue_type_script_setup_true_lang.js +38 -0
- package/dist/components/DxfViewer.js +7 -0
- package/dist/components/DxfViewer.vue.d.ts +14 -0
- package/dist/components/DxfViewer.vue_vue_type_script_setup_true_lang.js +239 -0
- package/dist/components/EbookViewer.js +7 -0
- package/dist/components/EbookViewer.vue.d.ts +22 -0
- package/dist/components/EbookViewer.vue_vue_type_script_setup_true_lang.js +170 -0
- package/dist/components/EmlViewer.js +7 -0
- package/dist/components/EmlViewer.vue.d.ts +21 -0
- package/dist/components/EmlViewer.vue_vue_type_script_setup_true_lang.js +193 -0
- package/dist/components/EplViewer.js +7 -0
- package/dist/components/EplViewer.vue.d.ts +19 -0
- package/dist/components/EplViewer.vue_vue_type_script_setup_true_lang.js +201 -0
- package/dist/components/FileViewerBody.js +7 -0
- package/dist/components/FileViewerBody.vue.d.ts +47 -0
- package/dist/components/FileViewerBody.vue_vue_type_script_setup_true_lang.js +599 -0
- package/dist/components/FileViewerPanel.js +7 -0
- package/dist/components/FileViewerPanel.vue.d.ts +3 -0
- package/dist/components/FileViewerPanel.vue_vue_type_script_setup_true_lang.js +207 -0
- package/dist/components/FontViewer.js +7 -0
- package/dist/components/FontViewer.vue.d.ts +17 -0
- package/dist/components/FontViewer.vue_vue_type_script_setup_true_lang.js +120 -0
- package/dist/components/FrontmatterCard.js +7 -0
- package/dist/components/FrontmatterCard.vue.d.ts +11 -0
- package/dist/components/FrontmatterCard.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/GeoViewer.js +7 -0
- package/dist/components/GeoViewer.vue.d.ts +17 -0
- package/dist/components/GeoViewer.vue_vue_type_script_setup_true_lang.js +255 -0
- package/dist/components/HarViewer.js +7 -0
- package/dist/components/HarViewer.vue.d.ts +20 -0
- package/dist/components/HarViewer.vue_vue_type_script_setup_true_lang.js +322 -0
- package/dist/components/HexViewer.js +7 -0
- package/dist/components/HexViewer.vue.d.ts +22 -0
- package/dist/components/HexViewer.vue_vue_type_script_setup_true_lang.js +121 -0
- package/dist/components/HprofViewer.js +7 -0
- package/dist/components/HprofViewer.vue.d.ts +27 -0
- package/dist/components/HprofViewer.vue_vue_type_script_setup_true_lang.js +561 -0
- package/dist/components/ImageLightbox.js +7 -0
- package/dist/components/ImageLightbox.vue.d.ts +3 -0
- package/dist/components/ImageLightbox.vue_vue_type_script_setup_true_lang.js +86 -0
- package/dist/components/InlineText.d.ts +29 -0
- package/dist/components/InlineText.js +21 -0
- package/dist/components/JksViewer.js +7 -0
- package/dist/components/JksViewer.vue.d.ts +22 -0
- package/dist/components/JksViewer.vue_vue_type_script_setup_true_lang.js +353 -0
- package/dist/components/JsonlViewer.js +7 -0
- package/dist/components/JsonlViewer.vue.d.ts +15 -0
- package/dist/components/JsonlViewer.vue_vue_type_script_setup_true_lang.js +103 -0
- package/dist/components/LogViewer.js +7 -0
- package/dist/components/LogViewer.vue.d.ts +29 -0
- package/dist/components/LogViewer.vue_vue_type_script_setup_true_lang.js +670 -0
- package/dist/components/LrcViewer.js +7 -0
- package/dist/components/LrcViewer.vue.d.ts +17 -0
- package/dist/components/LrcViewer.vue_vue_type_script_setup_true_lang.js +106 -0
- package/dist/components/MarkdownTable.js +7 -0
- package/dist/components/MarkdownTable.vue.d.ts +19 -0
- package/dist/components/MarkdownTable.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/components/MarkdownText.d.ts +30 -0
- package/dist/components/MarkdownText.js +21 -0
- package/dist/components/MhtViewer.js +7 -0
- package/dist/components/MhtViewer.vue.d.ts +22 -0
- package/dist/components/MhtViewer.vue_vue_type_script_setup_true_lang.js +112 -0
- package/dist/components/MindMapView.js +7 -0
- package/dist/components/MindMapView.vue.d.ts +23 -0
- package/dist/components/MindMapView.vue_vue_type_script_setup_true_lang.js +337 -0
- package/dist/components/MissingDependency.js +7 -0
- package/dist/components/MissingDependency.vue.d.ts +17 -0
- package/dist/components/MissingDependency.vue_vue_type_script_setup_true_lang.js +37 -0
- package/dist/components/ModelViewer.js +7 -0
- package/dist/components/ModelViewer.vue.d.ts +18 -0
- package/dist/components/ModelViewer.vue_vue_type_script_setup_true_lang.js +157 -0
- package/dist/components/MsiViewer.js +7 -0
- package/dist/components/MsiViewer.vue.d.ts +19 -0
- package/dist/components/MsiViewer.vue_vue_type_script_setup_true_lang.js +136 -0
- package/dist/components/NotebookViewer.js +7 -0
- package/dist/components/NotebookViewer.vue.d.ts +20 -0
- package/dist/components/NotebookViewer.vue_vue_type_script_setup_true_lang.js +125 -0
- package/dist/components/PdfViewer.js +7 -0
- package/dist/components/PdfViewer.vue.d.ts +19 -0
- package/dist/components/PdfViewer.vue_vue_type_script_setup_true_lang.js +114 -0
- package/dist/components/PptxViewer.js +7 -0
- package/dist/components/PptxViewer.vue.d.ts +20 -0
- package/dist/components/PptxViewer.vue_vue_type_script_setup_true_lang.js +73 -0
- package/dist/components/PsdViewer.js +7 -0
- package/dist/components/PsdViewer.vue.d.ts +15 -0
- package/dist/components/PsdViewer.vue_vue_type_script_setup_true_lang.js +218 -0
- package/dist/components/QmcAudioViewer.js +7 -0
- package/dist/components/QmcAudioViewer.vue.d.ts +18 -0
- package/dist/components/QmcAudioViewer.vue_vue_type_script_setup_true_lang.js +92 -0
- package/dist/components/RasterViewer.js +7 -0
- package/dist/components/RasterViewer.vue.d.ts +21 -0
- package/dist/components/RasterViewer.vue_vue_type_script_setup_true_lang.js +161 -0
- package/dist/components/RtfViewer.js +7 -0
- package/dist/components/RtfViewer.vue.d.ts +21 -0
- package/dist/components/RtfViewer.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/components/SevenZipBrowser.js +7 -0
- package/dist/components/SevenZipBrowser.vue.d.ts +13 -0
- package/dist/components/SevenZipBrowser.vue_vue_type_script_setup_true_lang.js +366 -0
- package/dist/components/SqliteViewer.js +7 -0
- package/dist/components/SqliteViewer.vue.d.ts +18 -0
- package/dist/components/SqliteViewer.vue_vue_type_script_setup_true_lang.js +186 -0
- package/dist/components/SubtitleViewer.js +7 -0
- package/dist/components/SubtitleViewer.vue.d.ts +15 -0
- package/dist/components/SubtitleViewer.vue_vue_type_script_setup_true_lang.js +48 -0
- package/dist/components/XlsxChart.js +7 -0
- package/dist/components/XlsxChart.vue.d.ts +14 -0
- package/dist/components/XlsxChart.vue_vue_type_script_setup_true_lang.js +240 -0
- package/dist/components/XlsxViewer.js +7 -0
- package/dist/components/XlsxViewer.vue.d.ts +22 -0
- package/dist/components/XlsxViewer.vue_vue_type_script_setup_true_lang.js +814 -0
- package/dist/components/XmindViewer.js +7 -0
- package/dist/components/XmindViewer.vue.d.ts +13 -0
- package/dist/components/XmindViewer.vue_vue_type_script_setup_true_lang.js +48 -0
- package/dist/components/ZipBrowser.js +7 -0
- package/dist/components/ZipBrowser.vue.d.ts +14 -0
- package/dist/components/ZipBrowser.vue_vue_type_script_setup_true_lang.js +326 -0
- package/dist/components/ZoomImage.js +7 -0
- package/dist/components/ZoomImage.vue.d.ts +29 -0
- package/dist/components/ZoomImage.vue_vue_type_script_setup_true_lang.js +147 -0
- package/dist/components/epl/EplCodeBlock.js +7 -0
- package/dist/components/epl/EplCodeBlock.vue.d.ts +15 -0
- package/dist/components/epl/EplCodeBlock.vue_vue_type_script_setup_true_lang.js +72 -0
- package/dist/components/epl/EplDoc.js +7 -0
- package/dist/components/epl/EplDoc.vue.d.ts +19 -0
- package/dist/components/epl/EplDoc.vue_vue_type_script_setup_true_lang.js +327 -0
- package/dist/components/epl/EplMethod.js +7 -0
- package/dist/components/epl/EplMethod.vue.d.ts +14 -0
- package/dist/components/epl/EplMethod.vue_vue_type_script_setup_true_lang.js +100 -0
- package/dist/components/epl/EplResource.js +7 -0
- package/dist/components/epl/EplResource.vue.d.ts +15 -0
- package/dist/components/epl/EplResource.vue_vue_type_script_setup_true_lang.js +204 -0
- package/dist/components/epl/EplTree.js +7 -0
- package/dist/components/epl/EplTree.vue.d.ts +27 -0
- package/dist/components/epl/EplTree.vue_vue_type_script_setup_true_lang.js +123 -0
- package/dist/components/epl/EplVarTable.js +7 -0
- package/dist/components/epl/EplVarTable.vue.d.ts +21 -0
- package/dist/components/epl/EplVarTable.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/components/epl/docTypes.d.ts +12 -0
- package/dist/components/epl/numbering.d.ts +21 -0
- package/dist/components/epl/numbering.js +14 -0
- package/dist/components/icons/Icon.js +7 -0
- package/dist/components/icons/Icon.vue.d.ts +14 -0
- package/dist/components/icons/Icon.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/icons/iconPaths.d.ts +60 -0
- package/dist/components/icons/iconPaths.js +54 -0
- package/dist/components/optionalViewer.d.ts +14 -0
- package/dist/components/optionalViewer.js +37 -0
- package/dist/components/ui/ClampBlock.d.ts +82 -0
- package/dist/components/ui/ClampBlock.js +63 -0
- package/dist/composables/useFileViewer.d.ts +428 -0
- package/dist/composables/useFileViewer.js +27 -0
- package/dist/composables/useLightbox.d.ts +33 -0
- package/dist/composables/useLightbox.js +17 -0
- package/dist/composables/useLogRules.d.ts +47 -0
- package/dist/composables/useLogRules.js +74 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.js +30 -0
- package/dist/lib/aes.d.ts +25 -0
- package/dist/lib/aes.js +99 -0
- package/dist/lib/appx.d.ts +66 -0
- package/dist/lib/appx.js +112 -0
- package/dist/lib/archive.d.ts +29 -0
- package/dist/lib/asn1.d.ts +47 -0
- package/dist/lib/asn1.js +122 -0
- package/dist/lib/binobj.d.ts +69 -0
- package/dist/lib/binobj.js +430 -0
- package/dist/lib/brotli.d.ts +14 -0
- package/dist/lib/brotli.js +16 -0
- package/dist/lib/bzip2.d.ts +14 -0
- package/dist/lib/bzip2.js +161 -0
- package/dist/lib/classfile.d.ts +72 -0
- package/dist/lib/classfile.js +210 -0
- package/dist/lib/codePreview.d.ts +22 -0
- package/dist/lib/codePreview.js +27 -0
- package/dist/lib/codefold.d.ts +14 -0
- package/dist/lib/codefold.js +30 -0
- package/dist/lib/codeformat.d.ts +21 -0
- package/dist/lib/codeformat.js +130 -0
- package/dist/lib/csv.d.ts +19 -0
- package/dist/lib/csv.js +74 -0
- package/dist/lib/des.d.ts +17 -0
- package/dist/lib/des.js +928 -0
- package/dist/lib/diagram.d.ts +5 -0
- package/dist/lib/diagram.js +479 -0
- package/dist/lib/dicom.d.ts +69 -0
- package/dist/lib/dicom.js +442 -0
- package/dist/lib/dicomCodecs.d.ts +28 -0
- package/dist/lib/dicomCodecs.js +156 -0
- package/dist/lib/dicomRender.d.ts +46 -0
- package/dist/lib/dicomRender.js +114 -0
- package/dist/lib/dxf.d.ts +86 -0
- package/dist/lib/dxf.js +399 -0
- package/dist/lib/eml.d.ts +40 -0
- package/dist/lib/eml.js +46 -0
- package/dist/lib/encoding.d.ts +28 -0
- package/dist/lib/encoding.js +44 -0
- package/dist/lib/epl/code/ast.d.ts +150 -0
- package/dist/lib/epl/code/codeDataParser.d.ts +3 -0
- package/dist/lib/epl/code/codeDataParser.js +330 -0
- package/dist/lib/epl/code/codeLines.d.ts +20 -0
- package/dist/lib/epl/code/codeLines.js +191 -0
- package/dist/lib/epl/code/structures.d.ts +86 -0
- package/dist/lib/epl/code/textCode.d.ts +29 -0
- package/dist/lib/epl/code/textCode.js +150 -0
- package/dist/lib/epl/code/variable.d.ts +25 -0
- package/dist/lib/epl/eplDocument.d.ts +21 -0
- package/dist/lib/epl/eplDocument.js +36 -0
- package/dist/lib/epl/imageList.d.ts +28 -0
- package/dist/lib/epl/imageList.js +66 -0
- package/dist/lib/epl/index.d.ts +53 -0
- package/dist/lib/epl/index.js +45 -0
- package/dist/lib/epl/io/binaryReader.d.ts +56 -0
- package/dist/lib/epl/io/binaryReader.js +119 -0
- package/dist/lib/epl/io/encoding.d.ts +16 -0
- package/dist/lib/epl/io/encoding.js +27 -0
- package/dist/lib/epl/model/eplSystemId.d.ts +64 -0
- package/dist/lib/epl/model/eplSystemId.js +16 -0
- package/dist/lib/epl/model/section.d.ts +46 -0
- package/dist/lib/epl/names/eplLibData.js +39 -0
- package/dist/lib/epl/names/idToNameMap.d.ts +33 -0
- package/dist/lib/epl/names/idToNameMap.js +130 -0
- package/dist/lib/epl/names/libNameProvider.d.ts +15 -0
- package/dist/lib/epl/names/libNameProvider.js +18 -0
- package/dist/lib/epl/program.d.ts +120 -0
- package/dist/lib/epl/program.js +134 -0
- package/dist/lib/epl/projectFileReader.d.ts +23 -0
- package/dist/lib/epl/projectFileReader.js +65 -0
- package/dist/lib/epl/sections/code.d.ts +20 -0
- package/dist/lib/epl/sections/esystemInfo.d.ts +14 -0
- package/dist/lib/epl/sections/losable.d.ts +11 -0
- package/dist/lib/epl/sections/projectConfig.d.ts +23 -0
- package/dist/lib/epl/sections/resource.d.ts +57 -0
- package/dist/lib/fb2.d.ts +14 -0
- package/dist/lib/fb2.js +62 -0
- package/dist/lib/fileType.d.ts +315 -0
- package/dist/lib/fileType.js +800 -0
- package/dist/lib/fonts.d.ts +8 -0
- package/dist/lib/fonts.js +4 -0
- package/dist/lib/format.d.ts +16 -0
- package/dist/lib/format.js +38 -0
- package/dist/lib/frontmatter.d.ts +13 -0
- package/dist/lib/frontmatter.js +23 -0
- package/dist/lib/geo.d.ts +30 -0
- package/dist/lib/geo.js +235 -0
- package/dist/lib/har.d.ts +171 -0
- package/dist/lib/har.js +397 -0
- package/dist/lib/highlight.d.ts +18 -0
- package/dist/lib/highlight.js +34 -0
- package/dist/lib/highlightLangs.d.ts +15 -0
- package/dist/lib/highlightLangs.js +93 -0
- package/dist/lib/hprof.d.ts +211 -0
- package/dist/lib/hprof.js +709 -0
- package/dist/lib/ipynb.d.ts +48 -0
- package/dist/lib/ipynb.js +130 -0
- package/dist/lib/jks.d.ts +86 -0
- package/dist/lib/jks.js +167 -0
- package/dist/lib/jsonl.d.ts +29 -0
- package/dist/lib/jsonl.js +24 -0
- package/dist/lib/lrc.d.ts +32 -0
- package/dist/lib/lrc.js +84 -0
- package/dist/lib/lzma.d.ts +70 -0
- package/dist/lib/lzma.js +204 -0
- package/dist/lib/markdown/blocks.d.ts +9 -0
- package/dist/lib/markdown/blocks.js +221 -0
- package/dist/lib/markdown/index.d.ts +3 -0
- package/dist/lib/markdown/inline.d.ts +33 -0
- package/dist/lib/markdown/inline.js +84 -0
- package/dist/lib/markdown/math.d.ts +5 -0
- package/dist/lib/markdown/math.js +25 -0
- package/dist/lib/markdown/segmentize.d.ts +11 -0
- package/dist/lib/markdown/segmentize.js +28 -0
- package/dist/lib/markdown/styles.d.ts +26 -0
- package/dist/lib/markdown/styles.js +135 -0
- package/dist/lib/mht.d.ts +51 -0
- package/dist/lib/mht.js +122 -0
- package/dist/lib/midi.d.ts +28 -0
- package/dist/lib/midi.js +84 -0
- package/dist/lib/mime.d.ts +82 -0
- package/dist/lib/mime.js +151 -0
- package/dist/lib/mindmap.d.ts +51 -0
- package/dist/lib/mindmap.js +113 -0
- package/dist/lib/mobi.d.ts +15 -0
- package/dist/lib/mobi.js +68 -0
- package/dist/lib/msi.d.ts +50 -0
- package/dist/lib/msi.js +332 -0
- package/dist/lib/optionalDep.d.ts +26 -0
- package/dist/lib/optionalDep.js +20 -0
- package/dist/lib/pkcs12.d.ts +56 -0
- package/dist/lib/pkcs12.js +356 -0
- package/dist/lib/qmc.d.ts +50 -0
- package/dist/lib/qmc.js +213 -0
- package/dist/lib/rar.d.ts +16 -0
- package/dist/lib/rar.js +40 -0
- package/dist/lib/rawPreview.d.ts +12 -0
- package/dist/lib/rawPreview.js +54 -0
- package/dist/lib/rc2.d.ts +12 -0
- package/dist/lib/rc2.js +298 -0
- package/dist/lib/resolveInput.d.ts +22 -0
- package/dist/lib/resolveInput.js +55 -0
- package/dist/lib/rtf.d.ts +53 -0
- package/dist/lib/rtf.js +413 -0
- package/dist/lib/sevenZip.d.ts +82 -0
- package/dist/lib/sevenZip.js +395 -0
- package/dist/lib/sha1.d.ts +24 -0
- package/dist/lib/sha1.js +53 -0
- package/dist/lib/sha256.d.ts +21 -0
- package/dist/lib/sha256.js +119 -0
- package/dist/lib/speechAudio.d.ts +36 -0
- package/dist/lib/speechAudio.js +85 -0
- package/dist/lib/sqlite.d.ts +38 -0
- package/dist/lib/sqlite.js +104 -0
- package/dist/lib/subtitle.d.ts +26 -0
- package/dist/lib/subtitle.js +99 -0
- package/dist/lib/tarball.d.ts +20 -0
- package/dist/lib/tarball.js +248 -0
- package/dist/lib/viewerFormats.d.ts +35 -0
- package/dist/lib/viewerFormats.js +83 -0
- package/dist/lib/viewerKind.d.ts +36 -0
- package/dist/lib/viewerKind.js +233 -0
- package/dist/lib/x509.d.ts +68 -0
- package/dist/lib/x509.js +267 -0
- package/dist/lib/xlsx.d.ts +55 -0
- package/dist/lib/xlsx.js +321 -0
- package/dist/lib/xlsxCharts.d.ts +34 -0
- package/dist/lib/xlsxCharts.js +152 -0
- package/dist/lib/xmind.d.ts +6 -0
- package/dist/lib/xmind.js +124 -0
- package/dist/lib/zip.d.ts +56 -0
- package/dist/lib/zip.js +169 -0
- package/dist/style.css +2 -0
- package/dist/types.d.ts +42 -0
- package/package.json +128 -0
|
@@ -0,0 +1,709 @@
|
|
|
1
|
+
//#region src/lib/hprof.ts
|
|
2
|
+
var e = class extends Error {
|
|
3
|
+
constructor(e) {
|
|
4
|
+
super(e), this.name = "HprofParseError";
|
|
5
|
+
}
|
|
6
|
+
}, t = 2, n = 4, r = 5, i = 6, a = 7, o = 8, s = 9, c = 10, l = 11;
|
|
7
|
+
function u(u, d) {
|
|
8
|
+
switch (u) {
|
|
9
|
+
case t: return d;
|
|
10
|
+
case n:
|
|
11
|
+
case o: return 1;
|
|
12
|
+
case r:
|
|
13
|
+
case s: return 2;
|
|
14
|
+
case i:
|
|
15
|
+
case c: return 4;
|
|
16
|
+
case a:
|
|
17
|
+
case l: return 8;
|
|
18
|
+
default: throw new e("未知的基础类型标记 0x" + u.toString(16));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
var d = {
|
|
22
|
+
[n]: "boolean",
|
|
23
|
+
[r]: "char",
|
|
24
|
+
[i]: "float",
|
|
25
|
+
[a]: "double",
|
|
26
|
+
[o]: "byte",
|
|
27
|
+
[s]: "short",
|
|
28
|
+
[c]: "int",
|
|
29
|
+
[l]: "long"
|
|
30
|
+
};
|
|
31
|
+
function f(e) {
|
|
32
|
+
return d[e] ?? "type" + e;
|
|
33
|
+
}
|
|
34
|
+
var p = class {
|
|
35
|
+
blob;
|
|
36
|
+
chunkSize;
|
|
37
|
+
size;
|
|
38
|
+
buf = new Uint8Array();
|
|
39
|
+
pos = 0;
|
|
40
|
+
fileCursor = 0;
|
|
41
|
+
globalPos = 0;
|
|
42
|
+
constructor(e, t = 8 * 1024 * 1024) {
|
|
43
|
+
this.blob = e, this.chunkSize = t, this.size = e.size;
|
|
44
|
+
}
|
|
45
|
+
async ensure(t) {
|
|
46
|
+
for (; this.buf.length - this.pos < t;) {
|
|
47
|
+
if (this.fileCursor >= this.size) throw new e("文件在偏移 " + this.globalPos + " 处意外结束(可能已截断)");
|
|
48
|
+
let t = Math.min(this.fileCursor + this.chunkSize, this.size), n = await this.blob.slice(this.fileCursor, t).arrayBuffer(), r = new Uint8Array(n);
|
|
49
|
+
if (this.fileCursor = t, this.pos > 0 && (this.buf = this.buf.slice(this.pos), this.pos = 0), this.buf.length === 0) this.buf = r;
|
|
50
|
+
else {
|
|
51
|
+
let e = new Uint8Array(this.buf.length + r.length);
|
|
52
|
+
e.set(this.buf, 0), e.set(r, this.buf.length), this.buf = e;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async u1() {
|
|
57
|
+
await this.ensure(1);
|
|
58
|
+
let e = this.buf[this.pos];
|
|
59
|
+
return this.pos += 1, this.globalPos += 1, e;
|
|
60
|
+
}
|
|
61
|
+
async u2() {
|
|
62
|
+
await this.ensure(2);
|
|
63
|
+
let e = this.pos, t = (this.buf[e] << 8 | this.buf[e + 1]) >>> 0;
|
|
64
|
+
return this.pos += 2, this.globalPos += 2, t;
|
|
65
|
+
}
|
|
66
|
+
async u4() {
|
|
67
|
+
await this.ensure(4);
|
|
68
|
+
let e = this.buf, t = this.pos, n = (e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | e[t + 3]) >>> 0;
|
|
69
|
+
return this.pos += 4, this.globalPos += 4, n;
|
|
70
|
+
}
|
|
71
|
+
async u8() {
|
|
72
|
+
await this.ensure(8);
|
|
73
|
+
let e = new DataView(this.buf.buffer, this.buf.byteOffset + this.pos, 8).getBigUint64(0, !1);
|
|
74
|
+
return this.pos += 8, this.globalPos += 8, e;
|
|
75
|
+
}
|
|
76
|
+
async id(e) {
|
|
77
|
+
return e === 8 ? (await this.u8()).toString() : e === 4 ? (await this.u4()).toString() : e === 2 ? (await this.u2()).toString() : (await this.u1()).toString();
|
|
78
|
+
}
|
|
79
|
+
async bytes(e) {
|
|
80
|
+
await this.ensure(e);
|
|
81
|
+
let t = this.buf.slice(this.pos, this.pos + e);
|
|
82
|
+
return this.pos += e, this.globalPos += e, t;
|
|
83
|
+
}
|
|
84
|
+
async cstring() {
|
|
85
|
+
let e = [];
|
|
86
|
+
for (;;) {
|
|
87
|
+
let t = await this.u1();
|
|
88
|
+
if (t === 0) break;
|
|
89
|
+
e.push(t);
|
|
90
|
+
}
|
|
91
|
+
return new TextDecoder("utf-8").decode(new Uint8Array(e));
|
|
92
|
+
}
|
|
93
|
+
async skip(t) {
|
|
94
|
+
if (t <= 0) return;
|
|
95
|
+
let n = this.buf.length - this.pos;
|
|
96
|
+
if (t <= n) {
|
|
97
|
+
this.pos += t, this.globalPos += t;
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
let r = t - n;
|
|
101
|
+
if (this.pos = this.buf.length, this.globalPos += n, this.buf = new Uint8Array(), this.fileCursor += r, this.globalPos += r, this.fileCursor > this.size) throw new e("跳过范围超出文件末尾(文件可能已截断)");
|
|
102
|
+
}
|
|
103
|
+
}, m = 1, h = 2, g = 12, _ = 28, v = 32, y = 33, b = 34, x = 35, S = {
|
|
104
|
+
1: (e) => e,
|
|
105
|
+
2: () => 8,
|
|
106
|
+
3: () => 8,
|
|
107
|
+
4: () => 4,
|
|
108
|
+
5: () => 0,
|
|
109
|
+
6: () => 4,
|
|
110
|
+
7: () => 0,
|
|
111
|
+
8: () => 8,
|
|
112
|
+
255: () => 0,
|
|
113
|
+
137: () => 0,
|
|
114
|
+
139: () => 0,
|
|
115
|
+
141: () => 0,
|
|
116
|
+
142: () => 8,
|
|
117
|
+
138: () => 0,
|
|
118
|
+
140: () => 0,
|
|
119
|
+
144: () => 0
|
|
120
|
+
}, C = 8192, w = 256, T = 4e3;
|
|
121
|
+
function E() {
|
|
122
|
+
return new Promise((e) => setTimeout(e, 0));
|
|
123
|
+
}
|
|
124
|
+
async function D(t) {
|
|
125
|
+
let n = await t.cstring();
|
|
126
|
+
if (!n.startsWith("JAVA PROFILE")) throw new e("不是有效的 HPROF 文件(magic: \"" + n.slice(0, 32) + "\")");
|
|
127
|
+
let r = await t.u4();
|
|
128
|
+
if (r !== 1 && r !== 2 && r !== 4 && r !== 8) throw new e("异常的 idSize:" + r);
|
|
129
|
+
let i = await t.u4(), a = await t.u4();
|
|
130
|
+
return {
|
|
131
|
+
idSize: r,
|
|
132
|
+
timestamp: (BigInt(i) << 32n | BigInt(a)).toString()
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
async function O(e, t) {
|
|
136
|
+
let n = await e.id(t);
|
|
137
|
+
await e.skip(4);
|
|
138
|
+
let r = await e.id(t);
|
|
139
|
+
await e.skip(t * 5);
|
|
140
|
+
let i = await e.u4(), a = await e.u2();
|
|
141
|
+
for (let n = 0; n < a; n++) {
|
|
142
|
+
await e.u2();
|
|
143
|
+
let n = await e.u1();
|
|
144
|
+
await e.skip(u(n, t));
|
|
145
|
+
}
|
|
146
|
+
let o = await e.u2();
|
|
147
|
+
for (let n = 0; n < o; n++) {
|
|
148
|
+
await e.id(t);
|
|
149
|
+
let n = await e.u1();
|
|
150
|
+
await e.skip(u(n, t));
|
|
151
|
+
}
|
|
152
|
+
let s = await e.u2(), c = [];
|
|
153
|
+
for (let n = 0; n < s; n++) {
|
|
154
|
+
let n = await e.id(t), r = await e.u1();
|
|
155
|
+
c.push({
|
|
156
|
+
nameId: n,
|
|
157
|
+
type: r
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
classObjId: n,
|
|
162
|
+
info: {
|
|
163
|
+
superId: r,
|
|
164
|
+
instanceSize: i,
|
|
165
|
+
instFields: c
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
async function k(t, n, r) {
|
|
170
|
+
let i = S[n];
|
|
171
|
+
if (i) return await t.skip(r + i(r)), null;
|
|
172
|
+
switch (n) {
|
|
173
|
+
case v: {
|
|
174
|
+
let { classObjId: e, info: n } = await O(t, r);
|
|
175
|
+
return {
|
|
176
|
+
kind: "class",
|
|
177
|
+
classObjId: e,
|
|
178
|
+
info: n
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
case y: {
|
|
182
|
+
let e = await t.id(r);
|
|
183
|
+
return await t.skip(4), {
|
|
184
|
+
kind: "instance",
|
|
185
|
+
id: e,
|
|
186
|
+
classObjId: await t.id(r),
|
|
187
|
+
numBytes: await t.u4()
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
case b: {
|
|
191
|
+
await t.id(r), await t.skip(4);
|
|
192
|
+
let e = await t.u4(), n = await t.id(r);
|
|
193
|
+
return await t.skip(e * r), {
|
|
194
|
+
kind: "objArray",
|
|
195
|
+
elemClassId: n,
|
|
196
|
+
numElements: e,
|
|
197
|
+
shallow: e * r + r * 2 + 4
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
case x: {
|
|
201
|
+
await t.id(r), await t.skip(4);
|
|
202
|
+
let e = await t.u4(), n = await t.u1();
|
|
203
|
+
return await t.skip(e * u(n, r)), {
|
|
204
|
+
kind: "primArray",
|
|
205
|
+
elemType: n,
|
|
206
|
+
numElements: e,
|
|
207
|
+
shallow: e * u(n, r) + r * 2 + 4
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
default: throw new e("未知的堆子记录标记 0x" + n.toString(16) + "(偏移 " + t.globalPos + ")");
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
function A(e, t, n) {
|
|
214
|
+
return n === 8 ? e.getBigUint64(t, !1).toString() : n === 4 ? e.getUint32(t, !1).toString() : n === 2 ? e.getUint16(t, !1).toString() : e.getUint8(t).toString();
|
|
215
|
+
}
|
|
216
|
+
function j(e, d, f) {
|
|
217
|
+
let p = new DataView(e.buffer, e.byteOffset, e.byteLength), m = [], h = 0;
|
|
218
|
+
for (let e of d) switch (e.type) {
|
|
219
|
+
case t: {
|
|
220
|
+
let t = A(p, h, f);
|
|
221
|
+
h += f, m.push(t === "0" ? {
|
|
222
|
+
name: e.name,
|
|
223
|
+
value: "null",
|
|
224
|
+
kind: "null"
|
|
225
|
+
} : {
|
|
226
|
+
name: e.name,
|
|
227
|
+
value: "#" + t,
|
|
228
|
+
kind: "ref",
|
|
229
|
+
refId: t
|
|
230
|
+
});
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
case n:
|
|
234
|
+
m.push({
|
|
235
|
+
name: e.name,
|
|
236
|
+
value: p.getUint8(h) === 0 ? "false" : "true",
|
|
237
|
+
kind: "prim"
|
|
238
|
+
}), h += 1;
|
|
239
|
+
break;
|
|
240
|
+
case o:
|
|
241
|
+
m.push({
|
|
242
|
+
name: e.name,
|
|
243
|
+
value: String(p.getInt8(h)),
|
|
244
|
+
kind: "prim"
|
|
245
|
+
}), h += 1;
|
|
246
|
+
break;
|
|
247
|
+
case r: {
|
|
248
|
+
let t = p.getUint16(h, !1);
|
|
249
|
+
m.push({
|
|
250
|
+
name: e.name,
|
|
251
|
+
value: M(t),
|
|
252
|
+
kind: "prim"
|
|
253
|
+
}), h += 2;
|
|
254
|
+
break;
|
|
255
|
+
}
|
|
256
|
+
case s:
|
|
257
|
+
m.push({
|
|
258
|
+
name: e.name,
|
|
259
|
+
value: String(p.getInt16(h, !1)),
|
|
260
|
+
kind: "prim"
|
|
261
|
+
}), h += 2;
|
|
262
|
+
break;
|
|
263
|
+
case i:
|
|
264
|
+
m.push({
|
|
265
|
+
name: e.name,
|
|
266
|
+
value: N(p.getFloat32(h, !1)),
|
|
267
|
+
kind: "prim"
|
|
268
|
+
}), h += 4;
|
|
269
|
+
break;
|
|
270
|
+
case c:
|
|
271
|
+
m.push({
|
|
272
|
+
name: e.name,
|
|
273
|
+
value: String(p.getInt32(h, !1)),
|
|
274
|
+
kind: "prim"
|
|
275
|
+
}), h += 4;
|
|
276
|
+
break;
|
|
277
|
+
case a:
|
|
278
|
+
m.push({
|
|
279
|
+
name: e.name,
|
|
280
|
+
value: N(p.getFloat64(h, !1)),
|
|
281
|
+
kind: "prim"
|
|
282
|
+
}), h += 8;
|
|
283
|
+
break;
|
|
284
|
+
case l:
|
|
285
|
+
m.push({
|
|
286
|
+
name: e.name,
|
|
287
|
+
value: p.getBigInt64(h, !1).toString(),
|
|
288
|
+
kind: "prim"
|
|
289
|
+
}), h += 8;
|
|
290
|
+
break;
|
|
291
|
+
default: h += u(e.type, f);
|
|
292
|
+
}
|
|
293
|
+
return m;
|
|
294
|
+
}
|
|
295
|
+
function M(e) {
|
|
296
|
+
return e >= 32 && e !== 127 ? "'" + String.fromCharCode(e) + "'" : "'\\u" + e.toString(16).padStart(4, "0") + "'";
|
|
297
|
+
}
|
|
298
|
+
function N(e) {
|
|
299
|
+
return Number.isNaN(e) ? "NaN" : Number.isFinite(e) ? String(e) : e > 0 ? "Infinity" : "-Infinity";
|
|
300
|
+
}
|
|
301
|
+
function P(e) {
|
|
302
|
+
if (!e) return "Object[]";
|
|
303
|
+
if (e[0] !== "[") return e + "[]";
|
|
304
|
+
let t = 0, n = 0;
|
|
305
|
+
for (; n < e.length && e[n] === "[";) t++, n++;
|
|
306
|
+
let r = e.slice(n);
|
|
307
|
+
return r = r.startsWith("L") && r.endsWith(";") ? r.slice(1, -1) : {
|
|
308
|
+
Z: "boolean",
|
|
309
|
+
B: "byte",
|
|
310
|
+
C: "char",
|
|
311
|
+
S: "short",
|
|
312
|
+
I: "int",
|
|
313
|
+
J: "long",
|
|
314
|
+
F: "float",
|
|
315
|
+
D: "double"
|
|
316
|
+
}[r] ?? r, r + "[]".repeat(t);
|
|
317
|
+
}
|
|
318
|
+
function F(e) {
|
|
319
|
+
let t = P(e);
|
|
320
|
+
return t.endsWith("[]") ? t.slice(0, -2) : t;
|
|
321
|
+
}
|
|
322
|
+
function I(e, t, u) {
|
|
323
|
+
switch (u) {
|
|
324
|
+
case n: return e.getUint8(t) === 0 ? "false" : "true";
|
|
325
|
+
case o: return String(e.getInt8(t));
|
|
326
|
+
case r: return M(e.getUint16(t, !1));
|
|
327
|
+
case s: return String(e.getInt16(t, !1));
|
|
328
|
+
case i: return N(e.getFloat32(t, !1));
|
|
329
|
+
case c: return String(e.getInt32(t, !1));
|
|
330
|
+
case a: return N(e.getFloat64(t, !1));
|
|
331
|
+
case l: return e.getBigInt64(t, !1).toString();
|
|
332
|
+
default: return "?";
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
function L(e, t) {
|
|
336
|
+
let n = new DataView(e.buffer, e.byteOffset, e.byteLength), r = u(t, 8), i = Math.min(Math.floor(e.byteLength / r), 256), a = [];
|
|
337
|
+
for (let e = 0; e < i; e++) a.push({
|
|
338
|
+
name: String(e),
|
|
339
|
+
value: I(n, e * r, t),
|
|
340
|
+
kind: "prim"
|
|
341
|
+
});
|
|
342
|
+
return a;
|
|
343
|
+
}
|
|
344
|
+
function R(e) {
|
|
345
|
+
let t = "", n = e.byteLength & -2;
|
|
346
|
+
for (let r = 0; r < n; r += 2) t += String.fromCharCode(e[r] << 8 | e[r + 1]);
|
|
347
|
+
return t;
|
|
348
|
+
}
|
|
349
|
+
function z(e) {
|
|
350
|
+
let t = "", n = e.byteLength & -2;
|
|
351
|
+
for (let r = 0; r < n; r += 2) t += String.fromCharCode(e[r] | e[r + 1] << 8);
|
|
352
|
+
return t;
|
|
353
|
+
}
|
|
354
|
+
function B(e) {
|
|
355
|
+
let t = "";
|
|
356
|
+
for (let n = 0; n < e.byteLength; n++) t += String.fromCharCode(e[n]);
|
|
357
|
+
return t;
|
|
358
|
+
}
|
|
359
|
+
function V(e) {
|
|
360
|
+
if (e.byteLength === 0) return "";
|
|
361
|
+
let t = 0;
|
|
362
|
+
for (let n = 0; n < e.byteLength; n++) {
|
|
363
|
+
let r = e[n];
|
|
364
|
+
(r >= 32 && r < 127 || r === 9 || r === 10 || r === 13) && t++;
|
|
365
|
+
}
|
|
366
|
+
return t / e.byteLength >= .85 ? B(e) : void 0;
|
|
367
|
+
}
|
|
368
|
+
function H(e) {
|
|
369
|
+
let t = Math.min(e.byteLength, w), n = "";
|
|
370
|
+
for (let r = 0; r < t; r++) n += e[r].toString(16).padStart(2, "0") + (r < t - 1 ? " " : "");
|
|
371
|
+
return e.byteLength > t ? n + " …" : n;
|
|
372
|
+
}
|
|
373
|
+
function U(e, t, n) {
|
|
374
|
+
let i = {
|
|
375
|
+
elemType: e,
|
|
376
|
+
length: n,
|
|
377
|
+
truncated: !1
|
|
378
|
+
};
|
|
379
|
+
if (e === r) i.text = R(t), i.truncated = t.byteLength < n * 2;
|
|
380
|
+
else if (e === o) {
|
|
381
|
+
i.hex = H(t);
|
|
382
|
+
let e = V(t);
|
|
383
|
+
e !== void 0 && (i.text = e), i.truncated = t.byteLength < n;
|
|
384
|
+
} else i.elements = L(t, e), i.truncated = i.elements.length < n;
|
|
385
|
+
return i;
|
|
386
|
+
}
|
|
387
|
+
function W(e, t, n) {
|
|
388
|
+
return t === r ? R(e) : n === 1 ? z(e) : B(e);
|
|
389
|
+
}
|
|
390
|
+
var G = class t {
|
|
391
|
+
blob;
|
|
392
|
+
idSize;
|
|
393
|
+
classInfo;
|
|
394
|
+
classNames;
|
|
395
|
+
strings;
|
|
396
|
+
layoutCache;
|
|
397
|
+
summary;
|
|
398
|
+
constructor(e, t, n, r, i, a, o) {
|
|
399
|
+
this.blob = e, this.idSize = n, this.classInfo = r, this.classNames = i, this.strings = a, this.layoutCache = o, this.summary = t;
|
|
400
|
+
}
|
|
401
|
+
classNameOf(e) {
|
|
402
|
+
return this.classNames.get(e) ?? "<class#" + e + ">";
|
|
403
|
+
}
|
|
404
|
+
resolveLayout(e) {
|
|
405
|
+
let t = this.layoutCache.get(e);
|
|
406
|
+
if (t !== void 0) return t;
|
|
407
|
+
let n = [], r = e, i = /* @__PURE__ */ new Set();
|
|
408
|
+
for (; r !== "0" && !i.has(r);) {
|
|
409
|
+
i.add(r);
|
|
410
|
+
let t = this.classInfo.get(r);
|
|
411
|
+
if (!t) return this.layoutCache.set(e, null), null;
|
|
412
|
+
for (let e of t.instFields) n.push({
|
|
413
|
+
name: this.strings.get(e.nameId) ?? "<field#" + e.nameId + ">",
|
|
414
|
+
type: e.type
|
|
415
|
+
});
|
|
416
|
+
r = t.superId;
|
|
417
|
+
}
|
|
418
|
+
return this.layoutCache.set(e, n), n;
|
|
419
|
+
}
|
|
420
|
+
static async parse(n, r) {
|
|
421
|
+
let i = new p(n), { idSize: a, timestamp: o } = await D(i), s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), y = 0, b = 0, x = 0, S = 0, C = 0, w = 0, O = async () => {
|
|
422
|
+
++w % T === 0 && (r?.(i.globalPos, i.size), await E());
|
|
423
|
+
};
|
|
424
|
+
for (; i.globalPos < i.size;) {
|
|
425
|
+
let t = await i.u1();
|
|
426
|
+
await i.u4();
|
|
427
|
+
let n = await i.u4(), r = i.globalPos + n;
|
|
428
|
+
if (x++, t === m) {
|
|
429
|
+
let e = await i.id(a), t = await i.bytes(n - a);
|
|
430
|
+
s.set(e, new TextDecoder("utf-8").decode(t));
|
|
431
|
+
} else if (t === h) {
|
|
432
|
+
await i.u4();
|
|
433
|
+
let e = await i.id(a);
|
|
434
|
+
await i.u4();
|
|
435
|
+
let t = await i.id(a);
|
|
436
|
+
c.set(e, t);
|
|
437
|
+
} else if (t === g || t === _) for (; i.globalPos < r;) {
|
|
438
|
+
let e = await k(i, await i.u1(), a);
|
|
439
|
+
if (e) if (e.kind === "class") l.set(e.classObjId, e.info), S++;
|
|
440
|
+
else if (e.kind === "instance") {
|
|
441
|
+
await i.skip(e.numBytes), b++;
|
|
442
|
+
let t = e.numBytes + a * 2;
|
|
443
|
+
C += t;
|
|
444
|
+
let n = u.get(e.classObjId);
|
|
445
|
+
n ? (n.count++, n.bytes += t) : u.set(e.classObjId, {
|
|
446
|
+
count: 1,
|
|
447
|
+
bytes: t
|
|
448
|
+
});
|
|
449
|
+
} else if (e.kind === "objArray") {
|
|
450
|
+
b++, C += e.shallow;
|
|
451
|
+
let t = d.get(e.elemClassId);
|
|
452
|
+
t ? (t.count++, t.bytes += e.shallow) : d.set(e.elemClassId, {
|
|
453
|
+
count: 1,
|
|
454
|
+
bytes: e.shallow
|
|
455
|
+
});
|
|
456
|
+
} else {
|
|
457
|
+
b++, C += e.shallow;
|
|
458
|
+
let t = v.get(e.elemType);
|
|
459
|
+
t ? (t.count++, t.bytes += e.shallow) : v.set(e.elemType, {
|
|
460
|
+
count: 1,
|
|
461
|
+
bytes: e.shallow
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
else y++;
|
|
465
|
+
await O();
|
|
466
|
+
}
|
|
467
|
+
else await i.skip(n);
|
|
468
|
+
if (i.globalPos < r) await i.skip(r - i.globalPos);
|
|
469
|
+
else if (i.globalPos > r) throw new e("解析在标记 0x" + t.toString(16) + " 处越界(偏移 " + i.globalPos + ",应止于 " + r + ")");
|
|
470
|
+
await O();
|
|
471
|
+
}
|
|
472
|
+
let A = /* @__PURE__ */ new Map();
|
|
473
|
+
for (let [e, t] of c) A.set(e, s.get(t) ?? "<class#" + e + ">");
|
|
474
|
+
let j = [];
|
|
475
|
+
for (let [e, t] of u) j.push({
|
|
476
|
+
name: A.get(e) ?? "<class#" + e + ">",
|
|
477
|
+
count: t.count,
|
|
478
|
+
bytes: t.bytes,
|
|
479
|
+
target: {
|
|
480
|
+
kind: "class",
|
|
481
|
+
classObjId: e
|
|
482
|
+
}
|
|
483
|
+
});
|
|
484
|
+
for (let [e, t] of d) j.push({
|
|
485
|
+
name: P(A.get(e)),
|
|
486
|
+
count: t.count,
|
|
487
|
+
bytes: t.bytes,
|
|
488
|
+
target: {
|
|
489
|
+
kind: "objArray",
|
|
490
|
+
elemClassId: e
|
|
491
|
+
}
|
|
492
|
+
});
|
|
493
|
+
for (let [e, t] of v) j.push({
|
|
494
|
+
name: f(e) + "[]",
|
|
495
|
+
count: t.count,
|
|
496
|
+
bytes: t.bytes,
|
|
497
|
+
target: {
|
|
498
|
+
kind: "primArray",
|
|
499
|
+
elemType: e
|
|
500
|
+
}
|
|
501
|
+
});
|
|
502
|
+
return j.sort((e, t) => t.bytes - e.bytes || t.count - e.count), r?.(i.size, i.size), new t(n, {
|
|
503
|
+
idSize: a,
|
|
504
|
+
timestamp: o,
|
|
505
|
+
fileSize: n.size,
|
|
506
|
+
recordCount: x,
|
|
507
|
+
classCount: S,
|
|
508
|
+
instanceCount: b,
|
|
509
|
+
gcRoots: y,
|
|
510
|
+
stringCount: s.size,
|
|
511
|
+
heapBytes: C,
|
|
512
|
+
rows: j
|
|
513
|
+
}, a, l, A, s, /* @__PURE__ */ new Map());
|
|
514
|
+
}
|
|
515
|
+
async collect(t, n = {}) {
|
|
516
|
+
let r = n.limit ?? 1e4, i = n.filter?.trim().toLowerCase() ?? "", a = this.idSize, o = t.kind === "class" ? this.resolveLayout(t.classObjId) : null, s = new p(this.blob);
|
|
517
|
+
await D(s);
|
|
518
|
+
let c = [], l = 0, d = 0, f = async () => {
|
|
519
|
+
++d % T === 0 && (n.onProgress?.(s.globalPos, s.size), await E());
|
|
520
|
+
}, m = (e) => {
|
|
521
|
+
i && !K(e, i) || (l++, c.length < r && c.push(e));
|
|
522
|
+
};
|
|
523
|
+
for (; s.globalPos < s.size;) {
|
|
524
|
+
let n = await s.u1();
|
|
525
|
+
await s.u4();
|
|
526
|
+
let d = await s.u4(), p = s.globalPos + d;
|
|
527
|
+
if (n === g || n === _) for (; s.globalPos < p;) {
|
|
528
|
+
let e = await s.u1();
|
|
529
|
+
if (t.kind === "class" && e === y) {
|
|
530
|
+
let e = await s.id(a);
|
|
531
|
+
await s.skip(4);
|
|
532
|
+
let n = await s.id(a), u = await s.u4();
|
|
533
|
+
if (n === t.classObjId) {
|
|
534
|
+
let t = u + a * 2;
|
|
535
|
+
if (i || c.length < r) {
|
|
536
|
+
let n = await s.bytes(u);
|
|
537
|
+
m({
|
|
538
|
+
id: e,
|
|
539
|
+
size: t,
|
|
540
|
+
fields: o ? j(n, o, a) : []
|
|
541
|
+
});
|
|
542
|
+
} else await s.skip(u), l++;
|
|
543
|
+
} else await s.skip(u);
|
|
544
|
+
} else if (t.kind === "primArray" && e === x) {
|
|
545
|
+
let e = await s.id(a);
|
|
546
|
+
await s.skip(4);
|
|
547
|
+
let n = await s.u4(), o = await s.u1(), d = n * u(o, a);
|
|
548
|
+
if (o === t.elemType) {
|
|
549
|
+
let t = d + a * 2 + 4;
|
|
550
|
+
if (i || c.length < r) {
|
|
551
|
+
let r = Math.min(d, C), i = await s.bytes(r);
|
|
552
|
+
await s.skip(d - r), m({
|
|
553
|
+
id: e,
|
|
554
|
+
size: t,
|
|
555
|
+
fields: [],
|
|
556
|
+
array: U(o, i, n)
|
|
557
|
+
});
|
|
558
|
+
} else await s.skip(d), l++;
|
|
559
|
+
} else await s.skip(d);
|
|
560
|
+
} else if (t.kind === "objArray" && e === b) {
|
|
561
|
+
let e = await s.id(a);
|
|
562
|
+
await s.skip(4);
|
|
563
|
+
let n = await s.u4(), o = await s.id(a);
|
|
564
|
+
if (o === t.elemClassId) {
|
|
565
|
+
let t = n * a + a * 2 + 4;
|
|
566
|
+
i || c.length < r ? m({
|
|
567
|
+
id: e,
|
|
568
|
+
size: t,
|
|
569
|
+
fields: [],
|
|
570
|
+
array: await this.readObjArrayPreview(s, n, o, a)
|
|
571
|
+
}) : (await s.skip(n * a), l++);
|
|
572
|
+
} else await s.skip(n * a);
|
|
573
|
+
} else {
|
|
574
|
+
let t = await k(s, e, a);
|
|
575
|
+
t && t.kind === "instance" && await s.skip(t.numBytes);
|
|
576
|
+
}
|
|
577
|
+
await f();
|
|
578
|
+
}
|
|
579
|
+
else await s.skip(d);
|
|
580
|
+
if (s.globalPos < p) await s.skip(p - s.globalPos);
|
|
581
|
+
else if (s.globalPos > p) throw new e("解析越界(偏移 " + s.globalPos + ",应止于 " + p + ")");
|
|
582
|
+
await f();
|
|
583
|
+
}
|
|
584
|
+
return n.onProgress?.(s.size, s.size), {
|
|
585
|
+
rows: c,
|
|
586
|
+
total: l,
|
|
587
|
+
truncated: l > c.length
|
|
588
|
+
};
|
|
589
|
+
}
|
|
590
|
+
async readObjArrayPreview(e, t, n, r) {
|
|
591
|
+
let i = Math.min(t, 256), a = [];
|
|
592
|
+
for (let t = 0; t < i; t++) {
|
|
593
|
+
let n = await e.id(r);
|
|
594
|
+
a.push(n === "0" ? {
|
|
595
|
+
name: String(t),
|
|
596
|
+
value: "null",
|
|
597
|
+
kind: "null"
|
|
598
|
+
} : {
|
|
599
|
+
name: String(t),
|
|
600
|
+
value: "#" + n,
|
|
601
|
+
kind: "ref",
|
|
602
|
+
refId: n
|
|
603
|
+
});
|
|
604
|
+
}
|
|
605
|
+
return await e.skip((t - i) * r), {
|
|
606
|
+
elemClassName: F(this.classNames.get(n)),
|
|
607
|
+
length: t,
|
|
608
|
+
elements: a,
|
|
609
|
+
truncated: i < t
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
async resolveObjects(t, n) {
|
|
613
|
+
let r = this.idSize, i = /* @__PURE__ */ new Map(), a = 0;
|
|
614
|
+
for (let e of t) {
|
|
615
|
+
let t = this.classNames.get(e);
|
|
616
|
+
t ? i.set(e, {
|
|
617
|
+
id: e,
|
|
618
|
+
kind: "class",
|
|
619
|
+
className: t
|
|
620
|
+
}) : a++;
|
|
621
|
+
}
|
|
622
|
+
if (a === 0) return i;
|
|
623
|
+
let o = new p(this.blob);
|
|
624
|
+
await D(o);
|
|
625
|
+
let s = 0, c = async () => {
|
|
626
|
+
++s % T === 0 && (n?.(o.globalPos, o.size), await E());
|
|
627
|
+
};
|
|
628
|
+
for (; o.globalPos < o.size && a > 0;) {
|
|
629
|
+
let n = await o.u1();
|
|
630
|
+
await o.u4();
|
|
631
|
+
let s = await o.u4(), l = o.globalPos + s;
|
|
632
|
+
if (n === g || n === _) for (; o.globalPos < l && a > 0;) {
|
|
633
|
+
let n = await o.u1();
|
|
634
|
+
if (n === y) {
|
|
635
|
+
let e = await o.id(r);
|
|
636
|
+
await o.skip(4);
|
|
637
|
+
let n = await o.id(r), s = await o.u4();
|
|
638
|
+
if (t.has(e) && !i.has(e)) {
|
|
639
|
+
let t = await o.bytes(s), c = this.resolveLayout(n);
|
|
640
|
+
i.set(e, {
|
|
641
|
+
id: e,
|
|
642
|
+
kind: "instance",
|
|
643
|
+
className: this.classNameOf(n),
|
|
644
|
+
size: s + r * 2,
|
|
645
|
+
fields: c ? j(t, c, r) : []
|
|
646
|
+
}), a--;
|
|
647
|
+
} else await o.skip(s);
|
|
648
|
+
} else if (n === x) {
|
|
649
|
+
let e = await o.id(r);
|
|
650
|
+
await o.skip(4);
|
|
651
|
+
let n = await o.u4(), s = await o.u1(), c = n * u(s, r);
|
|
652
|
+
if (t.has(e) && !i.has(e)) {
|
|
653
|
+
let t = Math.min(c, C), l = await o.bytes(t);
|
|
654
|
+
await o.skip(c - t), i.set(e, {
|
|
655
|
+
id: e,
|
|
656
|
+
kind: "primArray",
|
|
657
|
+
className: f(s) + "[]",
|
|
658
|
+
size: c + r * 2 + 4,
|
|
659
|
+
length: n,
|
|
660
|
+
elemType: s,
|
|
661
|
+
rawBytes: l,
|
|
662
|
+
array: U(s, l, n)
|
|
663
|
+
}), a--;
|
|
664
|
+
} else await o.skip(c);
|
|
665
|
+
} else if (n === b) {
|
|
666
|
+
let e = await o.id(r);
|
|
667
|
+
await o.skip(4);
|
|
668
|
+
let n = await o.u4(), s = await o.id(r);
|
|
669
|
+
if (t.has(e) && !i.has(e)) {
|
|
670
|
+
let t = await this.readObjArrayPreview(o, n, s, r);
|
|
671
|
+
i.set(e, {
|
|
672
|
+
id: e,
|
|
673
|
+
kind: "objArray",
|
|
674
|
+
className: P(this.classNames.get(s)),
|
|
675
|
+
size: n * r + r * 2 + 4,
|
|
676
|
+
length: n,
|
|
677
|
+
array: t
|
|
678
|
+
}), a--;
|
|
679
|
+
} else await o.skip(n * r);
|
|
680
|
+
} else if (n === v) await O(o, r);
|
|
681
|
+
else {
|
|
682
|
+
let t = S[n];
|
|
683
|
+
if (t) await o.skip(r + t(r));
|
|
684
|
+
else throw new e("未知的堆子记录标记 0x" + n.toString(16) + "(偏移 " + o.globalPos + ")");
|
|
685
|
+
}
|
|
686
|
+
await c();
|
|
687
|
+
}
|
|
688
|
+
else await o.skip(s);
|
|
689
|
+
if (o.globalPos < l) await o.skip(l - o.globalPos);
|
|
690
|
+
else if (o.globalPos > l) throw new e("解析越界(偏移 " + o.globalPos + ",应止于 " + l + ")");
|
|
691
|
+
await c();
|
|
692
|
+
}
|
|
693
|
+
return n?.(o.size, o.size), i;
|
|
694
|
+
}
|
|
695
|
+
};
|
|
696
|
+
function K(e, t) {
|
|
697
|
+
if (e.id.includes(t)) return !0;
|
|
698
|
+
for (let n of e.fields) if ((n.name + "=" + n.value).toLowerCase().includes(t)) return !0;
|
|
699
|
+
let n = e.array;
|
|
700
|
+
if (n) {
|
|
701
|
+
if (n.text && n.text.toLowerCase().includes(t) || n.hex && n.hex.includes(t)) return !0;
|
|
702
|
+
if (n.elements) {
|
|
703
|
+
for (let e of n.elements) if (e.value.toLowerCase().includes(t)) return !0;
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
return !1;
|
|
707
|
+
}
|
|
708
|
+
//#endregion
|
|
709
|
+
export { G as Hprof, e as HprofParseError, W as decodeStringValue };
|