@heycys/gallery 0.0.0-stage → 0.1.1
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 +50 -2
- package/THIRD-PARTY-NOTICES.md +3303 -0
- package/assets/writing-preferences.md +107 -0
- package/bin/gallery.mjs +10 -0
- package/browser/editor/components/bookmark/icons.mjs +6 -0
- package/browser/editor/components/bookmark/index.mjs +80 -0
- package/browser/editor/components/bookmark/page.mjs +147 -0
- package/browser/editor/components/builders.mjs +19 -0
- package/browser/editor/components/callout/index.mjs +64 -0
- package/browser/editor/components/code/index.mjs +327 -0
- package/browser/editor/components/code/page.mjs +561 -0
- package/browser/editor/components/colors.mjs +50 -0
- package/browser/editor/components/columns/index.mjs +104 -0
- package/browser/editor/components/columns/page.mjs +310 -0
- package/browser/editor/components/details/index.mjs +73 -0
- package/browser/editor/components/details/page.mjs +86 -0
- package/browser/editor/components/dialog/index.mjs +84 -0
- package/browser/editor/components/dialog/page.mjs +201 -0
- package/browser/editor/components/divider/index.mjs +48 -0
- package/browser/editor/components/embed/icons.mjs +11 -0
- package/browser/editor/components/embed/index.mjs +123 -0
- package/browser/editor/components/embed/page.mjs +309 -0
- package/browser/editor/components/figure/index.mjs +87 -0
- package/browser/editor/components/figure/page.mjs +42 -0
- package/browser/editor/components/file/icons.mjs +14 -0
- package/browser/editor/components/file/index.mjs +77 -0
- package/browser/editor/components/file/page.mjs +114 -0
- package/browser/editor/components/flowchart/add.mjs +123 -0
- package/browser/editor/components/flowchart/index.mjs +246 -0
- package/browser/editor/components/flowchart/page.mjs +453 -0
- package/browser/editor/components/heading/index.mjs +53 -0
- package/browser/editor/components/heading/page.mjs +6 -0
- package/browser/editor/components/highlight/index.mjs +63 -0
- package/browser/editor/components/icon/index.mjs +57 -0
- package/browser/editor/components/icon/page.mjs +286 -0
- package/browser/editor/components/icons.mjs +48 -0
- package/browser/editor/components/image/crop.mjs +189 -0
- package/browser/editor/components/image/index.mjs +104 -0
- package/browser/editor/components/image/page.mjs +385 -0
- package/browser/editor/components/image/viewer.mjs +213 -0
- package/browser/editor/components/installed/index.mjs +179 -0
- package/browser/editor/components/installed/page.mjs +523 -0
- package/browser/editor/components/installed/served.mjs +35 -0
- package/browser/editor/components/kit.mjs +67 -0
- package/browser/editor/components/list/index.mjs +194 -0
- package/browser/editor/components/list/join.mjs +68 -0
- package/browser/editor/components/list/numbers.mjs +107 -0
- package/browser/editor/components/list/page.mjs +632 -0
- package/browser/editor/components/math/index.mjs +88 -0
- package/browser/editor/components/math/page.mjs +236 -0
- package/browser/editor/components/math/tex-logo.mjs +6 -0
- package/browser/editor/components/media/icons.mjs +19 -0
- package/browser/editor/components/media/page.mjs +192 -0
- package/browser/editor/components/media/parts.mjs +60 -0
- package/browser/editor/components/media/size.mjs +20 -0
- package/browser/editor/components/media/toolbar.mjs +37 -0
- package/browser/editor/components/media/write.mjs +7 -0
- package/browser/editor/components/pages.mjs +46 -0
- package/browser/editor/components/paragraph/index.mjs +43 -0
- package/browser/editor/components/paragraph/page.mjs +52 -0
- package/browser/editor/components/placeholder-bar.mjs +17 -0
- package/browser/editor/components/placeholder.mjs +128 -0
- package/browser/editor/components/quote/index.mjs +33 -0
- package/browser/editor/components/registry.mjs +859 -0
- package/browser/editor/components/rows.mjs +16 -0
- package/browser/editor/components/section/index.mjs +42 -0
- package/browser/editor/components/section/page.mjs +141 -0
- package/browser/editor/components/set-apart.mjs +24 -0
- package/browser/editor/components/sheets/index.mjs +137 -0
- package/browser/editor/components/sheets/page.mjs +227 -0
- package/browser/editor/components/sheets/pills.mjs +226 -0
- package/browser/editor/components/table/grid.mjs +73 -0
- package/browser/editor/components/table/index.mjs +308 -0
- package/browser/editor/components/table/page.mjs +683 -0
- package/browser/editor/components/table/slots.mjs +41 -0
- package/browser/editor/components/widget/index.mjs +50 -0
- package/browser/editor/page/annotate/anchors.mjs +230 -0
- package/browser/editor/page/annotate/card.mjs +102 -0
- package/browser/editor/page/annotate/index.mjs +1656 -0
- package/browser/editor/page/at-menu/index.mjs +317 -0
- package/browser/editor/page/autosave.mjs +1023 -0
- package/browser/editor/page/beside.mjs +21 -0
- package/browser/editor/page/block-info.mjs +63 -0
- package/browser/editor/page/block-menu/colors.mjs +84 -0
- package/browser/editor/page/block-menu/index.mjs +217 -0
- package/browser/editor/page/blocks.mjs +255 -0
- package/browser/editor/page/caret.mjs +682 -0
- package/browser/editor/page/changes/bar.mjs +102 -0
- package/browser/editor/page/changes/ghost.mjs +206 -0
- package/browser/editor/page/changes/gone-words.mjs +94 -0
- package/browser/editor/page/changes/index.mjs +447 -0
- package/browser/editor/page/changes/words.mjs +27 -0
- package/browser/editor/page/chip-fills.mjs +126 -0
- package/browser/editor/page/clipboard/import/colors.mjs +192 -0
- package/browser/editor/page/clipboard/import/html.mjs +792 -0
- package/browser/editor/page/clipboard/import/inline.mjs +232 -0
- package/browser/editor/page/clipboard/import/languages.mjs +42 -0
- package/browser/editor/page/clipboard/import/markdown.mjs +760 -0
- package/browser/editor/page/clipboard/import/math.mjs +100 -0
- package/browser/editor/page/clipboard/import/office.mjs +245 -0
- package/browser/editor/page/clipboard/import/read.mjs +120 -0
- package/browser/editor/page/clipboard/import/rich.mjs +29 -0
- package/browser/editor/page/clipboard/import/to-blocks.mjs +290 -0
- package/browser/editor/page/clipboard/index.mjs +816 -0
- package/browser/editor/page/clipboard/own/blocks.mjs +211 -0
- package/browser/editor/page/clipboard/own/chart-keys.mjs +58 -0
- package/browser/editor/page/clipboard/own/describe.mjs +124 -0
- package/browser/editor/page/clipboard/own/export.mjs +167 -0
- package/browser/editor/page/clipboard/own/ids.mjs +39 -0
- package/browser/editor/page/clipboard/own/index.mjs +13 -0
- package/browser/editor/page/clipboard/own/rules.mjs +44 -0
- package/browser/editor/page/clipboard/own/selection.mjs +159 -0
- package/browser/editor/page/clipboard/own/writers.mjs +315 -0
- package/browser/editor/page/columns/index.mjs +360 -0
- package/browser/editor/page/commit.mjs +1813 -0
- package/browser/editor/page/conflicts.mjs +249 -0
- package/browser/editor/page/convert.mjs +831 -0
- package/browser/editor/page/core.mjs +1693 -0
- package/browser/editor/page/drag/drop.mjs +307 -0
- package/browser/editor/page/drag/index.mjs +351 -0
- package/browser/editor/page/drag/preview.mjs +126 -0
- package/browser/editor/page/edge-scroll.mjs +50 -0
- package/browser/editor/page/editor.mjs +1780 -0
- package/browser/editor/page/emoji-picker/emoji-tab.mjs +287 -0
- package/browser/editor/page/emoji-picker/glyph-html.mjs +26 -0
- package/browser/editor/page/emoji-picker/grid.mjs +81 -0
- package/browser/editor/page/emoji-picker/icon-tab.mjs +217 -0
- package/browser/editor/page/emoji-picker/icons.mjs +31 -0
- package/browser/editor/page/emoji-picker/index.mjs +166 -0
- package/browser/editor/page/emoji-picker/styles.mjs +161 -0
- package/browser/editor/page/emoji-picker/support.mjs +204 -0
- package/browser/editor/page/emoji-picker/upload.mjs +236 -0
- package/browser/editor/page/export-report.mjs +23 -0
- package/browser/editor/page/fills.mjs +62 -0
- package/browser/editor/page/find/index.mjs +107 -0
- package/browser/editor/page/flags.mjs +70 -0
- package/browser/editor/page/fold/index.mjs +348 -0
- package/browser/editor/page/fold/rule.mjs +125 -0
- package/browser/editor/page/folded.mjs +23 -0
- package/browser/editor/page/format-bar/bar.mjs +449 -0
- package/browser/editor/page/format-bar/brush.mjs +77 -0
- package/browser/editor/page/format-bar/colors.mjs +46 -0
- package/browser/editor/page/format-bar/index.mjs +404 -0
- package/browser/editor/page/formula/index.mjs +236 -0
- package/browser/editor/page/formula/panel.mjs +336 -0
- package/browser/editor/page/formula/symbols.mjs +156 -0
- package/browser/editor/page/frame.mjs +74 -0
- package/browser/editor/page/frames.mjs +196 -0
- package/browser/editor/page/geometry.mjs +402 -0
- package/browser/editor/page/gesture.mjs +45 -0
- package/browser/editor/page/handle/index.mjs +650 -0
- package/browser/editor/page/handle-sizes.mjs +14 -0
- package/browser/editor/page/hints/index.mjs +84 -0
- package/browser/editor/page/history.mjs +401 -0
- package/browser/editor/page/insert/index.mjs +256 -0
- package/browser/editor/page/kept.mjs +38 -0
- package/browser/editor/page/links/address.mjs +40 -0
- package/browser/editor/page/links/index.mjs +866 -0
- package/browser/editor/page/links/pages.mjs +131 -0
- package/browser/editor/page/links/views.mjs +369 -0
- package/browser/editor/page/long-runs.mjs +75 -0
- package/browser/editor/page/look.mjs +77 -0
- package/browser/editor/page/made.mjs +24 -0
- package/browser/editor/page/margin.mjs +373 -0
- package/browser/editor/page/markdown/index.mjs +88 -0
- package/browser/editor/page/markdown/rules.mjs +33 -0
- package/browser/editor/page/marks.mjs +377 -0
- package/browser/editor/page/media-menu/index.mjs +158 -0
- package/browser/editor/page/menu.mjs +544 -0
- package/browser/editor/page/merge.mjs +124 -0
- package/browser/editor/page/notices.mjs +142 -0
- package/browser/editor/page/offered.mjs +32 -0
- package/browser/editor/page/outline/folds.mjs +53 -0
- package/browser/editor/page/outline/index.mjs +783 -0
- package/browser/editor/page/outline/list.mjs +184 -0
- package/browser/editor/page/outline/read.mjs +201 -0
- package/browser/editor/page/outline/strip.mjs +287 -0
- package/browser/editor/page/outline/tree.mjs +248 -0
- package/browser/editor/page/overlay-layer.mjs +227 -0
- package/browser/editor/page/overlays.mjs +205 -0
- package/browser/editor/page/own.mjs +28 -0
- package/browser/editor/page/pads.mjs +71 -0
- package/browser/editor/page/page-objects.mjs +105 -0
- package/browser/editor/page/panel.mjs +65 -0
- package/browser/editor/page/placement.mjs +58 -0
- package/browser/editor/page/post.mjs +41 -0
- package/browser/editor/page/present-links.mjs +50 -0
- package/browser/editor/page/quiet.mjs +48 -0
- package/browser/editor/page/resize/index.mjs +327 -0
- package/browser/editor/page/select-all/index.mjs +262 -0
- package/browser/editor/page/selection/delete.mjs +61 -0
- package/browser/editor/page/selection/index.mjs +164 -0
- package/browser/editor/page/selection/marquee.mjs +174 -0
- package/browser/editor/page/session.mjs +168 -0
- package/browser/editor/page/slash-menu/index.mjs +291 -0
- package/browser/editor/page/storage.mjs +48 -0
- package/browser/editor/page/sync-state.mjs +267 -0
- package/browser/editor/page/table/aligns.mjs +29 -0
- package/browser/editor/page/table/cell-bar.mjs +141 -0
- package/browser/editor/page/table/cells.mjs +527 -0
- package/browser/editor/page/table/icons.mjs +40 -0
- package/browser/editor/page/table/index.mjs +990 -0
- package/browser/editor/page/table/lists.mjs +187 -0
- package/browser/editor/page/table/widths.mjs +313 -0
- package/browser/editor/page/tex.mjs +32 -0
- package/browser/editor/page/text-select/index.mjs +671 -0
- package/browser/editor/page/tooltip.mjs +98 -0
- package/browser/editor/page/type-grid.mjs +83 -0
- package/browser/editor/page/typing/code-edges.mjs +274 -0
- package/browser/editor/page/typing/index.mjs +282 -0
- package/browser/editor/page/typing/leave.mjs +68 -0
- package/browser/editor/page/ui.mjs +160 -0
- package/browser/shared/annotations.mjs +569 -0
- package/browser/shared/code-folds.mjs +14 -0
- package/browser/shared/code-languages.mjs +70 -0
- package/browser/shared/code-lines.mjs +30 -0
- package/browser/shared/colors.mjs +30 -0
- package/browser/shared/component-catalog.mjs +573 -0
- package/browser/shared/components/bookmark.mjs +26 -0
- package/browser/shared/components/callout.mjs +9 -0
- package/browser/shared/components/chart.mjs +20 -0
- package/browser/shared/components/code.mjs +37 -0
- package/browser/shared/components/columns.mjs +16 -0
- package/browser/shared/components/details.mjs +15 -0
- package/browser/shared/components/dialog.mjs +28 -0
- package/browser/shared/components/diff.mjs +18 -0
- package/browser/shared/components/divider.mjs +6 -0
- package/browser/shared/components/embed.mjs +25 -0
- package/browser/shared/components/figure.mjs +14 -0
- package/browser/shared/components/file.mjs +23 -0
- package/browser/shared/components/heading.mjs +6 -0
- package/browser/shared/components/highlight.mjs +9 -0
- package/browser/shared/components/icon.mjs +18 -0
- package/browser/shared/components/image.mjs +39 -0
- package/browser/shared/components/index.mjs +396 -0
- package/browser/shared/components/installed.mjs +232 -0
- package/browser/shared/components/list.mjs +146 -0
- package/browser/shared/components/math.mjs +49 -0
- package/browser/shared/components/mention.mjs +33 -0
- package/browser/shared/components/page.mjs +46 -0
- package/browser/shared/components/paragraph.mjs +9 -0
- package/browser/shared/components/quote.mjs +6 -0
- package/browser/shared/components/section.mjs +8 -0
- package/browser/shared/components/sheets.mjs +80 -0
- package/browser/shared/components/state.mjs +20 -0
- package/browser/shared/components/table.mjs +49 -0
- package/browser/shared/components/text.mjs +14 -0
- package/browser/shared/components/widget.mjs +10 -0
- package/browser/shared/copy-ids.mjs +72 -0
- package/browser/shared/css-references.mjs +110 -0
- package/browser/shared/document-look.mjs +178 -0
- package/browser/shared/emoji/custom.mjs +91 -0
- package/browser/shared/emoji/data/LICENSE-lucide.txt +43 -0
- package/browser/shared/emoji/data/LICENSE-mingcute.txt +202 -0
- package/browser/shared/emoji/data/LICENSE-tabler.txt +21 -0
- package/browser/shared/emoji/data/README.md +28 -0
- package/browser/shared/emoji/data/categories.json +1 -0
- package/browser/shared/emoji/data/icons.json +1 -0
- package/browser/shared/emoji/data/keywords-en.json +1 -0
- package/browser/shared/emoji/data/keywords-zh.json +1 -0
- package/browser/shared/emoji/data/names.json +1 -0
- package/browser/shared/emoji/data/positions.json +1 -0
- package/browser/shared/emoji/data/twemoji-index.json +1 -0
- package/browser/shared/emoji/data/twemoji-svg.bin +0 -0
- package/browser/shared/emoji/data.mjs +194 -0
- package/browser/shared/emoji/emoji.mjs +38 -0
- package/browser/shared/emoji/glyphs.mjs +134 -0
- package/browser/shared/emoji/icon-value.mjs +91 -0
- package/browser/shared/escape.mjs +20 -0
- package/browser/shared/export-wrap.mjs +89 -0
- package/browser/shared/files.mjs +33 -0
- package/browser/shared/html-tree.mjs +59 -0
- package/browser/shared/http.mjs +22 -0
- package/browser/shared/i18n/en.mjs +1223 -0
- package/browser/shared/i18n/index.mjs +132 -0
- package/browser/shared/ids.mjs +24 -0
- package/browser/shared/import-types.mjs +23 -0
- package/browser/shared/inline-spacing.mjs +97 -0
- package/browser/shared/layers.mjs +42 -0
- package/browser/shared/long-runs.mjs +39 -0
- package/browser/shared/media.mjs +162 -0
- package/browser/shared/new-names.mjs +67 -0
- package/browser/shared/number-reading.mjs +92 -0
- package/browser/shared/old-names.mjs +143 -0
- package/browser/shared/outline.mjs +194 -0
- package/browser/shared/page-address.mjs +140 -0
- package/browser/shared/page-links.mjs +86 -0
- package/browser/shared/paths.mjs +73 -0
- package/browser/shared/preferences.mjs +116 -0
- package/browser/shared/preview-server.mjs +247 -0
- package/browser/shared/qa-levels.mjs +93 -0
- package/browser/shared/reading-place.mjs +91 -0
- package/browser/shared/renamed-storage.mjs +220 -0
- package/browser/shared/reports.mjs +46 -0
- package/browser/shared/search.mjs +85 -0
- package/browser/shared/session.mjs +77 -0
- package/browser/shared/table-chart.mjs +113 -0
- package/browser/shared/table-hides.mjs +120 -0
- package/browser/shared/table-slots.mjs +75 -0
- package/browser/shared/words.mjs +23 -0
- package/browser/shared/workspace-look.mjs +91 -0
- package/browser/shared/workspace.mjs +535 -0
- package/browser/shared/writing-preferences.mjs +68 -0
- package/browser/shared/zoom.mjs +57 -0
- package/dist/chunk-2B5E4CDJ.mjs +2 -0
- package/dist/chunk-342HXE3Q.mjs +2 -0
- package/dist/chunk-3HIRPVLU.mjs +2 -0
- package/dist/chunk-43B75J5T.mjs +2 -0
- package/dist/chunk-4FS7Z7WR.mjs +2 -0
- package/dist/chunk-4K5KC6V2.mjs +2 -0
- package/dist/chunk-5L7RYZCL.mjs +2 -0
- package/dist/chunk-5MHMDLZD.mjs +4 -0
- package/dist/chunk-5ZKJ3H4P.mjs +8 -0
- package/dist/chunk-64K7IPLO.mjs +255 -0
- package/dist/chunk-6QXGZM36.mjs +8 -0
- package/dist/chunk-6RGJOMJP.mjs +16 -0
- package/dist/chunk-742D2WWJ.mjs +19 -0
- package/dist/chunk-7DTINW6U.mjs +48 -0
- package/dist/chunk-A55HN5OK.mjs +2 -0
- package/dist/chunk-AGDILNWB.mjs +2 -0
- package/dist/chunk-AJ73XJF3.mjs +2 -0
- package/dist/chunk-AUZGSZJH.mjs +13 -0
- package/dist/chunk-BFE45AKL.mjs +2 -0
- package/dist/chunk-BGGDRNYQ.mjs +10 -0
- package/dist/chunk-BXO2ZY5P.mjs +2 -0
- package/dist/chunk-C564NU2H.mjs +77 -0
- package/dist/chunk-CEH4MRCC.mjs +2 -0
- package/dist/chunk-CY2FNNAB.mjs +16 -0
- package/dist/chunk-DFUDV4LX.mjs +2 -0
- package/dist/chunk-DKXG4XDG.mjs +2 -0
- package/dist/chunk-E7LWZRXY.mjs +4 -0
- package/dist/chunk-EZQ34M3F.mjs +124 -0
- package/dist/chunk-EZY3WC6Z.mjs +15 -0
- package/dist/chunk-FDLXYYG4.mjs +4 -0
- package/dist/chunk-FUKQNOQS.mjs +9 -0
- package/dist/chunk-GB5SOYQJ.mjs +7 -0
- package/dist/chunk-GRAXKKG4.mjs +2 -0
- package/dist/chunk-HYMEEXKN.mjs +4 -0
- package/dist/chunk-IVDLMMBD.mjs +2 -0
- package/dist/chunk-JPOSLGOC.mjs +6 -0
- package/dist/chunk-JVHHHGEA.mjs +3 -0
- package/dist/chunk-L3QKH4OK.mjs +26 -0
- package/dist/chunk-LAE5NQ4B.mjs +2 -0
- package/dist/chunk-LCTHTZIL.mjs +960 -0
- package/dist/chunk-LEF6DRCK.mjs +59 -0
- package/dist/chunk-LKX55H76.mjs +2 -0
- package/dist/chunk-LS4F7JUM.mjs +2 -0
- package/dist/chunk-MAFIGVXY.mjs +2 -0
- package/dist/chunk-NO5NJCHO.mjs +2 -0
- package/dist/chunk-NQPVAU63.mjs +2 -0
- package/dist/chunk-NSKUTQ5J.mjs +5 -0
- package/dist/chunk-O35FIXRB.mjs +2 -0
- package/dist/chunk-P2CAZPDP.mjs +3 -0
- package/dist/chunk-PL6GHLGD.mjs +15 -0
- package/dist/chunk-QAIHRH3I.mjs +13 -0
- package/dist/chunk-QJIR2BLP.mjs +6 -0
- package/dist/chunk-QR6A54KJ.mjs +3 -0
- package/dist/chunk-QUPLVPB2.mjs +7 -0
- package/dist/chunk-R7BNENLY.mjs +4 -0
- package/dist/chunk-S6O4UHLC.mjs +2 -0
- package/dist/chunk-SGJWQKEI.mjs +2 -0
- package/dist/chunk-SYGN7GLU.mjs +2 -0
- package/dist/chunk-TMYZB6AV.mjs +2 -0
- package/dist/chunk-TX6JH7TR.mjs +2 -0
- package/dist/chunk-TYK6VNAB.mjs +10 -0
- package/dist/chunk-U3SSPL4K.mjs +8 -0
- package/dist/chunk-U6KNPJPR.mjs +2 -0
- package/dist/chunk-UALRNVSE.mjs +4 -0
- package/dist/chunk-UH4SIXTR.mjs +2 -0
- package/dist/chunk-UMHUSOPJ.mjs +2 -0
- package/dist/chunk-V3HXVQEM.mjs +2 -0
- package/dist/chunk-V5JTW2LH.mjs +27 -0
- package/dist/chunk-V5VXUJKG.mjs +2 -0
- package/dist/chunk-V6XZ4VIR.mjs +2 -0
- package/dist/chunk-VBXMADMP.mjs +2 -0
- package/dist/chunk-VNV55RUA.mjs +2 -0
- package/dist/chunk-VPD2PS35.mjs +2 -0
- package/dist/chunk-W3BGBJQW.mjs +2 -0
- package/dist/chunk-W4VKN3GF.mjs +7 -0
- package/dist/chunk-W5BXXPDJ.mjs +3 -0
- package/dist/chunk-W7XHE4CT.mjs +2 -0
- package/dist/chunk-XNROSH2T.mjs +4 -0
- package/dist/chunk-XUNHRCOG.mjs +6 -0
- package/dist/chunk-Y34NR5JL.mjs +2 -0
- package/dist/chunk-Y6RLRPG3.mjs +3 -0
- package/dist/chunk-YEY3RSFQ.mjs +2 -0
- package/dist/cli.mjs +2 -0
- package/dist/server.mjs +2 -0
- package/dist/worker.mjs +5 -0
- package/kit/charts.js +355 -0
- package/kit/code.js +164 -0
- package/kit/dialogs.js +157 -0
- package/kit/math.js +2004 -0
- package/kit/report.css +2932 -0
- package/kit/runtime.js +1782 -0
- package/kit/sheets.js +123 -0
- package/kit/state.js +217 -0
- package/kit/tables.js +1499 -0
- package/kit/tokens.js +29 -0
- package/kit/ui.js +658 -0
- package/package.json +41 -4
- package/release.json +25 -0
- package/sdk/column-widths.d.ts +56 -0
- package/sdk/doc-charts.d.ts +82 -0
- package/sdk/doc-code.d.ts +28 -0
- package/sdk/doc-dialogs.d.ts +4 -0
- package/sdk/doc-kit.d.ts +147 -0
- package/sdk/doc-math.d.ts +3 -0
- package/sdk/doc-sheets.d.ts +15 -0
- package/sdk/doc-state.d.ts +41 -0
- package/sdk/doc-tables.d.ts +24 -0
- package/sdk/doc-tokens.d.ts +22 -0
- package/sdk/index.d.ts +30 -0
- package/skill/SKILL.md +150 -0
- package/skill/agents/openai.yaml +5 -0
- package/skill/references/building-components.md +367 -0
- package/skill/references/example-report.html +356 -0
- package/skill/references/writing-html.md +187 -0
- package/skill/sdk/column-widths.d.ts +56 -0
- package/skill/sdk/doc-charts.d.ts +82 -0
- package/skill/sdk/doc-code.d.ts +28 -0
- package/skill/sdk/doc-dialogs.d.ts +4 -0
- package/skill/sdk/doc-kit.d.ts +147 -0
- package/skill/sdk/doc-math.d.ts +3 -0
- package/skill/sdk/doc-sheets.d.ts +15 -0
- package/skill/sdk/doc-state.d.ts +41 -0
- package/skill/sdk/doc-tables.d.ts +24 -0
- package/skill/sdk/doc-tokens.d.ts +22 -0
- package/skill/sdk/index.d.ts +30 -0
- package/starter/doc.html +21 -0
- package/starter/doc.json +5 -0
- package/vendor/d3.v7.9.0.min.js +2 -0
- package/vendor/katex/auto-render.min.js +1 -0
- package/vendor/katex/contrib/mhchem.min.js +1 -0
- package/vendor/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/vendor/katex/katex.min.css +1 -0
- package/vendor/katex/katex.min.js +1 -0
- package/vendor/pdfjs/LICENSE +177 -0
- package/vendor/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Add-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Add-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/B5pc-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/B5pc-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/CNS1-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/CNS1-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/CNS2-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/CNS2-V.bcmap +3 -0
- package/vendor/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
- package/vendor/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Ext-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Ext-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GB-H.bcmap +4 -0
- package/vendor/pdfjs/cmaps/GB-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBT-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBT-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Hankaku.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Hiragana.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Katakana.bcmap +0 -0
- package/vendor/pdfjs/cmaps/LICENSE +36 -0
- package/vendor/pdfjs/cmaps/NWP-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/NWP-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Roman.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
- package/vendor/pdfjs/legacy/build/pdf.min.mjs +27 -0
- package/vendor/pdfjs/legacy/build/pdf.worker.min.mjs +27 -0
- package/vendor/pdfjs/standard_fonts/FoxitDingbats.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitFixed.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitFixedBold.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitFixedItalic.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitSerif.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitSerifBold.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitSerifItalic.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitSymbol.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/LICENSE_FOXIT +27 -0
- package/vendor/pdfjs/standard_fonts/LICENSE_LIBERATION +363 -0
- package/vendor/pdfjs/standard_fonts/LiberationSans-Bold.ttf +0 -0
- package/vendor/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
- package/vendor/pdfjs/standard_fonts/LiberationSans-Italic.ttf +0 -0
- package/vendor/pdfjs/standard_fonts/LiberationSans-Regular.ttf +0 -0
- package/vendor/types/@types/d3/LICENSE +21 -0
- package/vendor/types/@types/d3/index.d.ts +39 -0
- package/vendor/types/@types/d3/package.json +81 -0
- package/vendor/types/@types/d3-array/LICENSE +21 -0
- package/vendor/types/@types/d3-array/index.d.ts +1118 -0
- package/vendor/types/@types/d3-array/package.json +56 -0
- package/vendor/types/@types/d3-axis/LICENSE +21 -0
- package/vendor/types/@types/d3-axis/index.d.ts +293 -0
- package/vendor/types/@types/d3-axis/package.json +47 -0
- package/vendor/types/@types/d3-brush/LICENSE +21 -0
- package/vendor/types/@types/d3-brush/index.d.ts +255 -0
- package/vendor/types/@types/d3-brush/package.json +42 -0
- package/vendor/types/@types/d3-chord/LICENSE +21 -0
- package/vendor/types/@types/d3-chord/index.d.ts +471 -0
- package/vendor/types/@types/d3-chord/package.json +40 -0
- package/vendor/types/@types/d3-color/LICENSE +21 -0
- package/vendor/types/@types/d3-color/index.d.ts +669 -0
- package/vendor/types/@types/d3-color/package.json +55 -0
- package/vendor/types/@types/d3-contour/LICENSE +21 -0
- package/vendor/types/@types/d3-contour/index.d.ts +222 -0
- package/vendor/types/@types/d3-contour/package.json +38 -0
- package/vendor/types/@types/d3-delaunay/LICENSE +21 -0
- package/vendor/types/@types/d3-delaunay/index.d.ts +316 -0
- package/vendor/types/@types/d3-delaunay/package.json +30 -0
- package/vendor/types/@types/d3-dispatch/LICENSE +21 -0
- package/vendor/types/@types/d3-dispatch/index.d.ts +96 -0
- package/vendor/types/@types/d3-dispatch/package.json +51 -0
- package/vendor/types/@types/d3-drag/LICENSE +21 -0
- package/vendor/types/@types/d3-drag/index.d.ts +395 -0
- package/vendor/types/@types/d3-drag/package.json +42 -0
- package/vendor/types/@types/d3-dsv/LICENSE +21 -0
- package/vendor/types/@types/d3-dsv/index.d.ts +482 -0
- package/vendor/types/@types/d3-dsv/package.json +45 -0
- package/vendor/types/@types/d3-ease/LICENSE +21 -0
- package/vendor/types/@types/d3-ease/index.d.ts +316 -0
- package/vendor/types/@types/d3-ease/package.json +40 -0
- package/vendor/types/@types/d3-fetch/LICENSE +21 -0
- package/vendor/types/@types/d3-fetch/index.d.ts +282 -0
- package/vendor/types/@types/d3-fetch/package.json +37 -0
- package/vendor/types/@types/d3-force/LICENSE +21 -0
- package/vendor/types/@types/d3-force/index.d.ts +899 -0
- package/vendor/types/@types/d3-force/package.json +45 -0
- package/vendor/types/@types/d3-format/LICENSE +21 -0
- package/vendor/types/@types/d3-format/index.d.ts +337 -0
- package/vendor/types/@types/d3-format/package.json +45 -0
- package/vendor/types/@types/d3-geo/LICENSE +21 -0
- package/vendor/types/@types/d3-geo/index.d.ts +1371 -0
- package/vendor/types/@types/d3-geo/package.json +48 -0
- package/vendor/types/@types/d3-hierarchy/LICENSE +21 -0
- package/vendor/types/@types/d3-hierarchy/index.d.ts +928 -0
- package/vendor/types/@types/d3-hierarchy/package.json +50 -0
- package/vendor/types/@types/d3-interpolate/LICENSE +21 -0
- package/vendor/types/@types/d3-interpolate/index.d.ts +387 -0
- package/vendor/types/@types/d3-interpolate/package.json +47 -0
- package/vendor/types/@types/d3-path/LICENSE +21 -0
- package/vendor/types/@types/d3-path/index.d.ts +108 -0
- package/vendor/types/@types/d3-path/package.json +41 -0
- package/vendor/types/@types/d3-polygon/LICENSE +21 -0
- package/vendor/types/@types/d3-polygon/index.d.ts +41 -0
- package/vendor/types/@types/d3-polygon/package.json +40 -0
- package/vendor/types/@types/d3-quadtree/LICENSE +21 -0
- package/vendor/types/@types/d3-quadtree/index.d.ts +204 -0
- package/vendor/types/@types/d3-quadtree/package.json +45 -0
- package/vendor/types/@types/d3-random/LICENSE +21 -0
- package/vendor/types/@types/d3-random/index.d.ts +313 -0
- package/vendor/types/@types/d3-random/package.json +41 -0
- package/vendor/types/@types/d3-scale/LICENSE +21 -0
- package/vendor/types/@types/d3-scale/index.d.ts +2669 -0
- package/vendor/types/@types/d3-scale/package.json +53 -0
- package/vendor/types/@types/d3-scale-chromatic/LICENSE +21 -0
- package/vendor/types/@types/d3-scale-chromatic/index.d.ts +520 -0
- package/vendor/types/@types/d3-scale-chromatic/package.json +46 -0
- package/vendor/types/@types/d3-selection/LICENSE +21 -0
- package/vendor/types/@types/d3-selection/index.d.ts +1210 -0
- package/vendor/types/@types/d3-selection/package.json +56 -0
- package/vendor/types/@types/d3-shape/LICENSE +21 -0
- package/vendor/types/@types/d3-shape/index.d.ts +2792 -0
- package/vendor/types/@types/d3-shape/package.json +53 -0
- package/vendor/types/@types/d3-time/LICENSE +21 -0
- package/vendor/types/@types/d3-time/index.d.ts +697 -0
- package/vendor/types/@types/d3-time/package.json +46 -0
- package/vendor/types/@types/d3-time-format/LICENSE +21 -0
- package/vendor/types/@types/d3-time-format/index.d.ts +202 -0
- package/vendor/types/@types/d3-time-format/package.json +40 -0
- package/vendor/types/@types/d3-timer/LICENSE +21 -0
- package/vendor/types/@types/d3-timer/index.d.ts +68 -0
- package/vendor/types/@types/d3-timer/package.json +45 -0
- package/vendor/types/@types/d3-transition/LICENSE +21 -0
- package/vendor/types/@types/d3-transition/index.d.ts +664 -0
- package/vendor/types/@types/d3-transition/package.json +47 -0
- package/vendor/types/@types/d3-zoom/LICENSE +21 -0
- package/vendor/types/@types/d3-zoom/index.d.ts +611 -0
- package/vendor/types/@types/d3-zoom/package.json +48 -0
- package/vendor/types/@types/geojson/LICENSE +21 -0
- package/vendor/types/@types/geojson/index.d.ts +202 -0
- package/vendor/types/@types/geojson/package.json +46 -0
- package/vendor/typescript/LICENSE.txt +55 -0
- package/vendor/typescript/lib.decorators.d.ts +384 -0
- package/vendor/typescript/lib.decorators.legacy.d.ts +22 -0
- package/vendor/typescript/lib.dom.d.ts +39429 -0
- package/vendor/typescript/lib.dom.iterable.d.ts +571 -0
- package/vendor/typescript/lib.es2015.collection.d.ts +147 -0
- package/vendor/typescript/lib.es2015.core.d.ts +597 -0
- package/vendor/typescript/lib.es2015.d.ts +28 -0
- package/vendor/typescript/lib.es2015.generator.d.ts +77 -0
- package/vendor/typescript/lib.es2015.iterable.d.ts +605 -0
- package/vendor/typescript/lib.es2015.promise.d.ts +81 -0
- package/vendor/typescript/lib.es2015.proxy.d.ts +128 -0
- package/vendor/typescript/lib.es2015.reflect.d.ts +144 -0
- package/vendor/typescript/lib.es2015.symbol.d.ts +46 -0
- package/vendor/typescript/lib.es2015.symbol.wellknown.d.ts +326 -0
- package/vendor/typescript/lib.es2016.array.include.d.ts +116 -0
- package/vendor/typescript/lib.es2016.d.ts +21 -0
- package/vendor/typescript/lib.es2016.intl.d.ts +31 -0
- package/vendor/typescript/lib.es2017.arraybuffer.d.ts +21 -0
- package/vendor/typescript/lib.es2017.d.ts +26 -0
- package/vendor/typescript/lib.es2017.date.d.ts +31 -0
- package/vendor/typescript/lib.es2017.intl.d.ts +44 -0
- package/vendor/typescript/lib.es2017.object.d.ts +49 -0
- package/vendor/typescript/lib.es2017.sharedmemory.d.ts +135 -0
- package/vendor/typescript/lib.es2017.string.d.ts +45 -0
- package/vendor/typescript/lib.es2017.typedarrays.d.ts +53 -0
- package/vendor/typescript/lib.es2018.asyncgenerator.d.ts +77 -0
- package/vendor/typescript/lib.es2018.asynciterable.d.ts +53 -0
- package/vendor/typescript/lib.es2018.d.ts +24 -0
- package/vendor/typescript/lib.es2018.intl.d.ts +83 -0
- package/vendor/typescript/lib.es2018.promise.d.ts +30 -0
- package/vendor/typescript/lib.es2018.regexp.d.ts +37 -0
- package/vendor/typescript/lib.es2019.array.d.ts +79 -0
- package/vendor/typescript/lib.es2019.d.ts +24 -0
- package/vendor/typescript/lib.es2019.intl.d.ts +23 -0
- package/vendor/typescript/lib.es2019.object.d.ts +33 -0
- package/vendor/typescript/lib.es2019.string.d.ts +37 -0
- package/vendor/typescript/lib.es2019.symbol.d.ts +24 -0
- package/vendor/typescript/lib.es2020.bigint.d.ts +765 -0
- package/vendor/typescript/lib.es2020.d.ts +27 -0
- package/vendor/typescript/lib.es2020.date.d.ts +42 -0
- package/vendor/typescript/lib.es2020.intl.d.ts +474 -0
- package/vendor/typescript/lib.es2020.number.d.ts +28 -0
- package/vendor/typescript/lib.es2020.promise.d.ts +47 -0
- package/vendor/typescript/lib.es2020.sharedmemory.d.ts +99 -0
- package/vendor/typescript/lib.es2020.string.d.ts +44 -0
- package/vendor/typescript/lib.es2020.symbol.wellknown.d.ts +41 -0
- package/vendor/typescript/lib.es2021.d.ts +23 -0
- package/vendor/typescript/lib.es2021.intl.d.ts +166 -0
- package/vendor/typescript/lib.es2021.promise.d.ts +48 -0
- package/vendor/typescript/lib.es2021.string.d.ts +33 -0
- package/vendor/typescript/lib.es2021.weakref.d.ts +78 -0
- package/vendor/typescript/lib.es2022.array.d.ts +121 -0
- package/vendor/typescript/lib.es2022.d.ts +25 -0
- package/vendor/typescript/lib.es2022.error.d.ts +75 -0
- package/vendor/typescript/lib.es2022.intl.d.ts +145 -0
- package/vendor/typescript/lib.es2022.object.d.ts +26 -0
- package/vendor/typescript/lib.es2022.regexp.d.ts +39 -0
- package/vendor/typescript/lib.es2022.string.d.ts +25 -0
- package/vendor/typescript/lib.es5.d.ts +4601 -0
- package/vendor/typescript/package.json +4 -0
- package/vendor/typescript/typescript.js +446 -0
- package/web/assets/index-Bh74DfsV.css +1 -0
- package/web/assets/index-UW0RyFFt.js +13 -0
- package/web/index.html +14 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{b as ht}from"./chunk-NQPVAU63.mjs";import{a as ft,g as ut,h as pt}from"./chunk-DFUDV4LX.mjs";import{k as ke}from"./chunk-Y6RLRPG3.mjs";import{e as ct}from"./chunk-6RGJOMJP.mjs";import{a as dt,b as mt}from"./chunk-QUPLVPB2.mjs";import{a as lt}from"./chunk-LAE5NQ4B.mjs";import{b as tt,c as nt,d as ce,e as ot,f as ye,h as rt,l as at,o as st,p as it}from"./chunk-AUZGSZJH.mjs";import{d as qe,e as ge,f as Re,g as Ae,h as et,k as we}from"./chunk-6QXGZM36.mjs";import{b as He,c as Ge}from"./chunk-UALRNVSE.mjs";import{d as Ke}from"./chunk-JVHHHGEA.mjs";import{a as ue}from"./chunk-L3QKH4OK.mjs";import{a as Je,d as te,g as Xe,h as Ve,l as Ye,m as Ze,r as Qe,s as Fe}from"./chunk-W4VKN3GF.mjs";import Te from"node:fs";import Mo from"node:fs/promises";import No from"node:http";import{editStateDirectory as Wo,kitPublicDirectory as zo,release as Uo,releaseFile as _e,reportsDirectory as Be,vendorDirectory as Bo,workbenchDirectory as Ho}from"../browser/shared/paths.mjs";import{serve as rn}from"../browser/shared/http.mjs";import{ensureWorkspace as Go,layoutOf as Ko}from"../browser/shared/workspace.mjs";import le from"node:fs/promises";import M from"node:path";import{Z as sn}from"../browser/shared/layers.mjs";import{escapeMarkup as De}from"../browser/shared/escape.mjs";import{layoutNotesScript as cn}from"../browser/shared/qa-levels.mjs";var ve=30,ln=`
|
|
3
|
+
[data-doc-dev].doc-checks { position: fixed; z-index: ${sn.checks}; left: 12px; bottom: 12px; max-width: min(520px, calc(100vw - 24px));
|
|
4
|
+
font: 13px/1.5 system-ui, sans-serif; color: light-dark(#37352f, #e3e2e0); }
|
|
5
|
+
[data-doc-dev].doc-checks[hidden] { display: none; }
|
|
6
|
+
[data-doc-dev].doc-checks > summary { display: inline-flex; gap: 6px; align-items: center; padding: 4px 10px; border-radius: 999px; cursor: pointer;
|
|
7
|
+
list-style: none; color: light-dark(#a1352b, #f19c92); background: light-dark(#fce9e7, #3b2321);
|
|
8
|
+
box-shadow: 0 0 0 1px light-dark(rgb(161 53 43 / 18%), rgb(241 156 146 / 22%)); user-select: none; }
|
|
9
|
+
[data-doc-dev].doc-checks > summary::-webkit-details-marker { display: none; }
|
|
10
|
+
[data-doc-dev].doc-checks > div { margin-top: 6px; padding: 8px 12px; max-height: 50vh; overflow: auto; border-radius: 10px;
|
|
11
|
+
background: light-dark(#ffffff, #252525); box-shadow: 0 0 0 1px light-dark(rgb(42 28 0 / 7%), #383836), 0 20px 24px light-dark(rgb(25 25 25 / 5%), rgb(0 0 0 / 20%)); }
|
|
12
|
+
[data-doc-dev].doc-checks ul { margin: 0; padding-left: 18px; }
|
|
13
|
+
[data-doc-dev].doc-checks li { margin: 2px 0; overflow-wrap: anywhere; }
|
|
14
|
+
[data-doc-dev].doc-checks p { margin: 6px 0 0; color: light-dark(#787774, #9b9a97); }
|
|
15
|
+
[data-doc-dev].doc-checks .doc-checks-live:not(:first-child) { margin-top: 8px; }
|
|
16
|
+
@media print { [data-doc-dev].doc-checks { display: none; } }`,dn=`(() => {
|
|
17
|
+
document.currentScript.remove();
|
|
18
|
+
${cn()}
|
|
19
|
+
const panel = document.querySelector("details.doc-checks[data-doc-dev]");
|
|
20
|
+
if (!panel) return;
|
|
21
|
+
const failures = Number(panel.dataset.failures) || 0;
|
|
22
|
+
const live = panel.querySelector(".doc-checks-live ul");
|
|
23
|
+
// The note's words in the UI's language (the root's data-ge-language).
|
|
24
|
+
const english = document.documentElement.getAttribute("data-ge-language") === "en";
|
|
25
|
+
const WORDS = english
|
|
26
|
+
? { card: "Chart card", table: "Table", named: (kind, name) => kind + " \u201C" + name + "\u201D", first: (name) => "Table (first column \u201C" + name + "\u201D)", colon: ": ",
|
|
27
|
+
failing: (count) => "Checks failed \xB7 " + count, more: (count) => count + " more", all: (slug) => "gallery check " + slug + " runs every check (TypeScript too)." }
|
|
28
|
+
: { card: "\u56FE\u8868\u5361\u7247", table: "\u8868\u683C", named: (kind, name) => kind + "\u300C" + name + "\u300D", first: (name) => "\u8868\u683C\uFF08\u9996\u5217\u300C" + name + "\u300D\uFF09", colon: "\uFF1A",
|
|
29
|
+
failing: (count) => "\u68C0\u67E5\u672A\u901A\u8FC7 \xB7 " + count + " \u9879", more: (count) => "\u8FD8\u6709 " + count + " \u9879", all: (slug) => "gallery check " + slug + " \u8DD1\u5168\u90E8\u68C0\u67E5\uFF08\u542B TypeScript\uFF09\u3002" };
|
|
30
|
+
const more = panel.querySelector("[data-more]");
|
|
31
|
+
if (more) more.textContent = WORDS.more(more.dataset.more);
|
|
32
|
+
const all = panel.querySelector("[data-all]");
|
|
33
|
+
if (all) all.textContent = WORDS.all(all.dataset.all);
|
|
34
|
+
const tidy = (node) => (node?.textContent ?? "").replace(/\\s+/g, " ").trim().slice(0, 40);
|
|
35
|
+
const what = (host) => {
|
|
36
|
+
const card = host.closest("figure");
|
|
37
|
+
const title = card?.querySelector(":scope > h3, :scope > figcaption");
|
|
38
|
+
const table = host.closest(".doc-table-wrap, table");
|
|
39
|
+
const caption = table?.querySelector("caption");
|
|
40
|
+
const header = table?.querySelector("th");
|
|
41
|
+
return title ? WORDS.named(WORDS.card, tidy(title)) : card ? WORDS.card : caption && tidy(caption) ? WORDS.named(WORDS.table, tidy(caption)) : header ? WORDS.first(tidy(header)) : host.localName;
|
|
42
|
+
};
|
|
43
|
+
// A chart that drew nothing says why in its card (the kit's line, in the same language): that line, else the note in words.
|
|
44
|
+
const said = (host, name, note) => (name === "data-missing" && tidy(host.querySelector(".doc-chart-message"))) || noteInWords(note, { english });
|
|
45
|
+
let shown = "";
|
|
46
|
+
let frame = 0;
|
|
47
|
+
const draw = () => {
|
|
48
|
+
frame = 0;
|
|
49
|
+
const notes = [...document.querySelectorAll("[data-doc-layout]")].filter((host) => !host.closest("[data-doc-dev]"))
|
|
50
|
+
.flatMap((host) => layoutNotesOf(host.getAttribute("data-doc-layout"), document.documentElement.clientWidth)
|
|
51
|
+
.filter(({ level }) => level === "fail")
|
|
52
|
+
.map(({ note, name }) => ({ line: what(host) + WORDS.colon + said(host, name, note), note })));
|
|
53
|
+
const key = notes.map(({ line }) => line).join("\\n");
|
|
54
|
+
if (key === shown) return;
|
|
55
|
+
shown = key;
|
|
56
|
+
live.replaceChildren(...notes.map(({ line, note }) => Object.assign(document.createElement("li"), { textContent: line, title: note })));
|
|
57
|
+
live.parentElement.hidden = notes.length === 0;
|
|
58
|
+
const failing = failures + notes.length;
|
|
59
|
+
panel.querySelector("summary").textContent = failing ? WORDS.failing(failing) : "";
|
|
60
|
+
panel.hidden = failing === 0;
|
|
61
|
+
};
|
|
62
|
+
const later = (records) => {
|
|
63
|
+
if (!globalThis.document?.defaultView) return; // the page is gone
|
|
64
|
+
if (!frame && records.some((record) => !record.target.closest?.("[data-doc-dev]"))) frame = requestAnimationFrame(draw);
|
|
65
|
+
};
|
|
66
|
+
new MutationObserver(later).observe(document.documentElement, { subtree: true, childList: true, attributes: true, attributeFilter: ["data-doc-layout"] });
|
|
67
|
+
addEventListener("resize", () => { if (!frame) frame = requestAnimationFrame(draw); });
|
|
68
|
+
draw();
|
|
69
|
+
})();`;function gt(t,n,r={},{directory:c}={}){let s=rt({slug:t,html:n,metadata:r,...c?{directory:c}:{}}),l=s.slice(0,ve).map(w=>`<li>${De(w)}</li>`).join(""),a=s.length>ve?`<p data-more="${s.length-ve}">\u8FD8\u6709 ${s.length-ve} \u9879</p>`:"",p=s.length?`<ul>${l}</ul>${a}<p data-all="${De(t)}">gallery check ${De(t)} \u8DD1\u5168\u90E8\u68C0\u67E5\uFF08\u542B TypeScript\uFF09\u3002</p>`:"";return`<details class="doc-checks" data-doc-dev data-failures="${s.length}"${s.length?"":" hidden"}><summary>${s.length?`\u68C0\u67E5\u672A\u901A\u8FC7 \xB7 ${s.length} \u9879`:""}</summary><div>${p}<div class="doc-checks-live" hidden><ul></ul></div></div><style>${ln}</style></details>
|
|
70
|
+
<script data-doc-dev>${dn}</script>`}import{browserDirectory as fo,editStateDirectory as uo,kitSourceDirectory as Jt,release as po,reportsDirectory as I}from"../browser/shared/paths.mjs";import{sendJson as Mt,serve as Xt,serveFound as de}from"../browser/shared/http.mjs";import{languageScript as ho}from"../browser/shared/i18n/index.mjs";import{announcePreviewServer as go,galleryVersion as wo}from"../browser/shared/preview-server.mjs";import{lookWord as Nt}from"../browser/shared/document-look.mjs";import{documentLook as Wt,ownLookAt as yo}from"../browser/shared/workspace-look.mjs";import{slugPattern as Vt}from"../browser/shared/reports.mjs";import{ATTRIBUTE as zt,PACKAGE_ID as ko}from"../browser/shared/components/installed.mjs";import{COMPONENTS_FOLDER as Ut,WORKSPACE_FILE as ze,documentDirectory as Bt,documentFiles as vo,isDocumentFile as xo,isDocumentSource as Ht,isSlugName as $o,layoutOf as bo}from"../browser/shared/workspace.mjs";import{createHash as Sn,randomBytes as Cn}from"node:crypto";import L from"node:fs";import Le from"node:os";import ee from"node:path";import{Transform as jn}from"node:stream";import{pipeline as On}from"node:stream/promises";import{exportSourceOf as En}from"../browser/shared/export-wrap.mjs";import{writeAtomic as Ie}from"../browser/shared/files.mjs";import{sendJson as D}from"../browser/shared/http.mjs";import{said as Me,saying as Tn}from"../browser/shared/i18n/index.mjs";import{IMPORT_LIMIT as xt}from"../browser/shared/import-types.mjs";import{mediaUrl as _n}from"../browser/shared/media.mjs";import{fullAddress as Pn}from"../browser/shared/page-address.mjs";import{documentLinks as $t,slugPattern as bt}from"../browser/shared/reports.mjs";import{documentDirectory as Fn,documentFiles as St,pageSlug as Rn}from"../browser/shared/workspace.mjs";import{readWritingPreferences as An,saysAnything as Dn,unshownLines as Ln}from"../browser/shared/writing-preferences.mjs";import wt from"node:fs/promises";import yn from"node:path";import{Worker as mn}from"node:worker_threads";import{refusal as fn,said as un}from"../browser/shared/i18n/index.mjs";var pn=6e4,X=null,hn=0,xe=0,re=new Map;function gn(){X=new mn(new URL("./worker.mjs",import.meta.url)),X.on("message",({id:n,result:r,error:c})=>{let s=re.get(n);s&&(re.delete(n),c?s.reject(Object.assign(new Error(c.message),c)):s.resolve(r),re.size===0&&(X?.unref(),wn()))});let t=n=>{for(let r of re.values())r.reject(n);re.clear(),X=null};X.on("error",t),X.on("exit",n=>t(fn(un("\u8F6C\u6362\u8FDB\u7A0B\u610F\u5916\u9000\u51FA\uFF08{0}\uFF09",n))))}function wn(){clearTimeout(xe),xe=setTimeout(()=>{if(re.size===0&&X){let t=X;X=null,t.removeAllListeners("exit"),t.terminate()}},pn),xe.unref?.()}function ne(t,n){clearTimeout(xe),X||gn();let r=++hn;return new Promise((c,s)=>{re.set(r,{resolve:c,reject:s}),X.ref(),X.postMessage({id:r,type:t,payload:n})})}import{pageLanguage as kn}from"../browser/shared/components/page.mjs";function $e(t){return String(t??"").replace(/[\\/:*?"<>|\u0000-\u001f\u007f]/g," ").replace(/\s+/g," ").trim().slice(0,100).trim()||"Untitled"}function be(t,n){let r=t.lastIndexOf("."),[c,s]=r>0?[t.slice(0,r),t.slice(r)]:[t,""];for(let l=0;;l+=1){let a=l===0?t:`${c} ${l}${s}`;if(!n.has(a.toLowerCase()))return n.add(a.toLowerCase()),a}}function Se(t,n){let r=t.split("/").slice(0,-1),c=n.split("/"),s=0;for(;s<r.length&&s<c.length-1&&r[s]===c[s];)s+=1;return[...r.slice(s).map(()=>".."),...c.slice(s)].map(a=>a===".."?a:encodeURIComponent(a).replace(/\(/g,"%28").replace(/\)/g,"%29")).join("/")}import{documentDirectory as vn,documentFiles as xn}from"../browser/shared/workspace.mjs";var yt={markdown:"md",html:"html",pdf:"pdf"},$n={markdown:"text/markdown; charset=utf-8",html:"text/html; charset=utf-8",pdf:"application/pdf"},bn=t=>typeof t=="number"&&t>.1&&t<2;function kt(t){let{format:n,content:r="everything",subpages:c=!1,folders:s=!0,paper:l="A4",scale:a=1}=t??{};return Object.hasOwn(yt,n)&&["everything","no_files"].includes(r)&&typeof c=="boolean"&&typeof s=="boolean"&&["A4","A3","Letter","Legal","Tabloid"].includes(l)&&bn(a)}async function vt(t,n,r){let{format:c,content:s="everything",subpages:l=!1,folders:a=!0,paper:p="A4",scale:g=1}=n,w=yt[c],f=s==="everything",S=[],j=new Map,z=x=>j.get(x)??j.set(x,new Set).get(x),A=async(x,P)=>{let V=await r.titleOf(x),H=be(`${$e(V)}.${w}`,z(P)),G=P?`${P}/${H}`:H,Q=a?G.slice(0,-(w.length+1)):"";if(S.push({slug:x,title:V,file:G,folder:Q,files:P?`${P}/assets`:"assets"}),l)for(let K of await r.childrenOf(x))await A(K,Q)};await A(t,"");let{links:O}=await r.links(),_=(x,P)=>nt(P,x.slug,V=>{let H=c==="pdf"?null:S.find(G=>G.slug===V)?.file??null;return H&&Se(x.file,H)},{blocks:c!=="markdown",links:O}),N=[],U=[];for(let x of S)if(c==="markdown"){await r.check(x.slug);let P=vn(x.slug,r.reportsDirectory),V=ce(await wt.readFile(xn(P).html,"utf8"),{slug:x.slug,mode:"words",reportsDirectory:r.reportsDirectory}),H=_(x,V),G=f&&!!ft(),{text:Q,files:K,charts:ie,charted:oe}=await ne("markdown",{source:H,title:x.title,pictures:G}),Y=Q,Z=new Map;if(K.forEach(({src:d,name:u},k)=>{Z.has(d)||(Z.set(d,`${x.files}/${be($e(u),z(x.files))}`),f&&U.push({from:yn.join(P,d),name:Z.get(d)}));let v=Z.get(d);Y=Y.replace(`\0F${k}\0`,()=>Se(x.file,v))}),G&&ie>0&&Y.includes("\0C")){let d=await pt(await r.offline(x.slug,{files:!0})).catch(()=>[]);Y=Y.replace(/^.*\u0000C(\d+)\u0000.*$/gm,(u,k)=>{let v=d[Number(k)];if(!v)return"\0gone\0";let $=`${x.files}/${be(kn(H)==="en"?oe[Number(k)]?"Chart.png":"Figure.png":oe[Number(k)]?"\u56FE\u8868.png":"\u56FE.png",z(x.files))}`;return N.push({name:$,data:v,later:!0}),u.replace(`\0C${k}\0`,()=>Se(x.file,$))}).replace(/\n*\u0000gone\u0000\n*/g,`
|
|
71
|
+
|
|
72
|
+
`).replace(/^\n+|\n+$/g,"")}N.push({name:x.file,data:Y})}else c==="html"?N.push({name:x.file,data:_(x,await r.offline(x.slug,{files:f}))}):N.push({name:x.file,data:await ut(_(x,await r.offline(x.slug,{files:f})),{paper:p,scale:g})});for(let x of U){let P=await wt.readFile(x.from).catch(()=>null);P&&N.push({name:x.name,data:P})}let W=[...N.filter(x=>!x.later&&S.some(P=>P.file===x.name)),...N.filter(x=>x.later||!S.some(P=>P.file===x.name))];return W.length===1?{name:W[0].name,type:$n[c],data:Buffer.isBuffer(W[0].data)?W[0].data:Buffer.from(W[0].data,"utf8")}:{name:`${$e(S[0].title)}.zip`,type:"application/zip",data:lt(W)}}var In=3600*1e3,Ne=new Set,Ct=!1,Mn=t=>{Ne.add(t),!Ct&&(Ct=!0,process.once("exit",()=>{for(let n of Ne)try{L.rmSync(n,{recursive:!0,force:!0})}catch{}}))},Nn=/^u-[a-f0-9]{16}$/;function jt({edits:t,workspace:n,reports:r,reportsDirectory:c,offline:s}){let l=null,a=()=>l??=L.promises.mkdtemp(ee.join(Le.tmpdir(),"gallery-uploads-")).then(d=>(Mn(d),d)),p=new Map,g=(d,u,k)=>[d,{ok:!1,reason:u,...Tn(k)}],w=d=>L.promises.access(d).then(()=>!0,()=>!1),f=d=>Fn(d,c),S=d=>St(f(d)),j=async d=>{try{return JSON.parse(await L.promises.readFile(S(d).json,"utf8")).title||d}catch{return d}};function z(d){if(d.method!=="POST")return[405,{ok:!1,reason:"method"}];let u=d.headers.host??"",k=d.socket.localPort;return u!==`127.0.0.1:${k}`&&u!==`localhost:${k}`?[403,{ok:!1,reason:"host"}]:d.headers.origin!==`http://${u}`?[403,{ok:!1,reason:"origin"}]:d.headers["x-gallery-token"]!==t.token?[403,{ok:!1,reason:"token"}]:/^application\/octet-stream\b/i.test(d.headers["content-type"]??"")?Number(d.headers["content-length"]??0)>xt?g(413,"size","\u6587\u4EF6\u592A\u5927\uFF08\u6700\u591A 5GB\uFF09"):null:[415,{ok:!1,reason:"type"}]}async function A(){for(let[d,u]of p)Date.now()-u.at<In||(p.delete(d),await L.promises.rm(u.file,{force:!0}).catch(()=>{}))}async function O(d,u){let k=z(d);if(k)return d.resume(),D(u,...k);let v=new URL(d.url,"http://localhost").searchParams.get("name")?.replace(/[\u0000-\u001f]/g,"").trim()??"";if(!v||v.length>255)return d.resume(),D(u,...g(400,"name","\u6587\u4EF6\u540D\u4E0D\u5BF9"));await A();let $=`u-${Cn(8).toString("hex")}`,e=ee.join(await a(),$),o=0,i=new jn({transform(m,h,b){o+=m.length,b(o>xt?Object.assign(new Error("too-large"),{reason:"size"}):null,m)}});try{await On(d,i,L.createWriteStream(e))}catch(m){return await L.promises.rm(e,{force:!0}).catch(()=>{}),m.reason==="size"?D(u,...g(413,"size","\u6587\u4EF6\u592A\u5927\uFF08\u6700\u591A 5GB\uFF09")):D(u,...g(400,"body","\u6587\u4EF6\u6CA1\u6709\u4F20\u5B8C"))}return p.set($,{file:e,name:v,at:Date.now()}),D(u,200,{ok:!0,id:$})}async function _(d,u){let k=await t.check(d);if(k.error)return D(u,...k.error);let{slug:v,options:$}=k.body??{};if(typeof v!="string"||!bt.test(v)||!await w(S(v).html))return D(u,...g(404,"missing","\u627E\u4E0D\u5230\u8FD9\u4EFD\u6587\u6863"));if(!kt($))return D(u,...g(400,"options","\u5BFC\u51FA\u9009\u9879\u4E0D\u5BF9"));try{let e=await s(),o=new Map,i=y=>(o.has(y)||o.set(y,t.handIn(y,{reader:!0}).then(C=>{if(!C.ok)throw Object.assign(new Error(C.message??C.reason),{reason:C.reason});if(C.repeated.length)throw Object.assign(new Error("check"),{reason:"check",slug:y,failures:ye(C.repeated)})})),o.get(y)),m=new Map,h={reportsDirectory:c,titleOf:j,childrenOf:async y=>(await n.outline()).children[y]??[],links:()=>$t(c),offline:async(y,C)=>{await i(y);let R=await e(y,C),B=$.format==="markdown"?null:En(R);return B&&m.set(y,B),R},check:async y=>(await i(y),e.check(y))},{name:b,type:F,data:T}=await vt(v,$,h);m.size&&await(await ke([...m.keys()])).keep([...m.keys()],m),u.writeHead(200,{"Content-Type":F,"Content-Length":T.length,"Content-Disposition":`attachment; filename*=UTF-8''${encodeURIComponent(b)}`,"X-File-Name":encodeURIComponent(b),"Cache-Control":"no-store"}),u.end(T)}catch(e){if(e.reason==="check"){let o=await j(e.slug),i=e.component?Me("\u300C{0}\u300D\u91CC\u7684\u7EC4\u4EF6 {1} \u6709\u9519\u8BEF\uFF0C\u6CA1\u6709\u751F\u6210\u6587\u4EF6\uFF1A\u53EF\u4EE5\u8BA9 AI \u68C0\u67E5\u8FD9\u4EFD\u6587\u6863\u5E76\u4FEE\u597D",o,e.component):e.failures.length>1?Me("\u300C{0}\u300D\u6CA1\u6709\u901A\u8FC7\u5BFC\u51FA\u524D\u7684\u68C0\u67E5\uFF0C\u6CA1\u6709\u751F\u6210\u6587\u4EF6\uFF1A{1}\uFF08\u5171 {2} \u5904\uFF1A\u53EF\u4EE5\u8BA9 AI \u68C0\u67E5\u8FD9\u4EFD\u6587\u6863\uFF0C\u5217\u51FA\u5168\u90E8\u5E76\u4FEE\u597D\uFF09",o,e.failures[0],e.failures.length):Me("\u300C{0}\u300D\u6CA1\u6709\u901A\u8FC7\u5BFC\u51FA\u524D\u7684\u68C0\u67E5\uFF0C\u6CA1\u6709\u751F\u6210\u6587\u4EF6\uFF1A{1}",o,e.failures[0]);return D(u,...g(422,"check",i))}D(u,...g(e.reason==="browser"?422:e.reason==="busy"?409:e.reason==="missing"?404:500,e.reason??"export",e))}}async function N(d,u){let k=await t.check(d);if(k.error)return D(u,...k.error);let{slug:v}=k.body??{},$=(await t.readTaken(v,{wait:0}))?.text??null;if($===null)return D(u,...g(404,"missing","\u627E\u4E0D\u5230\u8FD9\u4EFD\u6587\u6863"));let e=`http://${d.headers.host}`,{named:o}=await $t(c),i=tt(ce($,{slug:v,mode:"words",reportsDirectory:c}),v,F=>F.slug&&Pn(e,F,o),o),{text:m,files:h}=await ne("markdown",{source:i,title:await j(v),pictures:!1}),b=m.replace(/\u0000F(\d+)\u0000/g,(F,T)=>{let{src:y,kind:C}=h[Number(T)];return encodeURI(`${e}${_n(C==="image"?"asset":"file",v,y)}`)});return D(u,200,{ok:!0,text:b})}let U=async d=>{let u=await t.readTaken(d,{wait:0});return{source:u?.text??"",version:u?.version??null}},W=async(d,u=null)=>{let{source:k,version:v}=u??await U(d),$="\u5199\u4F5C\u504F\u597D",{text:e,files:o}=await ne("markdown",{source:k,title:$,pictures:!1}),i=e.split(`
|
|
73
|
+
`).slice(1).join(`
|
|
74
|
+
`).replace(/^[\s>]*(?:```.*|\d+\.|- \[x\])/gm,"").replace(/<\/?aside>/g,"");if(!/[\p{L}\p{N}]|\u0000F\d+\u0000/u.test(i))return{markdown:`# ${$}
|
|
75
|
+
`,empty:!0,version:v};let m=ee.relative(c,f(d)).split(ee.sep).join("/");return{markdown:`${e.replace(/\u0000F(\d+)\u0000/g,(h,b)=>encodeURI(`${m}/${o[Number(b)].src}`))}
|
|
76
|
+
`,empty:!1,version:v}},x=d=>S(d).json,P=async d=>{try{let u=JSON.parse(await L.promises.readFile(x(d),"utf8"));return u&&typeof u=="object"?u:null}catch{return null}},V=d=>Sn("sha256").update(d).digest("hex").slice(0,16);async function H(d,u,k,v){let $=await P(d);if(!$||k===null)return;let{synced:e,...o}=$,i={file:V(u),page:k,unshown:v},m=$.madeSame;e===void 0&&m?.file===i.file&&m?.page===i.page&&JSON.stringify(m?.unshown)===JSON.stringify(v)||await Ie(x(d),`${JSON.stringify({...o,madeSame:i},null,2)}
|
|
77
|
+
`)}async function G(d,u){let k=await L.promises.mkdtemp(ee.join(Le.tmpdir(),"gallery-preferences-"));try{let $=(await ne("import",{uploads:[{file:u,name:"preferences.md"}],scratch:k})).pages[0]??{nodes:[],raws:[],files:[],icon:null,lang:null},e=f(d),o=await P(d)??{},i=St(e).html,m=await L.promises.readFile(i,"utf8").catch(()=>""),h=/<html\b[^>]*\slang="([^"]*)"/i.exec(m)?.[1]??null,{html:b}=await Ge(d,o.title||"\u5199\u4F5C\u504F\u597D",o.description||"",{blank:!0,lang:h}),F=typeof o.icon=="string"&&o.icon?o.icon:null,T=await ne("fill",{source:b,nodes:$.nodes,icon:F,raws:$.raws,lang:$.lang});$.files.length&&await L.promises.mkdir(ee.join(e,"assets"),{recursive:!0});for(let{from:C,name:R}of $.files){let B=ee.join(e,"assets",R);await w(B)||await L.promises.copyFile(C,B)}let y=await L.promises.readFile(i,"utf8").catch(()=>null);y!==null&&t.keepVersion?.(d,y),await Ie(i,we(T))}finally{await L.promises.rm(k,{recursive:!0,force:!0}).catch(()=>{})}}async function Q(d,u){let k=await t.check(d);if(k.error)return D(u,...k.error);let v=k.body?.opening===!0,$=await Rn(c);if(!$)return D(u,...g(404,"missing","\u8FD8\u6CA1\u6709\u5199\u4F5C\u504F\u597D"));let e=null,o=(i,m)=>[200,{ok:!0,path:ee.resolve(e),remade:i,unshown:m}];return t.respond(async()=>{let i;({file:e,text:i}=await An(c));let m=await U($),h=(await P($))?.madeSame??null,b=h===null||h.page===m.version,F=h!==null&&b&&h.file===V(i);if(v&&F&&Array.isArray(h.unshown))return o(!1,h.unshown);let[T,y,C,R]=[i,"",m.version,!1];if(v&&!b)await G($,e),{markdown:y,version:C}=await W($),R=!0;else{let J=await W($,m),q=i.trim()===J.markdown.trim()||J.empty&&!Dn(i);y=J.markdown,v?!q&&!F&&(await G($,e),{markdown:y,version:C}=await W($),R=!0):q||(await Ie(e,J.markdown),T=J.markdown)}let B=Ln(T,y);return await H($,T,C,B),o(R,B)})(d,u)}async function K(d,u){let k=await t.check(d);if(k.error)return D(u,...k.error);let{uploads:v,parent:$="",from:e,language:o}=k.body??{},i={said:typeof e=="string"&&e.includes("{0}")&&e.length<=60?e:"\u5BFC\u5165\u81EA {0}",lang:o==="en"?"en":null};if(!Array.isArray(v)||v.length===0||v.length>1e3||!v.every(y=>typeof y=="string"&&Nn.test(y)))return D(u,...g(400,"body"));let m=v.map(y=>p.get(y)).filter(Boolean);if(m.length!==v.length)return D(u,...g(410,"gone","\u4E0A\u4F20\u7684\u6587\u4EF6\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u5BFC\u5165"));for(let y of v)p.delete(y);let h=typeof $=="string"&&bt.test($)&&await w(ee.join(c,$))?$:"",b=await L.promises.mkdtemp(ee.join(Le.tmpdir(),"gallery-import-")),F=()=>Promise.all([L.promises.rm(b,{recursive:!0,force:!0}),...m.map(({file:y})=>L.promises.rm(y,{force:!0}))]).catch(()=>{}),T;try{T=await ne("import",{uploads:m.map(({file:y,name:C})=>({file:y,name:C})),scratch:b})}catch(y){return await F(),D(u,...g(500,"convert",y))}return t.respond(async()=>{try{let{made:y,top:C}=await dt(T.pages,{create:r.create,slugOf:()=>n.freeSlug("doc"),folderOf:f,fill:R=>ne("fill",R),place:n.place,under:h,...i});return[200,{ok:!0,pages:y.length,reports:C,skipped:T.skipped,missing:ie(T.pages)}]}finally{await F()}})(d,u)}let ie=d=>[...new Set(d.flatMap(function u(k){return[...(k.notes??[]).filter(v=>v.kind==="picture-missing").map(v=>v.name),...k.children.flatMap(u)]}))],oe={export:_,markdown:N,upload:O,import:K,preferences:Q};function Y(d,u,k){return Object.hasOwn(oe,k)?oe[k](d,u).catch(v=>{u.headersSent||D(u,...g(500,"transfer",v))}):D(u,404,{ok:!1,reason:"unknown"})}async function Z(){let d=l;l=null,p.clear();let u=await d?.catch(()=>null);u&&(Ne.delete(u),await L.promises.rm(u,{recursive:!0,force:!0}).catch(()=>{}))}return{handle:Y,close:Z}}function Ot({settled:t,tell:n,delay:r=120,recheck:c=1e3}){let s=new Map,l=(a,p=r)=>{clearTimeout(s.get(a));let g=setTimeout(async()=>{let w=await t(a).catch(()=>({source:null,held:!1,wait:0}));if(s.get(a)===g){if(w.held)return l(a,Math.min(Math.max(w.wait,50),c));if(w.wait>0)return l(a,w.wait);await n(a,w)}},p);s.set(a,g)};return l}import Wn from"node:fs/promises";import{packageScript as zn}from"../browser/shared/export-wrap.mjs";import{serveFound as Un}from"../browser/shared/http.mjs";import{extensionOf as Bn,mediaTypeOf as Hn}from"../browser/shared/media.mjs";var Gn="/__gallery/components/",Kn=/^\/__gallery\/components\/([a-z0-9][a-z0-9-]*\/[a-z0-9][a-z0-9-]*)\/(.+)$/,Jn={js:"text/javascript; charset=utf-8",mjs:"text/javascript; charset=utf-8",css:"text/css; charset=utf-8",wasm:"application/wasm"};async function Et(t,n,r,{root:c}){if(!t.startsWith(Gn))return!1;let[,s,l]=Kn.exec(t)??[],a=s?te(c).packages.get(s):null,p=a?.files.includes(l)?Ye(a,l):null,g=p?await Wn.readFile(p).catch(()=>null):null,w=g&&l==="kit.js"?Buffer.from(zn(g.toString("utf8").replace(/^\uFEFF/,""))):g,f=w&&n===a.stamp&&n===Ze(a);return Un(r,w,{type:w?Jn[Bn(l)]??Hn(l):void 0,headers:{"X-Content-Type-Options":"nosniff","Cache-Control":f?"max-age=31536000, immutable":"no-store"}}),!0}import{LISTED_BLOCKS as Tt}from"../browser/editor/components/registry.mjs";import{PACKAGE_ID as Xn}from"../browser/shared/components/installed.mjs";import{inLanguage as _t,refusal as Vn,said as Ce}from"../browser/shared/i18n/index.mjs";function Pt({root:t,taken:n}){let r=()=>{let l=te(t);return{packages:Qe(l),blocks:Tt.map(({id:a,name:p,icon:g,hideable:w})=>({id:a,name:{zh:_t("zh",p),en:_t("en",p)},icon:g,hidden:w&&l.settings.hidden.includes(a),hideable:w})),problem:Ve(l)}},c=({id:l,hidden:a,disabled:p})=>{if(![a,p].every(w=>w===void 0||typeof w=="boolean"))return Ce("\u5F00\u5173\u7684\u503C\u4E0D\u5BF9");let g=Tt.find(w=>w.id===l);return g?p!==void 0?Ce("\u5185\u7F6E\u5757\u53EA\u80FD\u9690\u85CF\uFF0C\u4E0D\u80FD\u505C\u7528"):a&&!g.hideable?Ce("\u8FD9\u4E2A\u5757\u4E0D\u80FD\u9690\u85CF"):null:typeof l=="string"&&Xn.test(l)?null:Ce("\u6CA1\u6709\u8FD9\u4E2A\u7EC4\u4EF6")};return{read:r,write:async l=>{let a=c(l);if(a)throw Vn(a);return await Je(t,l),n(),r()}}}import Yn from"node:path";import{exportsDirectory as Zn}from"../browser/shared/paths.mjs";async function Ft(t,n){let r=Yn.join(Zn,`${n}.html`),c=await ke([n]),s=await t.handInReport(n,{reader:!0});if(!s.ok)return{problems:[],refused:{reason:s.reason,message:s.message},file:r};if(s.repeated.length)return{problems:ye(s.repeated),file:r};let{exported:l,failures:a}=await it([n]);return await c.keep(l.map(p=>p.slug)),{problems:a.get(n)??[],file:r}}import Qn from"node:fs/promises";import qn from"node:path";import{MEDIA_ROUTES as Rt,mediaTypeOf as eo}from"../browser/shared/media.mjs";import{serveFound as to}from"../browser/shared/http.mjs";import{slugPattern as no}from"../browser/shared/reports.mjs";import{documentDirectory as oo}from"../browser/shared/workspace.mjs";var ro={asset:t=>({"Content-Type":eo(t),"Cache-Control":"no-cache"}),file:()=>({"Content-Type":"application/octet-stream","Content-Disposition":"attachment","X-Content-Type-Options":"nosniff","Cache-Control":"no-cache"}),embed:t=>/\.pdf$/i.test(t)?{"Content-Type":"application/pdf","X-Content-Type-Options":"nosniff","Cache-Control":"no-cache"}:{"Content-Type":"text/html; charset=utf-8","Content-Security-Policy":"sandbox allow-scripts allow-popups allow-forms allow-modals","X-Content-Type-Options":"nosniff","Cache-Control":"no-cache"}},ao=new RegExp(`^/__gallery/edit/(${Object.keys(Rt).join("|")})/([^/]+)/(assets/[^/]+)$`);async function At(t,n,{reportsDirectory:r}){let[,c,s,l]=ao.exec(t)??[];if(!c)return!1;let a=no.test(s)&&Rt[c](l)?await Qn.readFile(qn.join(oo(s,r),l)).catch(()=>null):null;return to(n,a,{headers:ro[c](l)}),!0}function Dt({max:t=20}={}){let n=new Map;return{get(r,c,s){let l=`${r} ${c}`,a=n.get(l);return!a||a.text!==s?null:(n.delete(l),n.set(l,a),a.page)},set(r,c,s,l){let a=`${r} ${c}`;for(n.delete(a),n.set(a,{slug:r,text:s,page:l});n.size>t;)n.delete(n.keys().next().value)},clear(){n.clear()},forget(r){for(let[c,s]of n)s.slug===r&&n.delete(c)},get size(){return n.size}}}import{createHash as so}from"node:crypto";import{readFileSync as io}from"node:fs";import Lt from"node:fs/promises";import co from"node:path";import{release as lo,releaseFile as mo}from"../browser/shared/paths.mjs";async function je(t){let n=await Promise.all(t.map(c=>Lt.stat(c).then(({mtimeMs:s,size:l})=>`${s} ${l}`,()=>"none"))),r=so("sha256");return t.forEach((c,s)=>r.update(`${c}\0${n[s]}
|
|
78
|
+
`)),r.digest("hex").slice(0,16)}function It(t,n){let r=null,c=async()=>(await Promise.all(t.map(async s=>(await Lt.readdir(s,{recursive:!0,withFileTypes:!0}).catch(()=>[])).filter(a=>a.isFile()).map(a=>co.join(a.parentPath,a.name))))).flat().filter(n).sort();return{files:()=>r??=c(),changed:()=>{r=null}}}var We=lo?JSON.parse(io(mo,"utf8")).stamps:null;var Yt=Vt.source.slice(1,-1),So=new RegExp(`^/generated/(${Yt})\\.html$`),Co=new RegExp(`^/(${Yt})/(?:doc|report)\\.html$`),Zt="/__gallery/events",ae=fo,Qt=/^\/__gallery\/edit\/(v\/[a-f0-9]{16}\/)?src\/((?:shared(?:\/components|\/emoji|\/i18n)?\/|editor\/(?:page|components)(?:\/[a-z]+(?:-[a-z]+)*){0,2}\/(?!files?\.mjs))[a-z]+(?:-[a-z]+)*\.mjs)$/,jo=/^\/__gallery\/edit\/(?:v\/[a-f0-9]{16}\/)?src\/(shared\/emoji\/data\/[a-z]+(?:-[a-z]+)*\.(json|bin))$/,Oe=[M.join(ae,"editor","page"),M.join(ae,"editor","components"),M.join(ae,"shared")],Oo=t=>Qt.test(`/__gallery/edit/src/${M.relative(ae,t).split(M.sep).join("/")}`);var Eo=[Jt,M.join(ae,"shared","components")],Ja=[Jt,...Oe],Ee={"Cache-Control":"no-store"},Gt={"Cache-Control":"max-age=31536000, immutable"},Kt=(t,n,r)=>Xt(t,{type:n,headers:Ee,body:r});function To(t){let n=t.headers?.host??"",r=t.socket?.localPort;return!!r&&(n===`127.0.0.1:${r}`||n===`localhost:${r}`)}var _o=(t,n,r)=>`<script>
|
|
79
|
+
(() => {
|
|
80
|
+
document.currentScript.remove();
|
|
81
|
+
const solo = new URLSearchParams(location.search).has("solo");
|
|
82
|
+
let catalog = "${r}";
|
|
83
|
+
const holds = (ids) => document.querySelector(ids === undefined ? "[${zt}]" : ids.split(",").map((id) => '[${zt}="' + id + '"]').join());
|
|
84
|
+
const events = new EventSource("${Zt}?slug=${t}");
|
|
85
|
+
events.onmessage = (event) => {
|
|
86
|
+
const [kind, next, ids] = event.data.split(" ");
|
|
87
|
+
if (kind === "notes") return void window.dispatchEvent(new CustomEvent("doc-annotations-changed", { detail: { version: next ?? "" } }));
|
|
88
|
+
if (kind === "changes") return void window.dispatchEvent(new CustomEvent("doc-changes-changed", { detail: { stamp: next ?? "" } }));
|
|
89
|
+
if (kind === "look") return void window.dispatchEvent(new CustomEvent("doc-look-request", { detail: { look: Object.fromEntries(new URLSearchParams(next ?? "")), from: "file" } }));
|
|
90
|
+
if (kind === "settings") return void window.dispatchEvent(new CustomEvent("doc-settings-changed", { detail: { hidden: next ? next.split(",") : [], disabled: ids ? ids.split(",") : [] } }));
|
|
91
|
+
if (kind === "components") {
|
|
92
|
+
if (document.readyState === "loading") return void document.addEventListener("DOMContentLoaded", () => events.onmessage(event), { once: true });
|
|
93
|
+
if (solo || next === catalog) return;
|
|
94
|
+
catalog = next;
|
|
95
|
+
if (!holds(ids)) return void window.dispatchEvent(new CustomEvent("doc-catalog-changed", { detail: { ids: ids === undefined ? null : ids.split(",").filter(Boolean) } }));
|
|
96
|
+
}
|
|
97
|
+
if (window.__galleryEditBusy) {
|
|
98
|
+
window.dispatchEvent(new CustomEvent({ report: "doc-source-changed", assets: "doc-assets-changed", components: "doc-components-changed" }[kind], { detail: { version: next ?? null } }));
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (kind === "report" && next === "${n}") return;
|
|
102
|
+
if (window.__galleryEditReload) return window.__galleryEditReload(); // in a workbench: swapped in, no reload seen
|
|
103
|
+
location.reload();
|
|
104
|
+
};
|
|
105
|
+
})();
|
|
106
|
+
</script>`;function Po(t,n){let r=M.relative(t,n).split(M.sep);if(r[0]===".."||M.isAbsolute(r[0])||r[0]==="")return null;if(r.length===1&&r[0]===ze)return{slug:null,name:ze,packages:!0};let c=r[0]===".gallery"&&r[1]==="pages"&&r.length>=3,[s,...l]=c?r.slice(2):r,a=!c&&(process.platform==="win32"?s.toLowerCase():s)===Ut;return!(a||Vt.test(s))||s==="exports"||l.some(p=>p.startsWith("."))?null:{slug:a?Ut:s,name:l.length===1?l[0]:null,...a?{packages:a}:{}}}function Ue(t){let n=w=>process.platform==="win32"?M.resolve(w).toLowerCase():M.resolve(w),{gallery:r,pages:c,exports:s}=bo(t),[l,a,p]=[n(r),n(c),n(s)],g=(w,f)=>w===f||w.startsWith(f+M.sep);return w=>{let f=n(w);return g(f,l)&&f!==l&&!g(f,a)||g(f,p)}}var me=(t,n,r)=>new RegExp(`</${n}>`,"i").test(t)?t.replace(new RegExp(`</${n}>`,"i"),()=>` ${r}
|
|
107
|
+
</${n}>`):`${t}
|
|
108
|
+
${r}`;function qt({stateDirectory:t=uo,logger:n=console,kind:r="dev",workbenchPage:c=null,closeServer:s=async()=>{},exit:l=()=>process.exit(0)}={}){let a=new Set,p=(e,o="",i="report")=>{for(let m of a)(!e||m.slug===e)&&m.response.write(`data: ${e?`${i} ${o}`:"assets"}
|
|
109
|
+
|
|
110
|
+
`)},g=()=>K("workspace",()=>{for(let e of a)e.workspace&&e.response.write(`data: workspace ${Date.now()}
|
|
111
|
+
|
|
112
|
+
`)}),w=e=>p(e,String(Date.now()),"changes"),f=ct({stateDirectory:t,finish:we,log:e=>n.info?.(`[gallery] ${e}`),onChanges:w}),S=(e,o,i,{lang:m=null,page:h=!1}={})=>He(e,o,i,{blank:!0,lang:m,page:h}),j=null,z=null,A=()=>z??=(async()=>{for(let e of a)e.response.end();a.clear(),await Promise.race([s().catch(()=>{}),new Promise(e=>setTimeout(e,3e3))]),await j?.().catch(()=>{}),await _.close(),l()})(),O=mt({server:{kind:r,version:wo,stop:A},edits:f,reports:{create:S,export:e=>Ft(f,e),words:(e,o)=>ce(e,{slug:o,mode:"words",reportsDirectory:I})},components:Pt({root:I,taken:()=>Z.taken()}),changed:g}),_=jt({edits:f,workspace:O,reports:{create:S},reportsDirectory:I,offline:st}),N=(e,o,{present:i=!1,editorModule:m,kit:h}={})=>{let b=o,F="",T="",y=!0;try{i||({html:b,snippet:F,head:T}=f.preview(e,o,{editor:m,kitTags:R=>et(R,h)}))}catch(R){y=!1,n.warn(`[gallery] text editing unavailable for ${e}: ${R.message}`)}if({html:b}=ot(b,{slug:e,mode:"preview",kit:h}),b=me(b,"head",_o(e,ue(o),te(I).stamp)),b=me(b,"head",`<script data-doc-dev>${ho()}</script>`),T&&(b=me(b,"head",T)),i)return{html:me(b,"head",`<style data-doc-present>.doc-display { display: none !important; }</style>
|
|
113
|
+
<script type="module" src="/__gallery/edit/src/editor/page/present-links.mjs" data-doc-dev></script>`),whole:y};let C="";try{C=gt(e,o)}catch(R){y=!1,n.warn(`[gallery] checks unavailable for ${e}: ${R.message}`)}return C&&(b=me(b,"body",C)),{html:F?me(b,"body",F):b,whole:y}},U=Dt(),W=It(Oe,Oo),x=e=>{let o=Bt(e,I);return[o,M.join(o,"assets")]},P=()=>We?.editor??W.files().then(je),V=e=>We?.kit?.[e.id]??je([Ae(e)]),H=async(e,o,{present:i})=>{let[m,h,b]=await Promise.all([i?"":P(),Promise.all(ge.map(V)),je(x(e))]),F=[i?"present":m,...h,b,te(I).stamp,`look:${Nt(Wt(e,I))}`].join(" "),T=U.get(e,F,o);if(T!==null)return i||f.opened(o),T;let y=new Map(ge.map((J,q)=>[J,h[q]])),C=i?void 0:`/__gallery/edit/v/${m}/src/editor/page/editor.mjs`,{html:R,whole:B}=N(e,o,{present:i,editorModule:C,kit:J=>`${Re(J)}?v=${y.get(J)}`});return B&&U.set(e,F,o,R),R};async function G(e,o,i){try{if(!To(e))return Mt(o,403,{ok:!1,reason:"host"});let m=new URL(e.url||"/","http://localhost"),h=decodeURI(m.pathname);if(h===Zt){o.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-store",Connection:"keep-alive"}),o.write(`retry: 3000
|
|
114
|
+
|
|
115
|
+
`);let E={slug:m.searchParams.get("slug"),workspace:m.searchParams.has("workspace"),response:o};a.add(E);let{stamp:he,settings:an}=te(I);o.write(`data: components ${he}
|
|
116
|
+
|
|
117
|
+
`),o.write(`data: ${Fe(an)}
|
|
118
|
+
|
|
119
|
+
`),e.on("close",()=>a.delete(E));return}if(h==="/__gallery/edit/commit")return f.commit(e,o);if(h==="/__gallery/edit/reverted")return f.reverted(e,o);if(h==="/__gallery/edit/hand-in")return f.handInRequest(e,o);if(h==="/__gallery/edit/settle")return f.settleRequest(e,o);if(h==="/__gallery/edit/round")return f.roundRequest(e,o);if(h==="/__gallery/edit/upload")return f.upload(e,o);if(h==="/__gallery/edit/unfurl")return f.unfurl(e,o);if(h==="/__gallery/edit/emoji-library"){if(e.method==="POST")return f.addEmoji(e,o);let[E,he]=await f.listEmojis();return Mt(o,E,he)}if(h==="/__gallery/edit/icon"){let E=Ke({value:m.searchParams.get("value")??"",slug:m.searchParams.get("slug"),tab:m.searchParams.has("tab")});return de(o,E?.body,{type:E?.type,headers:{"Cache-Control":"max-age=31536000, immutable"}})}if(await At(h,o,{reportsDirectory:I})||await Et(h,m.searchParams.get("v"),o,{root:I}))return;let b=h.match(/^\/__gallery\/edit\/emoji-library\/([^/]+)$/)?.[1];if(b){let E=await f.readEmoji(b);return de(o,E?.body,{type:E?.type,headers:{"Cache-Control":"no-cache"}})}if(h==="/__gallery/edit/frameable")return f.frameable(e,o);if(h==="/__gallery/edit/annotations")return f.annotations(e,o);if(h==="/__gallery/edit/changes")return f.changes(e,o);let F=h.match(/^\/__gallery\/transfer\/([a-z]+)$/)?.[1];if(F)return _.handle(e,o,F);let T=h.match(/^\/__gallery\/workspace\/([a-z]+)$/)?.[1];if(T)return O.handle(e,o,T);let[,y,C]=h.match(Qt)??[];if(C){let E=await le.readFile(M.join(ae,C),"utf8").catch(()=>null);return de(o,E,{type:"text/javascript; charset=utf-8",headers:y?Gt:Ee})}let R=m.searchParams.has("v")&&ge.find(E=>Re(E)===h);if(R){let E=await le.readFile(Ae(R)).catch(()=>null);return de(o,E,{type:h.endsWith(".css")?"text/css; charset=utf-8":"text/javascript; charset=utf-8",headers:Gt})}if(h==="/__gallery/edit/mhchem.js"){let E=await le.readFile(qe).catch(()=>null);return de(o,E,{type:"text/javascript; charset=utf-8",headers:Ee})}let[,B,J]=h.match(jo)??[];if(B){let E=await le.readFile(M.join(ae,B)).catch(()=>null);return de(o,E,{type:J==="json"?"application/json; charset=utf-8":"application/octet-stream",headers:{"Cache-Control":"max-age=86400"}})}if(c&&(h==="/"||h==="/index.html"))return Kt(o,"text/html; charset=utf-8",await c(m.pathname,e));let q=h.match(So)?.[1];if(!q){let E=h.match(Co)?.[1];return $o(E)&&await le.access(vo(Bt(E,I)).html).then(()=>!0,()=>!1)?Xt(o,{status:302,headers:{Location:`/generated/${E}.html${m.search}`,...Ee}}):i()}let Pe=await f.readTaken(q);if(Pe===null)return i();m.searchParams.has("present")||f.noteTaken(q,Pe.source).then(E=>E&&w(q),()=>{}),Kt(o,"text/html; charset=utf-8",await H(q,Pe.text,{present:m.searchParams.has("present")}))}catch(m){i(m)}}let Q=new Map,K=(e,o)=>{clearTimeout(Q.get(e)),Q.set(e,setTimeout(o,120))},ie=e=>{yo(e,I).reads&&p(e,Nt(Wt(e,I)),"look")},oe=Ot({settled:f.settled,async tell(e,o){let i=await f.read(e,o.source).catch(m=>(n.error(`[gallery] ${e}: ${m.message}`),{version:ue(o.source??"")}));p(e,i?.version??ue("")),f.noteTaken(e,o.source).then(m=>m&&w(e),m=>n.error(`[gallery] ${e}: the Agent's changes not kept: ${m.message}`)),f.checkAnnotations(e).catch(m=>n.error(`[gallery] ${e}: annotations not checked: ${m.message}`))}}),Y=({id:e,problem:o,off:i})=>i||n.warn(`[gallery] component package ${e} does not load: ${Xe("en",o)}`),Z=ht({root:I,tell({stamp:e,problems:o,settings:i},m){for(let h of m)o.has(h)&&Y(o.get(h));for(let{response:h}of a)h.write(`data: components ${e} ${m.filter(b=>ko.test(b)).join(",")}
|
|
120
|
+
|
|
121
|
+
`),h.write(`data: ${Fe(i)}
|
|
122
|
+
|
|
123
|
+
`)}});for(let e of te(I).problems.values())Y(e);let d=Ue(I),u=(e,o)=>!po&&o.some(i=>e.startsWith(i+M.sep));function k(e,o){if(e==="reset"){U.clear(),W.changed(),Z.changed(),g();return}if(d(o))return;let i=Po(I,o);if(i?.packages&&Z.changed(),i?.name===ze&&i.slug===null&&K("look:*",()=>new Set([...a].map(({slug:m})=>m).filter(Boolean)).forEach(ie)),i?.slug&&!(i.name&&xo(i.name))&&U.forget(i.slug),i&&(/^(doc|report)\.json$/.test(i.name??"")||/^(add|unlink)Dir$/.test(e)&&i.name===null)&&U.clear(),i?.slug&&!(i.packages&&i.name===null)&&(/^(doc|report)\.json$/.test(i.name??"")||/^(add|unlink)Dir$/.test(e)&&i.name===null||/^(add|unlink)$/.test(e)&&Ht(i.name??""))&&g(),/^(add|unlink)(Dir)?$/.test(e)&&u(o,Oe)&&W.changed(),i?.name&&(Ht(i.name)||/^(doc|report)\.json$/.test(i.name))){if(oe(i.slug),/^(doc|report)\.json$/.test(i.name)){let{slug:m}=i;K(`look:${m}`,()=>ie(m))}}else if(i?.name==="annotations.json"){let{slug:m}=i;K(`notes:${m}`,async()=>{let h=await le.readFile(o,"utf8").catch(()=>null);p(m,h===null?"":ue(h),"notes")})}else u(o,Eo)?K("kit",async()=>{try{await at({fresh:!0}),p()}catch(m){n.error(`[gallery] shared kit rebuild failed: ${m.message}`)}}):u(o,Oe)&&K("editor",()=>p())}async function v(e){j=await go({reportsDirectory:I,port:e,token:f.token,kind:r})}async function $(){for(let e of Q.values())clearTimeout(e);Z.close(),await j?.().catch(()=>{}),j=null,await _.close()}return{handle:G,changed:k,listening:v,close:$,stop:A,edits:f,get listeners(){return a.size}}}import Fo from"node:fs/promises";import fe from"node:path";import{serve as en}from"../browser/shared/http.mjs";var Ro={".html":"text/html; charset=utf-8",".js":"text/javascript; charset=utf-8",".mjs":"text/javascript; charset=utf-8",".css":"text/css; charset=utf-8",".json":"application/json; charset=utf-8",".map":"application/json; charset=utf-8",".svg":"image/svg+xml",".png":"image/png",".ico":"image/x-icon",".woff2":"font/woff2",".woff":"font/woff",".ttf":"font/ttf",".txt":"text/plain; charset=utf-8"},Ao=t=>Ro[fe.extname(t).toLowerCase()]??"application/octet-stream";function Do(t,n){if(/%(?:2f|5c|00)/i.test(n)||/[\\\0]/.test(n))return null;let r;try{r=decodeURIComponent(n)}catch{return null}let c=r.split("/");if(c.some(a=>a===""||a==="."||a===".."||/[\\\0:]/.test(a)))return null;let s=fe.resolve(t,...c),l=fe.relative(t,s);return l&&!l.startsWith("..")&&!fe.isAbsolute(l)?s:null}async function tn(t,n,{web:r,kit:c,vendor:s}){if(t.method!=="GET"&&t.method!=="HEAD")return!1;let l=new URL(t.url||"/","http://localhost").pathname,a=null,p=null;if(l==="/"||l==="/index.html"){if(!r)return!1;[a,p]=[fe.join(r,"index.html"),{"Cache-Control":"no-store"}]}else{let f=[["/assets/",r&&fe.join(r,"assets"),"max-age=31536000, immutable"],["/kit/",c,"no-cache"],["/vendor/",s,"no-cache"]].find(([S,j])=>j&&l.startsWith(S));if(!f)return!1;a=Do(f[1],l.slice(f[0].length)),p={"Cache-Control":f[2]}}let g=a?await Fo.readFile(a).catch(()=>null):null;return g?(en(n,{type:Ao(a),headers:{...p,"X-Content-Type-Options":"nosniff"},body:t.method==="HEAD"?void 0:g}),!0):(en(n,{status:404}),!0)}import se from"node:fs";import pe from"node:path";import{isSlugName as nn,layoutOf as Lo}from"../browser/shared/workspace.mjs";function Io(t){let{components:n,gallery:r,pages:c}=Lo(t),s=(p,g)=>{try{return se.readdirSync(p,{withFileTypes:!0}).filter(w=>w.isDirectory()&&g(w.name)).map(w=>pe.join(p,w.name))}catch{return[]}},l=[...s(t,p=>nn(p)),...s(c,p=>nn(p))],a=p=>[p,...s(p,g=>!g.startsWith(".")).flatMap(a)];return[...new Set([t,...[r,c].filter(p=>se.existsSync(p)),...l,...l.map(p=>pe.join(p,"assets")).filter(p=>se.existsSync(p)),...se.existsSync(n)?a(n):[]])]}function on(t,n,{folders:r=process.platform==="linux"}={}){let c=Ue(t),s=(f,S)=>{c(S)||pe.basename(S).startsWith(".")||se.stat(S,(j,z)=>{if(j)return n(j.code==="ENOENT"?"unlink":"change",S);let A=z.isDirectory();n(f==="rename"?A?"addDir":"add":A?"addDir":"change",S)})},l=()=>{};if(!r)try{let f=se.watch(t,{recursive:!0},(S,j)=>j?s(S,pe.join(t,j.toString())):n("reset",t));return f.on("error",l),{close:()=>f.close()}}catch(f){if(f.code!=="ERR_FEATURE_UNAVAILABLE_ON_PLATFORM")throw f}let a=new Map,p=null,g=()=>{let f=new Set(Io(t));for(let[S,j]of a)f.has(S)||(j.close(),a.delete(S));for(let S of f)if(!a.has(S))try{let j=se.watch(S,(z,A)=>{if(!A)return n("reset",S);z==="rename"&&w(),s(z,pe.join(S,A.toString()))});j.on("error",l),a.set(S,j)}catch{}},w=()=>{p??=setTimeout(()=>{p=null,g()},50)};return g(),{close(){clearTimeout(p);for(let f of a.values())f.close();a.clear()},get folders(){return[...a.keys()]}}}async function us({port:t,web:n=Ho,kind:r=process.env.GALLERY_SERVER_KIND==="dev"?"dev":"cli",stateDirectory:c=Wo,exit:s=(g=0)=>process.exit(g),watch:l=!0,signals:a=!0,log:p=console}={}){await Go(Be);let g=null,w=null,f=null,S=Ko(Be),j=async()=>{w?.close(),f&&Te.unwatchFile(_e,f),await Mo.writeFile(S.lastPortFile,`${t}
|
|
124
|
+
`).catch(()=>{}),await new Promise(O=>{g.close(()=>O()),g.closeAllConnections()})},A=qt({stateDirectory:c,logger:{info:O=>p.log(O),warn:O=>p.warn(O),error:O=>p.error(O)},kind:r,closeServer:j,exit:()=>s(0)});if(g=No.createServer((O,_)=>{A.handle(O,_,async N=>{if(N){p.error(`[gallery] ${O.method} ${O.url}: ${N.stack??N.message}`),_.headersSent?_.end():rn(_,{status:500});return}try{if(await tn(O,_,{web:n,kit:zo,vendor:Bo}))return}catch(U){p.error(`[gallery] ${O.url}: ${U.message}`)}_.headersSent||rn(_,{status:404})})}),g.keepAliveTimeout=5e3,await new Promise((O,_)=>{g.once("error",_),g.listen(t,"127.0.0.1",()=>{g.off("error",_),O()})}),t=g.address().port,await A.listening(t),l&&(w=on(Be,A.changed)),Uo){let O=Te.readFileSync(_e,"utf8");f=()=>{let _=null;try{_=Te.readFileSync(_e,"utf8")}catch{}_!==O&&(p.log("[gallery] The package was replaced (another version installed): this server stops; the next gallery command starts the new one."),A.stop())},Te.watchFile(_e,{interval:3e3,persistent:!1},f)}if(a)for(let O of["SIGINT","SIGTERM","SIGHUP"])process.once(O,()=>A.stop());return{server:g,port:t,routes:A,async close(){await j(),await A.close()}}}export{us as a};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{a as b}from"./chunk-LAE5NQ4B.mjs";import{c as j,d as x,k as w}from"./chunk-NSKUTQ5J.mjs";import"./chunk-5L7RYZCL.mjs";import l from"node:fs";import a from"node:path";import{pathToFileURL as E}from"node:url";import{projectRoot as f}from"../browser/shared/paths.mjs";import{sha256 as L}from"../browser/shared/files.mjs";var g=["SKILL.md","references/writing-html.md","references/building-components.md","references/example-report.html","sdk","agents/openai.yaml"],u="## Before anything: the gallery command";function F(n){let[s,t]=n.split(/[.+-]/).map(Number);return{range:`^${n}`,takes:`${n} or a later ${s===0?`0.${t}`:s}.x`}}function K(n,s){let t=n.indexOf(`
|
|
3
|
+
${u}
|
|
4
|
+
`);if(t<0)throw new Error(`SKILL.md has no section "${u}" (the version range of the command stands there)`);let e=n.indexOf(`
|
|
5
|
+
## `,t+u.length+1),r=e<0?n.length:e,{range:i,takes:o}=F(s),c=n.slice(t,r).replace(/\^\d+\.\d+\.\d+(?:-[\w.]+)?/g,i).replace(/\b\d+\.\d+\.\d+(?:-[\w.]+)? or a later \d+(?:\.\d+)?\.x\b/g,o);return n.slice(0,t)+c+n.slice(r)}function y(n=f){let s=g.filter(i=>!l.existsSync(a.join(n,i)));if(s.length)return s.map(i=>`the skill takes ${i}, which is not there`);let t=A(g,n),e=i=>l.readFileSync(a.join(n,i),"utf8"),r=P(t,e).map(i=>`${i}, which the skill does not hold: link only what it holds`);for(let i of t.filter(o=>o.startsWith("sdk/")&&o.endsWith(".ts")))for(let[,o]of e(i).matchAll(/\bfrom\s+["']([^"']+)["']|\bimport\(\s*["']([^"']+)["']\s*\)/g))o&&(!o.startsWith("./")||o.includes("/../"))&&r.push(`${i} imports ${o}, outside sdk/: write the types it needs in sdk/`);return r}function O(n,{root:s=f,version:t=JSON.parse(l.readFileSync(a.join(s,"package.json"),"utf8")).version}={}){let e=y(s);if(e.length)throw new Error(`The skill cannot be made:
|
|
6
|
+
${e.map(r=>` ${r}`).join(`
|
|
7
|
+
`)}`);l.rmSync(n,{recursive:!0,force:!0});for(let r of A(g,s)){let i=a.join(n,r);l.mkdirSync(a.dirname(i),{recursive:!0}),r==="SKILL.md"?l.writeFileSync(i,K(l.readFileSync(a.join(s,r),"utf8"),t)):l.copyFileSync(a.join(s,r),i)}return S(n)}function S(n,s=""){let t=[];for(let e of l.readdirSync(n,{withFileTypes:!0}).sort((r,i)=>r.name.localeCompare(i.name))){let r=s?`${s}/${e.name}`:e.name;e.isDirectory()?t.push(...S(a.join(n,e.name),r)):e.isFile()&&t.push(r)}return t}function A(n,s=f){return n.flatMap(t=>{let e=a.join(s,t);return l.existsSync(e)?l.statSync(e).isDirectory()?S(e,t):[t]:[]})}function N(n){let s=null;return n.split(`
|
|
8
|
+
`).map(t=>{let e=/^\s*(`{3,}|~{3,})(.*)$/.exec(t);return s?(e&&e[1][0]===s[0]&&e[1].length>=s.length&&!e[2].trim()&&(s=null),""):e&&!(e[1][0]==="`"&&e[2].includes("`"))?(s=e[1],""):t}).join(`
|
|
9
|
+
`)}function v(n){let s=N(n).replace(/(`+)(?!`)(?:(?!\n[ \t]*\n)[\s\S])*?[^`]\1(?!`)/g,e=>" ".repeat(e.length));return[...[...s.matchAll(/\]\(\s*(?:<([^<>\n]*)>|((?:[^\s()<>]|\([^\s()<>]*\))+))(?:\s+(?:"[^"\n]*"|'[^'\n]*'|\([^()\n]*\)))?\s*\)/g)].map(e=>[e.index,e[1]??e[2]]),...[...s.matchAll(/^ {0,3}\[(?!\^)[^\]\n]+\]:[ \t]*(?:<([^<>\n]*)>|(\S+))/gm)].map(e=>[e.index,e[1]??e[2]]),...[...s.matchAll(/<(?:a|img)\s[^>]*?\b(?:href|src)\s*=\s*(?:"([^"]*)"|'([^']*)')/gi)].map(e=>[e.index,e[1]??e[2]])].sort(([e],[r])=>e-r).map(([,e])=>e)}function z(n,s){if(/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i.test(s))return null;let[,t,e=""]=/^([^?#]*)(?:\?[^#]*)?(?:#(.*))?$/s.exec(s),r=o=>{try{return decodeURIComponent(o)}catch{return o}};return{file:t?a.posix.normalize(a.posix.join(a.posix.dirname(n),r(t))).replace(/\/$/,""):n,anchor:r(e)}}function P(n,s){let t=new Set(n),e=new Set(n.flatMap(i=>i.split("/").slice(0,-1).map((o,c,p)=>p.slice(0,c+1).join("/")))),r=[];for(let i of n.filter(o=>/\.md$/i.test(o)))for(let o of v(s(i))){let c=z(i,o);!c||c.file===i||!t.has(c.file)&&!e.has(c.file)&&r.push(`${i} links ${o}`)}return r}function C(n,{root:s=f,version:t=JSON.parse(l.readFileSync(a.join(s,"package.json"),"utf8")).version}={}){let e=y(s);if(e.length)throw new Error(`The skill cannot be made:
|
|
10
|
+
${e.map(m=>` ${m}`).join(`
|
|
11
|
+
`)}`);let r=a.join(n,"skill","gallery"),i=`gallery-skill-${t}.zip`,o=a.join(n,i);l.rmSync(a.join(n,"skill"),{recursive:!0,force:!0}),l.existsSync(a.join(n,"gallery","PACKAGE-MANIFEST.json"))&&l.rmSync(a.join(n,"gallery"),{recursive:!0,force:!0});for(let m of l.existsSync(n)?l.readdirSync(n):[])/^gallery-skill-.+\.zip(?:\.sha256)?$|^PACKAGE-MANIFEST\.json$/.test(m)&&l.rmSync(a.join(n,m),{force:!0});let c=O(r,{root:s,version:t}),p=c.map(m=>({name:`gallery/${m}`,data:l.readFileSync(a.join(r,m))})),d=b(p);l.writeFileSync(o,d);let k=L(d);l.writeFileSync(`${o}.sha256`,`${k} ${i}
|
|
12
|
+
`);let{range:$}=F(t),T={name:"gallery",version:t,archive:i,holds:"The Agent's documents (SKILL.md, references/writing-html.md, references/building-components.md, the example references/example-report.html), the SDK's types (sdk/) and Codex's display metadata (agents/openai.yaml). The tools are the npm package @heycys/gallery, which SKILL.md has the Agent check for and install (with the user's consent); gallery skill install writes this same skill.",skillEntrypoint:"SKILL.md",requires:`@heycys/gallery@${$}`,files:p.map(({name:m,data:h})=>({path:m.slice(8),bytes:h.byteLength,sha256:L(h)}))};l.writeFileSync(a.join(n,"PACKAGE-MANIFEST.json"),`${JSON.stringify(T,null,2)}
|
|
13
|
+
`);let I=p.reduce((m,{data:h})=>m+h.byteLength,0);return{archive:o,skill:r,files:c,bytes:I,zipBytes:d.byteLength,sha256:k,range:$}}if(import.meta.url===E(process.argv[1]).href){let{positional:n}=await w(import.meta.url);n.length>0&&(console.error(x(j(import.meta.url),`Unknown argument: ${n[0]} (skill:package takes none: there is one skill).`)),process.exit(2));let s=y();s.length>0&&(console.error(`Not packaged:
|
|
14
|
+
${s.map(e=>` ${e}`).join(`
|
|
15
|
+
`)}`),process.exit(1));let t=C(a.join(f,"release"));console.log(`Packaged ${t.archive} (${t.files.length} files, ${t.bytes.toLocaleString("en-US")} bytes; the ZIP ${t.zipBytes.toLocaleString("en-US")} bytes), for @heycys/gallery ${t.range}`),console.log(`The skill's folder: ${t.skill}`),console.log(`SHA-256 ${t.sha256}`)}export{u as BOOTSTRAP,g as SKILL_FILES,O as buildSkill,P as deadLinks,A as filesOf,z as linkTarget,v as linksOf,S as listFiles,C as packageSkill,y as skillProblems,F as skillRange,K as withRange,N as withoutSamples};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{e as D,f as x}from"./chunk-4FS7Z7WR.mjs";import{a as d,b as u,c as w,d as y}from"./chunk-6RGJOMJP.mjs";import{k as l}from"./chunk-6QXGZM36.mjs";import{b as c,d as f,e as m,g as p,h as g,i as a,j as h}from"./chunk-CY2FNNAB.mjs";import{a as s}from"./chunk-UMHUSOPJ.mjs";import S from"node:path";import{FILE as j}from"../browser/shared/annotations.mjs";import{editStateDirectory as L,reportsDirectory as i}from"../browser/shared/paths.mjs";import{documentDirectory as $,documentFiles as k}from"../browser/shared/workspace.mjs";function O({say:e=!0}={}){return o=>{let{text:t,changes:n}=c(o.html,{finish:l});if(e&&n.length&&console.log(p(o.htmlPath,n,{pending:!0}).join(`
|
|
3
|
+
`)),e){let r=f(o.html);r.length&&console.log(D(o.htmlPath,r,r.length,{pending:!0}).join(`
|
|
4
|
+
`));for(let N of x(o.htmlPath,m(s(o.html),o.metadata),{pending:!0}))console.log(N)}return t}}function b(e){for(let o of e){for(let t of g(o.html))console.log(`note ${o.slug}: ${t} (read-only in the preview)`);for(let t of a(o.html))console.log(`note ${o.slug}: ${t}`);for(let t of h(o.html))console.log(`note ${o.slug}: ${t}`)}}async function q(e){for(let o of e){let t=await w({stateDirectory:L,reportsDirectory:i,slug:o});for(let n of y(k($(o,i)).html,t))console.log(n)}}async function z(e){for(let o of e){let t=await d({stateDirectory:L,reportsDirectory:i,slug:o});for(let n of u(S.join($(o,i),j),t))console.log(n)}}export{O as a,b,q as c,z as d};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{b as we,c as pe,d as ge,e as J,g as R,h as me,i as X,j as $e,k as ye,l as $,m as ke}from"./chunk-PL6GHLGD.mjs";import{a as H}from"./chunk-TX6JH7TR.mjs";import{d as ce,g as de}from"./chunk-5ZKJ3H4P.mjs";import{a as U}from"./chunk-NQPVAU63.mjs";import{a as he,b as fe,e as ue}from"./chunk-DFUDV4LX.mjs";import{a as Q,c as F}from"./chunk-QJIR2BLP.mjs";import"./chunk-E7LWZRXY.mjs";import{b as v,i as ie}from"./chunk-NSKUTQ5J.mjs";import"./chunk-AUZGSZJH.mjs";import"./chunk-BGGDRNYQ.mjs";import"./chunk-6QXGZM36.mjs";import"./chunk-UALRNVSE.mjs";import"./chunk-W3BGBJQW.mjs";import"./chunk-JVHHHGEA.mjs";import{a as re}from"./chunk-HYMEEXKN.mjs";import"./chunk-TYK6VNAB.mjs";import{b as z}from"./chunk-CY2FNNAB.mjs";import"./chunk-UMHUSOPJ.mjs";import"./chunk-L3QKH4OK.mjs";import{c as Y,g as le}from"./chunk-W4VKN3GF.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";import C from"node:fs/promises";import P from"node:path";import{isInstance as K,partOf as Fe}from"../browser/shared/components/index.mjs";import{ATTRIBUTE as ae,FALLBACK as Re,FIELDS as _e,INSTANCE as Se,PACKAGE_ID as je}from"../browser/shared/components/installed.mjs";import{attr as ee,walk as Pe}from"../browser/shared/html-tree.mjs";import{documentDirectory as Be,documentFiles as He,layoutOf as se,packageFolders as Ue}from"../browser/shared/workspace.mjs";var be=10,te=6,qe=3,Ge=100,Le=1024,Ie=900,Ve=4e3,V=3e4,Ke=1500,ne=3e4,oe=500,We=5e3,Ze=200,B=e=>new Promise(t=>setTimeout(t,e));async function Ye(e){let{_keyDefinitions:t}=await import("./chunk-43B75J5T.mjs"),n=Object.hasOwn(t,e)?[e]:e.split("+"),a=new Set(["Control","Shift","Alt","Meta"]);if(n.some(o=>!Object.hasOwn(t,o))||n.slice(0,-1).some(o=>!a.has(o)))throw new v(`Not a key: ${e} (a key as a browser names it, Enter, Space, Escape, Tab, ArrowRight, a letter or a digit, after modifiers joined by "+": Shift+Tab, Control+Enter).`);return n}async function ze(e,t){let n=["--press","--drag","--key"].filter(a=>e.has(a));if(n.length!==1)throw new v(n.length?`One gesture at a time: ${n.join(" or ")}.`:"Say the gesture: --press <selector>, --drag <selector> --to <selector> or --key <selector> <key>.");if(e.has("--to")&&!e.has("--drag"))throw new v("--to goes with --drag: --drag <selector> --to <selector>.");if(e.has("--drag")&&!e.has("--to"))throw new v("--drag takes --to: --drag <selector> --to <selector>, where it is dropped.");return e.has("--press")?{kind:"press",at:e.get("--press")}:e.has("--drag")?{kind:"drag",at:e.get("--drag"),to:e.get("--to")}:{kind:"key",at:e.get("--key"),keys:await Ye(t),key:t}}var Qe=e=>{let t=e.parentNode;for(;t&&!K(t);)t=t.parentNode;return t??null};function Ne(e){let t=[];return Pe(re(e),n=>{K(n)&&t.push({element:n,id:ee(n,ae),blockId:ee(n,"data-block-id")??null,line:n.sourceCodeLocation?.startLine})},{stop:K}),t}var Je=(e,{id:t,blockId:n})=>n??(e.filter(a=>a.id===t).length===1?t:null);function Xe(e,t,{slug:n,name:a}){let o=()=>e.map(i=>` ${Je(e,i)??"(no id yet: gallery export gives it one)"} ${i.id} at ${a}:${i.line}`).join(`
|
|
3
|
+
`);if(t===null){if(e.length===1)return 0;throw new v(`${n} holds ${e.length} instances: name one, gallery component try ${n} <instance id> \u2026
|
|
4
|
+
${o()}`)}let r=e.findIndex(({blockId:i})=>i===t);if(r>=0)return r;let l=t.includes("/")?t:`local/${t}`,s=je.test(l)?e.flatMap((i,c)=>i.id===l?[c]:[]):[];if(s.length===1)return s[0];throw new v(s.length?`${n} holds ${s.length} instances of ${l}: name one by its id
|
|
5
|
+
${o()}`:`${n} holds no instance ${t}:
|
|
6
|
+
${o()}`)}var et=e=>e.replace(/\s+data-block-id="[^"]*"/g,""),ve=e=>et(z(e).text);function xe(e,t,n){let a=Ne(e)[t]?.element;if(!a||ee(a,ae)!==n.id)return null;let o=[],r=Object.entries(n.parts).map(([c,{at:u}])=>{let p=Fe(a,u).filter(h=>h.sourceCodeLocation?.endTag&&!K(h)&&Qe(h)===a).map(({sourceCodeLocation:{startTag:h,endTag:d}})=>({start:h.endOffset,end:d.startOffset}));return o.push(...p),{name:c,text:p.map(({start:h,end:d})=>e.slice(h,d)).join(`
|
|
7
|
+
`)}}),l=o.sort((c,u)=>c.start-u.start||u.end-c.end).filter((c,u)=>!o.slice(0,u).some(p=>p.start<=c.start&&c.end<=p.end)),s="",i=0;for(let{start:c,end:u}of l)s+=e.slice(i,c),i=u;return{parts:r,outside:s+e.slice(i)}}function tt(e,t,n,a){let[o,r]=[xe(e,n,a),xe(t,n,a)];return!o||!r?{parts:[],outside:null,gone:!0}:{parts:o.parts.flatMap(({name:s,text:i},c)=>i===r.parts[c].text?[]:[{name:s,...X(i,r.parts[c].text),how:$e(i,r.parts[c].text)}]),outside:o.outside===r.outside?null:X(o.outside,r.outside),gone:!1}}async function nt(e,t){let{components:n,marker:a}=se(e);return await Oe([t,a,n])+U+F+oe}async function Oe(e){let t=[...e];for(let a of e)for(let o of await C.readdir(a,{recursive:!0,withFileTypes:!0}).catch(()=>[]))t.push(P.join(o.parentPath,o.name));let n=await Promise.all(t.map(a=>C.stat(a).then(({mtimeMs:o})=>o,()=>0)));return Math.max(...n)}var ot=e=>fetch(`${e}/__gallery/workspace/components`,{signal:AbortSignal.timeout(2e3)}).then(t=>t.ok?t.json():null).then(t=>Array.isArray(t?.packages)?t.packages:null,()=>null);async function at(e,t,n){let{components:a,marker:o}=se(e),r=Ue(e).find(k=>k.id.toLowerCase()===t)?.folder??P.join(a,...t.split("/")),[l,s]=await Promise.all([Oe([o,r]),ot(n)]),{packages:i,problems:c,settings:u}=Y(e),p=s?.find(k=>k.id===t)??null,h=s?p?.state??"none":null,d=h==="normal"||h==="hidden",f=u.disabled.includes(t),m=c.get(t),y=m&&!f&&d?le("en",m.problem):null,S=s!==null&&i.has(t)&&!d;return{by:l+(y?Q:U+F),held:y,behind:S,off:f,stamp:(i.get(t)??m)?.stamp??null,state:h,reason:p?.reason?.en??null}}var Ce=({state:e,reason:t})=>e==="none"?"no such package":t?`it as not loading (${t})`:"it turned off";function st(e,{said:t,unparsed:n=null,off:a,behind:o=!1,state:r,reason:l}){let s="the instance shows what it holds, read-only, so a reader can do nothing with it";return n?`${s}: its kit.js did not parse, so no component of it started, and the console says ${n}`:t.length?`${s}: its component failed as the page started it, and the console says ${t.join("; ")}`:a?`${s}: ${e} is turned off in \u8BBE\u7F6E \u203A \u7EC4\u4EF6\u5217\u8868`:o?`${s}: the server has not taken ${e} as components/ holds it, where it loads: its catalog in use has ${Ce({state:r,reason:l})}`:r==="disabled"&&!l?`${s}: ${e} is turned off in \u8BBE\u7F6E \u203A \u7EC4\u4EF6\u5217\u8868`:r==="broken"||r==="disabled"?`${s}: the server has ${e} as not loading (${l}): gallery component check ${e} says why`:r==="none"?`${s}: the server has not taken ${e} as components/ holds it (its catalog in use has no such package)`:r?`${s}: the page was served before the server took ${e} as components/ holds it, and did not load itself again with it`:`${s}: its component failed or never started, and the console said nothing of it`}var it=(e,t,n)=>t.held?`${e} does not load as components/ holds it (${t.held}), and the server keeps it as it was until components/ has not changed for ${Q/1e3}s, as it keeps a package written file by file`:t.behind?`components/ holds ${e} as loading, and the server's catalog in use still has ${Ce(t)}: it takes what components/ holds once that has not changed for ${F/1e3}s`:n?`${e} or gallery.json changed a moment ago, and the server takes the change once components/ has not changed for ${F/1e3}s, the page served before loading itself again for it`:`the server took ${e} as components/ holds it, and the page served before is to load itself again with it`,rt=(e,t,n)=>t.held?`the server still keeps ${e} as it was`:t.behind?`the server has still not taken ${e} as components/ holds it`:`the server took ${e} as components/ holds it, and the page did not load itself again with it in ${n/1e3}s`;async function lt({root:e,id:t,origin:n,loadedAt:a,loaded:o,told:r=We,say:l=s=>console.log(s)}){let s=Date.now(),i,c=0,u=0,p=!1;for(;;await B(Ze)){let h=await at(e,t,n),d=Date.now();i!==void 0&&h.stamp!==i&&(c=d),i=h.stamp,h.behind&&!u&&(u=d);let f=Math.max(h.by,...[c,u].filter(Boolean).map(y=>y+U+F)),m=o()?"the page loaded itself again":h.off?`gallery.json turns ${t} off now`:a>=f?`the page was asked for after the server took ${t} as components/ holds it`:d>f+r?rt(t,h,r):null;if(m)return p&&l(`Waited ${((d-s)/1e3).toFixed(1)}s: ${m}`),h;p||f-d<=oe&&d-s<=oe||(p=!0,l(`Waiting: ${it(t,h,f>d)}, ${Math.ceil((f+r-d)/1e3)}s more at most`))}}function ct({instance:e,at:t}){return[...document.querySelectorAll(e)].filter(n=>!n.parentElement?.closest(e))[t]??null}function dt(e,t){let n=d=>`<${d.localName}${d.classList.length?` class="${d.getAttribute("class")}"`:""}>`,a;try{a=e.querySelector(t)}catch{return{invalid:!0}}if(!a)return{none:!0,held:[...new Set([...e.querySelectorAll("[class]")].filter(d=>d.getClientRects().length>0).flatMap(d=>[...d.classList].map(f=>`.${f}`)))].slice(0,16)};let o=((a instanceof HTMLElement?a.innerText:a.textContent)??"").replace(/\s+/g," ").trim(),r={named:n(a),words:o.length>40?`${o.slice(0,40)}\u2026`:o},l=[...a.getClientRects()].filter(({width:d,height:f})=>d>0&&f>0);if(!l.length)return{...r,hidden:!0};let{left:s,top:i,right:c,bottom:u,width:p,height:h}=l.reduce((d,f)=>d.width*d.height>=f.width*f.height?d:f);return{...r,box:{left:s,top:i,right:c,bottom:u,x:s+p/2,y:i+h/2}}}function ht(e,{selector:t,x:n,y:a}){let o=e.querySelector(t),r=document.elementFromPoint(n,a);return!r||o.contains(r)?null:`<${r.localName}${r.classList.length?` class="${r.getAttribute("class")}"`:""}>`}function ft(e,{at:t,to:n}){let[a,o]=[e.querySelector(t),e.querySelector(n)];return a===o?"same":a.contains(o)?"inside":null}function ut(e){let t=a=>a instanceof Element?`<${a.localName}${a.classList.length?` class="${a.getAttribute("class")}"`:""}>`:"the page",n={edits:[],states:[],started:null,dropped:null,effect:null};addEventListener("doc-component-edit",a=>{a.target===e&&n.edits.push({taken:a.defaultPrevented,parts:(a.detail?.parts??[]).map(({name:o})=>o)})}),new MutationObserver(a=>{for(let{oldValue:o}of a)n.states.push(o);n.states.push(document.documentElement.getAttribute("data-ge-save"))}).observe(document.documentElement,{attributes:!0,attributeFilter:["data-ge-save"],attributeOldValue:!0}),document.addEventListener("dragstart",a=>{n.started=t(a.target)},!0),document.addEventListener("drop",a=>{n.dropped=t(a.target)},!0),document.addEventListener("dragend",a=>{n.effect=a.dataTransfer?.dropEffect??null},!0),globalThis.__galleryTry=n}async function wt(e,{still:t,step:n}){let a=()=>new Promise(r=>{requestAnimationFrame(r),setTimeout(r,100)});await a(),await a();let o=e.outerHTML;for(let r=0,l=Date.now()+t;r<3;){if(Date.now()>l)return null;await new Promise(i=>setTimeout(i,n));let s=e.outerHTML;r=s===o?r+1:0,o=s}return o}function pt(e,t,{left:n,top:a,right:o,bottom:r}){let l=0;for(let[s,i,c,u]of[[e.x,t.x,n,o],[e.y,t.y,a,r]]){if(i===s)continue;let[p,h]=[(c-s)/(i-s),(u-s)/(i-s)];l=Math.max(l,Math.min(p,h))}return l*Math.hypot(t.x-e.x,t.y-e.y)}function gt(e,t){let n=Math.hypot(t.x-e.x,t.y-e.y),a=i=>n===0?{x:e.x,y:e.y}:{x:e.x+(t.x-e.x)*i/n,y:e.y+(t.y-e.y)*i/n},o=Math.min(te,n),r=pt(e,t,t)-qe,l=r>o?r:n,s=[a(o/2),a(o)];for(let i=1;i<=be;i++)s.push(a(o+(l-o)*i/be));return l!==n&&s.push({x:t.x,y:t.y}),s}var W={press:"press",drag:"drag",key:"key"},q=(e,{named:t,words:n})=>`${e} (${t}${n?` "${n}"`:""})`,Ee=e=>Object.assign(new v(e),{unfound:!0});async function mt(e,t,n){let a=async i=>{let c=await $(t.evaluate(dt,i),"the page was asked what the selector finds");if(c.invalid)throw new v(`Not a selector: ${i}.`);if(c.none)throw Ee(`Nothing in the instance is ${i}${c.held.length?`: what it shows has ${c.held.join(", ")}`:": it shows nothing with a class"}.`);if(c.hidden)throw Ee(`${i} finds ${c.named} in the instance, which is not shown (it has no box on the page), so a reader cannot reach it: name what it shows.`);return c},o=await a(n.at);if(n.kind==="press"){let{x:i,y:c}=o.box,u=await $(t.evaluate(ht,{selector:n.at,x:i,y:c}),"the page was asked what stands at the press");return await e.mouse.move(i,c),await e.mouse.down(),await e.mouse.up(),{said:`a press on ${q(n.at,o)}, with the pointer at its middle`,over:u}}if(n.kind==="drag"){let i=await a(n.to),c=await $(t.evaluate(ft,{at:n.at,to:n.to}),"the page was asked where the drag ends");if(c)throw new v(`${c==="same"?`--drag and --to find the same element, ${o.named}`:`--to ${n.to} finds ${i.named}, which stands in what --drag ${n.at} finds, ${o.named}`}: a drag ends where it is dropped, on another element of the instance (another column, another row), which --to names.`);if(Math.hypot(i.box.x-o.box.x,i.box.y-o.box.y)<te)throw new v(`The middles of what --drag ${n.at} and --to ${n.to} find stand less than ${te}px apart, too near for a drag to start: name with --to where it is dropped, further off.`);let u=gt(o.box,i.box);await e.mouse.move(o.box.x,o.box.y),await e.mouse.down();for(let{x:p,y:h}of u)await e.mouse.move(p,h);return await B(Ge),await e.mouse.up(),{said:`a drag of ${q(n.at,o)} to ${q(n.to,i)}, with the pointer in ${u.length} moves, released as it comes onto it`}}let r=await t.$(n.at);await $(r.focus(),"the focus went to the element");let l=await $(e.evaluate(i=>document.activeElement===i||i.contains(document.activeElement)?null:`<${document.activeElement?.localName??"body"}>`,r),"the page was asked where the focus is"),s=n.keys.slice(0,-1);for(let i of s)await e.keyboard.down(i);await e.keyboard.press(n.keys.at(-1));for(let i of s.toReversed())await e.keyboard.up(i);return{said:`${n.key} pressed with the focus given to ${q(n.at,o)}, as Tab gives it`,unfocused:l}}var $t=e=>fetch(`${e}/__gallery/workspace/info`,{signal:AbortSignal.timeout(2e3)}).then(t=>t.ok,()=>!1);async function Te(e,t,n){let a=Date.now();for(let o=0,r=0;;await B(100)){let{seen:l,now:s}=await $(e.evaluate(c=>({seen:globalThis.__galleryTry.states.slice(c),now:document.documentElement.getAttribute("data-ge-save")}),t),"the page was asked where saving stands"),i=s!=="saved"||l.some(c=>c!=="saved");if(i&&s==="saved")return"saved";if(s==="stopped"||s==="reloading")return s;if(o=s==="held"?o+1:0,o>=3)return"held";if(r=s==="offline"?r+1:0,r>0&&r%10===0&&!await $t(n))return"offline";if(!i&&Date.now()-a>Ke)return"unchanged";if(Date.now()-a>ne)return s}}var _=e=>({held:"a card waits for a reader: someone else changed the part meanwhile, and the page held its write for the reader there, which closing the page dropped",offline:"the page could not reach the server (offline)",stopped:"the page stopped saving (stopped): the server refused its write",reloading:"the page loaded itself again (doc.html or a package it holds changed meanwhile)",waiting:`it waited ${ne/1e3}s to be saved and never was`,syncing:`its save took more than ${ne/1e3}s`})[e];function yt(e,{parts:t,outside:n,gone:a},{gesture:o,name:r,held:l=!1,keep:s=!1}){let i=n?`; outside the instance's parts -${n.removed} +${n.added} lines someone else wrote meanwhile, which stay`:"";return a?{unverified:`${e}, and ${r} holds the instance no more where it stood: someone else wrote the file meanwhile`}:t.length===0?{unverified:`${e}: ${r} is as it was${n?" in the instance's parts":""} (data-block-id aside)${i}`}:l?{unverified:`${e}: what ${r} holds of ${R(t)} is someone else's, which stays${i}`}:s?{unverified:`${e}: ${r} holds what the ${o} wrote, ${R(t)}, kept (--keep)${i}`}:{problem:`${e}, and ${r} holds what the ${o} wrote, ${R(t)}${i}: put that back yourself, ${r} read again first${n?", keeping what someone else wrote":""}`}}function kt(e,t,{over:n,unfocused:a,refusals:o,name:r}){let l=[];return n&&l.push(`the press landed on ${n}, which stands over it there`),a&&l.push(`the element takes no focus (a button, a field or a tabindex), so the key went to ${a}`),t.started&&!t.dropped?l.push(`an HTML5 drag started (dragstart on ${t.started}) and nothing took its drop where it was released (dragend's dropEffect ${t.effect??"none"}): a list a card is dropped on cancels dragenter as well as dragover (preventDefault), or a release as the pointer comes onto it drops nothing`):t.dropped&&t.edits.length===0&&l.push(`it was dropped on ${t.dropped}, and no context.edit came of it`),t.edits.some(({taken:s})=>s)?l.push("context.edit was taken, and its change left what the parts hold as it was"):t.edits.length?l.push(`context.edit was called and the page refused it${o.length?`: the console says ${o.join("; ")}`:""}`):t.started||l.push(`no context.edit came of it: the component answers no ${e} there, or asked while context.canEdit() was false`),`the ${W[e]} wrote nothing to ${r}: ${l.join("; ")}`}async function bt(e,t){let n={own:new Map,others:new Map,dialogs:new Map,pending:[],page:0,from:0},a=new RegExp(`/__gallery/components/${t}/kit\\.js[^:\\s)]*:(\\d+)`),o=(l,s,{at:i="",unparsed:c=!1}={})=>{if(s<n.from)return;let u=l.split(`
|
|
8
|
+
`)[0],p=a.exec(l)??a.exec(i);l.includes(t)||p?n.own.set(u,{line:Number(p?.[1])||null,page:s,unparsed:c&&a.test(i)}):n.others.set(u,{page:s})};e.on("request",l=>{l.isNavigationRequest()&&l.frame()===e.mainFrame()&&(n.page+=1)}),e.on("console",l=>{if(!["error","warn","warning"].includes(l.type())||/^Failed to load resource/.test(l.text()))return;let{page:s}=n;n.pending.push(Promise.all(l.args().map(i=>i.evaluate(c=>c instanceof Error?c.stack:String(c)).catch(()=>""))).then(i=>o(i.join(" ")||l.text(),s)))});let r=await ye(e,{add:l=>n.dialogs.set(l,{page:n.page})});return r.on("Runtime.exceptionThrown",({exceptionDetails:{exception:l,text:s,url:i,lineNumber:c,stackTrace:u}})=>{o(l?.description??String(l?.value??s),n.page,{at:i?`${i}:${c+1}`:"",unparsed:!u&&l?.className==="SyntaxError"})}),await r.send("Runtime.enable"),n}function vt(e){e.from=e.page;for(let t of[e.own,e.others,e.dialogs])for(let[n,{page:a}]of t)a<e.from&&t.delete(n)}var G=e=>Promise.race([Promise.all(e.pending),B(2e3)]);async function xt(e){let t=n=>e.waitForSelector(n,{timeout:V}).catch(a=>{if(a.name==="TimeoutError")throw a;return e.waitForSelector(n,{timeout:V})});try{return await t("[data-doc-ready]"),await t("html[data-ge-editing][data-ge-save]"),await e.waitForFunction(()=>globalThis.__galleryTryEditable===!0&&document.documentElement.getAttribute("data-ge-save")==="saved",{timeout:V}),!0}catch(n){if(n.name!=="TimeoutError")throw n;return!1}}async function Et(e,{at:t,id:n}){let a=await $(e.evaluateHandle(ct,{instance:Se,at:t}),"the page was asked for the instance"),o=await $(a.evaluate((r,{fallback:l,id:s})=>!(r instanceof Element)||r.getAttribute("data-doc-component")!==s?null:(DocKit.reveal?.(r),{fallback:r.hasAttribute(l),height:r.getBoundingClientRect().height}),{fallback:Re,id:n}),"the page was asked for the instance");return o?(await e.setViewport({width:Le,height:Math.min(Ve,Math.max(Ie,Math.ceil(o.height)+240))}),await $(a.evaluate(r=>r.scrollIntoView({block:"center",behavior:"instant"})),"the instance was brought into view"),await $(a.evaluate(wt,{still:pe,step:ge}),"the instance held still"),{host:a,fallback:o.fallback}):null}async function Tt(e){await $(e.evaluate(({instance:t,fields:n})=>{let a=document.activeElement;a instanceof HTMLElement&&a.closest(t)&&a.matches(n)&&a.blur()},{instance:Se,fields:_e}),"the focus left the instance's field"),await e.keyboard.down("Control"),await e.keyboard.press("z"),await e.keyboard.up("Control")}var At=3;async function St(e,{root:t,address:n,at:a,gesture:o,keep:r,file:l,name:s,line:i,found:c,out:u}){let p=await e.createBrowserContext(),h=await p.newPage(),d=await bt(h,c.id),f={problems:[],notes:[]},m=(w,b=`${s}:${i}`)=>f.problems.push({where:b,what:w}),y=W[o.kind],S=new URL(n).origin,k=0,M=0;h.on("request",w=>{!w.isNavigationRequest()||w.frame()!==h.mainFrame()||(k+=1,M=Date.now())});let L=null,N=null,T=async()=>tt(ve(N),ve(await C.readFile(l,"utf8").catch(()=>"")),a,c),A=(w,b,I=!1)=>{let D=yt(w,b,{gesture:y,name:s,held:I,keep:r});return D.problem&&m(D.problem),{...f,unverified:D.unverified}};await h.evaluateOnNewDocument(()=>addEventListener("doc-editable",()=>{globalThis.__galleryTryEditable=!0})),await h.setViewport({width:Le,height:Ie}),await h.emulateMediaFeatures([{name:"prefers-color-scheme",value:"light"}]);try{await $(h.goto(n,{waitUntil:"load",timeout:0}),"the page opened",we);let w=null,b=null;for(let x=1;!w;x++){let g=k;try{if(!await xt(h))return{...f,unverified:`the page did not come to edit in ${V/1e3}s, so nothing was tried`};if(w=await Et(h,{at:a,id:c.id}),!w)return{...f,unverified:`the page does not hold the instance where ${s} has it (${s} changed meanwhile?), so nothing was tried`};if(await B(Math.max(0,await nt(t,l)-Date.now())),w.fallback&&(b=await lt({root:t,id:c.id,origin:S,loadedAt:M,loaded:()=>k!==g})),k!==g)throw new Error("the page loaded itself again");if(w.fallback)break;if(N=await C.readFile(l,"utf8"),await $(w.host.evaluate(ut),"the page was asked to listen"),k!==g)throw new Error("the page loaded itself again")}catch(E){if(k===g||x===At)throw E;w=null,vt(d)}}let{host:I}=w;if(w.fallback){await G(d);let x=[...d.own].map(([g,{line:E,unparsed:De}])=>({words:`${g}${E?` (kit.js:${E})`:""}`,unparsed:De}));return d.own.clear(),m(st(c.id,{said:x.map(({words:g})=>g),unparsed:x.find(({unparsed:g})=>g)?.words??null,...b})),await Ae(I,f,u)}L=k;let D=await mt(h,I,o);f.gesture=D.said;let Z=await Te(h,0,S),Me=await $(h.evaluate(()=>globalThis.__galleryTry),"the page was asked what it heard");await Ae(I,f,u);let O=await T();if(_(Z))return A(`after the ${y}, ${_(Z)}`,O,Z==="held");if(O.gone)return A(`after the ${y}`,O);if(f.others=O.outside,O.parts.length===0){await G(d);let x=[...d.own.keys()].filter(g=>g.includes("context.edit"));for(let g of x)d.own.delete(g);return m(kt(o.kind,Me,{...D,refusals:x,name:s})),f}f.wrote={parts:O.parts,plain:z(N).changes.length>0};for(let{name:x,how:g}of O.parts)g&&f.notes.push({where:`${s}:${i}`,what:`the ${y}'s write lays the part ${x} out anew (${g}): ${me}`});if(!r){let x=await $(h.evaluate(()=>globalThis.__galleryTry.states.length),"the page was asked where saving stands");await Tt(h);let g=await Te(h,x,S),E=await T();if(k>L)return A(`after the ${y}, ${_("reloading")}`,E);if(_(g))return A(`after one Ctrl+Z, ${_(g)}`,E,g==="held");if(E.gone)return A("after one Ctrl+Z",E);g==="unchanged"?m(`one Ctrl+Z wrote nothing, so ${s} keeps what the ${y} wrote: put the part back yourself, ${s} read again first`):E.parts.length?m(`after one Ctrl+Z ${s} is not as it was, ${R(E.parts)} still differing: put that back yourself, ${s} read again first`):f.undone=!0,f.others=E.outside??f.others}return f.others&&(f.unverified=`someone else wrote ${s} meanwhile, outside the instance's parts (the user's page, an Agent), which stays${r?"":": try it again once the file holds still"}`),f}catch(w){if(w instanceof v){if(!w.unfound||(await G(d),d.own.size===0&&d.dialogs.size===0))throw w;return m(`${w.message[0].toLowerCase()}${w.message.slice(1).replace(/\.$/,"")}; its component did not draw it, and the console says why`),f}let b=L===null?null:await T();if(b&&k>L)return A(`after the ${y}, ${_("reloading")}`,b);if(await ke(e)){let I=`the browser went while waiting until ${w.doing??"the page answered"}`;return b?A(I,b):{...f,unverified:`${I}, so nothing was tried`}}return w.stuck?m(`the page stopped answering while waiting until ${w.doing}: a script that never ends, or a component that changes what it hears`,"the page"):m(`the trial stopped: ${J(w)}`,"the page"),b?A(`after the ${y} the trial stopped`,b):f}finally{await G(d);for(let[w,{line:b}]of d.own)f.problems.push({where:b?`kit.js:${b}`:"the page",what:`the console says ${w}`});for(let w of d.others.keys())f.notes.push({where:"the page",what:`the console says ${w}`});for(let w of d.dialogs.keys())f.problems.push({where:"the page",what:`it opened a dialog (${w}), which stops a reader's page until it is answered: show what it says in the instance`});await p.close().catch(()=>{})}}async function Ae(e,t,n){let a=P.join(n,"after.png");try{await $(e.screenshot({path:a}),"the instance was pictured"),t.picture=a}catch(o){if(o.stuck)throw o}return t}var j={gesture:"Gesture: ",wrote:"Wrote: ",undone:"Undone: ",kept:"Kept (--keep): ",picture:"Picture of the instance after the "},Lt="nothing outside the instance changed (data-block-id aside)";function It({slug:e,name:t,gesture:{kind:n},keep:a},o){let r=[];o.gesture&&r.push(`${j.gesture}${o.gesture}`);for(let{where:s,what:i}of o.problems)r.push(` FAIL ${s}: ${i}`);for(let{where:s,what:i}of o.notes)r.push(` note ${s}: ${i}`);if(o.wrote){let s=o.wrote.plain?"; and the page wrote the document's plain HTML as the kit's markup, as its first save of an edit does (gallery check and gallery export say what, by line, once), which stays":"",i=o.others?`; outside the instance's parts -${o.others.removed} +${o.others.added} lines someone else wrote meanwhile (the user's page, an Agent), which stay`:`; ${Lt}`;r.push(`${j.wrote}${R(o.wrote.parts)}${i}${s}`),a?r.push(`${j.kept}${t} holds what it wrote`):o.undone&&r.push(`${j.undone}one Ctrl+Z, and ${o.others?`the instance's parts in ${t} are as they were`:`${t} is as it was`} (data-block-id aside${o.wrote.plain?", its plain HTML the kit's markup":""})`)}o.picture&&r.push(`${j.picture}${W[n]}: ${H(o.picture)}`);let l=o.problems.length;return l?{lines:[...r,`FAIL ${e}: ${l} problem${l===1?"":"s"}`],code:1}:o.unverified?{lines:[...r,`UNVERIFIED ${e}: ${o.unverified}`],code:3}:{lines:[...r,`OK ${e}: the ${W[n]} wrote ${o.wrote.parts.map(({name:s})=>s).join(" and ")}${a?", kept (--keep)":", and one Ctrl+Z took it back"}`],code:0}}async function Kt(e,{named:t,values:n,key:a,keep:o}){let r=await ze(n,a);if(t.length===0)throw new v("Name the document: gallery component try <slug> [<instance id>] and the gesture.");if(t.length>2)throw new v("gallery component try takes a document and an instance's id at most.");let{slug:l,block:s}=await ie(t[0]),i=He(Be(l,e)).html,c=await C.readFile(i,"utf8").catch(()=>null);c===null&&(console.error(`No document "${l}": ${H(i)} does not exist (gallery list lists those there are).`),process.exit(1));let u=Ne(c);u.length===0&&(console.error(`${l} holds no instance of a component package (an element with ${ae}): gallery component list says which there are, and gallery component show <id> how to write one.`),process.exit(1));let p=P.basename(i),h=Xe(u,t[1]??s,{slug:l,name:p}),{id:d,line:f}=u[h],m=Y(e),y=m.packages.get(d);if(!y){let T=m.problems.get(d);console.error(T?.off?`${d} is turned off in \u8BBE\u7F6E \u203A \u7EC4\u4EF6\u5217\u8868: its instances show what they hold, read-only, so a reader can do nothing with them.`:T?`${d} does not load, so its instances show what they hold, read-only: gallery component check ${d} says why.`:`No component ${d} in this workspace, so its instance shows what it holds, read-only: gallery component list says which there are.`),process.exit(1)}console.log(`${d} in ${l}, ${p}:${f}: ${H(i)}`);let S=await de({slug:l,command:`gallery component try ${l}`});if(!S.ok){console.log(`UNVERIFIED ${l}: ${S.message}`),process.exitCode=3;return}let k=ce(S.port,l);console.log(`Page: ${k} (the document's page alone, editable: the Agent's own; the server runs on after this command)`);let M=he();if(!M){console.log(`UNVERIFIED ${l}: no Chrome, Edge or Chromium found (GALLERY_BROWSER=<its executable> picks one), so nothing was tried`),process.exitCode=3;return}let L;try{L=await ue({executablePath:M,args:fe()})}catch(T){console.log(`UNVERIFIED ${l}: the browser ${M} did not start, twice, each time with a fresh profile (${J(T)}; GALLERY_BROWSER=<its executable> picks another), so nothing was tried`),process.exitCode=3;return}let N=P.join(se(e).qa,l,"try");try{await C.rm(N,{recursive:!0,force:!0}),await C.mkdir(N,{recursive:!0});let{lines:T,code:A}=It({slug:l,name:p,gesture:r,keep:o},await St(L.browser,{root:e,address:k,at:h,gesture:r,keep:o,file:i,name:p,line:f,found:y,out:N}));console.log(T.join(`
|
|
9
|
+
`)),process.exitCode=A}finally{await L.close()}}export{Lt as INSIDE_ALONE,j as TRY_LINES,ve as asShown,tt as changesOf,Xe as chosenInstance,yt as cutOffSaid,gt as dragPath,st as fallbackSaid,ze as gestureOf,Ne as instancesIn,Ye as keysOf,bt as listen,kt as nothingSaid,vt as takenAgain,at as takenBy,nt as toldBy,It as trialSaid,Kt as tryCommand,lt as untilTaken,et as withoutIds};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{b as Z}from"./chunk-U3SSPL4K.mjs";import{a as Ce}from"./chunk-MAFIGVXY.mjs";import{a as x,e as De,f as Pe,i as ve,l as Oe,m as _e,n as Be,o as Se,p as Fe,r as Te,u as Ie,v as Re}from"./chunk-742D2WWJ.mjs";import{$ as zr,$a as $t,$b as ks,A as K,Aa as wt,Ab as ls,Ac as li,B as _,Ba as gt,Bb as fs,Bc as fi,Ca as bt,Cb as ps,Cc as pi,Da as Et,Db as ds,Dc as di,E as _r,Ea as xt,Eb as hs,Ec as hi,F as we,Fa as yt,Fb as ms,Fc as mi,G as Br,Ga as Dt,Gb as ws,Gc as wi,H as Sr,Ha as Pt,Hb as gs,Hc as gi,I as Fr,Ia as vt,Ib as bs,Ic as bi,J as Tr,Ja as Ot,Jb as Es,Jc as Ei,K as Ir,Ka as _t,Kb as xs,Kc as xi,L as Rr,Lb as Q,Lc as yi,M as ge,Mb as ys,Mc as Di,N as Cr,Nb as Ds,Nc as Pi,O as Ar,Oa as J,Ob as Ps,Oc as vi,P as Lr,Pb as vs,Pc as Oi,Q as kr,Qa as Bt,Qb as Os,Qc as _i,R as Wr,Ra as St,Rb as _s,Rc as Bi,S as $r,Sa as Ft,Sb as Bs,Sc as ye,T as Ur,Ta as Tt,Tb as Ss,Tc as Si,U as Nr,Ua as It,Ub as Fs,Uc as Fi,V as Mr,Va as Rt,Vb as Ts,Vc as Ti,W as Gr,Wa as Ct,Wb as Is,Wc as Ri,X as Vr,Xa as At,Xb as Rs,Xc as Ae,Y as jr,Ya as Lt,Yb as Cs,Yc as Le,Z as Xr,Za as kt,Zb as As,Zc as Ci,_ as Hr,_a as Wt,_b as Ls,_c as q,a as k,aa as Yr,ab as Ut,ac as Ws,ba as Kr,bb as Nt,bc as $s,c as oe,ca as Jr,cb as Mt,cc as Us,d as ae,da as Qr,db as Gt,dc as Ns,e as W,ea as be,eb as Vt,ec as Ms,fa as Zr,fb as jt,fc as Gs,ga as qr,gb as Xt,gc as Vs,h as ne,ha as et,hb as Ht,hc as js,i as ce,ia as rt,ib as zt,ic as Xs,j as ue,ja as tt,jb as Yt,jc as Hs,k as le,ka as st,kb as Kt,kc as zs,l as fe,la as it,lb as xe,lc as Ys,m as pe,ma as Ee,mb as Jt,mc as Ks,na as ot,nb as Qt,nc as Js,oa as at,ob as Zt,oc as Qs,pa as nt,pb as qt,pc as Zs,qa as ct,qb as es,qc as qs,r as de,ra as ut,rb as rs,rc as ei,s as he,sa as lt,sb as ts,sc as ri,t as yr,ta as ft,tb as ss,tc as ti,u as Y,ua as pt,ub as is,uc as si,v as Dr,vb as os,vc as ii,w as me,wb as as,wc as oi,x as Pr,xa as dt,xb as ns,xc as ai,y as vr,ya as ht,yb as cs,yc as ci,z as Or,za as mt,zb as us,zc as ui}from"./chunk-7DTINW6U.mjs";import"./chunk-YEY3RSFQ.mjs";import{a as ni}from"./chunk-UH4SIXTR.mjs";import{a as Ii}from"./chunk-Y34NR5JL.mjs";import{b as P,c as g,d as I}from"./chunk-W7XHE4CT.mjs";import"./chunk-5L7RYZCL.mjs";import p from"node:fs";import je from"node:path";import{debuglog as Xe}from"node:util";var He=p.constants.O_RDONLY|p.constants.O_NOFOLLOW,ee=p.constants.O_WRONLY|p.constants.O_CREAT|p.constants.O_TRUNC|p.constants.O_NOFOLLOW,ze=p.constants.O_WRONLY|p.constants.O_CREAT|p.constants.O_EXCL|p.constants.O_NOFOLLOW,Ye=p.constants.O_WRONLY|p.constants.O_CREAT|p.constants.O_EXCL,G=384;async function Ke(a,e){return!P.value.followSymlinks&&p.constants.O_NOFOLLOW!==void 0?await p.promises.readFile(a,{encoding:e,flag:He}):await p.promises.readFile(a,{encoding:e})}P.value={path:je,debuglog:P.value.debuglog??Xe,ScreenRecorder:P.value.ScreenRecorder,followSymlinks:!0,readFile:Ke,writeFile:async(a,e)=>{!P.value.followSymlinks&&p.constants.O_NOFOLLOW!==void 0?await p.promises.writeFile(a,e,{flag:ee,mode:G}):await p.promises.writeFile(a,e)},openFileForWriting:async a=>!P.value.followSymlinks&&p.constants.O_NOFOLLOW!==void 0?await p.promises.open(a,ee,G):await p.promises.open(a,"w+"),createWriteStream:(a,e)=>{let r=e?.encoding,t=e?.overwrite??!0;if(!P.value.followSymlinks&&p.constants.O_NOFOLLOW!==void 0){let s=t?ee:ze,c=p.openSync(a,s,G);return p.createWriteStream("",{fd:c,mode:G,encoding:r})}if(!t){let s=p.openSync(a,Ye);return p.createWriteStream("",{fd:s,encoding:r})}return p.createWriteStream(a,r?{encoding:r}:void 0)},mkdir:async(a,e)=>{await p.promises.mkdir(a,e)}};import{mkdtemp as or}from"node:fs/promises";import ar from"node:os";import te from"node:path";import{accessSync as Je,constants as Qe,existsSync as $,rmSync as Ze}from"node:fs";import{tmpdir as qe}from"node:os";import{join as ke}from"node:path";var V=class{#e;#r=new me;#t;#i=!1;#s=[];onclose;onmessage;constructor(e,r,t){this.#e=e,this.#t=t;let s=this.#r.use(new K(r,t));s.on("data",o=>this.#o(o)),s.on("close",()=>{this.onclose&&this.onclose.call(null)}),s.on("error",o=>{this.#t?.(g.error)?.(o)}),this.#r.use(new K(e)).on("error",o=>{this.#t?.(g.error)?.(o)})}send(e){_(!this.#i,"`PipeTransport` is closed."),this.#e.write(e),this.#e.write("\0")}#o(e){if(_(!this.#i,"`PipeTransport` is closed."),this.#s.push(e),e.indexOf("\0")===-1)return;let r=Buffer.concat(this.#s),t=0,s=r.indexOf("\0");for(;s!==-1;){let c=r.toString(void 0,t,s);setImmediate(()=>{this.onmessage&&this.onmessage.call(null,c)}),t=s+1,s=r.indexOf("\0",t)}t>=r.length?this.#s=[]:this.#s=[r.subarray(t)]}close(){this.#i=!0,this.#r.dispose()}};function er(a){try{return Je(a,Qe.W_OK),!0}catch{return!$(a)}}function rr(a){switch(a){case x.FIREFOX:case x.CHROME:return a.charAt(0).toUpperCase()+a.slice(1);default:return a}}var R=class{#e;#r;puppeteer;constructor(e,r,t){this.puppeteer=e,this.#e=r,this.#r=t}get logger(){return this.#r}get browser(){return this.#e}async launch(e={}){e.logger??=this.#r;let{dumpio:r=!1,enableExtensions:t=!1,extensionsEnabledInIncognito:s=[],env:c=process.env,handleSIGINT:o=!0,handleSIGTERM:n=!0,handleSIGHUP:i=!0,acceptInsecureCerts:u=!1,networkEnabled:d=!0,issuesEnabled:f=!0,defaultViewport:h=ge,downloadBehavior:l,slowMo:b=0,timeout:E=3e4,waitForInitialPage:y=!0,protocolTimeout:D,handleDevToolsAsPage:U,idGenerator:C=xe(),blocklist:A,allowlist:B}=e,{protocol:v}=e;if(this.#e==="firefox"&&v===void 0&&(v="webDriverBiDi"),Ae({allowlist:B,blocklist:A,protocol:v}),this.#e==="firefox"&&v==="cdp")throw new Error("Connecting to Firefox using CDP is no longer supported");let m=await this.computeLaunchArguments({...e,protocol:v});if(!$(m.executablePath))throw m.isTempUserDataDir&&await this.cleanUserDataDir(m.userDataDir,{isTemp:!0}),new Error(`Browser was not found at the configured executablePath (${m.executablePath})`);let T=m.args.includes("--remote-debugging-pipe"),N=async()=>{try{await this.cleanUserDataDir(m.userDataDir,{isTemp:m.isTempUserDataDir})}finally{w?.()}};if(this.#e==="firefox"&&v==="webDriverBiDi"&&T)throw new Error("Pipe connections are not supported with Firefox and WebDriver BiDi");let w,O;try{O=Be({executablePath:m.executablePath,args:m.args,handleSIGHUP:i,handleSIGTERM:n,handleSIGINT:o,dumpio:r,env:c,pipe:T,onExit:N,signal:e.signal,logger:e.logger}),w=m.isTempUserDataDir?tr(m.userDataDir,this.#r):void 0}catch(F){throw w?.(),await this.cleanUserDataDir(m.userDataDir,{isTemp:m.isTempUserDataDir}),F}let S,L,se=!1,M=async()=>{se||(se=!0,await this.closeBrowser(O,L))};try{this.#e==="firefox"?S=await this.createBiDiBrowser(O,M,{timeout:E,protocolTimeout:D,slowMo:b,defaultViewport:h,acceptInsecureCerts:u,networkEnabled:d,idGenerator:C,logger:e.logger}):(T?L=await this.createCdpPipeConnection(O,{timeout:E,protocolTimeout:D,slowMo:b,idGenerator:C,logger:e.logger}):L=await this.createCdpSocketConnection(O,{timeout:E,protocolTimeout:D,slowMo:b,idGenerator:C,logger:e.logger}),v==="webDriverBiDi"?S=await this.createBiDiOverCdpBrowser(O,L,M,{defaultViewport:h,acceptInsecureCerts:u,networkEnabled:d,issuesEnabled:f,logger:e.logger}):S=await ye._create(L,[],u,h,l,O.nodeProcess,M,e.targetFilter,void 0,void 0,d,f,U,A,B,e.logger))}catch(F){M();let ie=O.getRecentLogs().join(`
|
|
3
|
+
`);throw ie.includes("Failed to create a ProcessSingleton for your profile directory")||process.platform==="win32"&&$(ke(m.userDataDir,"lockfile"))?er(m.userDataDir)?new Error(`The browser is already running for ${m.userDataDir}. Use a different \`userDataDir\` or stop the running browser first.`):new Error(`The browser cannot write to ${m.userDataDir}. Make the \`userDataDir\` writable or use a different one.`):ie.includes("Missing X server")&&e.headless===!1?new Error("Missing X server to start the headful browser. Either set headless to true or use xvfb-run to run your Puppeteer script."):F instanceof Te?new we(F.message):F}return Array.isArray(t)&&await Promise.all([t.map(F=>S.installExtension(F,{enabledInIncognito:s.includes(F)}))]),y&&await this.waitForPageTarget(S,E),S}async closeBrowser(e,r){if(r)try{await r.closeBrowser(),await e.hasClosed()}catch(t){this.#r?.(g.error)?.(t),await e.close()}else await ae(le(k(e.hasClosed()),ce(5e3).pipe(W(()=>k(e.close())))))}async waitForPageTarget(e,r){try{await e.waitForTarget(t=>t.type()==="page",{timeout:r})}catch(t){throw await e.close(),t}}async createCdpSocketConnection(e,r){let t=await e.waitForLineOutput(Se,r.timeout),s=await Z.create(t,void 0,r.logger,r.wsOptions);return new Q(t,s,r.slowMo,r.protocolTimeout,!1,r.idGenerator,r.logger)}async createCdpPipeConnection(e,r){let{3:t,4:s}=e.nodeProcess.stdio,c=new V(t,s,r.logger);return new Q("",c,r.slowMo,r.protocolTimeout,!1,r.idGenerator,r.logger)}async createBiDiOverCdpBrowser(e,r,t,s){let c=process.env.PUPPETEER_WEBDRIVER_BIDI_ONLY==="true",o=await import("./chunk-V5JTW2LH.mjs"),n=await o.connectBidiOverCdp(r,s.logger);return await o.BidiBrowser.create({connection:n,cdpConnection:c?void 0:r,closeCallback:t,process:e.nodeProcess,defaultViewport:s.defaultViewport,acceptInsecureCerts:s.acceptInsecureCerts,networkEnabled:s.networkEnabled,issuesEnabled:s.issuesEnabled,logger:s.logger})}async createBiDiBrowser(e,r,t){let s=await e.waitForLineOutput(Fe,t.timeout)+"/session",c=await Z.create(s,void 0,t.logger,t.wsOptions),o=await import("./chunk-V5JTW2LH.mjs"),n=new o.BidiConnection(s,c,t.idGenerator,t.slowMo,t.protocolTimeout,t.logger);return await o.BidiBrowser.create({connection:n,closeCallback:r,process:e.nodeProcess,defaultViewport:t.defaultViewport,acceptInsecureCerts:t.acceptInsecureCerts,networkEnabled:t.networkEnabled??!0,issuesEnabled:t.issuesEnabled??!0,logger:t.logger})}async getProfilePath(){let e=await this.puppeteer.configuration();return ke(e.temporaryDirectory??qe(),`puppeteer_dev_${this.browser}_profile-`)}async resolveExecutablePath(e,r=!0){let t=await this.puppeteer.configuration(),s=t.executablePath;if(s){if(r&&!$(s))throw new Error(`Tried to find the browser at the configured path (${s}), but no executable was found.`);return s}function c(u,d){switch(u){case"chrome":return d==="shell"?x.CHROMEHEADLESSSHELL:x.CHROME;case"firefox":return x.FIREFOX}return x.CHROME}let o=c(this.browser,e),n=await this.puppeteer.defaultDownloadPath(),i=await this.puppeteer.browserVersion();if(s=Oe({cacheDir:n,browser:o,buildId:i}),r&&!$(s)){let u=t?.[this.browser]?.version;throw u?new Error(`Tried to find the browser at the configured path (${s}) for version ${u}, but no executable was found.`):new Error(`Could not find ${rr(o)} (ver. ${i}). This can occur if either
|
|
4
|
+
1. you did not perform an installation before running the script (e.g. \`npx puppeteer browsers install ${o}\`) or
|
|
5
|
+
2. your cache path is incorrectly configured (which is: ${t.cacheDirectory}).
|
|
6
|
+
For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides/configuration.`)}return s}},re=new WeakMap;function tr(a,e,r=process){let t=re.get(r);if(!t){let c=new Set,o=()=>{for(let n of c)try{Ze(n.userDataDir,{recursive:!0,force:!0,maxRetries:3,retryDelay:100})}catch(i){n.logger(g.error)?.(i)}};t={entries:c,onExit:o},re.set(r,t),r.once("exit",o)}let s={userDataDir:a,logger:e};return t.entries.add(s),()=>{!t?.entries.delete(s)||t.entries.size>0||(r.off("exit",t.onExit),re.delete(r))}}import sr from"node:fs";var ir={force:!0,recursive:!0,maxRetries:10,retryDelay:100};async function j(a){await sr.promises.rm(a,ir)}var X=class extends R{constructor(e,r){super(e,"chrome",r)}async launch(e={}){return(await this.puppeteer.configuration()).logLevel==="warn"&&process.platform==="darwin"&&process.arch==="x64"&&ar.cpus()[0]?.model.includes("Apple")&&console.warn(["\x1B[1m\x1B[43m\x1B[30m","Degraded performance warning:\x1B[0m\x1B[33m","Launching Chrome on Mac Silicon (arm64) from an x64 Node installation results in","Rosetta translating the Chrome binary, even if Chrome is already arm64. This would","result in huge performance issues. To resolve this, you must run Puppeteer with","a version of Node built for arm64."].join(`
|
|
7
|
+
`)),await super.launch(e)}async computeLaunchArguments(e={}){let{ignoreDefaultArgs:r=!1,args:t=[],pipe:s=!1,debuggingPort:c,channel:o,executablePath:n}=e,i=[];r?Array.isArray(r)?i.push(...this.defaultArgs(e).filter(l=>!r.includes(l))):i.push(...t):i.push(...this.defaultArgs(e)),i.some(l=>l.startsWith("--remote-debugging-"))||(s?(_(!c,"Browser should be launched with either pipe or debugging port - not both."),i.push("--remote-debugging-pipe")):i.push(`--remote-debugging-port=${c||0}`));let u=!1,d=i.findIndex(l=>l.startsWith("--user-data-dir")),f;if(d<0){u=!0;let l=await this.getProfilePath();f=await or(l),i.push(`--user-data-dir=${f}`)}else{let l=i[d].split("=",2)[1];_(typeof l=="string","`--user-data-dir` is malformed"),f=l}let h=n;return h||(_(o||!this.puppeteer._isPuppeteerCore,"An `executablePath` or `channel` must be specified for `puppeteer-core`"),h=o?await this.executablePath(o):await this.resolveExecutablePath(e.headless??!0)),{executablePath:h,args:i,isTempUserDataDir:u,userDataDir:f}}async cleanUserDataDir(e,r){if(r.isTemp)try{await j(e)}catch(t){this.logger(g.error)?.(t)}}defaultArgs(e={}){let r=We("--disable-features",e.args);e.args&&r.length>0&&$e(e.args,"--disable-features");let t=process.env.PUPPETEER_TEST_EXPERIMENTAL_CHROME_FEATURES==="true",s=We("--enable-features",e.args);e.args&&s.length>0&&$e(e.args,"--enable-features");let c=["PdfOopif",...s].filter(l=>l!==""),n=["--allow-pre-commit-input","--disable-background-networking","--disable-background-timer-throttling","--disable-backgrounding-occluded-windows","--disable-breakpad","--disable-client-side-phishing-detection","--disable-component-extensions-with-background-pages","--disable-crash-reporter","--disable-default-apps","--disable-dev-shm-usage","--disable-hang-monitor","--disable-infobars","--disable-ipc-flooding-protection","--disable-popup-blocking","--disable-prompt-on-repost","--disable-renderer-backgrounding","--disable-search-engine-choice-screen","--disable-sync","--enable-automation","--export-tagged-pdf","--force-color-profile=srgb","--generate-pdf-document-outline","--metrics-recording-only","--no-first-run","--password-store=basic","--use-mock-keychain",`--disable-features=${["Translate","AcceptCHFrame","MediaRouter","OptimizationHints","WebUIReloadButton","WebUIOmniboxPopup","WebUIOmniboxAimPopup",...t?[]:["ProcessPerSiteUpToMainFrameThreshold","IsolateSandboxedIframes"],...r].filter(l=>l!=="").filter(l=>!c.includes(l)).join(",")}`,`--enable-features=${c.join(",")}`].filter(l=>l!==""),{devtools:i=!1,headless:u=!i,args:d=[],userDataDir:f,enableExtensions:h=!1}=e;return process.env.PUPPETEER_DANGEROUS_NO_SANDBOX==="true"&&!d.includes("--no-sandbox")&&n.push("--no-sandbox"),f&&n.push(`--user-data-dir=${te.posix.isAbsolute(f)||te.win32.isAbsolute(f)?f:te.resolve(f)}`),i&&n.push("--auto-open-devtools-for-tabs"),u&&n.push(u==="shell"?"--headless":"--headless=new","--hide-scrollbars","--mute-audio"),h||n.push("--disable-extensions"),d.every(l=>l.startsWith("-"))&&n.push("about:blank"),n.push(...d),n}async executablePath(e,r=!0){return e?_e({browser:x.CHROME,channel:Ce(e)},r):await this.resolveExecutablePath(void 0,r)}};function We(a,e=[]){let r=a.endsWith("=")?a:`${a}=`;return e.filter(t=>t.startsWith(r)).flatMap(t=>t.substring(t.indexOf("=")+1).trim().split(",").map(s=>s.trim())).filter(t=>t)}function $e(a,e){let r=e.endsWith("=")?e:`${e}=`,t=0;for(;t<a.length;)a[t].startsWith(r)?a.splice(t,1):t++;return a}import nr from"node:fs";import{rename as cr,unlink as ur,mkdtemp as lr}from"node:fs/promises";import fr from"node:os";import Ue from"node:path";var H=class a extends R{constructor(e,r){super(e,"firefox",r)}static getPreferences(e){return{...e,"fission.webContentIsolationStrategy":0}}async computeLaunchArguments(e={}){let{ignoreDefaultArgs:r=!1,args:t=[],executablePath:s,pipe:c=!1,extraPrefsFirefox:o={},debuggingPort:n=null}=e,i=[];r?Array.isArray(r)?i.push(...this.defaultArgs(e).filter(l=>!r.includes(l))):i.push(...t):i.push(...this.defaultArgs(e)),i.some(l=>l.startsWith("--remote-debugging-"))||(c&&_(n===null,"Browser should be launched with either pipe or debugging port - not both."),i.push(`--remote-debugging-port=${n||0}`));let u,d=!0,f=i.findIndex(l=>["-profile","--profile"].includes(l));if(f!==-1){if(u=i[f+1],!u)throw new Error("Missing value for profile command line argument");d=!1}else{let l=await this.getProfilePath();u=await lr(l),i.push("--profile"),i.push(u)}await Pe(x.FIREFOX,{path:u,preferences:a.getPreferences(o)});let h;return this.puppeteer._isPuppeteerCore||s?(_(s,"An `executablePath` must be specified for `puppeteer-core`"),h=s):h=await this.executablePath(void 0),{isTempUserDataDir:d,userDataDir:u,args:i,executablePath:h}}async cleanUserDataDir(e,r){if(r.isTemp)try{await j(e)}catch(t){this.logger(g.error)?.(t)}else try{let t=".puppeteer",s=["prefs.js","user.js"],c=await Promise.allSettled(s.map(async o=>{let n=Ue.join(e,o+t);if(nr.existsSync(n)){let i=Ue.join(e,o);await ur(i),await cr(n,i)}}));for(let o of c)if(o.status==="rejected")throw o.reason}catch(t){this.logger(g.error)?.(t)}}async executablePath(e,r=!0){return await this.resolveExecutablePath(void 0,r)}defaultArgs(e={}){let{devtools:r=!1,headless:t=!r,args:s=[],userDataDir:c=null}=e,o=[];switch(fr.platform()){case"darwin":o.push("--foreground");break;case"win32":o.push("--wait-for-browser");break}return c&&(o.push("--profile"),o.push(c)),t&&o.push("--headless"),r&&o.push("--devtools"),s.every(n=>n.startsWith("-"))&&o.push("about:blank"),o.push(...s),o}};var z=class extends Le{#e;#r;configuration;constructor(e){let{configuration:r,...t}=e;super(t),r?this.configuration=r:this.configuration=()=>Promise.resolve({}),this.connect=this.connect.bind(this),this.launch=this.launch.bind(this),this.executablePath=this.executablePath.bind(this),this.defaultArgs=this.defaultArgs.bind(this),this.trimCache=this.trimCache.bind(this)}connect(e){return e.logger??=I,super.connect(e)}async launch(e={}){e.logger??=I;let{browser:r=await this.defaultBrowser()}=e;if(this.#r=r,!["chrome","firefox"].includes(r))throw new Error(`Unknown product: ${r}`);return this.#e=this.#t(r,e.logger),await this.#e.launch(e)}#t(e,r){if(this.#e&&this.#e.browser===e)return this.#e;switch(e){case"chrome":return new X(this,r);case"firefox":return new H(this,r);default:throw new Error(`Unknown product: ${e}`)}}async executablePath(e){return e===void 0?await this.#t(await this.lastLaunchedBrowser(),I).executablePath(void 0,!1):typeof e=="string"?await this.#t("chrome",I).executablePath(e,!1):await this.#t(e.browser??await this.lastLaunchedBrowser(),e.logger??I).resolveExecutablePath(e.headless,!1)}async browserVersion(){let e=await this.configuration(),r=await this.lastLaunchedBrowser();return e?.[r]?.version??q[r]}async defaultDownloadPath(){return(await this.configuration()).cacheDirectory}async lastLaunchedBrowser(){return this.#r??await this.defaultBrowser()}async defaultBrowser(){return(await this.configuration()).defaultBrowser??"chrome"}async defaultArgs(e={}){return this.#t(e.browser??await this.lastLaunchedBrowser(),e.logger??I).defaultArgs(e)}async trimCache(){let e=ve();if(!e)throw new Error("The current platform is not supported.");let r=await this.configuration(),t=r.cacheDirectory,s=await Re({cacheDir:t}),c=[{product:"chrome",browser:x.CHROME,currentBuildId:""},{product:"firefox",browser:x.FIREFOX,currentBuildId:""}];await Promise.all(c.map(async i=>{let u=r?.[i.product]?.version??q[i.product];i.currentBuildId=await De(i.browser,e,u)}));let o=new Set(c.map(i=>`${i.browser}_${i.currentBuildId}`)),n=new Set(c.map(i=>i.browser));for(let i of s)n.has(i.browser)&&(o.has(`${i.browser}_${i.buildId}`)||await Ie({browser:i.browser,platform:e,cacheDir:t,buildId:i.buildId}))}setFollowSymlinks(e){P.value.followSymlinks=e}};import{spawn as hr,spawnSync as mr}from"node:child_process";import wr from"node:os";import{PassThrough as gr}from"node:stream";var pr=function(a,e,r){for(var t=arguments.length>2,s=0;s<e.length;s++)r=t?e[s].call(a,r):e[s].call(a);return t?r:void 0},Ne=function(a,e,r,t,s,c){function o(D){if(D!==void 0&&typeof D!="function")throw new TypeError("Function expected");return D}for(var n=t.kind,i=n==="getter"?"get":n==="setter"?"set":"value",u=!e&&a?t.static?a:a.prototype:null,d=e||(u?Object.getOwnPropertyDescriptor(u,t.name):{}),f,h=!1,l=r.length-1;l>=0;l--){var b={};for(var E in t)b[E]=E==="access"?{}:t[E];for(var E in t.access)b.access[E]=t.access[E];b.addInitializer=function(D){if(h)throw new TypeError("Cannot add initializers after decoration has completed");c.push(o(D||null))};var y=(0,r[l])(n==="accessor"?{get:d.get,set:d.set}:d[i],b);if(n==="accessor"){if(y===void 0)continue;if(y===null||typeof y!="object")throw new TypeError("Object expected");(f=o(y.get))&&(d.get=f),(f=o(y.set))&&(d.set=f),(f=o(y.init))&&s.unshift(f)}else(f=o(y))&&(n==="field"?s.unshift(f):d[i]=f)}u&&Object.defineProperty(u,t.name,d),h=!0},dr=function(a,e,r){return typeof e=="symbol"&&(e=e.description?"[".concat(e.description,"]"):""),Object.defineProperty(a,"name",{configurable:!0,value:r?"".concat(r," ",e):e})},br=30,Me=30;function Er(a,e,r,t){let s=Math.round((r-a)*t),c=Math.round((e-a)*t);return Math.max(0,s-c)}var Ge=(()=>{let a=gr,e=[],r,t,s;return class extends a{static{let o=typeof Symbol=="function"&&Symbol.metadata?Object.create(a[Symbol.metadata]??null):void 0;Ne(this,t={value:dr(async function(n){let i=await new Promise(u=>{this.#r.stdin.write(n,u)});i&&console.log(`ffmpeg failed to write: ${i.message}.`)},"#writeFrame")},r,{kind:"method",name:"#writeFrame",static:!1,private:!0,access:{has:n=>#a in n,get:n=>n.#a},metadata:o},null,e),Ne(this,null,s,{kind:"method",name:"stop",static:!1,private:!1,access:{has:n=>"stop"in n,get:n=>n.stop},metadata:o},null,e),o&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:o})}#e=pr(this,e);#r;#t=new AbortController;#i;#s;#o;constructor(o,n,i,{ffmpegPath:u,speed:d,scale:f,crop:h,format:l,fps:b,loop:E,delay:y,quality:D,colors:U}={},C){super({allowHalfOpen:!1}),this.#o=C,u??="ffmpeg",l??="webm",b??=Me,E||=-1,y??=-1,D??=br,U??=256,this.#s=b;let{error:A}=mr(u);if(A)throw A;let B=[`crop='min(${n},iw):min(${i},ih):0:0'`,`pad=${n}:${i}:0:0`];d&&B.push(`setpts=${1/d}*PTS`),h&&B.push(`crop=${h.width}:${h.height}:${h.x}:${h.y}`),f&&B.push(`scale=iw*${f}:-1:flags=lanczos`);let v=this.#n(l,b,E,y,D,U),m=v.indexOf("-vf");m!==-1&&B.push(v.splice(m,2).at(-1)??""),this.#r=hr(u,[["-loglevel","error"],["-avioflags","direct"],["-fpsprobesize","0","-probesize","32","-analyzeduration","0","-fflags","nobuffer"],["-framerate",`${b}`,"-f","image2pipe","-vcodec","png","-i","pipe:0"],["-an"],["-threads","1"],["-b:v","0"],v,["-vf",B.join()],"pipe:1"].flat(),{stdio:["pipe","pipe","pipe"]}),this.#r.stdout.pipe(this),this.#r.stderr.on("data",w=>{this.#o?.(g.ffmpeg)?.(w.toString("utf8"))}),this.#e=o;let{client:T}=this.#e.mainFrame();T.once(Ee.Disconnected,()=>{this.stop().catch(w=>{this.#o?.(g.error)?.(w)})});let N;this.#i=oe(be(T,"Page.screencastFrame").pipe(he(w=>{T.send("Page.screencastFrameAck",{sessionId:w.sessionId})}),ue(w=>w.metadata.timestamp!==void 0),W(w=>({buffer:Buffer.from(w.data,"base64"),timestamp:w.metadata.timestamp})),fe(2,1),pe(([{timestamp:w,buffer:O},{timestamp:S}])=>(N??=w,k(Array(Er(N,w,S,b)).fill(O)))),W(w=>(this.#a(w),[w,performance.now()])),de(ne(this.#t.signal,"abort"))),{defaultValue:[Buffer.from([]),performance.now()]})}#n(o,n,i,u,d,f){let h=[["-vcodec","vp9"],["-crf",`${d}`],["-deadline","realtime","-cpu-used",`${Math.min(wr.cpus().length/2,8)}`]];switch(o){case"webm":return[...h,["-f","webm"]].flat();case"gif":return n=Me===n?20:"source_fps",i===1/0&&(i=0),u!==-1&&(u/=10),[["-vf",`fps=${n},split[s0][s1];[s0]palettegen=stats_mode=diff:max_colors=${f}[p];[s1][p]paletteuse=dither=bayer`],["-loop",`${i}`],["-final_delay",`${u}`],["-f","gif"]].flat();case"mp4":return[...h,["-movflags","hybrid_fragmented"],["-f","mp4"]].flat()}}get#a(){return t.value}async stop(){if(this.#t.signal.aborted)return;await this.#e._stopScreencast().catch(i=>{this.#o?.(g.error)?.(i)}),this.#t.abort();let[o,n]=await this.#i;await Promise.all(Array(Math.max(1,Math.round(this.#s*(performance.now()-n)/1e3))).fill(o).map(this.#a.bind(this))),this.#r.stdin.end(),await new Promise(i=>{this.#r.once("close",i)})}async[(r=[J()],s=[J()],Y)](){await this.stop(),await super[Y]()}}})();P.value.ScreenRecorder=Ge;var Ve=new z({isPuppeteerCore:!0}),{connect:sa,defaultArgs:ia,executablePath:oa,launch:aa}=Ve,na=Ve;export{wt as ARIAQueryHandler,ps as Accessibility,vr as AsyncDisposableStack,Pr as AsyncDisposableStackPolyfill,ct as AsyncIterableUtil,ds as Binding,rt as Browser,it as BrowserContext,R as BrowserLauncher,Ii as BrowserWebSocketTransport,ot as CDPSession,Ee as CDPSessionEvent,$s as CDP_BINDING_PREFIX,vs as CSSCoverage,Es as Callback,bs as CallbackRegistry,hs as CdpBluetoothEmulation,ye as CdpBrowser,xi as CdpBrowserContext,xs as CdpCDPSession,Fs as CdpDeviceRequestPrompt,Ts as CdpDeviceRequestPromptManager,Os as CdpDialog,Vs as CdpElementHandle,Qs as CdpFrame,ei as CdpHTTPRequest,si as CdpHTTPResponse,Ms as CdpJSHandle,ci as CdpKeyboard,ui as CdpMouse,bi as CdpPage,Ss as CdpPreloadScript,pi as CdpScreenRecording,Di as CdpTarget,li as CdpTouchHandle,fi as CdpTouchscreen,Ys as CdpWebWorker,X as ChromeLauncher,Q as Connection,Ir as ConnectionClosedError,ms as ConsoleMessage,Ds as Coverage,Et as CustomQueryHandlerRegistry,g as DEBUG_PREFIXES,Vt as DEFAULT_INTERCEPT_RESOLUTION_PRIORITY,ge as DEFAULT_VIEWPORT,tt as Deferred,It as DelegatedLocator,vi as DevToolsTarget,at as DeviceRequestPrompt,nt as Dialog,me as DisposableStack,Dr as DisposableStackPolyfill,$t as ElementHandle,_s as EmulatedState,Bs as EmulationManager,K as EventEmitter,js as ExecutionContext,Ut as Extension,Fi as ExtensionTransport,ws as FileChooser,Rt as FilteredLocator,H as FirefoxLauncher,Gt as Frame,Nt as FrameEvent,ai as FrameManager,Xs as FrameManagerEvent,qs as FrameTree,Tt as FunctionLocator,jt as HTTPRequest,Kt as HTTPResponse,yi as InitializationStatus,Xt as InterceptResolutionAction,Ks as IsolatedWorld,Ps as JSCoverage,Bt as JSHandle,Jt as Keyboard,Ri as KnownDevices,ht as LazyArg,Js as LifecycleWatcher,Ft as Locator,St as LocatorEvent,Hs as MAIN_WORLD,Ct as MappedLocator,Zt as Mouse,Qt as MouseButton,st as Mutex,Kr as NETWORK_IDLE_TIME,ii as NetworkEventManager,oi as NetworkManager,gs as NetworkManagerEvent,At as NodeLocator,_i as OtherTarget,Dt as PQueryHandler,q as PUPPETEER_REVISIONS,zs as PUPPETEER_WORLD,ts as Page,Pi as PageTarget,yt as PierceQueryHandler,V as PipeTransport,Ti as PredefinedNetworkConditions,Sr as ProtocolError,Le as Puppeteer,_r as PuppeteerError,z as PuppeteerNode,Cr as PuppeteerURL,mt as QueryHandler,kt as RETRY_DELAY,Lt as RaceLocator,as as Realm,zr as SOURCE_URL_REGEX,zt as STATUS_TEXTS,Ge as ScreenRecorder,ns as ScreenRecording,gt as ScriptInjector,ri as SecurityDetails,Or as SuppressedError,us as Target,Tr as TargetCloseError,Bi as TargetManager,cs as TargetType,os as TaskManager,Ci as TaskQueue,vt as TextQueryHandler,we as TimeoutError,es as TimeoutSettings,Br as TouchError,qt as Touchscreen,di as Tracing,Hr as UTILITY_WORLD_NAME,Fr as UnsupportedOperation,et as WEB_PERMISSION_TO_PROTOCOL_PERMISSION,is as WaitTask,wi as WebMCP,hi as WebMCPTool,mi as WebMCPToolCall,fs as WebWorker,ls as WebWorkerEvent,Oi as WorkerTarget,Ot as XPathQueryHandler,Si as _connectToCdpBrowser,ni as _keyDefinitions,Ws as addPageBinding,_ as assert,Y as asyncDisposeSymbol,Wt as bindIsolatedHandle,sa as connect,Ns as convertConsoleMessageLevel,Ei as convertCookiesPartitionKeyFromPuppeteerToCdp,gi as convertSameSiteFromPuppeteerToCdp,Er as countFrames,Cs as createClientError,Is as createConsoleMessage,Rs as createEvaluationError,xe as createIncrementalIdGenerator,pt as createProtocolErrorMessage,xt as customQueryHandlers,I as debug,na as default,ia as defaultArgs,yr as disposeSymbol,Mr as evaluationString,oa as executablePath,qr as filterAsync,Zr as fromAbortSignal,be as fromEmitterEvent,rr as getBrowserTypeDisplayName,We as getFeatures,_t as getQueryHandlerAndSelector,Gr as getReadableAsTypedArray,Vr as getReadableFromProtocolStream,Lr as getSourcePuppeteerURLIfAvailable,Yr as getSourceUrlComment,Yt as handleError,Ht as headersArray,Nr as isDate,lt as isErrnoException,ut as isErrorLike,Wr as isNumber,$r as isPlainObject,Ur as isRegExp,kr as isString,ys as isTargetClosedError,aa as launch,ti as normalizeHeaderValue,Us as pageBindingInitString,Rr as paperFormats,Jr as parsePDFOptions,Pt as parsePSelectors,Zs as referrerPolicyToProtocol,tr as registerProcessExitCleanup,Gs as releaseObject,$e as removeMatchingFlags,ft as rewriteError,bt as scriptInjector,rs as setDefaultScreenshotOptions,ss as supportedMetrics,Mt as throwIfDetached,Xr as timeout,dt as transposeIterableHandle,Qr as unitToPixels,jr as validateDialogType,As as valueFromJSHandle,ks as valueFromPrimitiveRemoteObject,Ls as valueFromRemoteObjectReference,Ar as withSourcePuppeteerURLIfNone};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{a}from"./chunk-Y34NR5JL.mjs";import"./chunk-W7XHE4CT.mjs";import"./chunk-5L7RYZCL.mjs";export{a as BrowserWebSocketTransport};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{b as n,e as c}from"./chunk-A55HN5OK.mjs";c();var f=e=>n(e.replace(/^\uFEFF/," "),{sourceCodeLocationInfo:!0}),i=(e,o)=>e.slice(o.sourceCodeLocation.startOffset,o.sourceCodeLocation.endOffset);function a(e,o){let r=1;for(let t=e.indexOf(`
|
|
3
|
+
`);t!==-1&&t<o;t=e.indexOf(`
|
|
4
|
+
`,t+1))r++;return r}export{f as a,i as b,a as c};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{d as a,e as b,f as c,g as d}from"./chunk-TYK6VNAB.mjs";import"./chunk-L3QKH4OK.mjs";import"./chunk-W4VKN3GF.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";export{a as commitEdits,c as revertedParts,d as revertedTexts,b as revertedUnits};
|