microui-wc 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +33 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +28 -0
- package/.github/workflows/ci.yml +42 -0
- package/.github/workflows/deploy-pages.yml +112 -0
- package/AGENTS.md +2366 -0
- package/CHANGELOG.md +47 -0
- package/CODE_OF_CONDUCT.md +59 -0
- package/CONTRIBUTING.md +156 -0
- package/LICENSE +190 -0
- package/README.md +254 -0
- package/SECURITY.md +58 -0
- package/app/.generated/routes/alerts.js +8 -0
- package/app/.generated/routes/avatars.js +8 -0
- package/app/.generated/routes/badges.js +8 -0
- package/app/.generated/routes/buttons.js +10 -0
- package/app/.generated/routes/cards.js +10 -0
- package/app/.generated/routes/checkboxes.js +9 -0
- package/app/.generated/routes/chips.js +8 -0
- package/app/.generated/routes/dropdowns.js +9 -0
- package/app/.generated/routes/home.js +7 -0
- package/app/.generated/routes/icons.js +9 -0
- package/app/.generated/routes/inputs.js +10 -0
- package/app/.generated/routes/installation.js +7 -0
- package/app/.generated/routes/layout.js +9 -0
- package/app/.generated/routes/modals.js +9 -0
- package/app/.generated/routes/navbar.js +7 -0
- package/app/.generated/routes/progress.js +9 -0
- package/app/.generated/routes/radios.js +9 -0
- package/app/.generated/routes/switches.js +9 -0
- package/app/.generated/routes/tabs.js +8 -0
- package/app/.generated/routes/toasts.js +9 -0
- package/app/index.html +67 -0
- package/app/pages/alerts.html +23 -0
- package/app/pages/avatars.html +22 -0
- package/app/pages/badges.html +22 -0
- package/app/pages/buttons.html +71 -0
- package/app/pages/cards.html +54 -0
- package/app/pages/checkboxes.html +39 -0
- package/app/pages/chips.html +23 -0
- package/app/pages/dropdowns.html +41 -0
- package/app/pages/home.html +59 -0
- package/app/pages/icons.html +29 -0
- package/app/pages/inputs.html +66 -0
- package/app/pages/installation.html +34 -0
- package/app/pages/layout.html +30 -0
- package/app/pages/modals.html +21 -0
- package/app/pages/navbar.html +22 -0
- package/app/pages/progress.html +35 -0
- package/app/pages/radios.html +40 -0
- package/app/pages/switches.html +39 -0
- package/app/pages/tabs.html +30 -0
- package/app/pages/toasts.html +22 -0
- package/app-dist/index.html +67 -0
- package/app-dist/pages/alerts.html +23 -0
- package/app-dist/pages/avatars.html +22 -0
- package/app-dist/pages/badges.html +22 -0
- package/app-dist/pages/buttons.html +71 -0
- package/app-dist/pages/cards.html +54 -0
- package/app-dist/pages/checkboxes.html +39 -0
- package/app-dist/pages/chips.html +23 -0
- package/app-dist/pages/dropdowns.html +41 -0
- package/app-dist/pages/home.html +59 -0
- package/app-dist/pages/icons.html +29 -0
- package/app-dist/pages/inputs.html +66 -0
- package/app-dist/pages/installation.html +34 -0
- package/app-dist/pages/layout.html +30 -0
- package/app-dist/pages/modals.html +21 -0
- package/app-dist/pages/navbar.html +22 -0
- package/app-dist/pages/progress.html +35 -0
- package/app-dist/pages/radios.html +40 -0
- package/app-dist/pages/switches.html +39 -0
- package/app-dist/pages/tabs.html +30 -0
- package/app-dist/pages/toasts.html +22 -0
- package/app-dist/pages.json +217 -0
- package/app-dist/routes/alerts.js +5 -0
- package/app-dist/routes/avatars.js +1 -0
- package/app-dist/routes/badges.js +1 -0
- package/app-dist/routes/buttons.js +1 -0
- package/app-dist/routes/cards.js +1 -0
- package/app-dist/routes/checkboxes.js +9 -0
- package/app-dist/routes/chips.js +4 -0
- package/app-dist/routes/chunk-019e5e2f.js +5 -0
- package/app-dist/routes/chunk-0m4j19yd.js +2 -0
- package/app-dist/routes/chunk-0tmmp5q0.js +1 -0
- package/app-dist/routes/chunk-10xn709r.js +1 -0
- package/app-dist/routes/chunk-15m2qcda.js +2 -0
- package/app-dist/routes/chunk-1bh8g23n.js +1 -0
- package/app-dist/routes/chunk-1vg0v937.js +1 -0
- package/app-dist/routes/chunk-1zvcgy3j.js +1 -0
- package/app-dist/routes/chunk-2afb0861.js +1 -0
- package/app-dist/routes/chunk-2c6ttpzt.js +5 -0
- package/app-dist/routes/chunk-3dy30fhs.js +1 -0
- package/app-dist/routes/chunk-426dnces.js +13 -0
- package/app-dist/routes/chunk-44kgxery.js +1 -0
- package/app-dist/routes/chunk-47fdnejd.js +33 -0
- package/app-dist/routes/chunk-49a6t2vq.js +1 -0
- package/app-dist/routes/chunk-4fe1rm5b.js +1 -0
- package/app-dist/routes/chunk-4ggmvkta.js +33 -0
- package/app-dist/routes/chunk-4vkz81q7.js +33 -0
- package/app-dist/routes/chunk-4w4tmj8f.js +31 -0
- package/app-dist/routes/chunk-532s62kr.js +31 -0
- package/app-dist/routes/chunk-5hm3bssy.js +33 -0
- package/app-dist/routes/chunk-5vrh24hc.js +1 -0
- package/app-dist/routes/chunk-61pcg25a.js +1 -0
- package/app-dist/routes/chunk-6nfhygvf.js +1 -0
- package/app-dist/routes/chunk-700e7je6.js +33 -0
- package/app-dist/routes/chunk-7fsn17kg.js +1 -0
- package/app-dist/routes/chunk-7k789b32.js +1 -0
- package/app-dist/routes/chunk-7r46q0ys.js +36 -0
- package/app-dist/routes/chunk-86fmc1fr.js +5 -0
- package/app-dist/routes/chunk-8qth37vw.js +1 -0
- package/app-dist/routes/chunk-924wv8n0.js +1 -0
- package/app-dist/routes/chunk-9mbhgxk9.js +1 -0
- package/app-dist/routes/chunk-a216hyd9.js +1 -0
- package/app-dist/routes/chunk-akzxykh9.js +33 -0
- package/app-dist/routes/chunk-b3dcvy8c.js +1 -0
- package/app-dist/routes/chunk-b74zahz5.js +31 -0
- package/app-dist/routes/chunk-bftj53p2.js +5 -0
- package/app-dist/routes/chunk-c01hnz3e.js +1 -0
- package/app-dist/routes/chunk-d8pvv5km.js +1 -0
- package/app-dist/routes/chunk-dev0aezr.js +2 -0
- package/app-dist/routes/chunk-dh6vnv0e.js +1 -0
- package/app-dist/routes/chunk-dn2cbpva.js +36 -0
- package/app-dist/routes/chunk-dvn0my90.js +1 -0
- package/app-dist/routes/chunk-dvq8mnve.js +36 -0
- package/app-dist/routes/chunk-e8c2gc4d.js +5 -0
- package/app-dist/routes/chunk-ejf9ak2x.js +1 -0
- package/app-dist/routes/chunk-f083m55s.js +1 -0
- package/app-dist/routes/chunk-fnrj28s1.js +31 -0
- package/app-dist/routes/chunk-fvg3yjdp.js +31 -0
- package/app-dist/routes/chunk-g7k381n1.js +1 -0
- package/app-dist/routes/chunk-h01kq2ae.js +13 -0
- package/app-dist/routes/chunk-h4dk761v.js +5 -0
- package/app-dist/routes/chunk-hmx91z2x.js +5 -0
- package/app-dist/routes/chunk-hxbg4m42.js +36 -0
- package/app-dist/routes/chunk-jbjnfp2b.js +2 -0
- package/app-dist/routes/chunk-jxtz5vv6.js +36 -0
- package/app-dist/routes/chunk-jxzcs0ey.js +36 -0
- package/app-dist/routes/chunk-kt7wwhcx.js +1 -0
- package/app-dist/routes/chunk-kzptszyc.js +33 -0
- package/app-dist/routes/chunk-mhgca4w4.js +2 -0
- package/app-dist/routes/chunk-mhswxa20.js +1 -0
- package/app-dist/routes/chunk-n8zfeex6.js +1 -0
- package/app-dist/routes/chunk-pee47b2r.js +1 -0
- package/app-dist/routes/chunk-pesmw829.js +1 -0
- package/app-dist/routes/chunk-pgc4c6f3.js +36 -0
- package/app-dist/routes/chunk-q8egegm1.js +1 -0
- package/app-dist/routes/chunk-q9mn2qyq.js +36 -0
- package/app-dist/routes/chunk-qh0rtaf3.js +5 -0
- package/app-dist/routes/chunk-qqhmk6ye.js +2 -0
- package/app-dist/routes/chunk-qrxygmf7.js +33 -0
- package/app-dist/routes/chunk-r46yzksx.js +36 -0
- package/app-dist/routes/chunk-rgpbw2w0.js +5 -0
- package/app-dist/routes/chunk-rnpzv3d8.js +2 -0
- package/app-dist/routes/chunk-s5v8cv05.js +2 -0
- package/app-dist/routes/chunk-sbwn5bpc.js +1 -0
- package/app-dist/routes/chunk-sqbg8jbt.js +33 -0
- package/app-dist/routes/chunk-sv8dqnf7.js +1 -0
- package/app-dist/routes/chunk-t67sw3za.js +1 -0
- package/app-dist/routes/chunk-tjdpqwdf.js +31 -0
- package/app-dist/routes/chunk-tq2mfghg.js +1 -0
- package/app-dist/routes/chunk-ttn10vt6.js +1 -0
- package/app-dist/routes/chunk-v2hzpjxr.js +1 -0
- package/app-dist/routes/chunk-wfjjkw9y.js +1 -0
- package/app-dist/routes/chunk-wt8cxzmf.js +31 -0
- package/app-dist/routes/chunk-x45d372k.js +5 -0
- package/app-dist/routes/chunk-y3wsazkt.js +1 -0
- package/app-dist/routes/chunk-y7pmgc7t.js +33 -0
- package/app-dist/routes/chunk-zefdt2q3.js +31 -0
- package/app-dist/routes/dropdowns.js +6 -0
- package/app-dist/routes/home.js +1 -0
- package/app-dist/routes/icons.js +1 -0
- package/app-dist/routes/inputs.js +12 -0
- package/app-dist/routes/installation.js +1 -0
- package/app-dist/routes/layout.js +1 -0
- package/app-dist/routes/modals.js +7 -0
- package/app-dist/routes/navbar.js +1 -0
- package/app-dist/routes/progress.js +1 -0
- package/app-dist/routes/radios.js +6 -0
- package/app-dist/routes/switches.js +6 -0
- package/app-dist/routes/tabs.js +1 -0
- package/app-dist/routes/toasts.js +16 -0
- package/assets/fonts/material-symbols-mini.woff2 +0 -0
- package/assets/fonts/material-symbols.woff2 +0 -0
- package/assets/fonts/roboto-400.woff2 +0 -0
- package/assets/fonts/roboto-500.woff2 +0 -0
- package/assets/fonts/roboto-700.woff2 +0 -0
- package/assets/logo-banner-400.jpg +0 -0
- package/assets/logo-banner-400.webp +0 -0
- package/assets/logo-banner-800.webp +0 -0
- package/assets/logo-banner.jpg +0 -0
- package/assets/logo-icon-64.jpg +0 -0
- package/assets/logo-icon-64.webp +0 -0
- package/assets/logo-icon.jpg +0 -0
- package/assets/logo-square.jpg +0 -0
- package/bun.lock +312 -0
- package/bunfig.toml +4 -0
- package/custom-elements.json +1916 -0
- package/demo/api/sample-data.json +38 -0
- package/demo/content/alerts.html +115 -0
- package/demo/content/avatars.html +70 -0
- package/demo/content/badges.html +65 -0
- package/demo/content/buttons.html +188 -0
- package/demo/content/callouts.html +91 -0
- package/demo/content/cards.html +121 -0
- package/demo/content/checkboxes.html +178 -0
- package/demo/content/chips.html +67 -0
- package/demo/content/codeblocks.html +101 -0
- package/demo/content/confirms.html +115 -0
- package/demo/content/datatables.html +149 -0
- package/demo/content/dividers.html +119 -0
- package/demo/content/dropdowns.html +89 -0
- package/demo/content/enterprise.html +252 -0
- package/demo/content/home.html +149 -0
- package/demo/content/icons.html +89 -0
- package/demo/content/inputs.html +135 -0
- package/demo/content/installation.html +16 -0
- package/demo/content/layout.html +136 -0
- package/demo/content/modals.html +141 -0
- package/demo/content/navbar.html +70 -0
- package/demo/content/progress.html +119 -0
- package/demo/content/radios.html +88 -0
- package/demo/content/skeletons.html +109 -0
- package/demo/content/spinners.html +96 -0
- package/demo/content/switches.html +84 -0
- package/demo/content/tables.html +124 -0
- package/demo/content/tabs.html +85 -0
- package/demo/content/toasts.html +116 -0
- package/demo/content/tooltips.html +107 -0
- package/demo/content/virtual-lists.html +233 -0
- package/demo/favicon.ico +0 -0
- package/demo/favicon.png +0 -0
- package/demo/full.html +52 -0
- package/demo/iife.html +46 -0
- package/demo/manifest.json +34 -0
- package/demo/pages/datatable-demo.html +237 -0
- package/demo/pages/prompt-ui-demo.html +218 -0
- package/demo/pages/responsive-demo.html +122 -0
- package/demo/pages/schema-form-demo.html +270 -0
- package/demo/robots.txt +6 -0
- package/demo/shell.html +712 -0
- package/demo/sw.js +387 -0
- package/dist/AGENTS.md +2366 -0
- package/dist/README.md +254 -0
- package/dist/chunks/advanced.js +174 -0
- package/dist/chunks/chunk-1nhr1wrq.js +14 -0
- package/dist/chunks/chunk-hssyjbr0.js +2 -0
- package/dist/chunks/chunk-k8etzx0z.js +2 -0
- package/dist/chunks/chunk-rr1et8fg.js +2 -0
- package/dist/chunks/chunk-sjcx4fd5.js +6 -0
- package/dist/chunks/chunk-v1c777xh.js +5 -0
- package/dist/chunks/chunk-w5k5vwjd.js +13 -0
- package/dist/chunks/core.js +10 -0
- package/dist/chunks/display.js +17 -0
- package/dist/chunks/feedback.js +15 -0
- package/dist/chunks/forms.js +48 -0
- package/dist/chunks/layout.js +9 -0
- package/dist/components/chunk-4tezav8r.js +2 -0
- package/dist/components/chunk-fqyb2pms.js +2 -0
- package/dist/components/chunk-h7cdbhxw.js +13 -0
- package/dist/components/chunk-mzd8jwrs.js +2 -0
- package/dist/components/chunk-qwmxyn8e.js +2 -0
- package/dist/components/chunk-redtk47a.js +14 -0
- package/dist/components/mu-alert.js +5 -0
- package/dist/components/mu-api-table.js +33 -0
- package/dist/components/mu-avatar.js +1 -0
- package/dist/components/mu-badge.js +1 -0
- package/dist/components/mu-bottom-nav.js +1 -0
- package/dist/components/mu-button.js +1 -0
- package/dist/components/mu-callout.js +1 -0
- package/dist/components/mu-card.js +1 -0
- package/dist/components/mu-checkbox.js +9 -0
- package/dist/components/mu-chip.js +4 -0
- package/dist/components/mu-code.js +48 -0
- package/dist/components/mu-confirm.js +10 -0
- package/dist/components/mu-container.js +1 -0
- package/dist/components/mu-datatable.js +96 -0
- package/dist/components/mu-divider.js +1 -0
- package/dist/components/mu-doc-page.js +26 -0
- package/dist/components/mu-drawer-item.js +9 -0
- package/dist/components/mu-drawer.js +1 -0
- package/dist/components/mu-dropdown.js +6 -0
- package/dist/components/mu-error-boundary.js +10 -0
- package/dist/components/mu-example.js +38 -0
- package/dist/components/mu-fetch.js +1 -0
- package/dist/components/mu-form.js +1 -0
- package/dist/components/mu-grid.js +1 -0
- package/dist/components/mu-icon.js +5 -0
- package/dist/components/mu-input.js +12 -0
- package/dist/components/mu-layout.js +1 -0
- package/dist/components/mu-lazy.js +1 -0
- package/dist/components/mu-modal.js +7 -0
- package/dist/components/mu-navbar.js +1 -0
- package/dist/components/mu-page.js +1 -0
- package/dist/components/mu-progress.js +1 -0
- package/dist/components/mu-prompt-ui.js +20 -0
- package/dist/components/mu-radio.js +6 -0
- package/dist/components/mu-repeat.js +1 -0
- package/dist/components/mu-router.js +6 -0
- package/dist/components/mu-schema-form.js +76 -0
- package/dist/components/mu-sidebar.js +1 -0
- package/dist/components/mu-skeleton.js +13 -0
- package/dist/components/mu-spinner.js +1 -0
- package/dist/components/mu-stack.js +1 -0
- package/dist/components/mu-switch.js +6 -0
- package/dist/components/mu-table.js +1 -0
- package/dist/components/mu-tabs.js +1 -0
- package/dist/components/mu-textarea.js +11 -0
- package/dist/components/mu-theme-toggle.js +5 -0
- package/dist/components/mu-toast.js +4 -0
- package/dist/components/mu-tooltip.js +10 -0
- package/dist/components/mu-virtual-list.js +33 -0
- package/dist/components.css +1 -0
- package/dist/microui.css +1 -0
- package/dist/microui.d.ts +234 -0
- package/dist/microui.esm.js +549 -0
- package/dist/microui.esm.js.map +79 -0
- package/dist/microui.min.js +549 -0
- package/dist/microui.min.js.map +79 -0
- package/dist/routes/alerts.js +1 -0
- package/dist/routes/avatars.js +1 -0
- package/dist/routes/badges.js +1 -0
- package/dist/routes/buttons.js +1 -0
- package/dist/routes/callouts.js +1 -0
- package/dist/routes/cards.js +1 -0
- package/dist/routes/checkboxes.js +9 -0
- package/dist/routes/chips.js +4 -0
- package/dist/routes/chunk-19wgcncm.js +2 -0
- package/dist/routes/chunk-1khyr3v1.js +33 -0
- package/dist/routes/chunk-4rhxe97g.js +1 -0
- package/dist/routes/chunk-5qah04bh.js +2 -0
- package/dist/routes/chunk-7gfxy70n.js +5 -0
- package/dist/routes/chunk-e86zbeta.js +1 -0
- package/dist/routes/chunk-fagt36h6.js +2 -0
- package/dist/routes/chunk-fed7zr7m.js +1 -0
- package/dist/routes/chunk-hwj7pfwp.js +1 -0
- package/dist/routes/chunk-mhvcs2f8.js +5 -0
- package/dist/routes/chunk-nv3bddmj.js +13 -0
- package/dist/routes/chunk-q3f2aeqe.js +7 -0
- package/dist/routes/chunk-qxxa8trk.js +1 -0
- package/dist/routes/chunk-rw15y9zh.js +1 -0
- package/dist/routes/chunk-sfb7x11v.js +5 -0
- package/dist/routes/chunk-swyhghrm.js +48 -0
- package/dist/routes/chunk-sxddjs2d.js +2 -0
- package/dist/routes/chunk-vby0zg5w.js +17 -0
- package/dist/routes/chunk-w6zqjqqs.js +9 -0
- package/dist/routes/chunk-z960rexd.js +38 -0
- package/dist/routes/codeblocks.js +1 -0
- package/dist/routes/confirms.js +10 -0
- package/dist/routes/datatables.js +96 -0
- package/dist/routes/dividers.js +1 -0
- package/dist/routes/dropdowns.js +6 -0
- package/dist/routes/enterprise.js +15 -0
- package/dist/routes/home.js +1 -0
- package/dist/routes/icons.js +1 -0
- package/dist/routes/inputs.js +22 -0
- package/dist/routes/installation.js +1 -0
- package/dist/routes/layout.js +1 -0
- package/dist/routes/modals.js +1 -0
- package/dist/routes/navbar.js +1 -0
- package/dist/routes/page-components.json +316 -0
- package/dist/routes/progress.js +1 -0
- package/dist/routes/radios.js +6 -0
- package/dist/routes/route-deps.json +156 -0
- package/dist/routes/shell-critical.js +1 -0
- package/dist/routes/shell-deferred.js +1 -0
- package/dist/routes/shell.js +20 -0
- package/dist/routes/skeletons.js +13 -0
- package/dist/routes/spinners.js +1 -0
- package/dist/routes/src/chunks/core.js +36 -0
- package/dist/routes/switches.js +6 -0
- package/dist/routes/tables.js +1 -0
- package/dist/routes/tabs.js +1 -0
- package/dist/routes/toasts.js +1 -0
- package/dist/routes/tooltips.js +10 -0
- package/dist/routes/virtual-lists.js +33 -0
- package/dist/styles/common.css +1 -0
- package/dist/styles/components/animations.css +1 -0
- package/dist/styles/components/avatar.css +1 -0
- package/dist/styles/components/badge.css +1 -0
- package/dist/styles/components/bottom-nav.css +1 -0
- package/dist/styles/components/button.css +1 -0
- package/dist/styles/components/card.css +1 -0
- package/dist/styles/components/checkbox.css +1 -0
- package/dist/styles/components/chip.css +1 -0
- package/dist/styles/components/datatable.css +1 -0
- package/dist/styles/components/divider.css +1 -0
- package/dist/styles/components/drawer-item.css +1 -0
- package/dist/styles/components/drawer.css +1 -0
- package/dist/styles/components/grid.css +1 -0
- package/dist/styles/components/icon.css +1 -0
- package/dist/styles/components/input.css +1 -0
- package/dist/styles/components/layout.css +1 -0
- package/dist/styles/components/navbar.css +1 -0
- package/dist/styles/components/overlays.css +1 -0
- package/dist/styles/components/progress.css +1 -0
- package/dist/styles/components/prompt-ui.css +1 -0
- package/dist/styles/components/radio.css +1 -0
- package/dist/styles/components/schema-form.css +1 -0
- package/dist/styles/components/switch.css +1 -0
- package/dist/styles/components/tabs.css +1 -0
- package/dist/styles/components/tooltip.css +1 -0
- package/dist/styles/components/virtual-list.css +1 -0
- package/dist/tokens.css +1 -0
- package/docs/api-reference.md +175 -0
- package/docs/component-schema.md +231 -0
- package/docs/components.md +269 -0
- package/docs/design-system.md +183 -0
- package/docs/getting-started.md +198 -0
- package/docs/message-protocol.md +262 -0
- package/docs/utility-classes.md +205 -0
- package/lighthouse-audit.mjs +113 -0
- package/package.json +45 -0
- package/scripts/analyze-components.js +105 -0
- package/scripts/build-app.js +193 -0
- package/scripts/build-framework.js +444 -0
- package/scripts/build-utils.js +101 -0
- package/scripts/test-isolated.js +151 -0
- package/server.js +256 -0
- package/src/chunks/advanced.js +27 -0
- package/src/chunks/core.js +61 -0
- package/src/chunks/display.js +25 -0
- package/src/chunks/feedback.js +15 -0
- package/src/chunks/forms.js +25 -0
- package/src/chunks/layout.js +27 -0
- package/src/components/mu-alert.js +96 -0
- package/src/components/mu-api-table.js +167 -0
- package/src/components/mu-avatar.js +94 -0
- package/src/components/mu-badge.js +32 -0
- package/src/components/mu-bottom-nav.js +115 -0
- package/src/components/mu-button.js +61 -0
- package/src/components/mu-callout.js +71 -0
- package/src/components/mu-card.js +36 -0
- package/src/components/mu-checkbox.js +186 -0
- package/src/components/mu-chip.js +125 -0
- package/src/components/mu-code.js +534 -0
- package/src/components/mu-confirm.js +268 -0
- package/src/components/mu-container.js +53 -0
- package/src/components/mu-datatable.js +517 -0
- package/src/components/mu-divider.js +40 -0
- package/src/components/mu-doc-page.js +100 -0
- package/src/components/mu-drawer-item.js +158 -0
- package/src/components/mu-drawer.js +305 -0
- package/src/components/mu-dropdown.js +239 -0
- package/src/components/mu-error-boundary.js +191 -0
- package/src/components/mu-example.js +335 -0
- package/src/components/mu-fetch.js +256 -0
- package/src/components/mu-form.js +133 -0
- package/src/components/mu-grid.js +63 -0
- package/src/components/mu-icon.js +211 -0
- package/src/components/mu-input.js +142 -0
- package/src/components/mu-layout.js +129 -0
- package/src/components/mu-lazy.js +94 -0
- package/src/components/mu-modal.js +160 -0
- package/src/components/mu-navbar.js +71 -0
- package/src/components/mu-page.js +77 -0
- package/src/components/mu-progress.js +54 -0
- package/src/components/mu-prompt-ui.js +382 -0
- package/src/components/mu-radio.js +200 -0
- package/src/components/mu-repeat.js +135 -0
- package/src/components/mu-router.js +169 -0
- package/src/components/mu-schema-form.js +441 -0
- package/src/components/mu-sidebar.js +81 -0
- package/src/components/mu-skeleton.js +69 -0
- package/src/components/mu-spinner.js +30 -0
- package/src/components/mu-stack.js +59 -0
- package/src/components/mu-switch.js +150 -0
- package/src/components/mu-table.js +80 -0
- package/src/components/mu-tabs.js +112 -0
- package/src/components/mu-textarea.js +96 -0
- package/src/components/mu-theme-toggle.js +52 -0
- package/src/components/mu-toast.js +151 -0
- package/src/components/mu-tooltip.js +182 -0
- package/src/components/mu-virtual-list.js +184 -0
- package/src/core/MuElement.js +562 -0
- package/src/core/agent-api.js +771 -0
- package/src/core/breakpoints.js +195 -0
- package/src/core/bus.js +378 -0
- package/src/core/component-schema.js +287 -0
- package/src/core/feature-registry.js +241 -0
- package/src/core/form-state.js +252 -0
- package/src/core/http.js +104 -0
- package/src/core/keyboard.js +105 -0
- package/src/core/layers.js +71 -0
- package/src/core/render.js +201 -0
- package/src/core/ripple.js +158 -0
- package/src/core/router.js +100 -0
- package/src/core/scheduler.js +109 -0
- package/src/core/signals.js +164 -0
- package/src/core/store.js +268 -0
- package/src/core/theme.js +68 -0
- package/src/core/transitions.js +72 -0
- package/src/core/utils.js +30 -0
- package/src/index.d.ts +234 -0
- package/src/index.js +308 -0
- package/src/styles/animations.css +252 -0
- package/src/styles/common.css +82 -0
- package/src/styles/components/animations.css +129 -0
- package/src/styles/components/avatar.css +83 -0
- package/src/styles/components/badge.css +80 -0
- package/src/styles/components/bottom-nav.css +37 -0
- package/src/styles/components/button.css +348 -0
- package/src/styles/components/card.css +138 -0
- package/src/styles/components/checkbox.css +201 -0
- package/src/styles/components/chip.css +93 -0
- package/src/styles/components/datatable.css +180 -0
- package/src/styles/components/divider.css +49 -0
- package/src/styles/components/drawer-item.css +123 -0
- package/src/styles/components/drawer.css +273 -0
- package/src/styles/components/grid.css +189 -0
- package/src/styles/components/icon.css +40 -0
- package/src/styles/components/input.css +203 -0
- package/src/styles/components/layout.css +121 -0
- package/src/styles/components/navbar.css +91 -0
- package/src/styles/components/overlays.css +329 -0
- package/src/styles/components/progress.css +79 -0
- package/src/styles/components/prompt-ui.css +286 -0
- package/src/styles/components/radio.css +17 -0
- package/src/styles/components/schema-form.css +85 -0
- package/src/styles/components/switch.css +69 -0
- package/src/styles/components/tabs.css +145 -0
- package/src/styles/components/tooltip.css +93 -0
- package/src/styles/components/virtual-list.css +36 -0
- package/src/styles/components.css +3677 -0
- package/src/styles/routes/home.css +97 -0
- package/src/styles/tokens.css +675 -0
- package/tests/agents/agent-integration.test.js +76 -0
- package/tests/benchmark.html +296 -0
- package/tests/build/scan-components.test.js +173 -0
- package/tests/components/all-components.test.js +245 -0
- package/tests/components/all-missing-components.test.js +574 -0
- package/tests/components/mu-alert.test.js +113 -0
- package/tests/components/mu-avatar.test.js +148 -0
- package/tests/components/mu-badge.test.js +92 -0
- package/tests/components/mu-button.test.js +112 -0
- package/tests/components/mu-card.test.js +89 -0
- package/tests/components/mu-checkbox.test.js +158 -0
- package/tests/components/mu-chip.test.js +118 -0
- package/tests/components/mu-container.test.js +120 -0
- package/tests/components/mu-divider.test.js +98 -0
- package/tests/components/mu-drawer-item.test.js +199 -0
- package/tests/components/mu-drawer.test.js +96 -0
- package/tests/components/mu-dropdown.test.js +125 -0
- package/tests/components/mu-form.test.js +138 -0
- package/tests/components/mu-grid.test.js +135 -0
- package/tests/components/mu-icon.test.js +110 -0
- package/tests/components/mu-input.test.js +131 -0
- package/tests/components/mu-lazy.test.js +103 -0
- package/tests/components/mu-modal.test.js +275 -0
- package/tests/components/mu-navbar.test.js +101 -0
- package/tests/components/mu-progress.test.js +115 -0
- package/tests/components/mu-radio.test.js +114 -0
- package/tests/components/mu-repeat.test.js +106 -0
- package/tests/components/mu-sidebar.test.js +126 -0
- package/tests/components/mu-skeleton.test.js +162 -0
- package/tests/components/mu-stack.test.js +143 -0
- package/tests/components/mu-switch.test.js +292 -0
- package/tests/components/mu-table.test.js +124 -0
- package/tests/components/mu-tabs.test.js +104 -0
- package/tests/components/mu-textarea.test.js +115 -0
- package/tests/components/mu-toast.test.js +321 -0
- package/tests/components/mu-tooltip.test.js +133 -0
- package/tests/components/mu-virtual-list.test.js +109 -0
- package/tests/core/MuElement.test.js +120 -0
- package/tests/core/agent-api.test.js +125 -0
- package/tests/core/all-core-modules.test.js +442 -0
- package/tests/core/bus.test.js +364 -0
- package/tests/core/component-schema.test.js +160 -0
- package/tests/core/feature-registry.test.js +198 -0
- package/tests/core/form-state.test.js +167 -0
- package/tests/core/http.test.js +119 -0
- package/tests/core/keyboard.test.js +319 -0
- package/tests/core/layers.test.js +129 -0
- package/tests/core/namespaced-stores.test.js +114 -0
- package/tests/core/render.test.js +121 -0
- package/tests/core/ripple.test.js +131 -0
- package/tests/core/router.test.js +89 -0
- package/tests/core/scheduler.test.js +121 -0
- package/tests/core/signals.test.js +128 -0
- package/tests/core/store.test.js +171 -0
- package/tests/core/transitions.test.js +82 -0
- package/tests/e2e/accessibility-harness.html +58 -0
- package/tests/e2e/accessibility.test.js +401 -0
- package/tests/e2e/agent-features.test.js +372 -0
- package/tests/e2e/card-spacing.test.js +287 -0
- package/tests/e2e/components.test.js +439 -0
- package/tests/e2e/demo-routes.test.js +478 -0
- package/tests/e2e/layout-css-fallback.test.js +334 -0
- package/tests/e2e/mu-alert.e2e.test.js +111 -0
- package/tests/e2e/mu-checkbox.test.js +489 -0
- package/tests/e2e/mu-chip.test.js +347 -0
- package/tests/e2e/mu-form.test.js +499 -0
- package/tests/e2e/mu-icon.test.js +114 -0
- package/tests/e2e/mu-radio.test.js +113 -0
- package/tests/e2e/mu-skeleton.test.js +140 -0
- package/tests/e2e/mu-switch.test.js +415 -0
- package/tests/e2e/mu-tabs.test.js +494 -0
- package/tests/e2e/mu-textarea.test.js +242 -0
- package/tests/e2e/mu-virtual-list.test.js +427 -0
- package/tests/e2e/perf-memory.test.js +161 -0
- package/tests/e2e/puppeteer-helper.js +137 -0
- package/tests/e2e/puppeteer.test.js +226 -0
- package/tests/e2e/pwa.test.js +261 -0
- package/tests/e2e/test-harness.html +319 -0
- package/tests/manual/test-components.html +120 -0
- package/tests/memory-test.html +309 -0
- package/tests/setup-dom.js +93 -0
- package/tests/visual-test.html +301 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{a as o}from"./chunk-h01kq2ae.js";import"./chunk-1bh8g23n.js";import"./chunk-7r46q0ys.js";import"./chunk-tjdpqwdf.js";import"./chunk-1zvcgy3j.js";import{b as a,c as l}from"./chunk-rnpzv3d8.js";class d extends a{static baseClass="mu-radio-group";static cssFile="radio";static observedAttributes=["name","value"];connectedCallback(){super.connectedCallback(),this.setAttribute("role","radiogroup"),this.addEventListener("pointerdown",(e)=>{let t=e.target;while(t&&t.tagName!=="MU-RADIO")t=t.parentElement;if(t&&!t.hasAttribute("disabled"))o(t,e)}),this.addEventListener("click",(e)=>{let t=e.target;while(t&&t.tagName!=="MU-RADIO")t=t.parentElement;if(t&&!t.hasAttribute("disabled"))this.select(t.getAttribute("value"))})}render(){this.style.display="flex",this.style.flexDirection="column",this.style.gap="8px",setTimeout(()=>this.#t(),0)}update(e,t,r){if(e==="value")this.#t()}#t(){let e=this.attr("value","");this.querySelectorAll("mu-radio").forEach((t)=>{if(t.attr("value")===e)t.setAttribute("checked","");else t.removeAttribute("checked")})}select(e){this.setAttribute("value",e),this.emit("mu-change",{value:e})}get value(){return this.attr("value","")}set value(e){this.setAttribute("value",e)}}class n extends a{static baseClass="mu-radio";static observedAttributes=["value","checked","disabled","label"];#t="";#e=!1;connectedCallback(){super.connectedCallback(),this.setAttribute("role","radio"),this.setupActivation(()=>{let e=this.closest("mu-radio-group");if(e)e.select(this.getAttribute("value"))})}render(){if(!this.#e)this.#t=this.attr("label","")||this.textContent.trim(),this.#e=!0;this.innerHTML=`
|
|
2
|
+
<span class="mu-radio__circle">
|
|
3
|
+
<span class="mu-radio__dot"></span>
|
|
4
|
+
</span>
|
|
5
|
+
<span class="mu-radio__label">${this.#t}</span>
|
|
6
|
+
`,this.style.display="inline-flex",this.style.alignItems="center",this.style.gap="12px",this.style.cursor=this.has("disabled")?"not-allowed":"pointer",this.style.userSelect="none",this.style.minHeight="48px",this.style.padding="0 4px",this.#s()}update(e,t,r){if(e==="checked"||e==="disabled")this.#s();else if(e==="label"){this.#t=t;let s=this.querySelector(".mu-radio__label");if(s)s.textContent=t}}#s(){let e=this.querySelector(".mu-radio__circle"),t=this.querySelector(".mu-radio__dot"),r=this.querySelector(".mu-radio__label"),s=this.has("checked"),i=this.has("disabled");if(this.style.cursor=i?"not-allowed":"pointer",e)if(e.style.width="20px",e.style.height="20px",e.style.borderRadius="50%",e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center",e.style.transition="border-color var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard)",i)e.style.border="2px solid color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)";else e.style.border=`2px solid ${s?"var(--md-sys-color-primary)":"var(--md-sys-color-outline)"}`;if(t)if(t.style.width="10px",t.style.height="10px",t.style.borderRadius="50%",t.style.transform=s?"scale(0.5)":"scale(0)",t.style.transition="transform var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard)",i)t.style.background="color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)";else t.style.background="var(--md-sys-color-primary)";if(r)r.style.color=i?"color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)":"var(--md-sys-color-on-surface)";this.setAttribute("aria-checked",String(s)),this.setAttribute("aria-disabled",String(i)),this.setAttribute("tabindex",i?"-1":"0")}}l("mu-radio-group",d);l("mu-radio",n);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{a as h}from"./chunk-h01kq2ae.js";import"./chunk-1bh8g23n.js";import"./chunk-7r46q0ys.js";import"./chunk-tjdpqwdf.js";import"./chunk-1zvcgy3j.js";import{b as o,c}from"./chunk-rnpzv3d8.js";class n extends o{static baseClass="mu-switch";static cssFile="switch";static observedAttributes=["checked","disabled","label"];connectedCallback(){super.connectedCallback(),this.setAttribute("role","switch"),this.setupActivation(()=>this.toggle()),this.addEventListener("pointerdown",(t)=>{if(!this.isDisabled)h(this,t)}),this.addEventListener("click",()=>{if(!this.isDisabled)this.toggle()})}render(){if(this.querySelector(".mu-switch__track")){this.#t();return}let t=this.attr("label","")||this.textContent;this.innerHTML=`
|
|
2
|
+
<span class="mu-switch__track">
|
|
3
|
+
<span class="mu-switch__thumb"></span>
|
|
4
|
+
</span>
|
|
5
|
+
${t?`<span class="mu-switch__label">${t}</span>`:""}
|
|
6
|
+
`,this.style.display="inline-flex",this.style.alignItems="center",this.style.gap="12px",this.style.cursor=this.has("disabled")?"not-allowed":"pointer",this.#t()}update(t,s,e){this.#t()}#t(){let t=this.querySelector(".mu-switch__track"),s=this.querySelector(".mu-switch__thumb"),e=this.has("checked"),i=this.has("disabled");if(this.style.cursor=i?"not-allowed":"pointer",t)if(t.style.width="52px",t.style.height="32px",t.style.borderRadius="16px",t.style.position="relative",t.style.transition="background var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard)",i)t.style.background="color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)";else t.style.background=e?"var(--md-sys-color-primary)":"var(--md-sys-color-surface-container-highest)";if(s){let a=e?24:16,d=e?4:8,u=e?24:6;if(s.style.width=`${a}px`,s.style.height=`${a}px`,s.style.borderRadius=`${a/2}px`,s.style.position="absolute",s.style.top=`${d}px`,s.style.left=`${u}px`,s.style.transition="all var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized)",i)s.style.background="color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)",s.style.boxShadow="none";else s.style.background=e?"var(--md-sys-color-on-primary)":"var(--md-sys-color-outline)",s.style.boxShadow="var(--md-sys-elevation-level1)"}let r=this.querySelector(".mu-switch__label");if(r)r.style.color=i?"color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)":"var(--md-sys-color-on-surface)";this.setAttribute("aria-checked",String(e)),this.setAttribute("aria-disabled",String(i)),this.setAttribute("tabindex",i?"-1":"0");let l=r?.textContent||this.attr("label","");if(l)this.setAttribute("aria-label",l)}toggle(){if(this.has("checked"))this.removeAttribute("checked");else this.setAttribute("checked","");this.emit("mu-change",{checked:this.has("checked")})}get checked(){return this.has("checked")}set checked(t){if(t)this.setAttribute("checked","");else this.removeAttribute("checked")}}c("mu-switch",n);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-1bh8g23n.js";import"./chunk-7r46q0ys.js";import"./chunk-tjdpqwdf.js";import"./chunk-1zvcgy3j.js";import"./chunk-rnpzv3d8.js";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import"./chunk-7k789b32.js";import"./chunk-h01kq2ae.js";import"./chunk-7r46q0ys.js";import"./chunk-tjdpqwdf.js";import"./chunk-1zvcgy3j.js";import{b as X,c as J}from"./chunk-rnpzv3d8.js";var f=Symbol("listeners"),z=Symbol("subCounter"),R=Symbol("maxListeners"),m=Symbol("fastCache"),P=Object.freeze({peerId:"self",origin:typeof globalThis.location<"u"?globalThis.location.origin:"unknown",type:"local"});class M{constructor(){this[f]=new Map,this[z]=0,this[R]=10,this[m]=Object.create(null)}setMaxListeners(e){return this[R]=e,this}getMaxListeners(){return this[R]}on(e,t,s={}){if(typeof e!=="string")throw TypeError("Signal name must be a string");if(typeof t!=="function")throw TypeError("Handler must be a function");let r=`sub_${++this[z]}`,i={id:r,handler:t,priority:s.priority??0,mode:s.mode??"async",once:s.once??!1,signal:s.signal??null};if(!this[f].has(e))this[f].set(e,[]);let n=this[f].get(e);if(n.length===0||i.priority<=n[n.length-1].priority)n.push(i);else{let u=0,g=n.length;while(u<g){let T=u+g>>>1;if(n[T].priority>=i.priority)u=T+1;else g=T}n.splice(u,0,i)}this[m][e]=n.map((u)=>u.handler);let o=this[R];if(o>0&&n.length>o)console.warn(`[SignalBus] Possible memory leak: ${n.length} listeners for "${e}". Use setMaxListeners(n) to increase limit.`);let l=!0,h={id:r,signalName:e,get active(){return l},unsubscribe:()=>{if(l)this.#t(e,r),l=!1}};if(i.signal)if(i.signal.aborted)this.#t(e,r),l=!1;else i.signal.addEventListener("abort",()=>{h.unsubscribe()},{once:!0});return h}once(e,t,s={}){return this.on(e,t,{...s,once:!0})}onFast(e,t){return(this[m][e]||=[]).push(t),()=>{this[m][e]=this[m][e]?.filter((s)=>s!==t)}}offFast(e,t){let s=this[m][e];if(s){let i=s.indexOf(t);if(i!==-1)s.splice(i,1)}let r=this[f].get(e);if(r){let i=r.findIndex((n)=>n.handler===t);if(i!==-1)r.splice(i,1)}}off(e,t){if(typeof e!=="string")throw TypeError("Signal name must be a string");let s=this[f].get(e);if(!s||s.length===0)return{success:!1,removedCount:0,remainingCount:0};let r=0;if(t===void 0)r=s.length,this[f].delete(e),delete this[m][e];else{let n=s.length,o=s.filter((l)=>l.handler!==t);if(r=n-o.length,o.length===0)this[f].delete(e),delete this[m][e];else this[f].set(e,o),this[m][e]=o.map((l)=>l.handler)}let i=this[f].get(e)?.length??0;return{success:r>0,removedCount:r,remainingCount:i}}emitSync(e,t){let s=this[m][e];if(!s)return 0;let r=s.length;if(r===1)return s[0](t),1;if(r===2)return s[0](t),s[1](t),2;if(r===3)return s[0](t),s[1](t),s[2](t),3;if(r===4)return s[0](t),s[1](t),s[2](t),s[3](t),4;for(let i=0;i<r;i++)s[i](t);return r}async emit(e,t,s){if(typeof e!=="string")throw TypeError("Signal name must be a string");let r=this[f].get(e),i=this[f].has("*");if(r?.length===1&&!i&&!s){let h=r[0],u={name:e,data:t,messageId:crypto.randomUUID(),timestamp:Date.now(),source:P};try{if(h.mode==="sync")await h.handler(u);else Promise.resolve().then(()=>h.handler(u))}catch(g){console.error(`[SignalBus] Handler error for "${e}":`,g)}if(h.once)this.#t(e,h.id);return 1}let n={name:e,data:t,messageId:crypto.randomUUID(),timestamp:Date.now(),source:s?{...P,...s}:P},o=this.#e(e),l=[];for(let{signalName:h,entry:u}of o){try{if(u.mode==="sync")await u.handler(n);else Promise.resolve().then(()=>u.handler(n))}catch(g){console.error(`[SignalBus] Handler error for "${e}":`,g)}if(u.once)l.push({signalName:h,id:u.id})}for(let{signalName:h,id:u}of l)this.#t(h,u);return o.length}hasListeners(e){let t=this[f].get(e);return t!==void 0&&t.length>0}listenerCount(e){return this[f].get(e)?.length??0}getSignalNames(){return Array.from(this[f].keys())}clear(){this[f].clear();for(let e in this[m])delete this[m][e]}#e(e){let t=this[f].get(e),s=this[f].get("*"),r=null,i=e.indexOf(":");if(i>0){let l=e.slice(0,i+1)+"*";r=this[f].get(l)}if(t&&!s&&!r)return t.map((l)=>({signalName:e,entry:l}));let n=[t&&{signalName:e,entries:t},s&&{signalName:"*",entries:s},r&&{signalName:e.slice(0,i+1)+"*",entries:r}].filter(Boolean);if(n.length===0)return[];if(n.length===1)return n[0].entries.map((l)=>({signalName:n[0].signalName,entry:l}));let o=[];for(let{signalName:l,entries:h}of n)for(let u of h)o.push({signalName:l,entry:u});return o.sort((l,h)=>h.entry.priority-l.entry.priority),o}#t(e,t){let s=this[f].get(e);if(!s)return;let r=s.filter((i)=>i.id!==t);if(r.length===0)this[f].delete(e),delete this[m][e];else this[f].set(e,r),this[m][e]=r.map((i)=>i.handler)}}var y="_sb",E=1,d=Object.freeze({SIGNAL:"sig",REQUEST:"req",RESPONSE:"res",ACK:"ack",HANDSHAKE:"hsk",HANDSHAKE_INIT:"hsk_init",HANDSHAKE_ACK:"hsk_ack",HANDSHAKE_COMPLETE:"hsk_done",PING:"png",PONG:"pog",BYE:"bye",BROADCAST:"bc"}),k=Object.freeze({INIT:"init",INIT_SENT:"init_sent",ACK:"ack",ACK_SENT:"ack_sent",DONE:"done"}),U=Object.freeze({CONNECTING:"connecting",CONNECTED:"connected",DISCONNECTED:"disconnected",RECONNECTING:"reconnecting",FAILED:"failed"}),Se=Object.freeze({IFRAME:"iframe",WORKER:"worker",SERVICE_WORKER:"sw",WINDOW:"window",PORT:"port"}),we=Object.freeze({LOCAL:"local",SENT:"sent",ACKED:"acked",QUEUED:"queued",TIMEOUT:"timeout",FAILED:"failed"});function b(e){return e!==null&&typeof e==="object"&&e[y]===E&&typeof e.id==="string"&&(typeof e.type==="string"||typeof e.t==="string")}function ne(e){if(e instanceof ArrayBuffer)return!0;if(e instanceof MessagePort)return!0;if(typeof ImageBitmap<"u"&&e instanceof ImageBitmap)return!0;if(typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas)return!0;if(typeof ReadableStream<"u"&&e instanceof ReadableStream)return!0;if(typeof WritableStream<"u"&&e instanceof WritableStream)return!0;if(typeof TransformStream<"u"&&e instanceof TransformStream)return!0;return!1}function D(e,t=new Set){if(e===null||e===void 0)return Array.from(t);if(ne(e))return t.add(e),Array.from(t);if(Array.isArray(e))for(let s of e)D(s,t);else if(typeof e==="object")for(let s of Object.keys(e))D(e[s],t);return Array.from(t)}function G(e,t,s={},r=null){return Object.freeze({[y]:E,version:E,id:r||crypto.randomUUID(),type:e,timestamp:Date.now(),payload:Object.freeze({...t}),meta:Object.freeze({...s})})}function ae(e,t,s,r=null){return G(d.SIGNAL,{name:e,data:t,source:s,dest:r})}function oe(e,t,s,r,i=null){return G(d.REQUEST,{name:e,data:t,source:s,dest:r},{},i)}function O(e,t,s,r=!0,i=null){return G(d.RESPONSE,{requestId:e,data:t,source:s,success:r,error:i})}var a=Object.freeze({HANDSHAKE_TIMEOUT:"ERR_HANDSHAKE_TIMEOUT",HANDSHAKE_REJECTED:"ERR_HANDSHAKE_REJECTED",ORIGIN_FORBIDDEN:"ERR_ORIGIN_FORBIDDEN",PEER_EXISTS:"ERR_PEER_EXISTS",PEER_NOT_FOUND:"ERR_PEER_NOT_FOUND",PEER_DISCONNECTED:"ERR_PEER_DISCONNECTED",RECONNECT_FAILED:"ERR_RECONNECT_FAILED",UNSUPPORTED:"ERR_UNSUPPORTED",NOT_CONNECTED:"ERR_NOT_CONNECTED",ACK_TIMEOUT:"ERR_ACK_TIMEOUT",RESPONSE_TIMEOUT:"ERR_RESPONSE_TIMEOUT",QUEUE_FULL:"ERR_QUEUE_FULL",INVALID_MESSAGE:"ERR_INVALID_MESSAGE",VERSION_MISMATCH:"ERR_VERSION_MISMATCH",CLONE_ERROR:"ERR_CLONE_ERROR",TRANSFER_ERROR:"ERR_TRANSFER_ERROR",MESSAGE_TOO_LARGE:"ERR_MESSAGE_TOO_LARGE",UNREACHABLE:"ERR_UNREACHABLE",TTL_EXCEEDED:"ERR_TTL_EXCEEDED",NO_ROUTE:"ERR_NO_ROUTE",NO_HANDLER:"ERR_NO_HANDLER",HANDLER_ERROR:"ERR_HANDLER_ERROR",HANDLER_TIMEOUT:"ERR_HANDLER_TIMEOUT",HANDLER_EXISTS:"ERR_HANDLER_EXISTS",SEND_FAILED:"ERR_SEND_FAILED",CHANNEL_FAILED:"ERR_CHANNEL_FAILED",CHANNEL_CLOSED:"ERR_CHANNEL_CLOSED",MAX_PEERS:"ERR_MAX_PEERS",MAX_PENDING:"ERR_MAX_PENDING",DESTROYED:"ERR_DESTROYED",CIRCUIT_OPEN:"ERR_CIRCUIT_OPEN",PAYLOAD_TOO_LARGE:"ERR_PAYLOAD_TOO_LARGE",RATE_LIMITED:"ERR_RATE_LIMITED",UNAUTHORIZED:"ERR_UNAUTHORIZED",INVALID_PAYLOAD:"ERR_INVALID_PAYLOAD"}),le=Object.freeze({[a.HANDSHAKE_TIMEOUT]:{message:"Handshake timed out",retryable:!0,suggestion:"Increase timeout or check if target is loaded. Use iframe.onload before connecting."},[a.HANDSHAKE_REJECTED]:{message:"Handshake rejected by peer",retryable:!1,suggestion:"Check targetOrigin matches the peer's origin. Verify peer allows your origin."},[a.ORIGIN_FORBIDDEN]:{message:"Origin not in allowed origins list",retryable:!1,suggestion:'Add your origin to allowedOrigins option or use targetOrigin: "*" for development.'},[a.PEER_EXISTS]:{message:"Peer with this ID already exists",retryable:!1,suggestion:"Use unique peerId for each context. Try: peerId: `agent-${Date.now()}`"},[a.PEER_NOT_FOUND]:{message:"Peer not found",retryable:!1,suggestion:"Check if peer is connected using bus.peers. Wait for peer connection before request."},[a.PEER_DISCONNECTED]:{message:"Peer is disconnected",retryable:!0,suggestion:'Wait for peer to reconnect. Listen for "peer:join" event before retry.'},[a.RECONNECT_FAILED]:{message:"Max reconnection attempts reached",retryable:!1,suggestion:"Check network connectivity. Consider increasing maxRetries option."},[a.UNSUPPORTED]:{message:"Operation not supported by this environment",retryable:!1,suggestion:"This feature requires a browser environment. Check for feature availability first."},[a.NOT_CONNECTED]:{message:"Transport is not connected",retryable:!0,suggestion:"Call addTransport() and wait for connection before sending messages."},[a.ACK_TIMEOUT]:{message:"ACK not received within timeout",retryable:!0,suggestion:"Increase ackTimeout option or check peer availability."},[a.RESPONSE_TIMEOUT]:{message:"Response not received within timeout",retryable:!0,suggestion:"Increase timeout in request options: { timeout: 10000 }. Check if handler exists on peer."},[a.QUEUE_FULL]:{message:"Message queue is full",retryable:!1,suggestion:"Increase maxQueueSize or wait for queue to drain. Consider using batching plugin."},[a.INVALID_MESSAGE]:{message:"Invalid message format",retryable:!1,suggestion:"Ensure message data is JSON-serializable. Avoid DOM nodes and functions."},[a.VERSION_MISMATCH]:{message:"Protocol version mismatch",retryable:!1,suggestion:"Update SignalBus to same version on both sides."},[a.CLONE_ERROR]:{message:"Data cannot be cloned (contains functions or DOM nodes)",retryable:!1,suggestion:"Remove functions, DOM nodes, and circular references from message data."},[a.TRANSFER_ERROR]:{message:"Failed to transfer object ownership",retryable:!1,suggestion:"Ensure ArrayBuffers are not detached. Each buffer can only be transferred once."},[a.MESSAGE_TOO_LARGE]:{message:"Message exceeds maximum size",retryable:!1,suggestion:"Use streaming for large payloads or increase maxMessageSize option."},[a.UNREACHABLE]:{message:"Destination peer is unreachable",retryable:!0,suggestion:"Check if peer is still connected. Use bus.peers to list available peers."},[a.TTL_EXCEEDED]:{message:"Message TTL exceeded (possible routing loop)",retryable:!1,suggestion:"Check for circular transport configurations. Increase maxTTL if needed."},[a.NO_ROUTE]:{message:"No route to destination",retryable:!1,suggestion:"Add transport connecting to target peer. Set isHub: true on orchestrator."},[a.NO_HANDLER]:{message:"No handler registered for this request",retryable:!1,suggestion:'Register handler on target: bus.handle("handlerName", fn). Check handler name spelling.'},[a.HANDLER_ERROR]:{message:"Handler threw an exception",retryable:!1,suggestion:"Check target peer logs for error. Wrap handler in try/catch."},[a.HANDLER_TIMEOUT]:{message:"Handler did not respond within timeout",retryable:!0,suggestion:"Handler is slow. Increase timeout or optimize handler performance."},[a.HANDLER_EXISTS]:{message:"Handler already registered with this name",retryable:!1,suggestion:"Use different handler name or call bus.removeHandler() first."},[a.SEND_FAILED]:{message:"Failed to send message to peer",retryable:!0,suggestion:"Check transport status. Target window may be closed or blocked."},[a.CHANNEL_FAILED]:{message:"Failed to create direct channel",retryable:!0,suggestion:"Check browser support for MessageChannel. Retry after short delay."},[a.CHANNEL_CLOSED]:{message:"Channel was closed unexpectedly",retryable:!1,suggestion:"Target context was destroyed. Check if iframe/worker still exists."},[a.MAX_PEERS]:{message:"Maximum number of peers reached",retryable:!1,suggestion:"Increase maxPeers option or disconnect unused peers first."},[a.MAX_PENDING]:{message:"Maximum pending requests reached",retryable:!1,suggestion:"Wait for pending requests to complete. Increase maxPendingRequests option."},[a.DESTROYED]:{message:"SignalBus instance has been destroyed",retryable:!1,suggestion:"Create new SignalBus instance. Do not use bus after calling destroy()."},[a.CIRCUIT_OPEN]:{message:"Circuit breaker is open",retryable:!1,suggestion:"Too many failures. Wait for circuit to reset or call circuit.reset()."},[a.PAYLOAD_TOO_LARGE]:{message:"Payload exceeds maximum allowed size",retryable:!1,suggestion:"Reduce payload size or increase maxPayloadSize option. Consider using streaming for large data."},[a.RATE_LIMITED]:{message:"Request rate limit exceeded",retryable:!0,suggestion:"Wait before retrying. Consider adding delay or using exponential backoff."},[a.UNAUTHORIZED]:{message:"Peer is not authorized to call this handler",retryable:!1,suggestion:"Add peer to handler allowedPeers list or remove peer restrictions."},[a.INVALID_PAYLOAD]:{message:"Payload validation failed",retryable:!1,suggestion:"Check payload structure against handler requirements."}});class c extends Error{code;details;retryable;cause;timestamp;constructor(e,t,s={}){let r=le[e]??{message:"Unknown error",retryable:!1};super(t??r.message);if(this.name="SignalBusError",this.code=e,this.details=s.details??{},this.retryable=s.retryable??r.retryable,this.cause=s.cause,this.timestamp=Date.now(),Error.captureStackTrace)Error.captureStackTrace(this,c)}static from(e,t={}){return new c(e,void 0,{details:t})}static wrap(e,t,s={}){return new c(e,t.message,{cause:t,details:s})}toJSON(){return{name:this.name,code:this.code,message:this.message,details:this.details,retryable:this.retryable,timestamp:this.timestamp}}toString(){return`${this.name} [${this.code}]: ${this.message}`}}function w(){if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e)=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function j(){if(typeof Promise.withResolvers==="function")return Promise.withResolvers();let e,t;return{promise:new Promise((s,r)=>{e=s,t=r}),resolve:e,reject:t}}function q(e,t,s="Operation timed out"){return Promise.race([e,new Promise((r,i)=>{setTimeout(()=>i(Error(s)),t)})])}class K extends M{#e=new Map;#t=0;#s=new Map;#i=Object.create(null);#r=Object.create(null);#n=[];constructor(){super()}addPeer(e,t,s={}){if(this.#e.has(e))throw c.from(a.PEER_EXISTS,{peerId:e});if(typeof t!=="function")throw TypeError("sendFn must be a function");let r={peerId:e,sendFn:t,meta:s.meta??{},origin:s.origin??"unknown",status:U.CONNECTED,connectedAt:Date.now()};this.#e.set(e,r),this.#s.set(e,0),this.#i[e]=r,this.#r[e]=t,this.#n.push(e),this.emit("peer:added",{peerId:e,meta:r.meta})}removePeer(e){let t=this.#i[e];if(!t)return!1;this.#e.delete(e),this.#s.delete(e),delete this.#i[e],delete this.#r[e];let s=this.#n.indexOf(e);if(s!==-1)this.#n.splice(s,1);return this.emit("peer:removed",{peerId:e,meta:t.meta}),!0}getPeer(e){return this.#i[e]}getPeerIds(){return this.#n.slice()}get peerCount(){return this.#e.size}route(e,t={}){let{target:s,payload:r}=e;if(s)return this.#a(s,r);else{let i=t.exclude,n=i?.length?new Set(i):null;return this.#o(r,n)}}broadcast(e,t={}){let s=t.exclude,r=s?.length?new Set(s):null,i=t.include,n=i?.length?new Set(i):null,o=0,l=[];for(let[h,u]of this.#e){if(r?.has(h))continue;if(n&&!n.has(h))continue;if(u.status!==U.CONNECTED)continue;try{let g=this.#l(h,e,d.BROADCAST);u.sendFn(g),o++}catch(g){console.error(`[Router] Failed to send to ${h}:`,g),l.push(h)}}return{success:l.length===0,delivered:o,failed:l}}getSequence(e){return this.#s.get(e)??0}setPeerStatus(e,t){let s=this.#i[e];if(s)s.status=t,this.emit("peer:status",{peerId:e,status:t})}clearPeers(){let e=this.#n.slice();for(let t of e)this.removePeer(t)}#a(e,t){let s=this.#i[e];if(!s)return{success:!1,delivered:0,failed:[e],error:a.PEER_NOT_FOUND};if(s.status!==U.CONNECTED)return{success:!1,delivered:0,failed:[e],error:a.PEER_DISCONNECTED};try{let r=t&&t._sb?t:this.#l(e,t,d.SIGNAL);return s.sendFn(r),{success:!0,delivered:1,failed:[]}}catch(r){return console.error(`[Router] Failed to send to ${e}:`,r),{success:!1,delivered:0,failed:[e]}}}#o(e,t){return this.broadcast(e,t?{exclude:Array.from(t)}:{})}#l(e,t,s){let r=(this.#s.get(e)??0)+1;return this.#s.set(e,r),{id:`msg_${++this.#t}`,t:s,ts:Date.now(),seq:r,p:t}}}class F{#e=new Map;#t=Object.create(null);#s=0;#i;#r;constructor(e={}){this.#i=e.defaultTimeout??30000,this.#r=e.maxPending??1000}create(e,t,s={}){if(this.#r>0&&this.#e.size>=this.#r)throw c.from(a.MAX_PENDING,{current:this.#e.size,max:this.#r,targetPeer:e,handlerName:t});let r=Date.now(),i=`req_${++this.#s}_${r}`,n=s.timeout??this.#i,{promise:o,resolve:l,reject:h}=j(),u={id:i,targetPeer:e,handlerName:t,createdAt:r,timeout:n,resolve:l,reject:h,defaultValue:s.defaultValue};this.#e.set(i,u),this.#t[i]=u;let g=q(o,n).catch((T)=>{if(i in this.#t){if(this.#e.delete(i),delete this.#t[i],"defaultValue"in s)return s.defaultValue;throw c.from(a.RESPONSE_TIMEOUT,{requestId:i,targetPeer:e,handlerName:t,timeout:n})}throw T});return{requestId:i,promise:g}}resolve(e,t){let s=this.#t[e];if(!s)return!1;if(this.#e.delete(e),delete this.#t[e],t.success)s.resolve(t.data);else{let r=c.from(t.error?.code??a.HANDLER_ERROR,{requestId:e,targetPeer:s.targetPeer,handlerName:s.handlerName,originalError:t.error});r.message=t.error?.message??"Handler error",s.reject(r)}return!0}reject(e,t){let s=this.#t[e];if(!s)return!1;this.#e.delete(e),delete this.#t[e];let r=t instanceof Error?t:Error(t);return s.reject(r),!0}cancel(e){let t=this.#t[e];if(!t)return!1;return this.#e.delete(e),delete this.#t[e],t.reject(Error("Request cancelled")),!0}cancelForPeer(e){let t=0;for(let[s,r]of this.#e)if(r.targetPeer===e)this.#e.delete(s),delete this.#t[s],r.reject(c.from(a.PEER_DISCONNECTED,{peerId:e,requestId:s})),t++;return t}cancelAll(){let e=this.#e.size;for(let[t,s]of this.#e)s.reject(Error("All requests cancelled"));this.#e.clear();for(let t in this.#t)delete this.#t[t];return e}has(e){return e in this.#t}get(e){return this.#t[e]}get size(){return this.#e.size}getRequestIds(){return Array.from(this.#e.keys())}getForPeer(e){let t=[];for(let s of this.#e.values())if(s.targetPeer===e)t.push(s);return t}}class Q{#e;#t;#s;#i;#r=new Map;constructor(e={}){this.#e=e.peerId??w(),this.#t=e.meta??{},this.#s=e.capabilities??[],this.#i=e.timeout??1e4}get peerId(){return this.#e}createInitMessage(){return{type:d.HANDSHAKE_INIT,handshakeId:w(),peerId:this.#e,meta:this.#t,capabilities:this.#s,timestamp:Date.now()}}createAckMessage(e,t,s){return{type:d.HANDSHAKE_ACK,handshakeId:e.handshakeId,peerId:this.#e,meta:this.#t,capabilities:this.#s,accept:t,reason:t?void 0:s,timestamp:Date.now()}}createCompleteMessage(e){return{type:d.HANDSHAKE_COMPLETE,handshakeId:e,confirmed:!0,timestamp:Date.now()}}async initiate(e){let t=this.createInitMessage(),{promise:s,resolve:r,reject:i}=j();this.#r.set(t.handshakeId,{phase:k.INIT_SENT,resolve:r,reject:i,initMsg:t,startTime:Date.now()}),e(t);try{return await q(s,this.#i)}catch(n){if(this.#r.delete(t.handshakeId),n.code===a.HANDSHAKE_TIMEOUT)return{success:!1,error:a.HANDSHAKE_TIMEOUT,reason:`Handshake timeout after ${this.#i}ms`};return{success:!1,error:a.HANDSHAKE_REJECTED,reason:n.message}}}handleMessage(e,t,s,r){switch(e.type){case d.HANDSHAKE_INIT:return this.#n(e,t,s,r);case d.HANDSHAKE_ACK:return this.#a(e,t,s);case d.HANDSHAKE_COMPLETE:return this.#o(e,t);default:return null}}hasPending(e){return this.#r.has(e)}cancel(e){let t=this.#r.get(e);if(t)t.reject(Error("Handshake cancelled")),this.#r.delete(e)}cancelAll(){for(let[e,t]of this.#r)t.reject(Error("All handshakes cancelled"));this.#r.clear()}#n(e,t,s,r){if(r&&!r(e,t)){let n=this.createAckMessage(e,!1,"Validation failed");return s(n),null}let i=this.createAckMessage(e,!0);return s(i),this.#r.set(e.handshakeId,{phase:k.ACK_SENT,remotePeer:{peerId:e.peerId,origin:t,meta:e.meta,capabilities:e.capabilities}}),null}#a(e,t,s){let r=this.#r.get(e.handshakeId);if(!r)return null;if(!e.accept)return r.reject(Error(e.reason||"Connection rejected")),this.#r.delete(e.handshakeId),null;let i=this.createCompleteMessage(e.handshakeId);s(i);let n={peerId:e.peerId,origin:t,meta:e.meta,capabilities:e.capabilities,type:"unknown",connectedAt:Date.now()};return r.resolve({success:!0,peer:n}),this.#r.delete(e.handshakeId),n}#o(e,t){let s=this.#r.get(e.handshakeId);if(!s||s.phase!==k.ACK_SENT)return null;if(!e.confirmed)return this.#r.delete(e.handshakeId),null;let r={...s.remotePeer,connectedAt:Date.now()};return this.#r.delete(e.handshakeId),r}}class Y{#e=new Set;#t=[];#s=!1;#i;constructor(e={}){if(this.#s=e.allowAll??!1,this.#i=globalThis.location?.origin,e.allowed)for(let t of e.allowed)this.#r(t)}isAllowed(e){if(this.#s)return!0;if(e==="null"||e===null)return this.#e.has("null");if(this.#e.size===0&&this.#t.length===0)return e===this.#i;if(this.#e.has(e))return!0;for(let t of this.#t)if(t.test(e))return!0;return!1}allow(e){return this.#r(e),this}disallow(e){if(this.#e.has(e))return this.#e.delete(e),!0;return!1}getAllowed(){return Array.from(this.#e)}clear(){this.#e.clear(),this.#t=[]}get selfOrigin(){return this.#i}#r(e){if(typeof e!=="string")throw TypeError("Origin must be a string");if(e==="*"){this.#s=!0;return}if(e.includes("*")){let t=this.#n(e);this.#t.push(t)}else this.#e.add(e)}#n(e){let t=e.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,"[a-zA-Z0-9.-]{0,253}");return new RegExp(`^${t}$`)}}class B extends M{#e;#t;#s;#i;#r;#n;#a;#o=new Map;#l=[];#h=[];#d;#f;#c;#g;#u;#m;#y=new Map;#p=new Map;#S=!1;#w="[SignalBus]";#b;#E=!1;constructor(e={}){super();if(this.#e=e.peerId??w(),this.#t=e.isHub??!1,this.#d=e.meta??{},this.#f=e.capabilities??[],this.#c=e.requestTimeout??30000,this.#s=new K,this.#i=new F({defaultTimeout:this.#c}),this.#r=new Q({peerId:this.#e,meta:this.#d,capabilities:this.#f,timeout:e.handshakeTimeout??1e4}),this.#n=new Y({allowed:e.allowedOrigins??[]}),this.#a=e.contentType??"application/json",this.#g=e.maxPayloadSize??1048576,this.#u=e.maxPendingRequests??100,this.#m=e.strictMode??!1,this.#S=e.debug??!1,this.#w=e.debugPrefix??"[SignalBus]",this.#b=Date.now(),this.#D(e),this.#f.push(`serializer:${this.#a}`),this.#s.on("peer:added",(t)=>{this.emit("peer:connected",t.data)}),this.#s.on("peer:removed",(t)=>{this.emit("peer:disconnected",t.data)}),this.#s.on("peer:status",(t)=>{this.emit("peer:status",t.data)}),this.#S)this.#N("info",`Initialized (isHub: ${this.#t})`)}get peerId(){return this.#e}get isHub(){return this.#t}get peerCount(){return this.#s.peerCount}get peers(){return this.#s.getPeerIds()}getPeer(e){return this.#s.getPeer(e)}async signal(e,t,s={}){this.#T();let r=await this.#I(this.#h,t,{type:"signal",direction:"outbound"}),i=ae(e,r,this.#e),n=await this.#s.broadcast(i,s);return this.#N("out",`SIGNAL "${e}" to ${n.delivered} peers`),n}async request(e,t,s,r={}){if(this.#T(),this.#N("out",`REQUEST "${t}" to ${e}`),!this.#s.getPeer(e))throw c.from(a.PEER_NOT_FOUND,{peerId:e});let{requestId:i,promise:n}=this.#i.create(e,t,{timeout:r.timeout??this.#c}),o=await this.#I(this.#h,s,{type:"request",peerId:e,handlerName:t,direction:"outbound"}),l=oe(t,o,this.#e,e,i);if(!this.#s.route({target:e,payload:l}).success)throw this.#i.cancel(i),c.from(a.SEND_FAILED,{peerId:e});return n}async broadcastRequest(e,t,s={}){this.#T();let r=s.timeout??this.#c,i=s.ignoreErrors??!0,n=new Set(s.exclude??[]),o=new Map,l=[];for(let h of this.#s.getPeerIds()){if(n.has(h))continue;let u=this.request(h,e,t,{timeout:r}).then((g)=>{o.set(h,{success:!0,data:g})}).catch((g)=>{if(i)o.set(h,{success:!1,error:g.message});else throw g});l.push(u)}return await Promise.all(l),o}handle(e,t,s={}){if(this.#o.has(e))throw c.from(a.HANDLER_EXISTS,{handlerName:e});if(s.allowedPeers||s.rateLimit||s.validatePayload)this.#p.set(e,s);return this.#o.set(e,t),()=>{this.#o.delete(e),this.#p.delete(e)}}unhandle(e){return this.#o.delete(e)}hasHandler(e){return this.#o.has(e)}addInboundHook(e,t=10){if(typeof e!=="function")throw TypeError("hookFn must be a function");let s={fn:e,priority:t};return this.#l.push(s),this.#l.sort((r,i)=>r.priority-i.priority),()=>this.removeInboundHook(e)}addOutboundHook(e,t=10){if(typeof e!=="function")throw TypeError("hookFn must be a function");let s={fn:e,priority:t};return this.#h.push(s),this.#h.sort((r,i)=>r.priority-i.priority),()=>this.removeOutboundHook(e)}removeInboundHook(e){let t=this.#l.findIndex((s)=>s.fn===e);if(t!==-1)return this.#l.splice(t,1),!0;return!1}removeOutboundHook(e){let t=this.#h.findIndex((s)=>s.fn===e);if(t!==-1)return this.#h.splice(t,1),!0;return!1}addPeer(e,t,s={}){this.#T(),this.#s.addPeer(e,t,s)}removePeer(e){return this.#i.cancelForPeer(e),this.#s.removePeer(e)}addTransport(e,t={}){if(this.#T(),!e||typeof e.send!=="function")throw TypeError("Transport must have a send() method");let s=t.peerId||e.peerId||`transport-${w()}`,r=t.origin||"*";if(typeof e.onMessage==="function")e.onMessage((i)=>{this.handleMessage(i,r,s)});return this.addPeer(s,(i)=>{e.send(i)},t),()=>{if(this.removePeer(s),typeof e.destroy==="function")e.destroy()}}async handleMessage(e,t,s,r){if(this.#E)return;if(!this.#n.isAllowed(t)){console.warn(`[SignalBus] Blocked message from unauthorized origin: ${t}`);return}let i=e.payload??e.data??e.p,n=e.type??e.t,o=e.handler??e.name,l=i;if(e.payload&&typeof e.payload==="object"&&!e.p){if(n===d.SIGNAL||n===d.BROADCAST)o=e.payload.name,l=e.payload.data;else if(n===d.REQUEST)o=e.payload.name,l=e.payload.data;else if(n===d.RESPONSE)l=e.payload.data}else if(e.t&&!e.type&&e.p&&typeof e.p==="object"&&e.p.payload){let h=e.p;o=h.payload.name??h.name,l=h.payload.data??h.data}if(l!==void 0){let h={type:n===d.SIGNAL?"signal":n===d.REQUEST?"request":"response",peerId:s,handlerName:o,direction:"inbound"};l=await this.#I(this.#l,l,h)}switch(n){case d.BROADCAST:case d.SIGNAL:if(typeof o!=="string"){console.warn("[SignalBus] Invalid signal name type");return}await this.#R(o,l,s);break;case d.REQUEST:if(typeof o!=="string"){console.warn("[SignalBus] Invalid handler name type");return}await this.#O(e.id,o,l,s,r);break;case d.RESPONSE:{let{success:h,error:u}=e;if(e.payload&&e.payload.success!==void 0)h=e.payload.success,u=e.payload.error;this.#A(e.payload?.requestId??e.id,h,l,u);break}case d.HANDSHAKE_INIT:case d.HANDSHAKE_ACK:case d.HANDSHAKE_COMPLETE:this.#r.handleMessage(e,t,r);break;default:console.warn(`[SignalBus] Unknown message type: ${n}`)}}destroy(){if(this.#E)return;this.#E=!0,this.#i.cancelAll(),this.#o.clear(),this.#s.clearPeers(),this.clear(),this.emit("destroyed",{})}get isDestroyed(){return this.#E}async#R(e,t,s){await this.emit(e,{payload:t,source:s})}async#O(e,t,s,r,i){let n=this.#o.get(t),o;if(!n)o=O(e,null,this.#e,!1,{code:a.NO_HANDLER,message:"Handler not found"});else{let l=this.#_(t,r,s);if(!l.allowed)o=O(e,null,this.#e,!1,{code:l.error?.code??a.UNAUTHORIZED,message:l.error?.message??"Security check failed"});else try{let h=await n(s,{peerId:r,requestId:e,handlerName:t}),u=await this.#I(this.#h,h,{type:"response",peerId:r,handlerName:t,direction:"outbound"});o=O(e,u,this.#e,!0)}catch(h){o=O(e,null,this.#e,!1,{code:h.code??a.HANDLER_ERROR,message:h.message})}}if(i)i(o);else if(r)this.#s.route({target:r,payload:o})}#A(e,t,s,r){this.#i.resolve(e,{requestId:e,success:t,data:s,error:r})}#T(){if(this.#E)throw c.from(a.DESTROYED,{context:"SignalBus operation"})}async#I(e,t,s){let r=t;for(let{fn:i}of e)try{r=await i(r,s)}catch(n){console.error("[SignalBus] Hook error:",n)}return r}#D(e){if(!(typeof process<"u"?process.env?.NODE_ENV!=="production":typeof window<"u"&&window.location?.hostname==="localhost"))return;if(!e.allowedOrigins||e.allowedOrigins.length===0)console.warn(`[SignalBus Security] ⚠️ No allowedOrigins specified.
|
|
2
|
+
`+`This bus will REJECT all incoming messages from transports.
|
|
3
|
+
To receive messages, specify allowed origins:
|
|
4
|
+
allowedOrigins: ["https://trusted-domain.com"]
|
|
5
|
+
For development only: allowedOrigins: ["*"]`);if(e.allowedOrigins?.includes("*")){if(console.warn(`[SignalBus Security] ⚠️ allowedOrigins: ["*"] accepts messages from ANY origin.
|
|
6
|
+
`+`This is INSECURE in production. Use specific origins instead:
|
|
7
|
+
allowedOrigins: ["https://trusted-domain.com"]
|
|
8
|
+
For production, use:
|
|
9
|
+
SignalBus.createSecure({ allowedOrigins: ["https://..."] })
|
|
10
|
+
Suppress this warning with NODE_ENV=production`),this.#m)throw Error('strictMode: allowedOrigins: ["*"] is not allowed. Use specific origins for security.')}}#_(e,t,s){let r=this.#p.get(e);if(!r)return{allowed:!0};if(r.allowedPeers&&!r.allowedPeers.includes(t))return{allowed:!1,error:c.from(a.UNAUTHORIZED,{handler:e,peer:t,allowedPeers:r.allowedPeers})};if(r.rateLimit){let i=`${e}:${t}`;if(!this.#C(i,r.rateLimit))return{allowed:!1,error:c.from(a.RATE_LIMITED,{handler:e,peer:t,limit:r.rateLimit})}}if(r.validatePayload)try{if(!r.validatePayload(s))return{allowed:!1,error:c.from(a.INVALID_PAYLOAD,{handler:e})}}catch(i){return{allowed:!1,error:c.from(a.INVALID_PAYLOAD,{handler:e,reason:i?.message??"Validation error"})}}return{allowed:!0}}#C(e,t){let s=Date.now(),r=this.#y.get(e);if(!r||s>=r.resetAt)return this.#y.set(e,{count:1,resetAt:s+1000}),!0;if(r.count>=t)return!1;return r.count++,!0}get maxPayloadSize(){return this.#g}get strictMode(){return this.#m}get debug(){return this.#S}get uptime(){return Date.now()-this.#b}#N(e,t){if(!this.#S)return;let s=e==="out"?"→":e==="in"?"←":e==="warn"?"⚠️":e==="error"?"❌":"ℹ️";console.log(`${this.#w} ${s} ${t}`)}healthCheck(){let e=this.#s.getPeerIds(),t=e.length,s="healthy";if(this.#E)s="unhealthy";else if(t===0&&this.#t)s="degraded";let r;if(typeof process<"u"&&process.memoryUsage)try{let i=process.memoryUsage();r={heapUsed:i.heapUsed,heapTotal:i.heapTotal,rss:i.rss}}catch{}return{status:s,peerId:this.#e,isHub:this.#t,uptime:this.uptime,peers:{total:t,ids:e},handlers:Array.from(this.#o.keys()),pendingRequests:this.#i.size??0,destroyed:this.#E,...r&&{memory:r}}}static createSecure(e={}){if(!e.allowedOrigins||e.allowedOrigins.length===0)throw Error('createSecure() requires allowedOrigins to be specified. For development, use: new SignalBus({ allowedOrigins: ["*"] })');if(e.allowedOrigins.includes("*"))throw Error('createSecure() does not allow wildcard origins. Specify exact origins: allowedOrigins: ["https://example.com"]');return new B({strictMode:!0,maxPayloadSize:1048576,maxPendingRequests:100,requestTimeout:30000,...e})}diagnose(){let e=[],t=[],s=[];if(this.#E)return e.push("Instance is destroyed"),t.push("Create a new SignalBus instance"),{status:"error",issues:e,suggestions:t,warnings:s};let r=this.#s.getPeerIds().length;if(r===0)if(this.#t)s.push("Hub has no connected peers"),t.push("Add transports with addTransport() or wait for agents to connect");else e.push("Agent has no connected peers"),t.push('Add a transport to connect to hub: bus.addTransport(transport, {peerId: "hub"})');let i=this.#o.size;if(this.#t&&i===0)s.push("Hub has no registered handlers"),t.push('Register handlers with bus.handle("name", fn)');let n=this.#i.size??0;if(n>this.#u*0.8)s.push(`High pending request count: ${n}/${this.#u}`),t.push("Consider increasing maxPendingRequests or check for slow handlers");if(!this.#m)s.push("strictMode is disabled"),t.push("For production, use SignalBus.createSecure() or set strictMode: true");let o="healthy";if(e.length>0)o="error";else if(s.length>0)o="warning";return{status:o,peerId:this.#e,isHub:this.#t,peerCount:r,handlerCount:i,pendingRequests:n,uptime:this.uptime,issues:e,warnings:s,suggestions:t}}}class ${#e;#t;#s;#i;#r=0;#n=!1;#a=!1;#o;constructor(e,t,s={}){this.#e=w(),this.#t=t,this.#s=e,this.#i=s.chunkSize??64000,this.#o=s.meta??{}}get streamId(){return this.#e}get name(){return this.#t}async open(e){if(this.#a)return;this.#a=!0,await this.#l({st:"open",name:this.#t,meta:{...this.#o,...e}})}async write(e){if(this.#n)throw Error("Stream already ended");if(!this.#a)await this.open();let t,s=!1;if(e instanceof ArrayBuffer)t=this.#d(new Uint8Array(e)),s=!0;else if(e instanceof Uint8Array)t=this.#d(e),s=!0;else if(typeof e==="string"){let r=this.#h(e,this.#i);for(let i of r)await this.#l({st:"data",seq:this.#r++,d:i,b64:!1});return}else t=JSON.stringify(e);if(s){let r=this.#h(t,this.#i);for(let i of r)await this.#l({st:"data",seq:this.#r++,d:i,b64:!0})}else await this.#l({st:"data",seq:this.#r++,d:t,b64:!1})}async end(e){if(this.#n)return;this.#n=!0,await this.#l({st:"end",seq:this.#r,meta:e})}async abort(e){if(this.#n)return;this.#n=!0,await this.#l({st:"error",reason:e??"Stream aborted"})}async#l(e){let t={[y]:E,t:"stream",sid:this.#e,...e};await this.#s(t)}#h(e,t){let s=[];for(let r=0;r<e.length;r+=t)s.push(e.slice(r,r+t));return s}#d(e){let t="";for(let s=0;s<e.length;s++)t+=String.fromCharCode(e[s]);return btoa(t)}}class V{#e;#t;#s;#i=[];#r=null;#n=!1;#a=null;constructor(e,t,s={}){this.#e=e,this.#t=t,this.#s=s}get streamId(){return this.#e}get name(){return this.#t}get meta(){return this.#s}get ended(){return this.#n}push(e){if(this.#n)return;let t=e.d;if(e.b64)t=this.#o(t);if(this.#i.push(t),this.#r){let s=this.#r;this.#r=null,s()}}end(e){if(this.#n=!0,e)this.#s={...this.#s,...e};if(this.#r){let t=this.#r;this.#r=null,t()}}error(e){if(this.#n=!0,this.#a=Error(e),this.#r){let t=this.#r;this.#r=null,t()}}async*[Symbol.asyncIterator](){while(!0){while(this.#i.length>0)yield this.#i.shift();if(this.#n){if(this.#a)throw this.#a;return}await new Promise((e)=>{this.#r=e})}}async collect(){let e=[],t=!1;for await(let s of this)if(e.push(s),s instanceof Uint8Array)t=!0;if(t){let s=e.reduce((n,o)=>n+o.length,0),r=new Uint8Array(s),i=0;for(let n of e)r.set(n,i),i+=n.length;return r}else return e.join("")}#o(e){let t=atob(e),s=new Uint8Array(t.length);for(let r=0;r<t.length;r++)s[r]=t.charCodeAt(r);return s}}class he{#e=new Map;#t=new Map;#s;constructor(e){this.#s=e}createStream(e,t,s={}){return new $(async(r)=>{await this.#s(t,r)},e,s)}onStream(e,t){return this.#t.set(e,t),()=>this.#t.delete(e)}handleMessage(e,t){if(e.t!=="stream")return;let s=e.sid;switch(e.st){case"open":this.#i(s,e,t);break;case"data":this.#r(s,e);break;case"end":this.#n(s,e);break;case"error":this.#a(s,e);break}}#i(e,t,s){let r=this.#t.get(t.name);if(!r){console.warn(`[SignalBus] No handler for stream: ${t.name}`);return}let i=new V(e,t.name,t.meta);this.#e.set(e,i),r(i).catch((n)=>{console.error("[SignalBus] Stream handler error:",n)})}#r(e,t){let s=this.#e.get(e);if(!s)return;s.push(t)}#n(e,t){let s=this.#e.get(e);if(!s)return;s.end(t.meta),this.#e.delete(e)}#a(e,t){let s=this.#e.get(e);if(!s)return;s.error(t.reason),this.#e.delete(e)}get activeStreamCount(){return this.#e.size}}class ue extends M{#e;#t;#s=new Map;#i;#r;#n=null;#a=null;#o=!1;#l="online";#h={};constructor(e,t){super();if(!t.peerId)throw Error("peerId is required");if(this.#e=t.peerId,this.#t=e,this.#i=t.heartbeatInterval??15000,this.#r=t.timeout??45000,t.autoStart!==!1)this.start()}get peerId(){return this.#e}get status(){return this.#l}get onlineCount(){let e=0;for(let t of this.#s.values())if(t.status!=="offline")e++;return e}start(){if(this.#n)return;this.#u("join"),this.#n=setInterval(()=>{this.#u("heartbeat")},this.#i),this.#a=setInterval(()=>{this.#g()},this.#i)}stop(){if(this.#n)clearInterval(this.#n),this.#n=null;if(this.#a)clearInterval(this.#a),this.#a=null;this.#u("leave")}setStatus(e,t){if(this.#l=e,t)this.#h={...this.#h,...t};this.#u("update")}setMeta(e){this.#h={...this.#h,...e},this.#u("update")}getOnlinePeers(){let e=[];for(let[t,s]of this.#s)if(s.status!=="offline")e.push(t);return e}getAllPeers(){return Array.from(this.#s.values())}getPeer(e){return this.#s.get(e)}isOnline(e){let t=this.#s.get(e);return t?t.status!=="offline":!1}handleMessage(e,t){if(e.t!=="presence")return;if(t===this.#e)return;let{pt:s,status:r,meta:i}=e,n=Date.now();switch(s){case"join":this.#d(t,r,i,n),this.#u("heartbeat");break;case"leave":this.#f(t);break;case"heartbeat":case"update":this.#c(t,r,i,n);break}}#d(e,t,s,r){let i=!this.#s.has(e);if(this.#s.set(e,{peerId:e,status:t??"online",lastSeen:r,meta:s??{}}),i)this.emitSync("join",{peerId:e,meta:s})}#f(e){let t=this.#s.get(e);if(!t)return;t.status="offline",this.#s.delete(e),this.emitSync("leave",{peerId:e})}#c(e,t,s,r){let i=this.#s.get(e),n=!i||i.status==="offline";if(!i)i={peerId:e,status:t??"online",lastSeen:r,meta:s??{}},this.#s.set(e,i);else{if(i.lastSeen=r,t)i.status=t;if(s)i.meta={...i.meta,...s}}if(n&&i.status!=="offline")this.emitSync("join",{peerId:e,meta:i.meta});else this.emitSync("update",{peerId:e,peer:i})}#g(){let e=Date.now()-this.#r;for(let[t,s]of this.#s)if(s.lastSeen<e&&s.status!=="offline")s.status="offline",this.#s.delete(t),this.emitSync("leave",{peerId:t})}async#u(e){if(this.#o)return;let t={[y]:E,t:"presence",pt:e,peerId:this.#e,status:this.#l,meta:this.#h,ts:Date.now()};try{await this.#t(t)}catch(s){console.error("[SignalBus] Failed to send presence:",s)}}destroy(){if(this.#o)return;this.#o=!0,this.stop(),this.#s.clear()}get isDestroyed(){return this.#o}}var _={contentType:"application/json",serialize:(e)=>JSON.stringify(e),deserialize:(e)=>JSON.parse(e)},W=new Map;W.set(_.contentType,_);function C(e){return W.get(e)||_}class ce{#e=null;#t;#s;#i;#r;#n;#a=null;#o=null;#l=!1;static isSupported(){return typeof globalThis.postMessage==="function"||typeof Window<"u"}constructor(e,t={}){if(!this.#f(e))throw TypeError("Target must support postMessage");if(this.#e=e,this.#t=t.targetOrigin??"*",this.#s=new Set(t.allowedOrigins??[]),this.#i=t.autoTransfer??!1,this.#n=t.contentType??"application/json",this.#r=C(this.#n),(typeof process<"u"?process.env?.NODE_ENV!=="production":typeof window<"u"&&window.location?.hostname==="localhost")&&this.#t==="*")console.warn(`[SignalBus Security] ⚠️ targetOrigin: "*" broadcasts to ANY window.
|
|
11
|
+
`+`This is INSECURE in production. Use specific origin:
|
|
12
|
+
targetOrigin: "https://iframe-domain.com"
|
|
13
|
+
Suppress this warning with NODE_ENV=production`);this.#o=this.#h.bind(this),this.#u().addEventListener("message",this.#o)}send(e,t){if(this.#l)throw c.from(a.DESTROYED,{context:"PostMessageTransport.send"});if(this.#g())throw c.from(a.PEER_DISCONNECTED,{reason:"Target window is closed"});let s={[y]:E,...e},r=s;if(this.#n!=="application/json")r=this.#r.serialize(s);let i=t;if(this.#i&&!t){if(i=D(e),i.length===0)i=void 0}if(this.#c())this.#e.postMessage(r,i);else this.#e.postMessage(s,this.#t,i)}onMessage(e){if(typeof e!=="function")throw TypeError("Handler must be a function");this.#a=e}offMessage(){this.#a=null}destroy(){if(this.#l)return;if(this.#l=!0,this.#a=null,this.#o)this.#u().removeEventListener("message",this.#o),this.#o=null}get isDestroyed(){return this.#l}get targetOrigin(){return this.#t}#h(e){if(!this.#a)return;let t=e.data;if(!b(t))return;if(e.origin&&!this.#d(e.origin)){console.warn(`[SignalBus] Blocked message from unauthorized origin: ${e.origin}`);return}if(this.#e&&"postMessage"in this.#e&&!this.#c()){if(e.source!==this.#e)return}try{this.#a(t,{origin:e.origin??"worker",source:e.source??e.currentTarget})}catch(s){console.error("[SignalBus] Message handler error:",s)}}#d(e){if(this.#s.size===0)return e===globalThis.location?.origin;if(this.#s.has("*"))return!0;if(this.#s.has(e))return!0;for(let t of this.#s)if(t.includes("*")){if(new RegExp("^"+t.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\\\*/g,"[a-zA-Z0-9.-]{0,253}")+"$").test(e))return!0}return!1}#f(e){if(!e)return!1;return typeof e.postMessage==="function"}#c(){if(typeof Worker<"u"&&this.#e instanceof Worker)return!0;if(typeof ServiceWorker<"u"&&this.#e instanceof ServiceWorker)return!0;if(typeof MessagePort<"u"&&this.#e instanceof MessagePort)return!0;return!1}#g(){if(this.#c())return!1;return this.#e.closed===!0}#u(){if(typeof DedicatedWorkerGlobalScope<"u"&&globalThis instanceof DedicatedWorkerGlobalScope)return globalThis;if(this.#c())return this.#e;if(typeof window<"u")return window;return globalThis}}class Z{#e;#t;#s;#i;#r=null;#n=!1;static isSupported(){return typeof BroadcastChannel<"u"}constructor(e={}){if(!Z.isSupported())throw c.from(a.UNSUPPORTED,{api:"BroadcastChannel"});this.#t=e.channelName??"signalbus:default",this.#e=new BroadcastChannel(this.#t),this.#i=e.contentType??"application/json",this.#s=C(this.#i),this.#e.onmessage=this.#a.bind(this),this.#e.onmessageerror=this.#o.bind(this)}send(e){if(this.#n)throw c.from(a.DESTROYED,{context:"BroadcastChannelTransport.send"});let t={[y]:E,...e},s=t;if(this.#i!=="application/json")s=this.#s.serialize(t);this.#e.postMessage(s)}onMessage(e){if(typeof e!=="function")throw TypeError("Handler must be a function");this.#r=e}offMessage(){this.#r=null}destroy(){if(this.#n)return;if(this.#n=!0,this.#r=null,this.#e)this.#e.close(),this.#e=null}get channelName(){return this.#t}get isDestroyed(){return this.#n}#a(e){if(!this.#r)return;let t=e.data;if(t instanceof ArrayBuffer||t instanceof Uint8Array)try{let s=new TextDecoder().decode(t instanceof ArrayBuffer?new Uint8Array(t):t);t=_.deserialize(s)}catch(s){console.warn("[SignalBus] Failed to deserialize binary message",s);return}if(!b(t))return;try{this.#r(t,{origin:"broadcast"})}catch(s){console.error("[SignalBus] BroadcastChannel handler error:",s)}}#o(e){console.error("[SignalBus] BroadcastChannel message error:",e)}}class H{#e;#t;#s;#i;#r;#n=null;#a=!1;#o;static isSupported(){return typeof MessageChannel<"u"}static fromPort(e,t={}){if(!(e instanceof MessagePort))throw TypeError("Port must be a MessagePort");let s=Object.create(H.prototype);return s.#e=e,s.#t=null,s.#s=t.autoTransfer??!1,s.#r=t.contentType??"application/json",s.#i=C(s.#r),s.#a=!1,s.#o=!1,s.#n=null,s.#e.onmessage=s.#l.bind(s),s.#e.onmessageerror=s.#h.bind(s),s}constructor(e={}){if(!H.isSupported())throw c.from(a.UNSUPPORTED,{api:"MessageChannel"});let t=new MessageChannel;this.#e=t.port1,this.#t=t.port2,this.#s=e.autoTransfer??!1,this.#r=e.contentType??"application/json",this.#i=C(this.#r),this.#o=!0,this.#e.onmessage=this.#l.bind(this),this.#e.onmessageerror=this.#h.bind(this)}get remotePort(){return this.#t}markRemoteTransferred(){this.#t=null}get isInitiator(){return this.#o}send(e,t){if(this.#a)throw c.from(a.DESTROYED,{context:"MessageChannelTransport.send"});let s={[y]:E,...e},r=s;if(this.#r!=="application/json")r=this.#i.serialize(s);let i=t;if(this.#s&&!t){if(i=D(e),i.length===0)i=void 0}this.#e.postMessage(r,i)}onMessage(e){if(typeof e!=="function")throw TypeError("Handler must be a function");this.#n=e}offMessage(){this.#n=null}destroy(){if(this.#a)return;if(this.#a=!0,this.#n=null,this.#e)this.#e.close(),this.#e=null;if(this.#t)this.#t.close(),this.#t=null}get isDestroyed(){return this.#a}#l(e){if(!this.#n)return;let t=e.data;if(!b(t))return;try{this.#n(t,{origin:"channel"})}catch(s){console.error("[SignalBus] MessageChannel handler error:",s)}}#h(e){console.error("[SignalBus] MessageChannel error:",e)}}class ee{#e=null;#t=null;#s;#i=null;#r=!1;static isSupported(){return typeof SharedWorker<"u"}constructor(e={}){if(!ee.isSupported())throw c.from(a.UNSUPPORTED,{api:"SharedWorker"});this.#s=e.workerUrl??"/signalbus-shared-worker.js",this.#e=new SharedWorker(this.#s,e.name),this.#t=this.#e.port,this.#t.onmessage=this.#n.bind(this),this.#t.onmessageerror=this.#a.bind(this),this.#e.onerror=this.#o.bind(this),this.#t.start()}send(e,t){if(this.#r)throw c.from(a.DESTROYED,{context:"SharedWorkerTransport.send"});let s={[y]:E,...e};if(!this.#t)return;if(t&&t.length>0)this.#t.postMessage(s,t);else this.#t.postMessage(s)}onMessage(e){if(typeof e!=="function")throw TypeError("Handler must be a function");this.#i=e}offMessage(){this.#i=null}destroy(){if(this.#r)return;if(this.#r=!0,this.#i=null,this.#t)this.#t.close(),this.#t=null;this.#e=null}get workerUrl(){return this.#s}get isDestroyed(){return this.#r}#n(e){if(!this.#i)return;if(!b(e.data))return;try{this.#i(e.data,{origin:"sharedworker"})}catch(t){console.error("[SignalBus] SharedWorker handler error:",t)}}#a(e){console.error("[SignalBus] SharedWorker message error:",e)}#o(e){console.error("[SignalBus] SharedWorker error:",e.message)}}class te{#e=null;#t=null;#s=!1;#i;#r=null;static isSupported(){return typeof navigator<"u"&&"serviceWorker"in navigator}constructor(e={}){if(!te.isSupported())throw c.from(a.UNSUPPORTED,{api:"ServiceWorker"});this.#i=this.#n()}get ready(){return this.#i}async#n(){let e=await navigator.serviceWorker.ready;this.#e=e.active||navigator.serviceWorker.controller,this.#r=this.#a.bind(this),navigator.serviceWorker.addEventListener("message",this.#r)}send(e,t){if(this.#s)throw c.from(a.DESTROYED,{context:"ServiceWorkerTransport.send"});if(!this.#e)throw c.from(a.NOT_CONNECTED,{context:"ServiceWorkerTransport.send",reason:"No active ServiceWorker"});let s={[y]:E,...e};if(t&&t.length>0)this.#e.postMessage(s,t);else this.#e.postMessage(s)}onMessage(e){if(typeof e!=="function")throw TypeError("Handler must be a function");this.#t=e}offMessage(){this.#t=null}destroy(){if(this.#s)return;if(this.#s=!0,this.#t=null,this.#r)navigator.serviceWorker.removeEventListener("message",this.#r),this.#r=null;this.#e=null}get isDestroyed(){return this.#s}#a(e){if(!this.#t)return;if(!b(e.data))return;try{this.#t(e.data,{origin:"serviceworker"})}catch(t){console.error("[SignalBus] ServiceWorker handler error:",t)}}}class L{#e="none";#t;#s;#i=null;#r=!1;#n=!1;#a=[];#o;#l=null;#h;#d;#f;static detectBridge(){if(globalThis.SignalBus&&typeof globalThis.SignalBus.postMessage==="function")return"android";if(globalThis.AndroidBridge&&typeof globalThis.AndroidBridge.postMessage==="function")return"android";if(globalThis.webkit?.messageHandlers?.signalbus)return"ios";return"none"}static isSupported(){return L.detectBridge()!=="none"}constructor(e={}){this.#t=e.androidInterface??"SignalBus",this.#s=e.iosHandler??"signalbus",this.#o=e.queueWhileInit??!0,this.#h=e.heartbeatInterval??30000,this.#d=new Promise((t)=>{this.#f=t}),this.#c(e.initTimeout??5000)}async#c(e){let t=Date.now(),s=()=>{if(this.#e=L.detectBridge(),this.#e!=="none"){this.#g();return}if(Date.now()-t<e)setTimeout(s,50);else console.warn("[SignalBus] No native bridge detected after timeout"),this.#n=!0,this.#f?.()};s(),this.#u()}#g(){if(this.#n=!0,this.#f?.(),this.#y(),this.#h>0)this.#p()}#u(){globalThis.__signalbus_receive__=(e)=>{if(this.#r||!this.#i)return;try{let t=typeof e==="string"?JSON.parse(e):e;if(!b(t))return;this.#i(t,{bridgeType:this.#e})}catch(t){console.error("[SignalBus] Failed to parse native message:",t)}}}send(e){if(this.#r)throw c.from(a.DESTROYED,{context:"NativeBridgeTransport.send"});let t={[y]:E,...e};if(!this.#n&&this.#o){this.#a.push(t);return}this.#m(t)}#m(e){let t=JSON.stringify(e);try{if(this.#e==="android"){let s=globalThis[this.#t]||globalThis.AndroidBridge;if(s?.postMessage)s.postMessage(t)}else if(this.#e==="ios"){let s=globalThis.webkit?.messageHandlers?.[this.#s];if(s?.postMessage)s.postMessage(e)}}catch(s){console.error("[SignalBus] Failed to send to native:",s)}}#y(){while(this.#a.length>0){let e=this.#a.shift();this.#m(e)}}#p(){this.#l=setInterval(()=>{if(this.#r)return;this.#m({[y]:E,t:"hb",ts:Date.now()})},this.#h)}onMessage(e){if(typeof e!=="function")throw TypeError("Handler must be a function");this.#i=e}offMessage(){this.#i=null}destroy(){if(this.#r)return;if(this.#r=!0,this.#i=null,this.#a=[],this.#l)clearInterval(this.#l),this.#l=null;delete globalThis.__signalbus_receive__}get isDestroyed(){return this.#r}get bridgeType(){return this.#e}get isReady(){return this.#n}get ready(){return this.#d}}class de{#e;#t;#s=null;#i;#r;#n;#a;#o;#l=null;#h=null;#d=null;#f=null;#c="disconnected";#g=[];#u=!1;constructor(e){this.#e=e.url,this.#t=e.peerId??w(),this.#i=e.autoReconnect??!0,this.#r=e.reconnectDelayMs??1000,this.#n=e.maxReconnectDelayMs??30000,this.#a=this.#r,this.#o=e.heartbeatIntervalMs??30000}get peerId(){return this.#t}get state(){return this.#c}get isConnected(){return this.#c==="connected"&&this.#s?.readyState===WebSocket.OPEN}async connect(){if(this.#s&&this.#s.readyState===WebSocket.OPEN)return;return this.#u=!1,this.#p("connecting"),new Promise((e,t)=>{try{this.#s=new WebSocket(this.#e),this.#s.onopen=()=>{this.#p("connected"),this.#a=this.#r,this.#y(),this.#S(),e()},this.#s.onmessage=(s)=>{this.#m(s)},this.#s.onclose=(s)=>{if(this.#w(),this.#p("disconnected"),!this.#u&&this.#i)this.#b()},this.#s.onerror=(s)=>{if(this.#p("error"),this.#c==="connecting")t(Error("WebSocket connection failed"))}}catch(s){this.#p("error"),t(s)}})}disconnect(){if(this.#u=!0,this.#w(),this.#h)clearTimeout(this.#h),this.#h=null;if(this.#s)this.#s.close(1000,"Client disconnect"),this.#s=null;this.#p("disconnected")}send(e){let t={_sb:E,_m:y,id:w(),from:this.#t,timestamp:Date.now(),...e};if(this.isConnected&&this.#s)return this.#s.send(JSON.stringify(t)),!0;else return this.#g.push(t),!1}onMessage(e){this.#d=e}onStateChange(e){this.#f=e}#m(e){try{let t=JSON.parse(e.data);if(t.type==="pong")return;if(this.#d)this.#d(t)}catch(t){console.error("[WebSocketTransport] Failed to parse message:",t)}}#y(){while(this.#g.length>0&&this.isConnected&&this.#s){let e=this.#g.shift();if(e)this.#s.send(JSON.stringify(e))}}#p(e){if(this.#c!==e){if(this.#c=e,this.#f)this.#f(e)}}#S(){if(this.#o<=0)return;this.#l=setInterval(()=>{if(this.isConnected&&this.#s)this.#s.send(JSON.stringify({type:"ping",from:this.#t}))},this.#o)}#w(){if(this.#l)clearInterval(this.#l),this.#l=null}#b(){if(this.#h)return;this.#h=setTimeout(async()=>{this.#h=null;try{await this.connect()}catch{if(this.#a=Math.min(this.#a*2,this.#n),this.#i&&!this.#u)this.#b()}},this.#a)}destroy(){this.disconnect(),this.#d=null,this.#f=null,this.#g=[]}}class I{#e;#t;constructor(e,t={}){if(this.#e=e,this.#t=new Map(Object.entries(t)),!this.#t.has(e))this.#t.set(e,0)}get ownId(){return this.#e}get(e){return this.#t.get(e)??0}tick(){let e=this.get(this.#e)+1;return this.#t.set(this.#e,e),e}update(e){for(let[t,s]of e.#t){let r=this.get(t);if(s>r)this.#t.set(t,s)}}happenedBefore(e){let t=!1,s=new Set([...this.#t.keys(),...e.#t.keys()]);for(let r of s){let i=this.get(r),n=e.get(r);if(i>n)return!1;if(i<n)t=!0}return t}isConcurrentWith(e){return!this.happenedBefore(e)&&!e.happenedBefore(this)&&!this.equals(e)}equals(e){let t=new Set([...this.#t.keys(),...e.#t.keys()]);for(let s of t)if(this.get(s)!==e.get(s))return!1;return!0}canDeliver(e,t){let s=e.get(t),r=this.get(t);if(s!==r+1)return!1;for(let[i,n]of e.#t){if(i===t)continue;if(n>this.get(i))return!1}return!0}clone(){let e=Object.fromEntries(this.#t);return new I(this.#e,e)}toJSON(){return{ownId:this.#e,counters:Object.fromEntries(this.#t)}}static fromJSON(e){return new I(e.ownId,e.counters)}toString(){let e=[...this.#t.entries()].map(([t,s])=>`${t}:${s}`).join(", ");return`VectorClock(${this.#e}){${e}}`}}class fe{#e;#t;#s;#i;#r;#n;constructor(e,t={}){this.#e=e,this.#t=new I(e),this.#s=[],this.#i=t.onDeliver||(()=>{}),this.#r=t.maxBufferSize??1000,this.#n=t.onBufferOverflow||null}get ownId(){return this.#e}get bufferSize(){return this.#s.length}receive(e,t){let s=I.fromJSON(t.clock);if(this.#t.canDeliver(s,e))this.#a(e,t,s),this.#l();else this.#o(e,t,s)}#a(e,t,s){this.#t.update(s),this.#i(t)}#o(e,t,s){if(this.#s.length>=this.#r){if(this.#n)this.#n({senderId:e,message:t,bufferSize:this.#s.length});return}this.#s.push({senderId:e,message:t,clock:s})}#l(){let e=!0;while(e){e=!1;for(let t=this.#s.length-1;t>=0;t--){let{senderId:s,message:r,clock:i}=this.#s[t];if(this.#t.canDeliver(i,s))this.#s.splice(t,1),this.#a(s,r,i),e=!0}}}tick(){return this.#t.tick(),this.#t.clone()}getVectorClock(){return this.#t.clone()}clear(){this.#s=[]}}var ge="3.5.14",A="__MICROUI_SIGNALBUS__",S=typeof window<"u"?window:globalThis,pe=["ui:toast","ui:modal","ui:theme","ui:tabs","ui:dropdown","ui:form","ui:grid","ui:stack","ui:virtual-list"],me={type:"ui-framework",version:ge,description:"AI-Optimized UI Framework - Web Components Edition"};if(!S[A])S[A]=new B({peerId:"microui",isHub:!0,requestTimeout:5000,capabilities:pe,meta:me}),S[A].setMaxListeners(100);var p=S[A],x="__MICROUI_COMPONENT_REGISTRY__";if(!S[x])S[x]=new Map;var Ee=S[x],v={on(e,t){let s=p.on(e,(r)=>{t(r.data??r)});return()=>s.unsubscribe()},once(e,t){let s=this.on(e,(r)=>{s(),t(r)})},off(e,t){p.off(e,t)},emit(e,t){return p.emitSync(e,t)},async emitAsync(e,t){return p.emit(e,t)},signal(e,t){p.signal(e,t)},async request(e,t,s){return p.request(e,t,s)},async broadcastRequest(e,t){return p.broadcastRequest(e,t)},handle(e,t){return p.handle(e,t)},unhandle(e){p.unhandle(e)},destroy(){p.destroy()},setMaxListeners(e){p.setMaxListeners(e)},get peerId(){return p.peerId},get peers(){return p.peers},get peerCount(){return p.peerCount},hasListeners(e){return p.hasListeners(e)},get raw(){return p}},N={TOAST_SHOW:"ui:toast:show",TOAST_DISMISS:"ui:toast:dismiss",MODAL_OPEN:"ui:modal:open",MODAL_CLOSE:"ui:modal:close",THEME_CHANGE:"ui:theme:change",TAB_CHANGE:"ui:tab:change",DROPDOWN_SELECT:"ui:dropdown:select",FORM_SUBMIT:"ui:form:submit",FORM_VALIDATE:"ui:form:validate"},se=(e,t)=>{Ee.set(e,{...t,registeredAt:Date.now()})};class re extends X{static baseClass="mu-toast";static cssFile="snackbar";static observedAttributes=["severity","duration","position"];#e=null;#t=null;connectedCallback(){if(!this.#t&&!this.querySelector(".mu-toast__content"))this.#t=this.innerHTML;super.connectedCallback(),this.addEventListener("click",(t)=>{if(t.target.classList.contains("mu-toast__close"))this.dismiss()});let e=parseInt(this.attr("duration","3000"));if(e>0)this.#e=setTimeout(()=>this.dismiss(),e)}disconnectedCallback(){if(this.#e)clearTimeout(this.#e)}render(){if(this.querySelector(".mu-toast__content")){this.#s();return}let e=this.#t||"";this.innerHTML=`
|
|
14
|
+
<span class="mu-toast__content">${e}</span>
|
|
15
|
+
<button class="mu-toast__close" aria-label="Dismiss">✕</button>
|
|
16
|
+
`,this.#s()}update(e,t,s){this.#s()}#s(){let e=this.attr("severity","info"),t=this.attr("position","bottom-center");this.className=`mu-toast mu-toast--${e} mu-toast--${t}`}dismiss(){this.emit("mu-dismiss"),this.classList.add("is-exiting"),setTimeout(()=>this.remove(),200)}}J("mu-toast",re);class ie extends X{static baseClass="mu-toast-container";connectedCallback(){super.connectedCallback(),this.setAttribute("role","status"),this.setAttribute("aria-live","polite")}}J("mu-toast-container",ie);var ye={show(e,t={}){let s=t.position||"bottom-center",r=document.querySelector(`mu-toast-container[position="${s}"]`);if(!r)r=document.createElement("mu-toast-container"),r.setAttribute("position",s),document.body.appendChild(r);let i=document.createElement("mu-toast");if(i.textContent=e,t.severity)i.setAttribute("severity",t.severity);if(t.duration)i.setAttribute("duration",t.duration.toString());return r.appendChild(i),i}};if(typeof window<"u"&&v&&!v.hasListeners(N.TOAST_SHOW))v.on(N.TOAST_SHOW,(e)=>{ye.show(e.message,e)});se("mu-toast",{signals:[N.TOAST_SHOW,N.TOAST_DISMISS],options:{severities:["info","success","warning","error"],positions:["top-left","top-center","top-right","bottom-left","bottom-center","bottom-right"],defaultDuration:3000},description:"MD3 Snackbar/Toast Notification component"});
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/bun.lock
ADDED
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockfileVersion": 1,
|
|
3
|
+
"configVersion": 1,
|
|
4
|
+
"workspaces": {
|
|
5
|
+
"": {
|
|
6
|
+
"name": "microui",
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"cbor-x": "^1.6.0",
|
|
9
|
+
"crossbus": "^0.1.0",
|
|
10
|
+
},
|
|
11
|
+
"devDependencies": {
|
|
12
|
+
"bun-types": "latest",
|
|
13
|
+
"jsdom": "^27.4.0",
|
|
14
|
+
"linkedom": "^0.18.5",
|
|
15
|
+
"puppeteer-core": "^24.0.0",
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
"packages": {
|
|
20
|
+
"@acemir/cssom": ["@acemir/cssom@0.9.31", "", {}, "sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA=="],
|
|
21
|
+
|
|
22
|
+
"@asamuzakjp/css-color": ["@asamuzakjp/css-color@4.1.1", "", { "dependencies": { "@csstools/css-calc": "^2.1.4", "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", "lru-cache": "^11.2.4" } }, "sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ=="],
|
|
23
|
+
|
|
24
|
+
"@asamuzakjp/dom-selector": ["@asamuzakjp/dom-selector@6.7.7", "", { "dependencies": { "@asamuzakjp/nwsapi": "^2.3.9", "bidi-js": "^1.0.3", "css-tree": "^3.1.0", "is-potential-custom-element-name": "^1.0.1", "lru-cache": "^11.2.5" } }, "sha512-8CO/UQ4tzDd7ula+/CVimJIVWez99UJlbMyIgk8xOnhAVPKLnBZmUFYVgugS441v2ZqUq5EnSh6B0Ua0liSFAA=="],
|
|
25
|
+
|
|
26
|
+
"@asamuzakjp/nwsapi": ["@asamuzakjp/nwsapi@2.3.9", "", {}, "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q=="],
|
|
27
|
+
|
|
28
|
+
"@cbor-extract/cbor-extract-darwin-arm64": ["@cbor-extract/cbor-extract-darwin-arm64@2.2.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w=="],
|
|
29
|
+
|
|
30
|
+
"@cbor-extract/cbor-extract-darwin-x64": ["@cbor-extract/cbor-extract-darwin-x64@2.2.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w=="],
|
|
31
|
+
|
|
32
|
+
"@cbor-extract/cbor-extract-linux-arm": ["@cbor-extract/cbor-extract-linux-arm@2.2.0", "", { "os": "linux", "cpu": "arm" }, "sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q=="],
|
|
33
|
+
|
|
34
|
+
"@cbor-extract/cbor-extract-linux-arm64": ["@cbor-extract/cbor-extract-linux-arm64@2.2.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ=="],
|
|
35
|
+
|
|
36
|
+
"@cbor-extract/cbor-extract-linux-x64": ["@cbor-extract/cbor-extract-linux-x64@2.2.0", "", { "os": "linux", "cpu": "x64" }, "sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw=="],
|
|
37
|
+
|
|
38
|
+
"@cbor-extract/cbor-extract-win32-x64": ["@cbor-extract/cbor-extract-win32-x64@2.2.0", "", { "os": "win32", "cpu": "x64" }, "sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w=="],
|
|
39
|
+
|
|
40
|
+
"@csstools/color-helpers": ["@csstools/color-helpers@5.1.0", "", {}, "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA=="],
|
|
41
|
+
|
|
42
|
+
"@csstools/css-calc": ["@csstools/css-calc@2.1.4", "", { "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ=="],
|
|
43
|
+
|
|
44
|
+
"@csstools/css-color-parser": ["@csstools/css-color-parser@3.1.0", "", { "dependencies": { "@csstools/color-helpers": "^5.1.0", "@csstools/css-calc": "^2.1.4" }, "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA=="],
|
|
45
|
+
|
|
46
|
+
"@csstools/css-parser-algorithms": ["@csstools/css-parser-algorithms@3.0.5", "", { "peerDependencies": { "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ=="],
|
|
47
|
+
|
|
48
|
+
"@csstools/css-syntax-patches-for-csstree": ["@csstools/css-syntax-patches-for-csstree@1.0.26", "", {}, "sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA=="],
|
|
49
|
+
|
|
50
|
+
"@csstools/css-tokenizer": ["@csstools/css-tokenizer@3.0.4", "", {}, "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw=="],
|
|
51
|
+
|
|
52
|
+
"@exodus/bytes": ["@exodus/bytes@1.11.0", "", { "peerDependencies": { "@noble/hashes": "^1.8.0 || ^2.0.0" }, "optionalPeers": ["@noble/hashes"] }, "sha512-wO3vd8nsEHdumsXrjGO/v4p6irbg7hy9kvIeR6i2AwylZSk4HJdWgL0FNaVquW1+AweJcdvU1IEpuIWk/WaPnA=="],
|
|
53
|
+
|
|
54
|
+
"@puppeteer/browsers": ["@puppeteer/browsers@2.11.2", "", { "dependencies": { "debug": "^4.4.3", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", "semver": "^7.7.3", "tar-fs": "^3.1.1", "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" } }, "sha512-GBY0+2lI9fDrjgb5dFL9+enKXqyOPok9PXg/69NVkjW3bikbK9RQrNrI3qccQXmDNN7ln4j/yL89Qgvj/tfqrw=="],
|
|
55
|
+
|
|
56
|
+
"@tootallnate/quickjs-emscripten": ["@tootallnate/quickjs-emscripten@0.23.0", "", {}, "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA=="],
|
|
57
|
+
|
|
58
|
+
"@types/node": ["@types/node@25.2.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w=="],
|
|
59
|
+
|
|
60
|
+
"@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="],
|
|
61
|
+
|
|
62
|
+
"agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
|
|
63
|
+
|
|
64
|
+
"ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
|
|
65
|
+
|
|
66
|
+
"ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
|
|
67
|
+
|
|
68
|
+
"ast-types": ["ast-types@0.13.4", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w=="],
|
|
69
|
+
|
|
70
|
+
"b4a": ["b4a@1.7.3", "", { "peerDependencies": { "react-native-b4a": "*" }, "optionalPeers": ["react-native-b4a"] }, "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q=="],
|
|
71
|
+
|
|
72
|
+
"bare-events": ["bare-events@2.8.2", "", { "peerDependencies": { "bare-abort-controller": "*" }, "optionalPeers": ["bare-abort-controller"] }, "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ=="],
|
|
73
|
+
|
|
74
|
+
"bare-fs": ["bare-fs@4.5.3", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4", "bare-url": "^2.2.2", "fast-fifo": "^1.3.2" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-9+kwVx8QYvt3hPWnmb19tPnh38c6Nihz8Lx3t0g9+4GoIf3/fTgYwM4Z6NxgI+B9elLQA7mLE9PpqcWtOMRDiQ=="],
|
|
75
|
+
|
|
76
|
+
"bare-os": ["bare-os@3.6.2", "", {}, "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A=="],
|
|
77
|
+
|
|
78
|
+
"bare-path": ["bare-path@3.0.0", "", { "dependencies": { "bare-os": "^3.0.1" } }, "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw=="],
|
|
79
|
+
|
|
80
|
+
"bare-stream": ["bare-stream@2.7.0", "", { "dependencies": { "streamx": "^2.21.0" }, "peerDependencies": { "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-buffer", "bare-events"] }, "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A=="],
|
|
81
|
+
|
|
82
|
+
"bare-url": ["bare-url@2.3.2", "", { "dependencies": { "bare-path": "^3.0.0" } }, "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw=="],
|
|
83
|
+
|
|
84
|
+
"basic-ftp": ["basic-ftp@5.1.0", "", {}, "sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw=="],
|
|
85
|
+
|
|
86
|
+
"bidi-js": ["bidi-js@1.0.3", "", { "dependencies": { "require-from-string": "^2.0.2" } }, "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw=="],
|
|
87
|
+
|
|
88
|
+
"boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="],
|
|
89
|
+
|
|
90
|
+
"buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="],
|
|
91
|
+
|
|
92
|
+
"bun-types": ["bun-types@1.3.8", "", { "dependencies": { "@types/node": "*" } }, "sha512-fL99nxdOWvV4LqjmC+8Q9kW3M4QTtTR1eePs94v5ctGqU8OeceWrSUaRw3JYb7tU3FkMIAjkueehrHPPPGKi5Q=="],
|
|
93
|
+
|
|
94
|
+
"cbor-extract": ["cbor-extract@2.2.0", "", { "dependencies": { "node-gyp-build-optional-packages": "5.1.1" }, "optionalDependencies": { "@cbor-extract/cbor-extract-darwin-arm64": "2.2.0", "@cbor-extract/cbor-extract-darwin-x64": "2.2.0", "@cbor-extract/cbor-extract-linux-arm": "2.2.0", "@cbor-extract/cbor-extract-linux-arm64": "2.2.0", "@cbor-extract/cbor-extract-linux-x64": "2.2.0", "@cbor-extract/cbor-extract-win32-x64": "2.2.0" }, "bin": { "download-cbor-prebuilds": "bin/download-prebuilds.js" } }, "sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA=="],
|
|
95
|
+
|
|
96
|
+
"cbor-x": ["cbor-x@1.6.0", "", { "optionalDependencies": { "cbor-extract": "^2.2.0" } }, "sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg=="],
|
|
97
|
+
|
|
98
|
+
"chromium-bidi": ["chromium-bidi@13.0.1", "", { "dependencies": { "mitt": "^3.0.1", "zod": "^3.24.1" }, "peerDependencies": { "devtools-protocol": "*" } }, "sha512-c+RLxH0Vg2x2syS9wPw378oJgiJNXtYXUvnVAldUlt5uaHekn0CCU7gPksNgHjrH1qFhmjVXQj4esvuthuC7OQ=="],
|
|
99
|
+
|
|
100
|
+
"cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
|
|
101
|
+
|
|
102
|
+
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
|
|
103
|
+
|
|
104
|
+
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
|
|
105
|
+
|
|
106
|
+
"crossbus": ["crossbus@0.1.0", "", {}, "sha512-2PKPTeiM1IByhmESURdL5Ugqio+n0ybrDFgXJU6lqQa2iTfHozILQhqPLQ5BFAXTT5xXRQVsgqYOblUQTpagJw=="],
|
|
107
|
+
|
|
108
|
+
"css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="],
|
|
109
|
+
|
|
110
|
+
"css-tree": ["css-tree@3.1.0", "", { "dependencies": { "mdn-data": "2.12.2", "source-map-js": "^1.0.1" } }, "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w=="],
|
|
111
|
+
|
|
112
|
+
"css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="],
|
|
113
|
+
|
|
114
|
+
"cssom": ["cssom@0.5.0", "", {}, "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw=="],
|
|
115
|
+
|
|
116
|
+
"cssstyle": ["cssstyle@5.3.7", "", { "dependencies": { "@asamuzakjp/css-color": "^4.1.1", "@csstools/css-syntax-patches-for-csstree": "^1.0.21", "css-tree": "^3.1.0", "lru-cache": "^11.2.4" } }, "sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ=="],
|
|
117
|
+
|
|
118
|
+
"data-uri-to-buffer": ["data-uri-to-buffer@6.0.2", "", {}, "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw=="],
|
|
119
|
+
|
|
120
|
+
"data-urls": ["data-urls@6.0.1", "", { "dependencies": { "whatwg-mimetype": "^5.0.0", "whatwg-url": "^15.1.0" } }, "sha512-euIQENZg6x8mj3fO6o9+fOW8MimUI4PpD/fZBhJfeioZVy9TUpM4UY7KjQNVZFlqwJ0UdzRDzkycB997HEq1BQ=="],
|
|
121
|
+
|
|
122
|
+
"debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
|
|
123
|
+
|
|
124
|
+
"decimal.js": ["decimal.js@10.6.0", "", {}, "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg=="],
|
|
125
|
+
|
|
126
|
+
"degenerator": ["degenerator@5.0.1", "", { "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", "esprima": "^4.0.1" } }, "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ=="],
|
|
127
|
+
|
|
128
|
+
"detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="],
|
|
129
|
+
|
|
130
|
+
"devtools-protocol": ["devtools-protocol@0.0.1551306", "", {}, "sha512-CFx8QdSim8iIv+2ZcEOclBKTQY6BI1IEDa7Tm9YkwAXzEWFndTEzpTo5jAUhSnq24IC7xaDw0wvGcm96+Y3PEg=="],
|
|
131
|
+
|
|
132
|
+
"dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="],
|
|
133
|
+
|
|
134
|
+
"domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="],
|
|
135
|
+
|
|
136
|
+
"domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="],
|
|
137
|
+
|
|
138
|
+
"domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="],
|
|
139
|
+
|
|
140
|
+
"emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
|
|
141
|
+
|
|
142
|
+
"end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="],
|
|
143
|
+
|
|
144
|
+
"entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="],
|
|
145
|
+
|
|
146
|
+
"escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="],
|
|
147
|
+
|
|
148
|
+
"escodegen": ["escodegen@2.1.0", "", { "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2" }, "optionalDependencies": { "source-map": "~0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="],
|
|
149
|
+
|
|
150
|
+
"esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="],
|
|
151
|
+
|
|
152
|
+
"estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="],
|
|
153
|
+
|
|
154
|
+
"esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="],
|
|
155
|
+
|
|
156
|
+
"events-universal": ["events-universal@1.0.1", "", { "dependencies": { "bare-events": "^2.7.0" } }, "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw=="],
|
|
157
|
+
|
|
158
|
+
"extract-zip": ["extract-zip@2.0.1", "", { "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "optionalDependencies": { "@types/yauzl": "^2.9.1" }, "bin": { "extract-zip": "cli.js" } }, "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg=="],
|
|
159
|
+
|
|
160
|
+
"fast-fifo": ["fast-fifo@1.3.2", "", {}, "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="],
|
|
161
|
+
|
|
162
|
+
"fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="],
|
|
163
|
+
|
|
164
|
+
"get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="],
|
|
165
|
+
|
|
166
|
+
"get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="],
|
|
167
|
+
|
|
168
|
+
"get-uri": ["get-uri@6.0.5", "", { "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4" } }, "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg=="],
|
|
169
|
+
|
|
170
|
+
"html-encoding-sniffer": ["html-encoding-sniffer@6.0.0", "", { "dependencies": { "@exodus/bytes": "^1.6.0" } }, "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg=="],
|
|
171
|
+
|
|
172
|
+
"html-escaper": ["html-escaper@3.0.3", "", {}, "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ=="],
|
|
173
|
+
|
|
174
|
+
"htmlparser2": ["htmlparser2@10.1.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.2.2", "entities": "^7.0.1" } }, "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ=="],
|
|
175
|
+
|
|
176
|
+
"http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="],
|
|
177
|
+
|
|
178
|
+
"https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],
|
|
179
|
+
|
|
180
|
+
"ip-address": ["ip-address@10.1.0", "", {}, "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q=="],
|
|
181
|
+
|
|
182
|
+
"is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
|
|
183
|
+
|
|
184
|
+
"is-potential-custom-element-name": ["is-potential-custom-element-name@1.0.1", "", {}, "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="],
|
|
185
|
+
|
|
186
|
+
"jsdom": ["jsdom@27.4.0", "", { "dependencies": { "@acemir/cssom": "^0.9.28", "@asamuzakjp/dom-selector": "^6.7.6", "@exodus/bytes": "^1.6.0", "cssstyle": "^5.3.4", "data-urls": "^6.0.0", "decimal.js": "^10.6.0", "html-encoding-sniffer": "^6.0.0", "http-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.6", "is-potential-custom-element-name": "^1.0.1", "parse5": "^8.0.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^6.0.0", "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^8.0.0", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^15.1.0", "ws": "^8.18.3", "xml-name-validator": "^5.0.0" }, "peerDependencies": { "canvas": "^3.0.0" }, "optionalPeers": ["canvas"] }, "sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ=="],
|
|
187
|
+
|
|
188
|
+
"linkedom": ["linkedom@0.18.12", "", { "dependencies": { "css-select": "^5.1.0", "cssom": "^0.5.0", "html-escaper": "^3.0.3", "htmlparser2": "^10.0.0", "uhyphen": "^0.2.0" }, "peerDependencies": { "canvas": ">= 2" }, "optionalPeers": ["canvas"] }, "sha512-jalJsOwIKuQJSeTvsgzPe9iJzyfVaEJiEXl+25EkKevsULHvMJzpNqwvj1jOESWdmgKDiXObyjOYwlUqG7wo1Q=="],
|
|
189
|
+
|
|
190
|
+
"lru-cache": ["lru-cache@11.2.5", "", {}, "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw=="],
|
|
191
|
+
|
|
192
|
+
"mdn-data": ["mdn-data@2.12.2", "", {}, "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA=="],
|
|
193
|
+
|
|
194
|
+
"mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="],
|
|
195
|
+
|
|
196
|
+
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
|
197
|
+
|
|
198
|
+
"netmask": ["netmask@2.0.2", "", {}, "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="],
|
|
199
|
+
|
|
200
|
+
"node-gyp-build-optional-packages": ["node-gyp-build-optional-packages@5.1.1", "", { "dependencies": { "detect-libc": "^2.0.1" }, "bin": { "node-gyp-build-optional-packages": "bin.js", "node-gyp-build-optional-packages-test": "build-test.js", "node-gyp-build-optional-packages-optional": "optional.js" } }, "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw=="],
|
|
201
|
+
|
|
202
|
+
"nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="],
|
|
203
|
+
|
|
204
|
+
"once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
|
|
205
|
+
|
|
206
|
+
"pac-proxy-agent": ["pac-proxy-agent@7.2.0", "", { "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", "socks-proxy-agent": "^8.0.5" } }, "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA=="],
|
|
207
|
+
|
|
208
|
+
"pac-resolver": ["pac-resolver@7.0.1", "", { "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" } }, "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg=="],
|
|
209
|
+
|
|
210
|
+
"parse5": ["parse5@8.0.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA=="],
|
|
211
|
+
|
|
212
|
+
"pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="],
|
|
213
|
+
|
|
214
|
+
"progress": ["progress@2.0.3", "", {}, "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="],
|
|
215
|
+
|
|
216
|
+
"proxy-agent": ["proxy-agent@6.5.0", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "http-proxy-agent": "^7.0.1", "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", "socks-proxy-agent": "^8.0.5" } }, "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A=="],
|
|
217
|
+
|
|
218
|
+
"proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="],
|
|
219
|
+
|
|
220
|
+
"pump": ["pump@3.0.3", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA=="],
|
|
221
|
+
|
|
222
|
+
"punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
|
|
223
|
+
|
|
224
|
+
"puppeteer-core": ["puppeteer-core@24.36.1", "", { "dependencies": { "@puppeteer/browsers": "2.11.2", "chromium-bidi": "13.0.1", "debug": "^4.4.3", "devtools-protocol": "0.0.1551306", "typed-query-selector": "^2.12.0", "webdriver-bidi-protocol": "0.4.0", "ws": "^8.19.0" } }, "sha512-L7ykMWc3lQf3HS7ME3PSjp7wMIjJeW6+bKfH/RSTz5l6VUDGubnrC2BKj3UvM28Y5PMDFW0xniJOZHBZPpW1dQ=="],
|
|
225
|
+
|
|
226
|
+
"require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="],
|
|
227
|
+
|
|
228
|
+
"require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="],
|
|
229
|
+
|
|
230
|
+
"saxes": ["saxes@6.0.0", "", { "dependencies": { "xmlchars": "^2.2.0" } }, "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA=="],
|
|
231
|
+
|
|
232
|
+
"semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="],
|
|
233
|
+
|
|
234
|
+
"smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="],
|
|
235
|
+
|
|
236
|
+
"socks": ["socks@2.8.7", "", { "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" } }, "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A=="],
|
|
237
|
+
|
|
238
|
+
"socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="],
|
|
239
|
+
|
|
240
|
+
"source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="],
|
|
241
|
+
|
|
242
|
+
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
|
|
243
|
+
|
|
244
|
+
"streamx": ["streamx@2.23.0", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg=="],
|
|
245
|
+
|
|
246
|
+
"string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
|
|
247
|
+
|
|
248
|
+
"strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
|
|
249
|
+
|
|
250
|
+
"symbol-tree": ["symbol-tree@3.2.4", "", {}, "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="],
|
|
251
|
+
|
|
252
|
+
"tar-fs": ["tar-fs@3.1.1", "", { "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { "bare-fs": "^4.0.1", "bare-path": "^3.0.0" } }, "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg=="],
|
|
253
|
+
|
|
254
|
+
"tar-stream": ["tar-stream@3.1.7", "", { "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ=="],
|
|
255
|
+
|
|
256
|
+
"text-decoder": ["text-decoder@1.2.3", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA=="],
|
|
257
|
+
|
|
258
|
+
"tldts": ["tldts@7.0.21", "", { "dependencies": { "tldts-core": "^7.0.21" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-Plu6V8fF/XU6d2k8jPtlQf5F4Xx2hAin4r2C2ca7wR8NK5MbRTo9huLUWRe28f3Uk8bYZfg74tit/dSjc18xnw=="],
|
|
259
|
+
|
|
260
|
+
"tldts-core": ["tldts-core@7.0.21", "", {}, "sha512-oVOMdHvgjqyzUZH1rOESgJP1uNe2bVrfK0jUHHmiM2rpEiRbf3j4BrsIc6JigJRbHGanQwuZv/R+LTcHsw+bLA=="],
|
|
261
|
+
|
|
262
|
+
"tough-cookie": ["tough-cookie@6.0.0", "", { "dependencies": { "tldts": "^7.0.5" } }, "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w=="],
|
|
263
|
+
|
|
264
|
+
"tr46": ["tr46@6.0.0", "", { "dependencies": { "punycode": "^2.3.1" } }, "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw=="],
|
|
265
|
+
|
|
266
|
+
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
267
|
+
|
|
268
|
+
"typed-query-selector": ["typed-query-selector@2.12.0", "", {}, "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg=="],
|
|
269
|
+
|
|
270
|
+
"uhyphen": ["uhyphen@0.2.0", "", {}, "sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA=="],
|
|
271
|
+
|
|
272
|
+
"undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
|
|
273
|
+
|
|
274
|
+
"w3c-xmlserializer": ["w3c-xmlserializer@5.0.0", "", { "dependencies": { "xml-name-validator": "^5.0.0" } }, "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA=="],
|
|
275
|
+
|
|
276
|
+
"webdriver-bidi-protocol": ["webdriver-bidi-protocol@0.4.0", "", {}, "sha512-U9VIlNRrq94d1xxR9JrCEAx5Gv/2W7ERSv8oWRoNe/QYbfccS0V3h/H6qeNeCRJxXGMhhnkqvwNrvPAYeuP9VA=="],
|
|
277
|
+
|
|
278
|
+
"webidl-conversions": ["webidl-conversions@8.0.1", "", {}, "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ=="],
|
|
279
|
+
|
|
280
|
+
"whatwg-mimetype": ["whatwg-mimetype@4.0.0", "", {}, "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="],
|
|
281
|
+
|
|
282
|
+
"whatwg-url": ["whatwg-url@15.1.0", "", { "dependencies": { "tr46": "^6.0.0", "webidl-conversions": "^8.0.0" } }, "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g=="],
|
|
283
|
+
|
|
284
|
+
"wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
|
|
285
|
+
|
|
286
|
+
"wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
|
|
287
|
+
|
|
288
|
+
"ws": ["ws@8.19.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg=="],
|
|
289
|
+
|
|
290
|
+
"xml-name-validator": ["xml-name-validator@5.0.0", "", {}, "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg=="],
|
|
291
|
+
|
|
292
|
+
"xmlchars": ["xmlchars@2.2.0", "", {}, "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="],
|
|
293
|
+
|
|
294
|
+
"y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="],
|
|
295
|
+
|
|
296
|
+
"yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
|
|
297
|
+
|
|
298
|
+
"yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
|
|
299
|
+
|
|
300
|
+
"yauzl": ["yauzl@2.10.0", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="],
|
|
301
|
+
|
|
302
|
+
"zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
|
|
303
|
+
|
|
304
|
+
"data-urls/whatwg-mimetype": ["whatwg-mimetype@5.0.0", "", {}, "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw=="],
|
|
305
|
+
|
|
306
|
+
"dom-serializer/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
|
|
307
|
+
|
|
308
|
+
"htmlparser2/entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="],
|
|
309
|
+
|
|
310
|
+
"proxy-agent/lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="],
|
|
311
|
+
}
|
|
312
|
+
}
|
package/bunfig.toml
ADDED