From e1f574bcd7ac5df9865b98bbd417e3cc133ed00a Mon Sep 17 00:00:00 2001 From: Mateo Morris <39444813+mateomorris@users.noreply.github.com> Date: Mon, 24 Feb 2025 20:55:50 -0500 Subject: [PATCH] Version 3 (#409) --- .env.example | 24 +- .github/workflows/playwright.yml | 28 - .gitignore | 2 + .prettierrc | 21 +- CONTRIBUTING.md | 30 +- README.md | 119 +- class-mangler/index.ts | 55 - class-mangler/modules/styles.ts | 29 - class-mangler/modules/templates.ts | 79 - class-mangler/todo.md | 5 - class-mangler/types.d.ts | 10 - class-mangler/utils.ts | 84 - components.json | 17 + package-lock.json | 21498 ++++++++-------- package.json | 172 +- playwright.config.ts | 19 +- playwright/.auth/user.json | 49 + playwright/global-setup.js | 58 + postcss.config.cjs | 11 +- primo_schema.sql | 487 - screenshot-v2.png | Bin 587927 -> 0 bytes src/app.css | 76 + src/app.html | 21 +- src/compiler/cloud-workers/server-compiler.js | 186 +- src/compiler/cloud-workers/server-rollup.js | 6 +- src/compiler/cloud-workers/server-svelte.js | 13 +- src/compiler/lib/rollup-browser.min.js | 14597 +++++++++++ src/compiler/processors.js | 108 +- src/compiler/workers/rollup.worker.js | 95 +- src/compiler/workers/svelte.worker.js | 12 +- src/hooks.server.js | 104 +- src/lib/actions.js | 948 +- src/lib/assets/logodark.svg | 28 +- src/lib/assets/reset.css | 69 - src/lib/assets/server-logo.svg | 30 +- src/lib/builder/Primo.svelte | 252 + src/lib/builder/actions/_db_helpers.js | 37 + src/lib/builder/actions/_db_utils.js | 705 + src/lib/builder/actions/_helpers.js | 927 + src/lib/builder/actions/_storage_helpers.js | 220 + src/lib/builder/actions/active_site.js | 78 + src/lib/builder/actions/languages.js | 296 + src/lib/builder/actions/misc.js | 19 + src/lib/builder/actions/page_types.js | 348 + src/lib/builder/actions/pages.js | 223 + src/lib/builder/actions/sections.js | 661 + src/lib/builder/actions/symbols.js | 457 + src/lib/builder/code_generators.js | 186 + src/lib/builder/component.js | 53 + .../components/CodeEditor/CodeMirror.svelte | 349 + .../components/CodeEditor/extensions.ts | 11 + .../CodeEditor/extensions/autocomplete.js | 147 + .../CodeEditor/extensions/inspector.ts | 61 + .../builder/components/CodeEditor/theme.ts | 182 + .../components/ComponentPreview.svelte | 495 + src/lib/builder/components/Content.svelte | 267 + .../components/Fields/Condition.svelte | 100 + .../components/Fields/FieldItem.svelte | 552 + .../components/Fields/FieldsContent.svelte | 740 + .../components/Fields/PageField.svelte | 54 + .../components/Fields/PageFieldField.svelte | 49 + .../components/Fields/PageListField.svelte | 51 + .../components/Fields/SelectField.svelte | 188 + .../components/Fields/SiteFieldField.svelte | 33 + src/lib/builder/components/IFrame.svelte | 192 + src/lib/builder/components/IconPicker.svelte | 244 + .../Sidebar/PageType_Sidebar.svelte | 443 + .../components/Sidebar/Page_Sidebar.svelte | 170 + .../components/Sidebar/Sidebar_Symbol.svelte | 313 + src/lib/builder/components/Site_Symbol.svelte | 145 + .../components/buttons/PrimoButton.svelte | 83 + .../components/buttons/SaveButton.svelte | 49 + src/lib/builder/components/buttons/index.js | 4 + src/lib/builder/components/index.js | 6 + src/lib/builder/components/misc.js | 168 + src/lib/builder/constants.js | 278 + src/lib/builder/converter.js | 531 + src/lib/builder/database.js | 84 + src/lib/builder/declarations.d.ts | 1 + src/lib/builder/deploy.js | 50 + src/lib/builder/factories.js | 197 + src/lib/builder/field-types/GroupField.svelte | 147 + src/lib/builder/field-types/IconField.svelte | 77 + src/lib/builder/field-types/ImageField.svelte | 246 + .../builder/field-types/Information.svelte | 61 + src/lib/builder/field-types/Link.svelte | 174 + src/lib/builder/field-types/Markdown.svelte | 68 + src/lib/builder/field-types/Number.svelte | 15 + src/lib/builder/field-types/PageField.svelte | 34 + .../builder/field-types/PageFieldField.svelte | 52 + src/lib/builder/field-types/PageList.svelte | 17 + .../builder/field-types/RepeaterField.svelte | 165 + .../field-types/RepeaterFieldItem.svelte | 318 + .../builder/field-types/SelectField.svelte | 35 + src/lib/builder/field-types/SiteField.svelte | 50 + src/lib/builder/field-types/Slider.svelte | 38 + src/lib/builder/field-types/Switch.svelte | 15 + src/lib/builder/field-types/Text.svelte | 15 + src/lib/builder/field-types/TextField.svelte | 32 + src/lib/builder/field-types/URL.svelte | 15 + src/lib/builder/field-types/index.js | 149 + src/lib/builder/libraries/emmet/plugin.js | 6801 +++++ src/lib/builder/libraries/pluralize/index.js | 485 + .../closest-edge.js | 60 + .../get-reorder-destination-index.js | 26 + .../pragmatic-drag-and-drop-hitbox/index.js | 7 + .../reorder-with-edge.js | 19 + .../tree-item.js | 168 + .../pragmatic-drag-and-drop-hitbox/types.js | 0 .../element-adapter-native-data-key.js | 6 + .../adapter/element-adapter.js | 246 + .../adapter/external-adapter.js | 242 + .../adapter/text-selection-adapter.js | 147 + .../entry-point/cancel-unhandled.js | 1 + .../entry-point/combine.js | 1 + .../entry-point/element/adapter.js | 3 + .../element/center-under-pointer.js | 1 + .../element/disable-native-drag-preview.js | 1 + .../element/format-urls-for-external.js | 1 + .../element/pointer-outside-of-preview.js | 1 + .../element/preserve-offset-on-source.js | 1 + .../element/scroll-just-enough-into-view.js | 1 + .../element/set-custom-native-drag-preview.js | 1 + .../entry-point/external/adapter.js | 3 + .../entry-point/external/file.js | 1 + .../entry-point/external/html.js | 1 + .../entry-point/external/some.js | 1 + .../entry-point/external/text.js | 1 + .../entry-point/external/url.js | 1 + .../entry-point/once.js | 1 + .../entry-point/prevent-unhandled.js | 1 + .../entry-point/reorder.js | 1 + .../entry-point/text-selection/adapter.js | 3 + .../entry-point/types.js | 0 .../pragmatic-drag-and-drop/index.js | 7 + .../pragmatic-drag-and-drop/internal-types.js | 0 .../ledger/dispatch-consumer-event.js | 125 + .../ledger/lifecycle-manager.js | 329 + .../ledger/usage-ledger.js | 31 + .../make-adapter/make-adapter.js | 53 + .../make-adapter/make-drop-target.js | 309 + .../make-adapter/make-monitor.js | 93 + .../public-utils/combine.js | 11 + ...om-external-data-type-media-type-prefix.js | 1 + .../center-under-pointer.js | 8 + .../pointer-outside-of-preview.js | 22 + .../preserve-offset-on-source.js | 25 + .../set-custom-native-drag-preview.js | 127 + .../custom-native-drag-preview/types.js | 1 + .../element/disable-native-drag-preview.js | 30 + .../element/format-urls-for-external.js | 33 + .../element/scroll-just-enough-into-view.js | 11 + .../public-utils/external/file.js | 21 + .../public-utils/external/html.js | 9 + .../public-utils/external/native-types.js | 1 + .../public-utils/external/some.js | 28 + .../public-utils/external/text.js | 11 + .../public-utils/external/url.js | 26 + .../public-utils/once.js | 16 + .../public-utils/prevent-unhandled.js | 99 + .../public-utils/reorder.js | 19 + .../util/add-attribute.js | 8 + .../pragmatic-drag-and-drop/util/android.js | 7 + .../util/cache-first.js | 25 + .../count-events-for-safari.js | 121 + .../changing-window/is-entering-window.js | 52 + .../changing-window/is-from-another-window.js | 16 + .../util/changing-window/is-leaving-window.js | 52 + .../util/detect-broken-drag.js | 47 + .../util/fix-post-drag-pointer-bug.js | 119 + .../pragmatic-drag-and-drop/util/get-input.js | 14 + .../util/is-firefox.js | 13 + .../pragmatic-drag-and-drop/util/is-safari.js | 16 + .../util/media-types/html-media-type.js | 6 + .../util/media-types/text-media-type.js | 6 + .../util/media-types/url-media-type.js | 6 + src/lib/builder/libraries/prettier.js | 37 + .../libraries/prettier/parser-babel.js | 15 + .../builder/libraries/prettier/parser-html.js | 22 + .../libraries/prettier/parser-postcss.js | 52 + .../libraries/prettier/prettier-svelte.js | 1972 ++ .../builder/libraries/prettier/prettier.js | 116 + src/lib/builder/libraries/svelte-undo.js | 50 + src/lib/builder/new_converter.js | 60 + src/lib/builder/stores/app/fieldTypes.js | 12 + src/lib/builder/stores/app/hotkey_events.js | 27 + src/lib/builder/stores/app/index.js | 6 + src/lib/builder/stores/app/misc.js | 26 + src/lib/builder/stores/app/modal.js | 89 + src/lib/builder/stores/app/modalTypes.js | 61 + src/lib/builder/stores/app/page.js | 4 + src/lib/builder/stores/data/index.js | 37 + src/lib/builder/stores/data/page.js | 5 + src/lib/builder/stores/data/page_type.js | 4 + src/lib/builder/stores/data/page_types.js | 16 + src/lib/builder/stores/data/pages.js | 16 + src/lib/builder/stores/data/primo_symbols.js | 4 + src/lib/builder/stores/data/sections.js | 4 + src/lib/builder/stores/data/site.js | 112 + src/lib/builder/stores/data/symbols.js | 4 + src/lib/builder/stores/helpers.js | 443 + src/lib/builder/stores/hydration.js | 46 + src/lib/builder/supabase.js | 14 + src/lib/builder/transform_data.js | 160 + src/lib/builder/ui/Button.svelte | 101 + src/lib/builder/ui/Card.svelte | 137 + src/lib/builder/ui/Dropdown.svelte | 65 + src/lib/builder/ui/IconButton.svelte | 37 + src/lib/builder/ui/LargeSwitch.svelte | 127 + src/lib/{ => builder}/ui/Letter.svelte | 8 +- src/lib/builder/ui/ListItem.svelte | 147 + src/lib/builder/ui/Select.svelte | 371 + src/lib/builder/ui/Spinner.svelte | 28 + src/lib/builder/ui/Switch.svelte | 92 + src/lib/builder/ui/Tabs.svelte | 108 + src/lib/builder/ui/TextInput.svelte | 225 + src/lib/builder/ui/Toggle/Toggle.svelte | 148 + src/lib/builder/ui/Toggle/ToggleCore.svelte | 24 + src/lib/builder/ui/index.js | 27 + src/lib/builder/utilities.js | 105 + src/lib/builder/utils.js | 189 + .../views/editor/Layout/BlockToolbar.svelte | 196 + .../views/editor/Layout/ComponentNode.svelte | 842 + .../views/editor/Layout/DropIndicator.svelte | 19 + .../views/editor/Layout/DropZone.svelte | 21 + .../views/editor/Layout/LockedOverlay.svelte | 31 + .../views/editor/Layout/MarkdownButton.svelte | 37 + .../views/editor/Layout/SymbolPalette.svelte | 27 + .../views/editor/LocaleSelector.svelte | 222 + src/lib/builder/views/editor/Page.svelte | 590 + src/lib/builder/views/editor/PageType.svelte | 451 + src/lib/builder/views/editor/Toolbar.svelte | 366 + .../builder/views/editor/ToolbarButton.svelte | 189 + .../builder/views/modal/BlockEditor.svelte | 174 + .../builder/views/modal/BlockPicker.svelte | 129 + src/lib/builder/views/modal/Dialog.svelte | 103 + .../views/modal/Dialogs/Feedback.svelte | 115 + .../builder/views/modal/Dialogs/Image.svelte | 227 + .../builder/views/modal/Dialogs/Video.svelte | 101 + .../builder/views/modal/ModalContainer.svelte | 92 + .../builder/views/modal/ModalHeader.svelte | 222 + src/lib/builder/views/modal/PageEditor.svelte | 135 + .../modal/SectionEditor/FullCodeEditor.svelte | 352 + .../modal/SectionEditor/SectionEditor.svelte | 208 + .../views/modal/SiteEditor/SiteEditor.svelte | 151 + .../modal/SitePages/PageList/Item.svelte | 404 + .../modal/SitePages/PageList/PageForm.svelte | 98 + .../modal/SitePages/PageList/PageList.svelte | 68 + .../SitePages/Page_Types_List/Item.svelte | 154 + .../Page_Types_List/PageTypeForm.svelte | 153 + .../Page_Types_List/Page_Types_List.svelte | 66 + .../views/modal/SitePages/SitePages.svelte | 67 + src/lib/builder/views/modal/index.js | 9 + src/lib/components/BlockPicker.svelte | 119 + src/lib/components/CreateSite.svelte | 218 + src/lib/components/DashboardToolbar.svelte | 38 +- src/lib/components/DropZone.svelte | 83 + src/lib/components/EmptyState.svelte | 25 + src/lib/components/IconButton.svelte | 49 +- src/lib/components/LibrarySymbolButton.svelte | 176 + src/lib/components/LockAlert.svelte | 82 +- .../MarketplaceStarterButton.svelte | 97 + .../components/MarketplaceSymbolButton.svelte | 96 + src/lib/components/MenuPopup.svelte | 171 - src/lib/components/Modal.svelte | 222 +- src/lib/components/ModalHeader.svelte | 191 + .../components/Modals/Collaboration.svelte | 221 + src/lib/components/Modals/CreateBlock.svelte | 123 + src/lib/components/Modals/CreateSite.svelte | 240 - .../components/Modals/CreateStarter.svelte | 133 + src/lib/components/Modals/DeleteSite.svelte | 100 - .../components/Modals/Deploy/Deploy.svelte | 301 + src/lib/components/Modals/DesignFields.svelte | 37 + src/lib/components/Modals/DesignPanel.svelte | 155 + .../DesignPanel/BorderRadiusPicker.svelte | 37 + .../Modals/DesignPanel/ColorPicker.svelte | 67 + .../Modals/DesignPanel/FontPicker.svelte | 210 + .../Modals/DesignPanel/ShadowPicker.svelte | 81 + .../components/Modals/ServerInvitation.svelte | 230 - .../components/Modals/SiteInvitation.svelte | 214 - src/lib/components/SitePreview.svelte | 150 + src/lib/components/SiteThumbnail.svelte | 293 +- src/lib/components/Site_Symbol.svelte | 138 + src/lib/components/StarterButton.svelte | 32 + src/lib/components/ThemeThumbnail.svelte | 50 - src/lib/components/Themes.svelte | 135 +- src/lib/components/UserPopup.svelte | 34 +- src/lib/components/app-sidebar.svelte | 377 + src/lib/components/convert_site_object.js | 295 + src/lib/components/convert_v2_to_v3.js | 309 + src/lib/components/ui/Letter.svelte | 33 + src/lib/components/ui/ServerLogo.svelte | 20 + src/lib/components/ui/Tabs.svelte | 47 + .../alert-dialog/alert-dialog-action.svelte | 13 + .../alert-dialog/alert-dialog-cancel.svelte | 17 + .../alert-dialog/alert-dialog-content.svelte | 26 + .../alert-dialog-description.svelte | 16 + .../alert-dialog/alert-dialog-footer.svelte | 20 + .../alert-dialog/alert-dialog-header.svelte | 20 + .../alert-dialog/alert-dialog-overlay.svelte | 19 + .../ui/alert-dialog/alert-dialog-title.svelte | 18 + src/lib/components/ui/alert-dialog/index.ts | 40 + .../ui/avatar/avatar-fallback.svelte | 16 + .../components/ui/avatar/avatar-image.svelte | 20 + src/lib/components/ui/avatar/avatar.svelte | 18 + src/lib/components/ui/avatar/index.ts | 13 + src/lib/components/ui/button/button.svelte | 75 + src/lib/components/ui/button/index.ts | 17 + src/lib/components/ui/collapsible/index.ts | 15 + .../ui/dialog/dialog-content.svelte | 38 + .../ui/dialog/dialog-description.svelte | 16 + .../components/ui/dialog/dialog-footer.svelte | 20 + .../components/ui/dialog/dialog-header.svelte | 44 + .../ui/dialog/dialog-overlay.svelte | 19 + .../components/ui/dialog/dialog-title.svelte | 8 + src/lib/components/ui/dialog/index.ts | 37 + .../dropdown-menu-checkbox-item.svelte | 40 + .../dropdown-menu-content.svelte | 27 + .../dropdown-menu-group-heading.svelte | 19 + .../dropdown-menu/dropdown-menu-item.svelte | 23 + .../dropdown-menu/dropdown-menu-label.svelte | 23 + .../dropdown-menu-radio-item.svelte | 30 + .../dropdown-menu-separator.svelte | 16 + .../dropdown-menu-shortcut.svelte | 20 + .../dropdown-menu-sub-content.svelte | 19 + .../dropdown-menu-sub-trigger.svelte | 28 + src/lib/components/ui/dropdown-menu/index.ts | 50 + src/lib/components/ui/input/index.ts | 7 + src/lib/components/ui/input/input.svelte | 22 + src/lib/components/ui/label/index.ts | 7 + src/lib/components/ui/label/label.svelte | 19 + src/lib/components/ui/popover/index.ts | 17 + .../ui/popover/popover-content.svelte | 28 + src/lib/components/ui/radio-group/index.ts | 10 + .../ui/radio-group/radio-group-item.svelte | 30 + .../ui/radio-group/radio-group.svelte | 13 + src/lib/components/ui/select/index.ts | 34 + .../ui/select/select-content.svelte | 38 + .../ui/select/select-group-heading.svelte | 16 + .../components/ui/select/select-item.svelte | 37 + .../select/select-scroll-down-button.svelte | 19 + .../ui/select/select-scroll-up-button.svelte | 19 + .../ui/select/select-separator.svelte | 13 + .../ui/select/select-trigger.svelte | 24 + src/lib/components/ui/separator/index.ts | 7 + .../components/ui/separator/separator.svelte | 22 + src/lib/components/ui/sheet/index.ts | 37 + .../components/ui/sheet/sheet-content.svelte | 55 + .../ui/sheet/sheet-description.svelte | 16 + .../components/ui/sheet/sheet-footer.svelte | 20 + .../components/ui/sheet/sheet-header.svelte | 20 + .../components/ui/sheet/sheet-overlay.svelte | 19 + .../components/ui/sheet/sheet-title.svelte | 16 + src/lib/components/ui/sidebar/constants.ts | 6 + .../components/ui/sidebar/context.svelte.ts | 81 + src/lib/components/ui/sidebar/index.ts | 75 + .../ui/sidebar/sidebar-content.svelte | 24 + .../ui/sidebar/sidebar-footer.svelte | 21 + .../ui/sidebar/sidebar-group-action.svelte | 36 + .../ui/sidebar/sidebar-group-content.svelte | 21 + .../ui/sidebar/sidebar-group-label.svelte | 34 + .../ui/sidebar/sidebar-group.svelte | 11 + .../ui/sidebar/sidebar-header.svelte | 21 + .../ui/sidebar/sidebar-input.svelte | 23 + .../ui/sidebar/sidebar-inset.svelte | 24 + .../ui/sidebar/sidebar-menu-action.svelte | 43 + .../ui/sidebar/sidebar-menu-badge.svelte | 29 + .../ui/sidebar/sidebar-menu-button.svelte | 97 + .../ui/sidebar/sidebar-menu-item.svelte | 21 + .../ui/sidebar/sidebar-menu-skeleton.svelte | 36 + .../ui/sidebar/sidebar-menu-sub-button.svelte | 43 + .../ui/sidebar/sidebar-menu-sub-item.svelte | 14 + .../ui/sidebar/sidebar-menu-sub.svelte | 25 + .../components/ui/sidebar/sidebar-menu.svelte | 21 + .../ui/sidebar/sidebar-provider.svelte | 53 + .../components/ui/sidebar/sidebar-rail.svelte | 36 + .../ui/sidebar/sidebar-separator.svelte | 18 + .../ui/sidebar/sidebar-trigger.svelte | 34 + src/lib/components/ui/sidebar/sidebar.svelte | 79 + src/lib/components/ui/skeleton/index.ts | 7 + .../components/ui/skeleton/skeleton.svelte | 17 + src/lib/components/ui/sonner/index.ts | 1 + src/lib/components/ui/sonner/sonner.svelte | 20 + src/lib/components/ui/tabs/index.ts | 18 + .../components/ui/tabs/tabs-content.svelte | 21 + src/lib/components/ui/tabs/tabs-list.svelte | 19 + .../components/ui/tabs/tabs-trigger.svelte | 21 + src/lib/components/ui/tooltip/index.ts | 18 + .../ui/tooltip/tooltip-content.svelte | 21 + src/lib/converter.js | 452 + src/lib/hooks/is-mobile.svelte.ts | 27 + src/lib/index.d.ts | 219 +- src/lib/other-utils.js | 27 + src/lib/realtime.js | 39 + src/lib/stores.js | 15 +- src/lib/supabase.js | 34 + src/lib/supabase/admin.js | 6 +- src/lib/supabase/auth.js | 2 +- src/lib/supabase/core.js | 5 + src/lib/supabase/index.js | 4 - src/lib/supabase/storage.js | 27 - src/lib/ui/CopyButton.svelte | 96 - src/lib/ui/Logo.svelte | 18 - src/lib/ui/PrimaryButton.svelte | 105 - src/lib/ui/ServerLogo.svelte | 37 - src/lib/ui/Spinner.svelte | 41 - src/lib/ui/Switch.svelte | 90 - src/lib/ui/Tabs.svelte | 110 - src/lib/ui/TextField.svelte | 87 - src/lib/ui/TextInput.svelte | 79 - src/lib/utils.js | 40 - src/lib/utils.ts | 22 + src/routes/+layout.js | 100 +- src/routes/+layout.server.js | 22 +- src/routes/+layout.svelte | 161 +- src/routes/+page.svelte | 353 - src/routes/Modal.svelte | 13 +- src/routes/[site]/+layout.js | 142 +- src/routes/[site]/+layout.server.js | 9 + src/routes/[site]/+layout.svelte | 258 +- src/routes/[site]/+page.js | 1 + src/routes/[site]/+page.svelte | 81 +- src/routes/[site]/[...page]/+page.svelte | 19 +- src/routes/[site]/[page].html/+server.js | 124 - .../page-type--[page_type]/+page.svelte | 15 + src/routes/api/+layout.server.js | 15 + src/routes/api/[site]/+server.js | 70 - src/routes/api/[site]/[...page]/+server.js | 167 - src/routes/api/[site]/page-search.js | 62 - src/routes/api/authorize.ts | 57 + .../collaboration/collaborators/+server.js | 65 + .../api/collaboration/invitations/+server.js | 11 + src/routes/api/deploy/+server.js | 253 - src/routes/api/deploy/blobs/+server.js | 50 - .../api/deploy/connect-domain-name/+server.ts | 128 + .../api/deploy/delete-deployment/+server.ts | 77 + src/routes/api/deploy/delete/+server.js | 46 - .../api/deploy/initial-deployment/+server.ts | 126 + .../api/deploy/publish-changes/+server.ts | 81 + src/routes/api/deploy/repos/+server.js | 56 - .../api/deploy/setup-domain-name/+server.ts | 75 + src/routes/api/deploy/user/+server.js | 41 - src/routes/api/generate/+server.ts | 35 + src/routes/api/invitations/+server.js | 39 - src/routes/api/render/+server.js | 41 +- .../api/uploads/get-signed-url/+server.ts | 47 + src/routes/auth/+page.server.js | 218 +- src/routes/auth/+page.svelte | 190 +- src/routes/auth/AuthForm.svelte | 150 + .../auth/create-account/+page.server.js | 46 + src/routes/auth/create-account/+page.svelte | 170 + src/routes/auth/set-password/+page.server.js | 30 - src/routes/auth/set-password/+page.svelte | 164 - src/routes/dashboard/+layout.svelte | 64 + src/routes/dashboard/+layout.ts | 46 + src/routes/dashboard/+page.ts | 5 + src/routes/dashboard/library/+page.ts | 5 + .../dashboard/library/blocks/+page.svelte | 345 + src/routes/dashboard/library/blocks/+page.ts | 10 + .../dashboard/library/starters/+page.svelte | 95 + src/routes/dashboard/marketplace/+page.ts | 5 + .../dashboard/marketplace/blocks/+page.svelte | 90 + .../dashboard/marketplace/blocks/+page.ts | 22 + .../marketplace/starters/+page.svelte | 73 + .../dashboard/marketplace/starters/+page.ts | 9 + src/routes/dashboard/sites/+page.svelte | 186 + src/routes/dashboard/sites/+page.ts | 10 + src/routes/update-notice/+page.svelte | 109 - src/scramble_ids.js | 139 + static/logo-light.svg | 26 - static/logo.svg | 26 - static/primologo.png | Bin 8391 -> 0 bytes svelte.config.js | 27 +- tailwind.config.js | 96 + tests/e2e/blocks.test.js | 87 + tests/e2e/fields.test.js | 39 + tests/e2e/site.test.js | 71 + tsconfig.json | 3 +- vite.config.js | 60 +- weave_schema.sql | 1358 + 480 files changed, 72707 insertions(+), 16883 deletions(-) delete mode 100644 .github/workflows/playwright.yml delete mode 100644 class-mangler/index.ts delete mode 100644 class-mangler/modules/styles.ts delete mode 100644 class-mangler/modules/templates.ts delete mode 100644 class-mangler/todo.md delete mode 100644 class-mangler/types.d.ts delete mode 100644 class-mangler/utils.ts create mode 100644 components.json create mode 100644 playwright/.auth/user.json create mode 100644 playwright/global-setup.js delete mode 100644 primo_schema.sql delete mode 100644 screenshot-v2.png create mode 100644 src/app.css create mode 100644 src/compiler/lib/rollup-browser.min.js delete mode 100644 src/lib/assets/reset.css create mode 100644 src/lib/builder/Primo.svelte create mode 100644 src/lib/builder/actions/_db_helpers.js create mode 100644 src/lib/builder/actions/_db_utils.js create mode 100644 src/lib/builder/actions/_helpers.js create mode 100644 src/lib/builder/actions/_storage_helpers.js create mode 100644 src/lib/builder/actions/active_site.js create mode 100644 src/lib/builder/actions/languages.js create mode 100644 src/lib/builder/actions/misc.js create mode 100644 src/lib/builder/actions/page_types.js create mode 100644 src/lib/builder/actions/pages.js create mode 100644 src/lib/builder/actions/sections.js create mode 100644 src/lib/builder/actions/symbols.js create mode 100644 src/lib/builder/code_generators.js create mode 100644 src/lib/builder/component.js create mode 100644 src/lib/builder/components/CodeEditor/CodeMirror.svelte create mode 100644 src/lib/builder/components/CodeEditor/extensions.ts create mode 100644 src/lib/builder/components/CodeEditor/extensions/autocomplete.js create mode 100644 src/lib/builder/components/CodeEditor/extensions/inspector.ts create mode 100644 src/lib/builder/components/CodeEditor/theme.ts create mode 100644 src/lib/builder/components/ComponentPreview.svelte create mode 100644 src/lib/builder/components/Content.svelte create mode 100644 src/lib/builder/components/Fields/Condition.svelte create mode 100644 src/lib/builder/components/Fields/FieldItem.svelte create mode 100644 src/lib/builder/components/Fields/FieldsContent.svelte create mode 100644 src/lib/builder/components/Fields/PageField.svelte create mode 100644 src/lib/builder/components/Fields/PageFieldField.svelte create mode 100644 src/lib/builder/components/Fields/PageListField.svelte create mode 100644 src/lib/builder/components/Fields/SelectField.svelte create mode 100644 src/lib/builder/components/Fields/SiteFieldField.svelte create mode 100644 src/lib/builder/components/IFrame.svelte create mode 100644 src/lib/builder/components/IconPicker.svelte create mode 100644 src/lib/builder/components/Sidebar/PageType_Sidebar.svelte create mode 100644 src/lib/builder/components/Sidebar/Page_Sidebar.svelte create mode 100644 src/lib/builder/components/Sidebar/Sidebar_Symbol.svelte create mode 100644 src/lib/builder/components/Site_Symbol.svelte create mode 100644 src/lib/builder/components/buttons/PrimoButton.svelte create mode 100644 src/lib/builder/components/buttons/SaveButton.svelte create mode 100644 src/lib/builder/components/buttons/index.js create mode 100644 src/lib/builder/components/index.js create mode 100644 src/lib/builder/components/misc.js create mode 100644 src/lib/builder/constants.js create mode 100644 src/lib/builder/converter.js create mode 100644 src/lib/builder/database.js create mode 100644 src/lib/builder/declarations.d.ts create mode 100644 src/lib/builder/deploy.js create mode 100644 src/lib/builder/factories.js create mode 100644 src/lib/builder/field-types/GroupField.svelte create mode 100644 src/lib/builder/field-types/IconField.svelte create mode 100644 src/lib/builder/field-types/ImageField.svelte create mode 100644 src/lib/builder/field-types/Information.svelte create mode 100644 src/lib/builder/field-types/Link.svelte create mode 100644 src/lib/builder/field-types/Markdown.svelte create mode 100644 src/lib/builder/field-types/Number.svelte create mode 100644 src/lib/builder/field-types/PageField.svelte create mode 100644 src/lib/builder/field-types/PageFieldField.svelte create mode 100644 src/lib/builder/field-types/PageList.svelte create mode 100644 src/lib/builder/field-types/RepeaterField.svelte create mode 100644 src/lib/builder/field-types/RepeaterFieldItem.svelte create mode 100644 src/lib/builder/field-types/SelectField.svelte create mode 100644 src/lib/builder/field-types/SiteField.svelte create mode 100644 src/lib/builder/field-types/Slider.svelte create mode 100644 src/lib/builder/field-types/Switch.svelte create mode 100644 src/lib/builder/field-types/Text.svelte create mode 100644 src/lib/builder/field-types/TextField.svelte create mode 100644 src/lib/builder/field-types/URL.svelte create mode 100644 src/lib/builder/field-types/index.js create mode 100644 src/lib/builder/libraries/emmet/plugin.js create mode 100644 src/lib/builder/libraries/pluralize/index.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop-hitbox/closest-edge.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop-hitbox/get-reorder-destination-index.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop-hitbox/index.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop-hitbox/reorder-with-edge.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop-hitbox/tree-item.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop-hitbox/types.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/adapter/element-adapter.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/adapter/external-adapter.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/adapter/text-selection-adapter.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/cancel-unhandled.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/combine.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/element/adapter.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/element/center-under-pointer.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/element/disable-native-drag-preview.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/element/format-urls-for-external.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/element/pointer-outside-of-preview.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/element/preserve-offset-on-source.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/element/scroll-just-enough-into-view.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/external/adapter.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/external/file.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/external/html.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/external/some.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/external/text.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/external/url.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/once.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/prevent-unhandled.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/reorder.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/text-selection/adapter.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/entry-point/types.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/index.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/internal-types.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/ledger/lifecycle-manager.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/ledger/usage-ledger.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/make-adapter/make-adapter.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/make-adapter/make-drop-target.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/make-adapter/make-monitor.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/combine.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/custom-external-data-type-media-type-prefix.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/center-under-pointer.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/pointer-outside-of-preview.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/preserve-offset-on-source.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/element/disable-native-drag-preview.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/element/format-urls-for-external.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/element/scroll-just-enough-into-view.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/external/file.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/external/html.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/external/native-types.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/external/some.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/external/text.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/external/url.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/once.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/prevent-unhandled.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/public-utils/reorder.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/add-attribute.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/android.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/cache-first.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/changing-window/is-entering-window.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/detect-broken-drag.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/fix-post-drag-pointer-bug.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/get-input.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/is-firefox.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/is-safari.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/media-types/html-media-type.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/media-types/text-media-type.js create mode 100644 src/lib/builder/libraries/pragmatic-drag-and-drop/util/media-types/url-media-type.js create mode 100644 src/lib/builder/libraries/prettier.js create mode 100644 src/lib/builder/libraries/prettier/parser-babel.js create mode 100644 src/lib/builder/libraries/prettier/parser-html.js create mode 100644 src/lib/builder/libraries/prettier/parser-postcss.js create mode 100644 src/lib/builder/libraries/prettier/prettier-svelte.js create mode 100644 src/lib/builder/libraries/prettier/prettier.js create mode 100644 src/lib/builder/libraries/svelte-undo.js create mode 100644 src/lib/builder/new_converter.js create mode 100644 src/lib/builder/stores/app/fieldTypes.js create mode 100644 src/lib/builder/stores/app/hotkey_events.js create mode 100644 src/lib/builder/stores/app/index.js create mode 100644 src/lib/builder/stores/app/misc.js create mode 100644 src/lib/builder/stores/app/modal.js create mode 100644 src/lib/builder/stores/app/modalTypes.js create mode 100644 src/lib/builder/stores/app/page.js create mode 100644 src/lib/builder/stores/data/index.js create mode 100644 src/lib/builder/stores/data/page.js create mode 100644 src/lib/builder/stores/data/page_type.js create mode 100644 src/lib/builder/stores/data/page_types.js create mode 100644 src/lib/builder/stores/data/pages.js create mode 100644 src/lib/builder/stores/data/primo_symbols.js create mode 100644 src/lib/builder/stores/data/sections.js create mode 100644 src/lib/builder/stores/data/site.js create mode 100644 src/lib/builder/stores/data/symbols.js create mode 100644 src/lib/builder/stores/helpers.js create mode 100644 src/lib/builder/stores/hydration.js create mode 100644 src/lib/builder/supabase.js create mode 100644 src/lib/builder/transform_data.js create mode 100644 src/lib/builder/ui/Button.svelte create mode 100644 src/lib/builder/ui/Card.svelte create mode 100644 src/lib/builder/ui/Dropdown.svelte create mode 100644 src/lib/builder/ui/IconButton.svelte create mode 100644 src/lib/builder/ui/LargeSwitch.svelte rename src/lib/{ => builder}/ui/Letter.svelte (76%) create mode 100644 src/lib/builder/ui/ListItem.svelte create mode 100644 src/lib/builder/ui/Select.svelte create mode 100644 src/lib/builder/ui/Spinner.svelte create mode 100644 src/lib/builder/ui/Switch.svelte create mode 100644 src/lib/builder/ui/Tabs.svelte create mode 100644 src/lib/builder/ui/TextInput.svelte create mode 100644 src/lib/builder/ui/Toggle/Toggle.svelte create mode 100644 src/lib/builder/ui/Toggle/ToggleCore.svelte create mode 100644 src/lib/builder/ui/index.js create mode 100644 src/lib/builder/utilities.js create mode 100644 src/lib/builder/utils.js create mode 100644 src/lib/builder/views/editor/Layout/BlockToolbar.svelte create mode 100644 src/lib/builder/views/editor/Layout/ComponentNode.svelte create mode 100644 src/lib/builder/views/editor/Layout/DropIndicator.svelte create mode 100644 src/lib/builder/views/editor/Layout/DropZone.svelte create mode 100644 src/lib/builder/views/editor/Layout/LockedOverlay.svelte create mode 100644 src/lib/builder/views/editor/Layout/MarkdownButton.svelte create mode 100644 src/lib/builder/views/editor/Layout/SymbolPalette.svelte create mode 100644 src/lib/builder/views/editor/LocaleSelector.svelte create mode 100644 src/lib/builder/views/editor/Page.svelte create mode 100644 src/lib/builder/views/editor/PageType.svelte create mode 100644 src/lib/builder/views/editor/Toolbar.svelte create mode 100644 src/lib/builder/views/editor/ToolbarButton.svelte create mode 100644 src/lib/builder/views/modal/BlockEditor.svelte create mode 100644 src/lib/builder/views/modal/BlockPicker.svelte create mode 100644 src/lib/builder/views/modal/Dialog.svelte create mode 100644 src/lib/builder/views/modal/Dialogs/Feedback.svelte create mode 100644 src/lib/builder/views/modal/Dialogs/Image.svelte create mode 100644 src/lib/builder/views/modal/Dialogs/Video.svelte create mode 100644 src/lib/builder/views/modal/ModalContainer.svelte create mode 100644 src/lib/builder/views/modal/ModalHeader.svelte create mode 100644 src/lib/builder/views/modal/PageEditor.svelte create mode 100644 src/lib/builder/views/modal/SectionEditor/FullCodeEditor.svelte create mode 100644 src/lib/builder/views/modal/SectionEditor/SectionEditor.svelte create mode 100644 src/lib/builder/views/modal/SiteEditor/SiteEditor.svelte create mode 100644 src/lib/builder/views/modal/SitePages/PageList/Item.svelte create mode 100644 src/lib/builder/views/modal/SitePages/PageList/PageForm.svelte create mode 100644 src/lib/builder/views/modal/SitePages/PageList/PageList.svelte create mode 100644 src/lib/builder/views/modal/SitePages/Page_Types_List/Item.svelte create mode 100644 src/lib/builder/views/modal/SitePages/Page_Types_List/PageTypeForm.svelte create mode 100644 src/lib/builder/views/modal/SitePages/Page_Types_List/Page_Types_List.svelte create mode 100644 src/lib/builder/views/modal/SitePages/SitePages.svelte create mode 100644 src/lib/builder/views/modal/index.js create mode 100644 src/lib/components/BlockPicker.svelte create mode 100644 src/lib/components/CreateSite.svelte create mode 100644 src/lib/components/DropZone.svelte create mode 100644 src/lib/components/EmptyState.svelte create mode 100644 src/lib/components/LibrarySymbolButton.svelte create mode 100644 src/lib/components/MarketplaceStarterButton.svelte create mode 100644 src/lib/components/MarketplaceSymbolButton.svelte delete mode 100644 src/lib/components/MenuPopup.svelte create mode 100644 src/lib/components/ModalHeader.svelte create mode 100644 src/lib/components/Modals/Collaboration.svelte create mode 100644 src/lib/components/Modals/CreateBlock.svelte delete mode 100644 src/lib/components/Modals/CreateSite.svelte create mode 100644 src/lib/components/Modals/CreateStarter.svelte delete mode 100644 src/lib/components/Modals/DeleteSite.svelte create mode 100644 src/lib/components/Modals/Deploy/Deploy.svelte create mode 100644 src/lib/components/Modals/DesignFields.svelte create mode 100644 src/lib/components/Modals/DesignPanel.svelte create mode 100644 src/lib/components/Modals/DesignPanel/BorderRadiusPicker.svelte create mode 100644 src/lib/components/Modals/DesignPanel/ColorPicker.svelte create mode 100644 src/lib/components/Modals/DesignPanel/FontPicker.svelte create mode 100644 src/lib/components/Modals/DesignPanel/ShadowPicker.svelte delete mode 100644 src/lib/components/Modals/ServerInvitation.svelte delete mode 100644 src/lib/components/Modals/SiteInvitation.svelte create mode 100644 src/lib/components/SitePreview.svelte create mode 100644 src/lib/components/Site_Symbol.svelte create mode 100644 src/lib/components/StarterButton.svelte delete mode 100644 src/lib/components/ThemeThumbnail.svelte create mode 100644 src/lib/components/app-sidebar.svelte create mode 100644 src/lib/components/convert_site_object.js create mode 100644 src/lib/components/convert_v2_to_v3.js create mode 100644 src/lib/components/ui/Letter.svelte create mode 100644 src/lib/components/ui/ServerLogo.svelte create mode 100644 src/lib/components/ui/Tabs.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-action.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-content.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-description.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-header.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-title.svelte create mode 100644 src/lib/components/ui/alert-dialog/index.ts create mode 100644 src/lib/components/ui/avatar/avatar-fallback.svelte create mode 100644 src/lib/components/ui/avatar/avatar-image.svelte create mode 100644 src/lib/components/ui/avatar/avatar.svelte create mode 100644 src/lib/components/ui/avatar/index.ts create mode 100644 src/lib/components/ui/button/button.svelte create mode 100644 src/lib/components/ui/button/index.ts create mode 100644 src/lib/components/ui/collapsible/index.ts create mode 100644 src/lib/components/ui/dialog/dialog-content.svelte create mode 100644 src/lib/components/ui/dialog/dialog-description.svelte create mode 100644 src/lib/components/ui/dialog/dialog-footer.svelte create mode 100644 src/lib/components/ui/dialog/dialog-header.svelte create mode 100644 src/lib/components/ui/dialog/dialog-overlay.svelte create mode 100644 src/lib/components/ui/dialog/dialog-title.svelte create mode 100644 src/lib/components/ui/dialog/index.ts create mode 100644 src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte create mode 100644 src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte create mode 100644 src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte create mode 100644 src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte create mode 100644 src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte create mode 100644 src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte create mode 100644 src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte create mode 100644 src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte create mode 100644 src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte create mode 100644 src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte create mode 100644 src/lib/components/ui/dropdown-menu/index.ts create mode 100644 src/lib/components/ui/input/index.ts create mode 100644 src/lib/components/ui/input/input.svelte create mode 100644 src/lib/components/ui/label/index.ts create mode 100644 src/lib/components/ui/label/label.svelte create mode 100644 src/lib/components/ui/popover/index.ts create mode 100644 src/lib/components/ui/popover/popover-content.svelte create mode 100644 src/lib/components/ui/radio-group/index.ts create mode 100644 src/lib/components/ui/radio-group/radio-group-item.svelte create mode 100644 src/lib/components/ui/radio-group/radio-group.svelte create mode 100644 src/lib/components/ui/select/index.ts create mode 100644 src/lib/components/ui/select/select-content.svelte create mode 100644 src/lib/components/ui/select/select-group-heading.svelte create mode 100644 src/lib/components/ui/select/select-item.svelte create mode 100644 src/lib/components/ui/select/select-scroll-down-button.svelte create mode 100644 src/lib/components/ui/select/select-scroll-up-button.svelte create mode 100644 src/lib/components/ui/select/select-separator.svelte create mode 100644 src/lib/components/ui/select/select-trigger.svelte create mode 100644 src/lib/components/ui/separator/index.ts create mode 100644 src/lib/components/ui/separator/separator.svelte create mode 100644 src/lib/components/ui/sheet/index.ts create mode 100644 src/lib/components/ui/sheet/sheet-content.svelte create mode 100644 src/lib/components/ui/sheet/sheet-description.svelte create mode 100644 src/lib/components/ui/sheet/sheet-footer.svelte create mode 100644 src/lib/components/ui/sheet/sheet-header.svelte create mode 100644 src/lib/components/ui/sheet/sheet-overlay.svelte create mode 100644 src/lib/components/ui/sheet/sheet-title.svelte create mode 100644 src/lib/components/ui/sidebar/constants.ts create mode 100644 src/lib/components/ui/sidebar/context.svelte.ts create mode 100644 src/lib/components/ui/sidebar/index.ts create mode 100644 src/lib/components/ui/sidebar/sidebar-content.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-footer.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-group-action.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-group-content.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-group-label.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-group.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-header.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-input.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-inset.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-action.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-badge.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-button.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-item.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-skeleton.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-sub-button.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-sub-item.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-sub.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-menu.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-provider.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-rail.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-separator.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar-trigger.svelte create mode 100644 src/lib/components/ui/sidebar/sidebar.svelte create mode 100644 src/lib/components/ui/skeleton/index.ts create mode 100644 src/lib/components/ui/skeleton/skeleton.svelte create mode 100644 src/lib/components/ui/sonner/index.ts create mode 100644 src/lib/components/ui/sonner/sonner.svelte create mode 100644 src/lib/components/ui/tabs/index.ts create mode 100644 src/lib/components/ui/tabs/tabs-content.svelte create mode 100644 src/lib/components/ui/tabs/tabs-list.svelte create mode 100644 src/lib/components/ui/tabs/tabs-trigger.svelte create mode 100644 src/lib/components/ui/tooltip/index.ts create mode 100644 src/lib/components/ui/tooltip/tooltip-content.svelte create mode 100644 src/lib/converter.js create mode 100644 src/lib/hooks/is-mobile.svelte.ts create mode 100644 src/lib/other-utils.js create mode 100644 src/lib/realtime.js create mode 100644 src/lib/supabase.js create mode 100644 src/lib/supabase/core.js delete mode 100644 src/lib/supabase/index.js delete mode 100644 src/lib/supabase/storage.js delete mode 100644 src/lib/ui/CopyButton.svelte delete mode 100644 src/lib/ui/Logo.svelte delete mode 100644 src/lib/ui/PrimaryButton.svelte delete mode 100644 src/lib/ui/ServerLogo.svelte delete mode 100644 src/lib/ui/Spinner.svelte delete mode 100644 src/lib/ui/Switch.svelte delete mode 100644 src/lib/ui/Tabs.svelte delete mode 100644 src/lib/ui/TextField.svelte delete mode 100644 src/lib/ui/TextInput.svelte delete mode 100644 src/lib/utils.js create mode 100644 src/lib/utils.ts delete mode 100644 src/routes/+page.svelte create mode 100644 src/routes/[site]/+layout.server.js create mode 100644 src/routes/[site]/+page.js delete mode 100644 src/routes/[site]/[page].html/+server.js create mode 100644 src/routes/[site]/page-type--[page_type]/+page.svelte create mode 100644 src/routes/api/+layout.server.js delete mode 100644 src/routes/api/[site]/+server.js delete mode 100644 src/routes/api/[site]/[...page]/+server.js delete mode 100644 src/routes/api/[site]/page-search.js create mode 100644 src/routes/api/authorize.ts create mode 100644 src/routes/api/collaboration/collaborators/+server.js create mode 100644 src/routes/api/collaboration/invitations/+server.js delete mode 100644 src/routes/api/deploy/+server.js delete mode 100644 src/routes/api/deploy/blobs/+server.js create mode 100644 src/routes/api/deploy/connect-domain-name/+server.ts create mode 100644 src/routes/api/deploy/delete-deployment/+server.ts delete mode 100644 src/routes/api/deploy/delete/+server.js create mode 100644 src/routes/api/deploy/initial-deployment/+server.ts create mode 100644 src/routes/api/deploy/publish-changes/+server.ts delete mode 100644 src/routes/api/deploy/repos/+server.js create mode 100644 src/routes/api/deploy/setup-domain-name/+server.ts delete mode 100644 src/routes/api/deploy/user/+server.js create mode 100644 src/routes/api/generate/+server.ts delete mode 100644 src/routes/api/invitations/+server.js create mode 100644 src/routes/api/uploads/get-signed-url/+server.ts create mode 100644 src/routes/auth/AuthForm.svelte create mode 100644 src/routes/auth/create-account/+page.server.js create mode 100644 src/routes/auth/create-account/+page.svelte delete mode 100644 src/routes/auth/set-password/+page.server.js delete mode 100644 src/routes/auth/set-password/+page.svelte create mode 100644 src/routes/dashboard/+layout.svelte create mode 100644 src/routes/dashboard/+layout.ts create mode 100644 src/routes/dashboard/+page.ts create mode 100644 src/routes/dashboard/library/+page.ts create mode 100644 src/routes/dashboard/library/blocks/+page.svelte create mode 100644 src/routes/dashboard/library/blocks/+page.ts create mode 100644 src/routes/dashboard/library/starters/+page.svelte create mode 100644 src/routes/dashboard/marketplace/+page.ts create mode 100644 src/routes/dashboard/marketplace/blocks/+page.svelte create mode 100644 src/routes/dashboard/marketplace/blocks/+page.ts create mode 100644 src/routes/dashboard/marketplace/starters/+page.svelte create mode 100644 src/routes/dashboard/marketplace/starters/+page.ts create mode 100644 src/routes/dashboard/sites/+page.svelte create mode 100644 src/routes/dashboard/sites/+page.ts delete mode 100644 src/routes/update-notice/+page.svelte create mode 100644 src/scramble_ids.js delete mode 100644 static/logo-light.svg delete mode 100644 static/logo.svg delete mode 100644 static/primologo.png create mode 100644 tailwind.config.js create mode 100644 tests/e2e/blocks.test.js create mode 100644 tests/e2e/fields.test.js create mode 100644 tests/e2e/site.test.js create mode 100644 weave_schema.sql diff --git a/.env.example b/.env.example index 5dd2ba524..1311777c3 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,21 @@ -PUBLIC_SUPABASE_URL = "" -PUBLIC_SUPABASE_PUBLIC_KEY = "" -PRIVATE_SUPABASE_PRIVATE_KEY = "" \ No newline at end of file +# Resend (transactional emails) +PRIVATE_RESEND_KEY= + +PUBLIC_VITE_DEV=true + +# Cloudflare (site hosting) +PRIVATE_CLOUDFLARE_ZONE_ID= +PRIVATE_CLOUDFLARE_ACCOUNT_ID= +PRIVATE_R2_TOKEN= +PRIVATE_R2_ACCESS_KEY_ID= +PRIVATE_R2_SECRET_ACCESS_KEY= +PRIVATE_CLOUDFLARE_WORKER_NAME= +PRIVATE_CLOUDFLARE_WORKERS_API_TOKEN= +PRIVATE_CLOUDFLARE_HOSTNAMES_TOKEN= +PRIVATE_CLOUDFLARE_ZONE_TOKEN= +PRIVATE_CLOUDFLARE_SITES_BUCKET= + +# Supabase (database & auth) +PUBLIC_SUPABASE_URL= +PUBLIC_SUPABASE_PUBLIC_KEY= +PRIVATE_SUPABASE_PRIVATE_KEY= diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml deleted file mode 100644 index b1467fff5..000000000 --- a/.github/workflows/playwright.yml +++ /dev/null @@ -1,28 +0,0 @@ -# Failing because of some ci dependency issue, running locally for now -# name: Playwright Tests -# on: -# push: -# branches: [ main, master ] -# pull_request: -# branches: [ main, master ] -# jobs: -# test: -# timeout-minutes: 60 -# runs-on: ubuntu-latest -# steps: -# - uses: actions/checkout@v2 -# - uses: actions/setup-node@v2 -# with: -# node-version: '14.x' -# - name: Install dependencies -# run: npm ci -# - name: Install Playwright Browsers -# run: npx playwright install --with-deps -# - name: Run Playwright tests -# run: npx playwright test -# - uses: actions/upload-artifact@v2 -# if: always() -# with: -# name: playwright-report -# path: playwright-report/ -# retention-days: 30 diff --git a/.gitignore b/.gitignore index 3ec9dd8a2..bb3d75952 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ .env .DS_Store +.vercel/output +.vscode .vercel_build_output .svelte-kit node_modules diff --git a/.prettierrc b/.prettierrc index 27ee5b3f3..279332d3a 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,6 +1,23 @@ { "tabWidth": 2, - "singleQuote": true, "semi": false, - "htmlWhitespaceSensitivity": "ignore" + "htmlWhitespaceSensitivity": "ignore", + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 200, + "plugins": [ + "prettier-plugin-svelte" + ], + "pluginSearchDirs": [ + "." + ], + "overrides": [ + { + "files": "*.svelte", + "options": { + "parser": "svelte" + } + } + ] } \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7c4db0bdf..478527e05 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,31 +1,3 @@ # Contributing -Contributions to Primo are very welcome. You can start by submitting a PR to address any of the [open issues](https://github.com/primocms/primo/issues), but for the sake of keeping the codebase simple and aligned towards the project's mission, we ask that you first start a discussion before attempting to contribute any new features. You can do this by starting a discussion in the [Forum](https://forum.primo.so), [Github Discussions](https://github.com/primocms/primo/discussions), or the [Discord](https://discord.gg/vzSFTS9). Or, if you'd like to contribute to the project but don't know where to start, feel free to fill out the [contributor form](https://primocms.org/contributions). - -## Running locally - -1. Clone the main Primo repo -``` -git clone https://github.com/primocms/primo.git -``` -2. Clone the builder repo -``` -git clone https://github.com/primocms/builder -``` -3. Link the builder to Primo -``` -cd builder -npm link -npm install -npm run package-watch -``` -4. Run Primo -``` -cd ../primo -npm install -npm link @primocms/builder -npm run dev -``` -5. Open your browser to http://localhost:5173 - -If you have any issues setting this up, it's probably *not* just you, so feel free to pop into any of the discussion spaces linked above for some help. +Contributions to Primo are very welcome. You can start by submitting a PR to address any of the [open issues](https://github.com/primocms/primo/issues), but for the sake of keeping the codebase simple and aligned towards the project's mission, we ask that you first start a discussion before attempting to contribute any new features. You can do this by starting a discussion in the [Forum](https://forum.primo.so), [Github Discussions](https://github.com/primocms/primo/discussions), or the [Discord](https://discord.gg/vzSFTS9). \ No newline at end of file diff --git a/README.md b/README.md index f8bcda9d9..79845cce6 100644 --- a/README.md +++ b/README.md @@ -7,80 +7,89 @@

-

The modern monolithic CMS

-

Primo makes it a blast to build pages, update content, and edit code - one block at a time.

+# Primo V3 Alpha -

- Primocms.org • - Discord • - Docs • - Newsletter • - YouTube -

- -![screenshot](https://github.com/primocms/primo/raw/master/screenshot-v2.png) - -## ⭐ Why Primo? - -Traditional monolithic CMSs like WordPress, Drupal, and Joomla enable quick setup and easy content editing, but rely on antiquated and heavy development practices (often relying on plugins and third-party services to customize the site and add new components). Headless CMSs have popped up to modernize the view layer with modern development practices and frameworks, but have a poorer content editing experience due to their decoupling from the content layer. - -Primo is a modern approach to the monolithic CMS that builds on the traditional monolith's benefits of a quick setup and easy content editing alongside the benefits of modern development (i.e. Svelte). These combine into a web publishing tool that is significantly easier and more fun to use for both technical and non-technical users and enables you to build faster, more secure, and more unique websites. - -## ✨ Features - -- Visual, on-page content editing -- Drag-and-drop page building with blocks -- Integrated development environment for blocks and pages -- Static site generation -- Real-time page collaboration -- Internationalization -- Multisite (1 server = infinity sites) -- Deploys to Github (i.e. any web host) - -[Read more in the Docs](https://docs.primocms.org) - -# How to self-host Primo -Primo depends on several [freemium] third-party services for easy hosting, authentication, database and storage, etc. Running your own Primo server is as easy as forking the [**Primo repo**]() and deploying it on a static host like Vercel or Netlify, which should only take a few minutes. - -Third-party services (all can be signed into with Github): +## ✨ V3 Features & Improvements -- A modern web host like [**Vercel**]() or [**Netlify**]() to host the Primo application & published sites (note that Cloudflare Pages is currently [unsupported](https://github.com/primocms/primo/issues/365) for hosting Primo, but you can still use it for your sites). +- Custom Page Types (i.e. Content Types) +- Dynamic content fields (i.e. 'Site Field', 'Page Field', 'Page' to update entity page content referenced on other pages) +- Design system editor +- 10x faster build times bc every page gets generated on update, instead of all at once. +- Conditional fields (to show/hide fields based on preceding field values) +- CSS-library compatibility (bootstrap, tailwind, bulma, etc. all work reliably using a standard cdn link). +- UI/UX improvements + - Drag pages to reorder them in the page list + - Drag repeater items to reorder them + - Drag-and-drop functionality improved for adding blocks to page & now works on mobile. + - Block editor organized into code & content (i.e. fields & entries), UI improved. + - On-page editing significantly improved. -- A [**Supabase**]() account to manage your server's authentication, database, and file storage. +![](https://cdn.primo.page/557834e8-7996-46f6-9328-0b84887d3bf7/staging/Accessible_Wardrobe_That_Women.png) -- A [**Github**]() account to deploy your sites to (unless you plan on manually downloading/uploading your site files to a host). +![](https://cdn.primo.page/557834e8-7996-46f6-9328-0b84887d3bf7/staging/Open_Sans.png) +![](https://cdn.primo.page/557834e8-7996-46f6-9328-0b84887d3bf7/staging/Pasted_Graphic_2.png) - +![](https://cdn.primo.page/557834e8-7996-46f6-9328-0b84887d3bf7/staging/Stitch_Group_for.png) -## Installation +# Running Primo locally +Primo isn't *really* self-hostable, yet, since it depends on a handful of [freemium] services, but the goal is that in the future it'll be fully self-hosted by default (probably a Docker image). You run it by cloning it, setting environment variables to connect it to the various services, then hosting the application (i.e. pushing it to a repo and connecting the repo to a host). You can also strip out the service-dependent bits yourself. -1. Ensure you have an account with all the services listed above. +Ensure you have accounts for all these services: +* Supabase +* Resend +* Cloudflare +* Vercel, Netlify, Cloudflare, or another modern host. -2. Create a new Supabase project, go to the SQL editor, add a new query and provision your project by copying the [**schema**]() and pasting it into the editor. +Note: you'll need to set up your Supabase account first. Run the schema found in `primo_schema.sql` to set up your tables before continuing. -3. Fork the [**Primo repository**](). -4. Go to your web host and create a new project from your new repository, inputting your Supabase details (go to the API settings) as environment variables. +```bash +git clone -b v3 https://github.com/primocms/primo.git +cd primo +npm install - - PUBLIC\_SUPABASE\_URL +# Rename the example environment file and add your credentials for Supabase, Cloudflare, and Resend +mv .env.example .env - - PUBLIC\_SUPABASE\_PUBLIC\_KEY +npm run build +npm run preview +``` - - PRIVATE\_SUPABASE\_PRIVATE\_KEY +### To host Primo +If you want to run a hosted version of Primo, all you need to do is deploy your repo and set your environment variables. You can deploy it on any webhost for zero dollars. -![Environment Variables](https://dbfnrqvkgwkjkzqgnfrd.supabase.co/storage/v1/object/public/images/Screenshot%202023-05-06%20at%206.45.43%20PM.png) +1. Create a new Supabase project, go to the SQL editor, add a new query and provision your project by copying the [**schema**]() and pasting it into the editor. +1. Go to your web host and create a new project from your new repository, inputting your Supabase details (go to the API settings) as environment variables. -5. Publish the project and navigate to the Primo authentication screen. +```bash +# Resend (transactional emails) +PRIVATE_RESEND_KEY= -6. The user account you create will be the server owner. You can manage all your server's data from the Supabase project dashboard. +# Cloudflare (site hosting) +PRIVATE_CLOUDFLARE_ZONE_ID= +PRIVATE_CLOUDFLARE_ACCOUNT_ID= +PRIVATE_R2_TOKEN= +PRIVATE_R2_ACCESS_KEY_ID= +PRIVATE_R2_SECRET_ACCESS_KEY= +PRIVATE_CLOUDFLARE_WORKER_NAME= +PRIVATE_CLOUDFLARE_WORKERS_API_TOKEN= +PRIVATE_CLOUDFLARE_HOSTNAMES_TOKEN= +PRIVATE_CLOUDFLARE_ZONE_TOKEN= +PRIVATE_CLOUDFLARE_SITES_BUCKET= -7. Finally, go back to your Supabase project & set the Site URL to the URL of your Primo site (under Authentication > URL Configuration > Site URL). -Screenshot 2023-07-11 at 12 44 26 PM +# Supabase (database & auth) +PUBLIC_SUPABASE_URL= +PUBLIC_SUPABASE_PUBLIC_KEY= +PRIVATE_SUPABASE_PRIVATE_KEY= +``` -For more details see this step-by-step installation [video guide]() +## Things you can change/extend +- Design system +- Field types +- Hosting destination +- Authentication methods +- Extensions (soon) -## Updating -You can merge upstream updates by clicking 'Sync fork' on your forked repository. Your updates will automatically deploy to your web host. diff --git a/class-mangler/index.ts b/class-mangler/index.ts deleted file mode 100644 index 440b86f51..000000000 --- a/class-mangler/index.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { Plugin } from 'vite'; -import transformStyles from './modules/styles'; -import transformTemplates from './modules/templates'; -import { endsWith } from './utils'; - -const defaultSuffixes = ['.svelte', '.html', '.vue', '.jsx', '.tsx']; - -export default function ClassMangler(config: PluginConfig = {}): Plugin[] { - config.suffixes = config.suffixes || defaultSuffixes; - - const classMapping = new Map(); - - const plugins: Plugin[] = [ - { - name: 'class-mangler-templates', - apply: config.dev ? 'serve' : 'build', - enforce: 'pre', - transform(code, id) { - if (endsWith(id, config.suffixes)) { - return transformTemplates(id, code, classMapping, config); - } - } - }, - { - name: 'class-mangler-styles', - apply: config.dev ? 'serve' : 'build', - transform(code, id) { - if (endsWith(id, ['.css'])) { - return transformStyles(code, classMapping); - } - }, - generateBundle() { - const classMappingObject = {}; - - classMapping.forEach((value, key) => { - classMappingObject[key] = value; - }); - - this.emitFile({ - type: 'asset', - name: 'class-mapping.json', - source: JSON.stringify(classMappingObject) - }); - } - } - ]; - - if (config.dev) { - plugins.forEach((plugin) => { - delete plugin.apply; - }); - } - - return plugins; -} diff --git a/class-mangler/modules/styles.ts b/class-mangler/modules/styles.ts deleted file mode 100644 index c5deeb9f5..000000000 --- a/class-mangler/modules/styles.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { cssPseudoRegex, escapeClassName } from '../utils'; - -export default function transformStyles(code, classMapping: Map) { - let classesToReplace = []; - - classMapping.forEach((randomClassName, className) => { - classesToReplace = [ - ...classesToReplace, - { - raw: className, - random: randomClassName, - escaped: escapeClassName(className) - } - ]; - }); - - classesToReplace.forEach((classToReplace) => { - const regex = new RegExp( - `\\.(?:${classToReplace.escaped})(?=[\\w\\d .:{]+)((?::(?:${cssPseudoRegex}))*(?:[(\\w\\d )]*))`, - 'gm' - ); - code = code.replace(regex, '.' + classToReplace.random + '$1'); - }); - - return { - code, - map: null - }; -} diff --git a/class-mangler/modules/templates.ts b/class-mangler/modules/templates.ts deleted file mode 100644 index 603594764..000000000 --- a/class-mangler/modules/templates.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { escapeClassName, getRandomClassName, getRegexps } from '../utils'; - -export default function transformTemplates( - id: string, - code: string, - classMapping: Map, - config: GeneratorConfig -) { - const rawClasses = getRawClasses(id, code); - - const unqiueClasses = new Set( - rawClasses - .map((c) => c.split(' ')) - .flat() - .filter((c) => c.length > 0) - .sort((a, b) => b.length - a.length) - ); - - unqiueClasses.forEach((className) => { - if (!classMapping.has(className)) { - let random = getRandomClassName(config); - const classMappingList = Array.from(classMapping.values()); - - while (classMappingList.includes(random)) { - random = getRandomClassName(config); - } - - classMapping.set(className, random); - } - }); - - const rawClassesMap = new Map(); - - rawClasses.forEach((classNames) => { - const randomClassNames = classNames - .split(' ') - .map((className) => { - if (classMapping.has(className)) { - return classMapping.get(className); - } - }) - .join(' '); - - rawClassesMap.set(classNames, randomClassNames); - }); - - rawClasses - .sort((a, b) => b.length - a.length) - .forEach((classNames) => { - let match: RegExpExecArray; - const regex = new RegExp(`(?<="class",.*?)${escapeClassName(classNames)}(?=[\\s"')])`, 'g'); - while ((match = regex.exec(code)) !== null) { - if (match.index > 0 && code[match.index - 2] === ',') { - code = code.replace(match[0], `"${rawClassesMap.get(classNames)}"`); - } else { - code = code.replace(match[0], `${rawClassesMap.get(classNames)}`); - } - } - }); - - return { - code, - map: null - }; -} - -const getRawClasses = (id: string, code: string) => { - const rawClasses: string[] = []; - const regexps = getRegexps(id); - - regexps.forEach((regex) => { - let match: RegExpExecArray | null; - while ((match = regex.exec(code)) !== null) { - rawClasses.push(match[0]); - } - }); - - return rawClasses; -}; diff --git a/class-mangler/todo.md b/class-mangler/todo.md deleted file mode 100644 index 3ac3e9459..000000000 --- a/class-mangler/todo.md +++ /dev/null @@ -1,5 +0,0 @@ -Todo: - -- Allowlist (e.g. 'primo-toolbar') -- Set prefix (e.g. `__` or `__mangled__`) -- Handle IDs \ No newline at end of file diff --git a/class-mangler/types.d.ts b/class-mangler/types.d.ts deleted file mode 100644 index 3d2e24afd..000000000 --- a/class-mangler/types.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -interface PluginConfig extends GeneratorConfig { - dev?: boolean; - suffixes?: string[]; -} - -interface GeneratorConfig { - length?: number; - min?: number; - max?: number; -} diff --git a/class-mangler/utils.ts b/class-mangler/utils.ts deleted file mode 100644 index d243eab64..000000000 --- a/class-mangler/utils.ts +++ /dev/null @@ -1,84 +0,0 @@ -import random from 'randomstring'; -import Crypto from 'crypto'; - -export const cssPseudo = [ - 'active', - 'checked', - 'disabled', - 'empty', - 'enabled', - 'first-child', - 'first-of-type', - 'focus', - 'hover', - 'in-range', - 'invalid', - 'lang', - 'last-child', - 'last-of-type', - 'link', - 'not', - 'nth-child', - 'nth-last-child', - 'nth-last-of-type', - 'nth-of-type', - 'only-of-type', - 'only-child', - 'optional', - 'out-of-range', - 'read-only', - 'read-write', - 'required', - 'root', - 'target', - 'valid', - 'visited' -]; - -export const cssPseudoRegex = cssPseudo.join('|'); - -export const escapeClassName = (className: string) => { - return className.replace(/[/\\^$*+?.()|[\]{}:]/g, '\\\\$&'); -}; - -export const removeCssPsuedoSelector = (code: string) => { - return code.replace(new RegExp(`:(${cssPseudoRegex})[(\\w\\d)]*`, 'g'), ''); -}; - -export const getRandomClassName = (config: { length?: number; min?: number; max?: number }) => { - let length = 5; - - config.length - ? (length = config.length) - : config.min && config.max && (length = getRandomInt(config.min, config.max)); - - return random.generate({ - length, - charset: 'alphabetic' - }); -}; - -const getRandomInt = (min: number, max: number) => { - return (Crypto.randomBytes(1)[0] % (max - min + 1)) + min; -}; - -export const endsWith = (id: string, suffixes: string[]) => { - return suffixes.some((suffix) => { - return id.endsWith(suffix); - }); -}; - -export const getFiletype = (id: string) => { - const res = id.match(new RegExp('[^\\.]+$')); - return res ? res[0] : ''; -}; - -export const getRegexps = (id: string) => { - const arr: RegExp[] = []; - switch (getFiletype(id)) { - case 'svelte': - arr.push(new RegExp('(?<=class["\'],\\s*["\']).*?(?=["\'])', 'gm')); - break; - } - return arr; -}; diff --git a/components.json b/components.json new file mode 100644 index 000000000..c7988bf44 --- /dev/null +++ b/components.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://next.shadcn-svelte.com/schema.json", + "style": "new-york", + "tailwind": { + "config": "tailwind.config.js", + "css": "src/app.css", + "baseColor": "neutral" + }, + "aliases": { + "components": "$lib/components", + "utils": "$lib/utils", + "ui": "$lib/components/ui", + "hooks": "$lib/hooks" + }, + "typescript": true, + "registry": "https://next.shadcn-svelte.com/registry" +} diff --git a/package-lock.json b/package-lock.json index 82428c63d..e9012dac6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,10899 +1,10603 @@ { - "name": "primo-server", - "version": "2.0.0--beta.41", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "primo-server", - "version": "2.0.0--beta.41", - "dependencies": { - "@fontsource/fira-code": "^5.0.5", - "@iconify/svelte": "^2.2.1", - "@primocms/builder": "^0.1.66", - "@rollup/browser": "^3.28.0", - "@supabase/auth-helpers-sveltekit": "^0.10.2", - "@supabase/supabase-js": "^2.31.0", - "axios": "^0.26.0", - "estree-walker": "^3.0.3", - "lodash-es": "^4.17.21", - "memfs": "^4.7.7", - "nanoid": "^3.1.23", - "promise-worker": "^2.0.1", - "resolve.exports": "^2.0.2", - "timeago.js": "^4.0.2" - }, - "devDependencies": { - "@playwright/test": "^1.33.0", - "@sveltejs/adapter-auto": "2.1.1", - "@sveltejs/kit": "^1.22.4", - "@typescript-eslint/eslint-plugin": "^5.45.0", - "@typescript-eslint/parser": "^5.45.0", - "autoprefixer": "^10.3.6", - "eslint": "^8.28.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-svelte": "^2.32.4", - "file-saver": "^2.0.5", - "js-beautify": "^1.14.9", - "jszip": "^3.10.1", - "mousetrap": "^1.6.5", - "postcss-nested": "^5.0.6", - "randomstring": "^1.2.3", - "showdown-highlight": "^3.1.0", - "svelte": "^3.59.2", - "svelte-check": "^2.9.2", - "svelte-json-tree": "^1.0.0", - "svelte-preprocess": "^5.0.4", - "tailwindcss": "^2.2.16", - "tslib": "^2.4.1", - "typescript": "^4.9.3", - "vite": "^4.4.8", - "vitest": "^0.25.8" - }, - "engines": { - "node": "18.x" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", - "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", - "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@codemirror/autocomplete": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.15.0.tgz", - "integrity": "sha512-G2Zm0mXznxz97JhaaOdoEG2cVupn4JjPaS4AcNvZzhOsnnG9YVN68VzfoUw6dYTsIxT6a/cmoFEN47KAWhXaOg==", - "peer": true, - "dependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0" - }, - "peerDependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@codemirror/commands": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz", - "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==", - "peer": true, - "dependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.4.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.1.0" - } - }, - "node_modules/@codemirror/lang-css": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.1.tgz", - "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==", - "peer": true, - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.2", - "@lezer/css": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-html": { - "version": "6.4.8", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.8.tgz", - "integrity": "sha512-tE2YK7wDlb9ZpAH6mpTPiYm6rhfdQKVDa5r9IwIFlwwgvVaKsCfuKKZoJGWsmMZIf3FQAuJ5CHMPLymOtg1hXw==", - "peer": true, - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/lang-css": "^6.0.0", - "@codemirror/lang-javascript": "^6.0.0", - "@codemirror/language": "^6.4.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0", - "@lezer/css": "^1.1.0", - "@lezer/html": "^1.3.0" - } - }, - "node_modules/@codemirror/lang-javascript": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz", - "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==", - "peer": true, - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.6.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0", - "@lezer/javascript": "^1.0.0" - } - }, - "node_modules/@codemirror/language": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.1.tgz", - "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==", - "peer": true, - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.23.0", - "@lezer/common": "^1.1.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0", - "style-mod": "^4.0.0" - } - }, - "node_modules/@codemirror/lint": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.5.0.tgz", - "integrity": "sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==", - "peer": true, - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "node_modules/@codemirror/search": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz", - "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==", - "peer": true, - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "node_modules/@codemirror/state": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz", - "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==", - "peer": true - }, - "node_modules/@codemirror/view": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.26.1.tgz", - "integrity": "sha512-wLw0t3R9AwOSQThdZ5Onw8QQtem5asE7+bPlnzc57eubPqiuJKIzwjMZ+C42vQett+iva+J8VgFV4RYWDBh5FA==", - "peer": true, - "dependencies": { - "@codemirror/state": "^6.4.0", - "style-mod": "^4.1.0", - "w3c-keyname": "^2.2.4" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", - "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz", - "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz", - "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz", - "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz", - "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz", - "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz", - "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz", - "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz", - "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz", - "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz", - "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz", - "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz", - "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz", - "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz", - "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", - "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz", - "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz", - "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz", - "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz", - "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz", - "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz", - "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@fontsource/fira-code": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@fontsource/fira-code/-/fira-code-5.0.5.tgz", - "integrity": "sha512-mb6eBaD0nheCaPZYllnBVsfUUuZufFtxZrF57CjmzkW2tM/G6Yag2UGjCX6vWVblHiIssmj986IDJo+R7SvnMw==" - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@iconify/svelte": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@iconify/svelte/-/svelte-2.2.1.tgz", - "integrity": "sha512-eWZq8CRrr3WfnKAj8SWknfE3S/d+j/AzEcypeJaHurS1s4zTdFnkjATcFa8lerGtcX0PAtXiVL94tbIEd69N+w==", - "funding": { - "url": "http://github.com/sponsors/cyberalien" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@lezer/common": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", - "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==", - "peer": true - }, - "node_modules/@lezer/css": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.8.tgz", - "integrity": "sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==", - "peer": true, - "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@lezer/highlight": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", - "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", - "peer": true, - "dependencies": { - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@lezer/html": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.9.tgz", - "integrity": "sha512-MXxeCMPyrcemSLGaTQEZx0dBUH0i+RPl8RN5GwMAzo53nTsd/Unc/t5ZxACeQoyPUM5/GkPLRUs2WliOImzkRA==", - "peer": true, - "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@lezer/javascript": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.14.tgz", - "integrity": "sha512-GEdUyspTRgc5dwIGebUk+f3BekvqEWVIYsIuAC3pA8e8wcikGwBZRWRa450L0s8noGWuULwnmi4yjxTnYz9PpA==", - "peer": true, - "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.1.3", - "@lezer/lr": "^1.3.0" - } - }, - "node_modules/@lezer/lr": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz", - "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==", - "peer": true, - "dependencies": { - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@one-ini/wasm": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", - "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", - "dev": true - }, - "node_modules/@playwright/test": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.33.0.tgz", - "integrity": "sha512-YunBa2mE7Hq4CfPkGzQRK916a4tuZoVx/EpLjeWlTVOnD4S2+fdaQZE0LJkbfhN5FTSKNLdcl7MoT5XB37bTkg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "playwright-core": "1.33.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=14" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" - }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@primocms/builder": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@primocms/builder/-/builder-0.1.66.tgz", - "integrity": "sha512-tlfk1ENrcF2x3llcwq6YBbkAYDQkz0qFU0X8ez+VKc9fb4YR9Qngva5ZeXXfoFzBXHrmOvYigsY9m8alzPEewg==", - "peerDependencies": { - "@codemirror/autocomplete": "^6.1.0", - "@codemirror/commands": "^6.0.1", - "@codemirror/lang-css": "^6.0.0", - "@codemirror/lang-html": "^6.1.0", - "@codemirror/lang-javascript": "^6.0.2", - "@codemirror/language": "^6.2.1", - "@codemirror/state": "^6.1.0", - "@codemirror/view": "^6.1.2", - "@fontsource/fira-code": "^5.0.5", - "@iconify/svelte": "^2.2.1", - "@lezer/highlight": "^1.0.0", - "@replit/codemirror-lang-svelte": "^6.0.0", - "@tiptap/core": "^2.0.0-beta.174", - "@tiptap/extension-bubble-menu": "^2.0.0-beta.55", - "@tiptap/extension-bullet-list": "^2.0.0-beta.26", - "@tiptap/extension-floating-menu": "^2.0.0-beta.50", - "@tiptap/extension-highlight": "^2.0.0-beta.33", - "@tiptap/extension-link": "^2.0.0-beta.199", - "@tiptap/starter-kit": "^2.0.0-beta.183", - "autosize": "^5.0.1", - "axios": "^0.26.0", - "codemirror": "^6.0.1", - "file-saver": "^2.0.5", - "idb-keyval": "^6.1.0", - "jszip": "^3.7.1", - "lodash-es": "^4.17.21", - "mousetrap": "^1.6.5", - "nanoid": "^3.1.23", - "pluralize": "^8.0.0", - "prettier": "^2.4.1", - "promise-worker": "^2.0.1", - "showdown": "^2.1.0", - "showdown-highlight": "^3.1.0", - "svelte": "^3.59.2", - "svelte-dnd-action": "^0.9.24", - "svelte-toggle": "^3.1.0", - "timeago.js": "^4.0.2", - "uuid": "^9.0.0" - } - }, - "node_modules/@remirror/core-constants": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz", - "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==", - "peer": true - }, - "node_modules/@replit/codemirror-lang-svelte": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-svelte/-/codemirror-lang-svelte-6.0.0.tgz", - "integrity": "sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==", - "peer": true, - "peerDependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/lang-css": "^6.0.1", - "@codemirror/lang-html": "^6.2.0", - "@codemirror/lang-javascript": "^6.1.1", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/javascript": "^1.2.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@rollup/browser": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/@rollup/browser/-/browser-3.28.0.tgz", - "integrity": "sha512-7U9WFjEArYZF0GVz/durys8tzBePwu4HkI5yxDmaRFn0B0qH1yabvworYZiGZYhevlZ+jDFAU4gKgF0gNsANDg==" - }, - "node_modules/@supabase/auth-helpers-shared": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.4.1.tgz", - "integrity": "sha512-IEDX9JzWkIjQiLUaP4Qy5YDiG0jFQatWfS+jw8cCQs6QfbNdEPd2Y3qonwGHnM90CZom9SvjuylBv2pFVAL7Lw==", - "dependencies": { - "jose": "^4.14.3" - }, - "peerDependencies": { - "@supabase/supabase-js": "^2.19.0" - } - }, - "node_modules/@supabase/auth-helpers-sveltekit": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-sveltekit/-/auth-helpers-sveltekit-0.10.2.tgz", - "integrity": "sha512-azQqh4ofgB+ewHBGQPp77R9552jD0DXZMd0QQQQvsgLUdGVghRrydW11491473DvcONoy2KMWUShVxccjzo6Gw==", - "dependencies": { - "@supabase/auth-helpers-shared": "0.4.1" - }, - "peerDependencies": { - "@supabase/supabase-js": "^2.19.0", - "@sveltejs/kit": "^1.15.4" - } - }, - "node_modules/@supabase/functions-js": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.2.tgz", - "integrity": "sha512-QCR6pwJs9exCl37bmpMisUd6mf+0SUBJ6mUpiAjEkSJ/+xW8TCuO14bvkWHADd5hElJK9MxNlMQXxSA4DRz9nQ==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "node_modules/@supabase/gotrue-js": { - "version": "2.46.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.46.1.tgz", - "integrity": "sha512-tebFX3XvPqEJKHOVgkXTN20g9iUhLx6tebIYQvTggYTrqOT2af8oTpSBdgYzbwJ291G6P6CSpR6KY0cT9ade5A==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "node_modules/@supabase/postgrest-js": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.7.2.tgz", - "integrity": "sha512-GK80JpRq8l6Qll85erICypAfQCied8tdlXfsDN14W844HqXCSOisk8AaE01DAwGJanieaoN5fuqhzA2yKxDvEQ==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "node_modules/@supabase/realtime-js": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.3.tgz", - "integrity": "sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==", - "dependencies": { - "@types/phoenix": "^1.5.4", - "@types/websocket": "^1.0.3", - "websocket": "^1.0.34" - } - }, - "node_modules/@supabase/storage-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.1.tgz", - "integrity": "sha512-nkR0fQA9ScAtIKA3vNoPEqbZv1k5B5HVRYEvRWdlP6mUpFphM9TwPL2jZ/ztNGMTG5xT6SrHr+H7Ykz8qzbhjw==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "node_modules/@supabase/supabase-js": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.31.0.tgz", - "integrity": "sha512-W9/4s+KnSUX67wJKBn/3yLq+ieycnMzVjK3nNTLX5Wko3ypNT/081l2iFYrf+nsLQ1CiT4mA92I3dxCy6CmxTg==", - "dependencies": { - "@supabase/functions-js": "^2.1.0", - "@supabase/gotrue-js": "^2.46.1", - "@supabase/postgrest-js": "^1.7.0", - "@supabase/realtime-js": "^2.7.3", - "@supabase/storage-js": "^2.5.1", - "cross-fetch": "^3.1.5" - } - }, - "node_modules/@sveltejs/adapter-auto": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.1.tgz", - "integrity": "sha512-nzi6x/7/3Axh5VKQ8Eed3pYxastxoa06Y/bFhWb7h3Nu+nGRVxKAy3+hBJgmPCwWScy8n0TsstZjSVKfyrIHkg==", - "dev": true, - "dependencies": { - "import-meta-resolve": "^4.0.0" - }, - "peerDependencies": { - "@sveltejs/kit": "^1.0.0" - } - }, - "node_modules/@sveltejs/kit": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.22.4.tgz", - "integrity": "sha512-Opkqw1QXk4Cc25b/heJP2D7mX+OUBFAq4MXKfET58svTTxdeiHFKzmnuRsSF3nmxESqrLjqPAgHpib+knNGzRw==", - "hasInstallScript": true, - "dependencies": { - "@sveltejs/vite-plugin-svelte": "^2.4.1", - "@types/cookie": "^0.5.1", - "cookie": "^0.5.0", - "devalue": "^4.3.1", - "esm-env": "^1.0.0", - "kleur": "^4.1.5", - "magic-string": "^0.30.0", - "mime": "^3.0.0", - "sade": "^1.8.1", - "set-cookie-parser": "^2.6.0", - "sirv": "^2.0.2", - "undici": "~5.22.0" - }, - "bin": { - "svelte-kit": "svelte-kit.js" - }, - "engines": { - "node": "^16.14 || >=18" - }, - "peerDependencies": { - "svelte": "^3.54.0 || ^4.0.0-next.0", - "vite": "^4.0.0" - } - }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.3.tgz", - "integrity": "sha512-NY2h+B54KHZO3kDURTdARqthn6D4YSIebtfW75NvZ/fwyk4G+AJw3V/i0OBjyN4406Ht9yZcnNWMuRUFnDNNiA==", - "dependencies": { - "@sveltejs/vite-plugin-svelte-inspector": "^1.0.3", - "debug": "^4.3.4", - "deepmerge": "^4.3.1", - "kleur": "^4.1.5", - "magic-string": "^0.30.1", - "svelte-hmr": "^0.15.2", - "vitefu": "^0.2.4" - }, - "engines": { - "node": "^14.18.0 || >= 16" - }, - "peerDependencies": { - "svelte": "^3.54.0 || ^4.0.0", - "vite": "^4.0.0" - } - }, - "node_modules/@sveltejs/vite-plugin-svelte-inspector": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.3.tgz", - "integrity": "sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": "^14.18.0 || >= 16" - }, - "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^2.2.0", - "svelte": "^3.54.0 || ^4.0.0", - "vite": "^4.0.0" - } - }, - "node_modules/@tiptap/core": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.2.4.tgz", - "integrity": "sha512-cRrI8IlLIhCE1hacBQzXIC8dsRvGq6a4lYWQK/BaHuZg21CG7szp3Vd8Ix+ra1f5v0xPOT+Hy+QFNQooRMKMCw==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-blockquote": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.2.4.tgz", - "integrity": "sha512-FrfPnn0VgVrUwWLwja1afX99JGLp6PE9ThVcmri+tLwUZQvTTVcCvHoCdOakav3/nge1+aV4iE3tQdyq1tWI9Q==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-bold": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.2.4.tgz", - "integrity": "sha512-v3tTLc8YESFZPOGj5ByFr8VbmQ/PTo49T1vsK50VubxIN/5r9cXlKH8kb3dZlZxCxJa3FrXNO/M8rdGBSWQvSg==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-bubble-menu": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.2.4.tgz", - "integrity": "sha512-Nx1fS9jcFlhxaTDYlnayz2UulhK6CMaePc36+7PQIVI+u20RhgTCRNr25zKNemvsiM0RPZZVUjlHkxC0l5as1Q==", - "peer": true, - "dependencies": { - "tippy.js": "^6.3.7" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-bullet-list": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.2.4.tgz", - "integrity": "sha512-z/MPmW8bhRougMuorl6MAQBXeK4rhlP+jBWlNwT+CT8h5IkXqPnDbM1sZeagp2nYfVV6Yc4RWpzimqHHtGnYTA==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-code": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.2.4.tgz", - "integrity": "sha512-JB4SJ2mUU/9qXFUf+K5K9szvovnN9AIcCb0f0UlcVBuddKHSqCl3wO3QJgYt44BfQTLMNuyzr+zVqfFd6BNt/g==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-code-block": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.2.4.tgz", - "integrity": "sha512-h6WV9TmaBEZmvqe1ezMR83DhCPUap6P2mSR5pwVk0WVq6rvZjfgU0iF3EetBJOeDgPlz7cNe2NMDfVb1nGTM/g==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-document": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.2.4.tgz", - "integrity": "sha512-z+05xGK0OFoXV1GL+/8bzcZuWMdMA3+EKwk5c+iziG60VZcvGTF7jBRsZidlu9Oaj0cDwWHCeeo6L9SgSh6i2A==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-dropcursor": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.2.4.tgz", - "integrity": "sha512-IHwkEKmqpqXyJi16h7871NrcIqeyN7I6XRE2qdqi+MhGigVWI8nWHoYbjRKa7K/1uhs5zeRYyDlq5EuZyL6mgA==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-floating-menu": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.2.4.tgz", - "integrity": "sha512-U25l7PEzOmlAPugNRl8t8lqyhQZS6W/+3f92+FdwW9qXju3i62iX/3OGCC3Gv+vybmQ4fbZmMjvl+VDfenNi3A==", - "peer": true, - "dependencies": { - "tippy.js": "^6.3.7" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-gapcursor": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.2.4.tgz", - "integrity": "sha512-Y6htT/RDSqkQ1UwG2Ia+rNVRvxrKPOs3RbqKHPaWr3vbFWwhHyKhMCvi/FqfI3d5pViVHOZQ7jhb5hT/a0BmNw==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-hard-break": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.2.4.tgz", - "integrity": "sha512-FPvS57GcqHIeLbPKGJa3gnH30Xw+YB1PXXnAWG2MpnMtc2Vtj1l5xaYYBZB+ADdXLAlU0YMbKhFLQO4+pg1Isg==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-heading": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.2.4.tgz", - "integrity": "sha512-gkq7Ns2FcrOCRq7Q+VRYt5saMt2R9g4REAtWy/jEevJ5UV5vA2AiGnYDmxwAkHutoYU0sAUkjqx37wE0wpamNw==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-highlight": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.2.4.tgz", - "integrity": "sha512-GGl6ehKQ0Q0gGgUQhkWg2XYPfhVU5c0JD3NHzV4OrBP6JAtFeMYeSLdfYzFcmoYnGafvSZaJ3NukUvnDHZGzRg==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-history": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.2.4.tgz", - "integrity": "sha512-FDM32XYF5NU4mzh+fJ8w2CyUqv0l2Nl15sd6fOhQkVxSj8t57z+DUXc9ZR3zkH+1RAagYJo/2Gu3e99KpMr0tg==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-horizontal-rule": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.2.4.tgz", - "integrity": "sha512-iCRHjFQQHApWg3R4fkKkJQhWEOdu1Fdc4YEAukdOXPSg3fg36IwjvsMXjt9SYBtVZ+iio3rORCZGXyMvgCH9uw==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-italic": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.2.4.tgz", - "integrity": "sha512-qIhGNvWnsQswSgEMRA8jQQjxfkOGNAuNWKEVQX9DPoqAUgknT41hQcAMP8L2+OdACpb2jbVMOO5Cy5Dof2L8/w==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-link": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.2.4.tgz", - "integrity": "sha512-Qsx0cFZm4dxbkToXs5TcXbSoUdicv8db1gV1DYIZdETqjBm4wFjlzCUP7hPHFlvNfeSy1BzAMRt+RpeuiwvxWQ==", - "peer": true, - "dependencies": { - "linkifyjs": "^4.1.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-list-item": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.2.4.tgz", - "integrity": "sha512-lPLKGKsHpM9ClUa8n7GEUn8pG6HCYU0vFruIy3l2t6jZdHkrgBnYtVGMZ13K8UDnj/hlAlccxku0D0P4mA1Vrg==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-ordered-list": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.2.4.tgz", - "integrity": "sha512-TpFy140O9Af1JciXt+xwqYUXxcJ6YG8zi/B5UDJujp+FH5sCmlYYBBnWxiFMhVaj6yEmA2eafu1qUkic/1X5Aw==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-paragraph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.2.4.tgz", - "integrity": "sha512-m1KwyvTNJxsq7StbspbcOhxO4Wk4YpElDbqOouWi+H4c8azdpI5Pn96ZqhFeE9bSyjByg6OcB/wqoJsLbeFWdQ==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-strike": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.2.4.tgz", - "integrity": "sha512-/a2EwQgA+PpG17V2tVRspcrIY0SN3blwcgM7lxdW4aucGkqSKnf7+91dkhQEwCZ//o8kv9mBCyRoCUcGy6S5Xg==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-text": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.2.4.tgz", - "integrity": "sha512-NlKHMPnRJXB+0AGtDlU0P2Pg+SdesA2lMMd7JzDUgJgL7pX2jOb8eUqSeOjFKuSzFSqYfH6C3o6mQiNhuQMv+g==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/pm": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.2.4.tgz", - "integrity": "sha512-Po0klR165zgtinhVp1nwMubjyKx6gAY9kH3IzcniYLCkqhPgiqnAcCr61TBpp4hfK8YURBS4ihvCB1dyfCyY8A==", - "peer": true, - "dependencies": { - "prosemirror-changeset": "^2.2.1", - "prosemirror-collab": "^1.3.1", - "prosemirror-commands": "^1.5.2", - "prosemirror-dropcursor": "^1.8.1", - "prosemirror-gapcursor": "^1.3.2", - "prosemirror-history": "^1.3.2", - "prosemirror-inputrules": "^1.3.0", - "prosemirror-keymap": "^1.2.2", - "prosemirror-markdown": "^1.12.0", - "prosemirror-menu": "^1.2.4", - "prosemirror-model": "^1.19.4", - "prosemirror-schema-basic": "^1.2.2", - "prosemirror-schema-list": "^1.3.0", - "prosemirror-state": "^1.4.3", - "prosemirror-tables": "^1.3.5", - "prosemirror-trailing-node": "^2.0.7", - "prosemirror-transform": "^1.8.0", - "prosemirror-view": "^1.32.7" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - } - }, - "node_modules/@tiptap/starter-kit": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.2.4.tgz", - "integrity": "sha512-Kbk7qUfIZg3+bNa3e/wBeDQt4jJB46uQgM+xy5NSY6H8NZP6gdmmap3aIrn9S/W/hGpxJl4RcXAeaT0CQji9XA==", - "peer": true, - "dependencies": { - "@tiptap/core": "^2.2.4", - "@tiptap/extension-blockquote": "^2.2.4", - "@tiptap/extension-bold": "^2.2.4", - "@tiptap/extension-bullet-list": "^2.2.4", - "@tiptap/extension-code": "^2.2.4", - "@tiptap/extension-code-block": "^2.2.4", - "@tiptap/extension-document": "^2.2.4", - "@tiptap/extension-dropcursor": "^2.2.4", - "@tiptap/extension-gapcursor": "^2.2.4", - "@tiptap/extension-hard-break": "^2.2.4", - "@tiptap/extension-heading": "^2.2.4", - "@tiptap/extension-history": "^2.2.4", - "@tiptap/extension-horizontal-rule": "^2.2.4", - "@tiptap/extension-italic": "^2.2.4", - "@tiptap/extension-list-item": "^2.2.4", - "@tiptap/extension-ordered-list": "^2.2.4", - "@tiptap/extension-paragraph": "^2.2.4", - "@tiptap/extension-strike": "^2.2.4", - "@tiptap/extension-text": "^2.2.4" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - } - }, - "node_modules/@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/cookie": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", - "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==" - }, - "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.11.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.19.tgz", - "integrity": "sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/phoenix": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz", - "integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g==" - }, - "node_modules/@types/pug": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", - "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", - "dev": true - }, - "node_modules/@types/sass": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.45.0.tgz", - "integrity": "sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA==", - "deprecated": "This is a stub types definition. sass provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "sass": "*" - } - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@types/websocket": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", - "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.50.0.tgz", - "integrity": "sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/type-utils": "5.50.0", - "@typescript-eslint/utils": "5.50.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.50.0.tgz", - "integrity": "sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/typescript-estree": "5.50.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", - "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.50.0.tgz", - "integrity": "sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.50.0", - "@typescript-eslint/utils": "5.50.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", - "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", - "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz", - "integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/typescript-estree": "5.50.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", - "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.50.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-node/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "devOptional": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array-uniq": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", - "integrity": "sha512-GVYjmpL05al4dNlKJm53mKE4w9OOLiuVHWorsIA3YVz+Hu0hcn6PtE3Ydl0EqU7v+7ABC4mjjWsnLUxbpno+CA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/autosize": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/autosize/-/autosize-5.0.2.tgz", - "integrity": "sha512-FPVt5ynkqUAA9gcMZnJHka1XfQgr1WNd/yRfIjmj5WGmjua+u5Hl9hn8M2nU5CNy2bEIcj1ZUwXq7IOHsfZG9w==", - "peer": true - }, - "node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "devOptional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "devOptional": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001517", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", - "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "devOptional": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/codemirror": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", - "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", - "peer": true, - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/commands": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/search": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0" - } - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dev": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/crelt": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", - "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", - "peer": true - }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/css-unit-converter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", - "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", - "dev": true - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/devalue": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", - "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==" - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/editorconfig": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", - "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", - "dev": true, - "dependencies": { - "@one-ini/wasm": "0.1.1", - "commander": "^10.0.0", - "minimatch": "9.0.1", - "semver": "^7.5.3" - }, - "bin": { - "editorconfig": "bin/editorconfig" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/editorconfig/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/editorconfig/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.473", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.473.tgz", - "integrity": "sha512-aVfC8+440vGfl06l8HKKn8/PD5jRfSnLkTTD65EFvU46igbpQRri1gxSzW9/+TeUlwYzrXk1sw867T96zlyECA==", - "dev": true - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "peer": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", - "dev": true - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/esbuild": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", - "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.17", - "@esbuild/android-arm64": "0.18.17", - "@esbuild/android-x64": "0.18.17", - "@esbuild/darwin-arm64": "0.18.17", - "@esbuild/darwin-x64": "0.18.17", - "@esbuild/freebsd-arm64": "0.18.17", - "@esbuild/freebsd-x64": "0.18.17", - "@esbuild/linux-arm": "0.18.17", - "@esbuild/linux-arm64": "0.18.17", - "@esbuild/linux-ia32": "0.18.17", - "@esbuild/linux-loong64": "0.18.17", - "@esbuild/linux-mips64el": "0.18.17", - "@esbuild/linux-ppc64": "0.18.17", - "@esbuild/linux-riscv64": "0.18.17", - "@esbuild/linux-s390x": "0.18.17", - "@esbuild/linux-x64": "0.18.17", - "@esbuild/netbsd-x64": "0.18.17", - "@esbuild/openbsd-x64": "0.18.17", - "@esbuild/sunos-x64": "0.18.17", - "@esbuild/win32-arm64": "0.18.17", - "@esbuild/win32-ia32": "0.18.17", - "@esbuild/win32-x64": "0.18.17" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", - "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.4.1", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz", - "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-svelte": { - "version": "2.32.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.32.4.tgz", - "integrity": "sha512-VJ12i2Iogug1jvhwxSlognnfGj76P5gks/V4pUD4SCSVQOp14u47MNP0zAG8AQR3LT0Fi1iUvIFnY4l9z5Rwbg==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@jridgewell/sourcemap-codec": "^1.4.14", - "debug": "^4.3.1", - "esutils": "^2.0.3", - "known-css-properties": "^0.28.0", - "postcss": "^8.4.5", - "postcss-load-config": "^3.1.4", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", - "semver": "^7.5.3", - "svelte-eslint-parser": "^0.32.2" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0-0", - "svelte": "^3.37.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "svelte": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esm-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", - "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==" - }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-saver": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", - "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "devOptional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "bin": { - "he": "bin/he" - } - }, - "node_modules/hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "node_modules/highlight.js": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz", - "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", - "dev": true - }, - "node_modules/hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", - "dev": true - }, - "node_modules/html-encoder-decoder": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/html-encoder-decoder/-/html-encoder-decoder-1.3.9.tgz", - "integrity": "sha512-dHv7bdOTEE69EIxXsM8Vslt+NW7QfEB5EGOC29BR14c7RQ9iHUgK76k3/aS23xNIwDg/xlZLWCSZ8lxol9bYlQ==", - "dependencies": { - "he": "^1.1.0", - "iterate-object": "^1.3.2", - "regex-escape": "^3.4.2" - } - }, - "node_modules/html-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/idb-keyval": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", - "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==", - "peer": true - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, - "node_modules/immutable": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.1.tgz", - "integrity": "sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==", - "devOptional": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-meta-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", - "dev": true, - "dependencies": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "devOptional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/iterate-object": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.4.tgz", - "integrity": "sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==" - }, - "node_modules/jose": { - "version": "4.14.4", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", - "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "node_modules/js-beautify": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.9.tgz", - "integrity": "sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg==", - "dev": true, - "dependencies": { - "config-chain": "^1.1.13", - "editorconfig": "^1.0.3", - "glob": "^8.1.0", - "nopt": "^6.0.0" - }, - "bin": { - "css-beautify": "js/bin/css-beautify.js", - "html-beautify": "js/bin/html-beautify.js", - "js-beautify": "js/bin/js-beautify.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/js-beautify/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/js-beautify/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/js-beautify/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/known-css-properties": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz", - "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==", - "dev": true - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "peer": true, - "dependencies": { - "uc.micro": "^2.0.0" - } - }, - "node_modules/linkifyjs": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.3.tgz", - "integrity": "sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==", - "peer": true - }, - "node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.topath": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", - "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==", - "dev": true - }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", - "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "peer": true, - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "peer": true - }, - "node_modules/memfs": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.7.7.tgz", - "integrity": "sha512-x9qc6k88J/VVwnfTkJV8pRRswJ2156Rc4w5rciRqKceFDZ0y1MqsNL9pkg5sE0GOcDzZYbonreALhaHzg1siFw==", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">= 4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/modern-normalize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz", - "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mousetrap": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", - "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/orderedmap": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", - "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", - "peer": true - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/playwright-core": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.33.0.tgz", - "integrity": "sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw==", - "dev": true, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss": { - "version": "8.4.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", - "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-js": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz", - "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1", - "postcss": "^8.1.6" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.6" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-scss": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.6.tgz", - "integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss-scss" - } - ], - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.4.19" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "peer": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/promise-worker": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-worker/-/promise-worker-2.0.1.tgz", - "integrity": "sha512-jR7vHqMEwWJ15i9vA3qyCKwRHihyLJp1sAa3RyY5F35m3u5s2lQUfq0nzVjbA8Xc7+3mL3Y9+9MHBO9UFRpFxA==" - }, - "node_modules/prosemirror-changeset": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz", - "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==", - "peer": true, - "dependencies": { - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-collab": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", - "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", - "peer": true, - "dependencies": { - "prosemirror-state": "^1.0.0" - } - }, - "node_modules/prosemirror-commands": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz", - "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-dropcursor": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", - "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", - "peer": true, - "dependencies": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0", - "prosemirror-view": "^1.1.0" - } - }, - "node_modules/prosemirror-gapcursor": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", - "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", - "peer": true, - "dependencies": { - "prosemirror-keymap": "^1.0.0", - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-view": "^1.0.0" - } - }, - "node_modules/prosemirror-history": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.0.tgz", - "integrity": "sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==", - "peer": true, - "dependencies": { - "prosemirror-state": "^1.2.2", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.31.0", - "rope-sequence": "^1.3.0" - } - }, - "node_modules/prosemirror-inputrules": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz", - "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==", - "peer": true, - "dependencies": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-keymap": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", - "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", - "peer": true, - "dependencies": { - "prosemirror-state": "^1.0.0", - "w3c-keyname": "^2.2.0" - } - }, - "node_modules/prosemirror-markdown": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.12.0.tgz", - "integrity": "sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==", - "peer": true, - "dependencies": { - "markdown-it": "^14.0.0", - "prosemirror-model": "^1.0.0" - } - }, - "node_modules/prosemirror-menu": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz", - "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==", - "peer": true, - "dependencies": { - "crelt": "^1.0.0", - "prosemirror-commands": "^1.0.0", - "prosemirror-history": "^1.0.0", - "prosemirror-state": "^1.0.0" - } - }, - "node_modules/prosemirror-model": { - "version": "1.19.4", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.19.4.tgz", - "integrity": "sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==", - "peer": true, - "dependencies": { - "orderedmap": "^2.0.0" - } - }, - "node_modules/prosemirror-schema-basic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz", - "integrity": "sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.19.0" - } - }, - "node_modules/prosemirror-schema-list": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz", - "integrity": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.7.3" - } - }, - "node_modules/prosemirror-state": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", - "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.27.0" - } - }, - "node_modules/prosemirror-tables": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.7.tgz", - "integrity": "sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==", - "peer": true, - "dependencies": { - "prosemirror-keymap": "^1.1.2", - "prosemirror-model": "^1.8.1", - "prosemirror-state": "^1.3.1", - "prosemirror-transform": "^1.2.1", - "prosemirror-view": "^1.13.3" - } - }, - "node_modules/prosemirror-trailing-node": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.8.tgz", - "integrity": "sha512-ujRYhSuhQb1Jsarh1IHqb2KoSnRiD7wAMDGucP35DN7j5af6X7B18PfdPIrbwsPTqIAj0fyOvxbuPsWhNvylmA==", - "peer": true, - "dependencies": { - "@remirror/core-constants": "^2.0.2", - "escape-string-regexp": "^4.0.0" - }, - "peerDependencies": { - "prosemirror-model": "^1.19.0", - "prosemirror-state": "^1.4.2", - "prosemirror-view": "^1.31.2" - } - }, - "node_modules/prosemirror-transform": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz", - "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.0.0" - } - }, - "node_modules/prosemirror-view": { - "version": "1.33.3", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.3.tgz", - "integrity": "sha512-P4Ao/bc4OrU/2yLIf8dL4lJaEtjLR3QjIvQHgJYp2jUS7kYM4bSR6okbBjkqzOs/FwUon6UGjTLdKMnPL1MZqw==", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.16.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0" - } - }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/purgecss": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-4.1.3.tgz", - "integrity": "sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==", - "dev": true, - "dependencies": { - "commander": "^8.0.0", - "glob": "^7.1.7", - "postcss": "^8.3.5", - "postcss-selector-parser": "^6.0.6" - }, - "bin": { - "purgecss": "bin/purgecss.js" - } - }, - "node_modules/purgecss/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/randombytes": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", - "integrity": "sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==", - "dev": true - }, - "node_modules/randomstring": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.3.tgz", - "integrity": "sha512-3dEFySepTzp2CvH6W/ASYGguPPveBuz5MpZ7MuoUkoVehmyNl9+F9c9GFVrz2QPbM9NXTIHGcmJDY/3j4677kQ==", - "dev": true, - "dependencies": { - "array-uniq": "1.0.2", - "randombytes": "2.0.3" - }, - "bin": { - "randomstring": "bin/randomstring" - }, - "engines": { - "node": "*" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reduce-css-calc": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", - "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", - "dev": true, - "dependencies": { - "css-unit-converter": "^1.1.1", - "postcss-value-parser": "^3.3.0" - } - }, - "node_modules/reduce-css-calc/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/regex-escape": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/regex-escape/-/regex-escape-3.4.10.tgz", - "integrity": "sha512-qEqf7uzW+iYcKNLMDFnMkghhQBnGdivT6KqVQyKsyjSWnoFyooXVnxrw9dtv3AFLnD6VBGXxtZGAQNFGFTnCqA==" - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", - "dev": true - }, - "node_modules/rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.27.2.tgz", - "integrity": "sha512-YGwmHf7h2oUHkVBT248x0yt6vZkYQ3/rvE5iQuVBh3WO8GcJ6BNeOkpoX1yMHIiBm18EMLjBPIoUDkhgnyxGOQ==", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rope-sequence": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", - "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", - "peer": true - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/sander": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", - "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", - "dev": true, - "dependencies": { - "es6-promise": "^3.1.2", - "graceful-fs": "^4.1.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.2" - } - }, - "node_modules/sander/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/sass": { - "version": "1.64.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", - "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", - "devOptional": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/set-cookie-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", - "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/showdown": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/showdown/-/showdown-2.1.0.tgz", - "integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==", - "dependencies": { - "commander": "^9.0.0" - }, - "bin": { - "showdown": "bin/showdown.js" - }, - "funding": { - "type": "individual", - "url": "https://www.paypal.me/tiviesantos" - } - }, - "node_modules/showdown-highlight": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/showdown-highlight/-/showdown-highlight-3.1.0.tgz", - "integrity": "sha512-wrTxtE63L/bpW5A2Uy/AO1gblXnNHK/cDL6LszECOoCdMJKWTj0/4n4I/pmqub+3H3KCPVDDvtXpCArnT/heFA==", - "dependencies": { - "highlight.js": "^11.5.0", - "html-encoder-decoder": "^1.3.9", - "showdown": "^2.0.3" - } - }, - "node_modules/showdown/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - }, - "node_modules/sirv": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", - "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", - "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", - "dev": true, - "dependencies": { - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" - }, - "bin": { - "sorcery": "bin/index.js" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-literal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", - "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", - "dev": true, - "dependencies": { - "acorn": "^8.8.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/style-mod": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", - "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", - "peer": true - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svelte": { - "version": "3.59.2", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.2.tgz", - "integrity": "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/svelte-check": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.10.3.tgz", - "integrity": "sha512-Nt1aWHTOKFReBpmJ1vPug0aGysqPwJh2seM1OvICfM2oeyaA62mOiy5EvkXhltGfhCcIQcq2LoE0l1CwcWPjlw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.9", - "chokidar": "^3.4.1", - "fast-glob": "^3.2.7", - "import-fresh": "^3.2.1", - "picocolors": "^1.0.0", - "sade": "^1.7.4", - "svelte-preprocess": "^4.0.0", - "typescript": "*" - }, - "bin": { - "svelte-check": "bin/svelte-check" - }, - "peerDependencies": { - "svelte": "^3.24.0" - } - }, - "node_modules/svelte-check/node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/svelte-check/node_modules/svelte-preprocess": { - "version": "4.10.7", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", - "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@types/pug": "^2.0.4", - "@types/sass": "^1.16.0", - "detect-indent": "^6.0.0", - "magic-string": "^0.25.7", - "sorcery": "^0.10.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">= 9.11.2" - }, - "peerDependencies": { - "@babel/core": "^7.10.2", - "coffeescript": "^2.5.1", - "less": "^3.11.3 || ^4.0.0", - "postcss": "^7 || ^8", - "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0", - "pug": "^3.0.0", - "sass": "^1.26.8", - "stylus": "^0.55.0", - "sugarss": "^2.0.0", - "svelte": "^3.23.0", - "typescript": "^3.9.5 || ^4.0.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "coffeescript": { - "optional": true - }, - "less": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "postcss": { - "optional": true - }, - "postcss-load-config": { - "optional": true - }, - "pug": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/svelte-dnd-action": { - "version": "0.9.42", - "resolved": "https://registry.npmjs.org/svelte-dnd-action/-/svelte-dnd-action-0.9.42.tgz", - "integrity": "sha512-hrlMnAtUrQP8V4vH9+dKHzX3z5u9BAo6F/BUUqKftiF6/Wh+yC560kgzTzB2fSZxumd2e6A4RalwlH0NYIllSw==", - "peer": true, - "peerDependencies": { - "svelte": ">=3.23.0" - } - }, - "node_modules/svelte-eslint-parser": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.32.2.tgz", - "integrity": "sha512-Ok9D3A4b23iLQsONrjqtXtYDu5ZZ/826Blaw2LeFZVTg1pwofKDG4mz3/GYTax8fQ0plRGHI6j+d9VQYy5Lo/A==", - "dev": true, - "dependencies": { - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", - "postcss": "^8.4.25", - "postcss-scss": "^4.0.6" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "svelte": "^3.37.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "svelte": { - "optional": true - } - } - }, - "node_modules/svelte-eslint-parser/node_modules/eslint-scope": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", - "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/svelte-eslint-parser/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/svelte-hmr": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.2.tgz", - "integrity": "sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==", - "engines": { - "node": "^12.20 || ^14.13.1 || >= 16" - }, - "peerDependencies": { - "svelte": "^3.19.0 || ^4.0.0-next.0" - } - }, - "node_modules/svelte-json-tree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svelte-json-tree/-/svelte-json-tree-1.0.0.tgz", - "integrity": "sha512-scs1OdkC8uFpTN4MX0yKkOzZ1/EG3eP1ARC+xcFthXp2IfcwBaXgab0FqA4Am0vQwffNNB+1Gd1LFkJBlynWTA==", - "dev": true - }, - "node_modules/svelte-preprocess": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz", - "integrity": "sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@types/pug": "^2.0.6", - "detect-indent": "^6.1.0", - "magic-string": "^0.27.0", - "sorcery": "^0.11.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">= 14.10.0" - }, - "peerDependencies": { - "@babel/core": "^7.10.2", - "coffeescript": "^2.5.1", - "less": "^3.11.3 || ^4.0.0", - "postcss": "^7 || ^8", - "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0", - "pug": "^3.0.0", - "sass": "^1.26.8", - "stylus": "^0.55.0", - "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0", - "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "coffeescript": { - "optional": true - }, - "less": { - "optional": true - }, - "postcss": { - "optional": true - }, - "postcss-load-config": { - "optional": true - }, - "pug": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/svelte-preprocess/node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-preprocess/node_modules/sorcery": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", - "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.14", - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0" - }, - "bin": { - "sorcery": "bin/sorcery" - } - }, - "node_modules/svelte-toggle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/svelte-toggle/-/svelte-toggle-3.1.0.tgz", - "integrity": "sha512-2gzDDMDhM+ImDaLEZVlnlHVY1340Y368tT4Qk5IwLnCeRJ4zV3cVwliVGacoHy7iCDukcGXzKwDzG/hTTcaljg==", - "peer": true - }, - "node_modules/tailwindcss": { - "version": "2.2.19", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-2.2.19.tgz", - "integrity": "sha512-6Ui7JSVtXadtTUo2NtkBBacobzWiQYVjYW0ZnKaP9S1ZCKQ0w7KVNz+YSDI/j7O7KCMHbOkz94ZMQhbT9pOqjw==", - "dev": true, - "dependencies": { - "arg": "^5.0.1", - "bytes": "^3.0.0", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "color": "^4.0.1", - "cosmiconfig": "^7.0.1", - "detective": "^5.2.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.7", - "fs-extra": "^10.0.0", - "glob-parent": "^6.0.1", - "html-tags": "^3.1.0", - "is-color-stop": "^1.1.0", - "is-glob": "^4.0.1", - "lodash": "^4.17.21", - "lodash.topath": "^4.5.2", - "modern-normalize": "^1.1.0", - "node-emoji": "^1.11.0", - "normalize-path": "^3.0.0", - "object-hash": "^2.2.0", - "postcss-js": "^3.0.3", - "postcss-load-config": "^3.1.0", - "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.6", - "postcss-value-parser": "^4.1.0", - "pretty-hrtime": "^1.0.3", - "purgecss": "^4.0.3", - "quick-lru": "^5.1.1", - "reduce-css-calc": "^2.1.8", - "resolve": "^1.20.0", - "tmp": "^0.2.1" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "autoprefixer": "^10.0.2", - "postcss": "^8.0.9" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/timeago.js": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/timeago.js/-/timeago.js-4.0.2.tgz", - "integrity": "sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w==" - }, - "node_modules/tinybench": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.3.1.tgz", - "integrity": "sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==", - "dev": true - }, - "node_modules/tinypool": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.1.tgz", - "integrity": "sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", - "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tippy.js": { - "version": "6.3.7", - "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", - "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", - "peer": true, - "dependencies": { - "@popperjs/core": "^2.9.0" - } - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "devOptional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/totalist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", - "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "peer": true - }, - "node_modules/undici": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", - "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", - "dependencies": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "peer": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vite": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.8.tgz", - "integrity": "sha512-LONawOUUjxQridNWGQlNizfKH89qPigK36XhMI7COMGztz8KNY0JHim7/xDd71CZwGT4HtSRgI7Hy+RlhG0Gvg==", - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.26", - "rollup": "^3.25.2" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vitefu": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", - "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/vitest": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.8.tgz", - "integrity": "sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==", - "dev": true, - "dependencies": { - "@types/chai": "^4.3.4", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "acorn": "^8.8.1", - "acorn-walk": "^8.2.0", - "chai": "^4.3.7", - "debug": "^4.3.4", - "local-pkg": "^0.4.2", - "source-map": "^0.6.1", - "strip-literal": "^1.0.0", - "tinybench": "^2.3.1", - "tinypool": "^0.3.0", - "tinyspy": "^1.0.2", - "vite": "^3.0.0 || ^4.0.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": ">=v14.16.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@vitest/browser": "*", - "@vitest/ui": "*", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/w3c-keyname": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", - "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", - "peer": true - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", - "engines": { - "node": ">=0.10.32" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", - "dev": true, - "requires": { - "@babel/highlight": "^7.22.5" - } - }, - "@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@babel/core": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", - "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "@babel/generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", - "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", - "dev": true, - "optional": true, - "peer": true - }, - "@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" - } - }, - "@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "optional": true, - "peer": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true, - "optional": true, - "peer": true - }, - "@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" - } - }, - "@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", - "dev": true, - "optional": true, - "peer": true - }, - "@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - }, - "@codemirror/autocomplete": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.15.0.tgz", - "integrity": "sha512-G2Zm0mXznxz97JhaaOdoEG2cVupn4JjPaS4AcNvZzhOsnnG9YVN68VzfoUw6dYTsIxT6a/cmoFEN47KAWhXaOg==", - "peer": true, - "requires": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0" - } - }, - "@codemirror/commands": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz", - "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==", - "peer": true, - "requires": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.4.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.1.0" - } - }, - "@codemirror/lang-css": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.1.tgz", - "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==", - "peer": true, - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.2", - "@lezer/css": "^1.0.0" - } - }, - "@codemirror/lang-html": { - "version": "6.4.8", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.8.tgz", - "integrity": "sha512-tE2YK7wDlb9ZpAH6mpTPiYm6rhfdQKVDa5r9IwIFlwwgvVaKsCfuKKZoJGWsmMZIf3FQAuJ5CHMPLymOtg1hXw==", - "peer": true, - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/lang-css": "^6.0.0", - "@codemirror/lang-javascript": "^6.0.0", - "@codemirror/language": "^6.4.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0", - "@lezer/css": "^1.1.0", - "@lezer/html": "^1.3.0" - } - }, - "@codemirror/lang-javascript": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz", - "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==", - "peer": true, - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.6.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0", - "@lezer/javascript": "^1.0.0" - } - }, - "@codemirror/language": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.1.tgz", - "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==", - "peer": true, - "requires": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.23.0", - "@lezer/common": "^1.1.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0", - "style-mod": "^4.0.0" - } - }, - "@codemirror/lint": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.5.0.tgz", - "integrity": "sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==", - "peer": true, - "requires": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "@codemirror/search": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz", - "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==", - "peer": true, - "requires": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "@codemirror/state": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz", - "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==", - "peer": true - }, - "@codemirror/view": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.26.1.tgz", - "integrity": "sha512-wLw0t3R9AwOSQThdZ5Onw8QQtem5asE7+bPlnzc57eubPqiuJKIzwjMZ+C42vQett+iva+J8VgFV4RYWDBh5FA==", - "peer": true, - "requires": { - "@codemirror/state": "^6.4.0", - "style-mod": "^4.1.0", - "w3c-keyname": "^2.2.4" - } - }, - "@esbuild/android-arm": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", - "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==", - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz", - "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==", - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz", - "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==", - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz", - "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==", - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz", - "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==", - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz", - "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==", - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz", - "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==", - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz", - "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==", - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz", - "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==", - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz", - "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==", - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz", - "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==", - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz", - "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==", - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz", - "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==", - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz", - "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==", - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz", - "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==", - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", - "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz", - "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==", - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz", - "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==", - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz", - "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==", - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz", - "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==", - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz", - "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==", - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz", - "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==", - "optional": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@fontsource/fira-code": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@fontsource/fira-code/-/fira-code-5.0.5.tgz", - "integrity": "sha512-mb6eBaD0nheCaPZYllnBVsfUUuZufFtxZrF57CjmzkW2tM/G6Yag2UGjCX6vWVblHiIssmj986IDJo+R7SvnMw==" - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@iconify/svelte": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@iconify/svelte/-/svelte-2.2.1.tgz", - "integrity": "sha512-eWZq8CRrr3WfnKAj8SWknfE3S/d+j/AzEcypeJaHurS1s4zTdFnkjATcFa8lerGtcX0PAtXiVL94tbIEd69N+w==" - }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "optional": true, - "peer": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@lezer/common": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", - "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==", - "peer": true - }, - "@lezer/css": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.8.tgz", - "integrity": "sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==", - "peer": true, - "requires": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/highlight": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", - "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", - "peer": true, - "requires": { - "@lezer/common": "^1.0.0" - } - }, - "@lezer/html": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.9.tgz", - "integrity": "sha512-MXxeCMPyrcemSLGaTQEZx0dBUH0i+RPl8RN5GwMAzo53nTsd/Unc/t5ZxACeQoyPUM5/GkPLRUs2WliOImzkRA==", - "peer": true, - "requires": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/javascript": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.14.tgz", - "integrity": "sha512-GEdUyspTRgc5dwIGebUk+f3BekvqEWVIYsIuAC3pA8e8wcikGwBZRWRa450L0s8noGWuULwnmi4yjxTnYz9PpA==", - "peer": true, - "requires": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.1.3", - "@lezer/lr": "^1.3.0" - } - }, - "@lezer/lr": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz", - "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==", - "peer": true, - "requires": { - "@lezer/common": "^1.0.0" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@one-ini/wasm": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", - "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", - "dev": true - }, - "@playwright/test": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.33.0.tgz", - "integrity": "sha512-YunBa2mE7Hq4CfPkGzQRK916a4tuZoVx/EpLjeWlTVOnD4S2+fdaQZE0LJkbfhN5FTSKNLdcl7MoT5XB37bTkg==", - "dev": true, - "requires": { - "@types/node": "*", - "fsevents": "2.3.2", - "playwright-core": "1.33.0" - } - }, - "@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" - }, - "@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true - }, - "@primocms/builder": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@primocms/builder/-/builder-0.1.66.tgz", - "integrity": "sha512-tlfk1ENrcF2x3llcwq6YBbkAYDQkz0qFU0X8ez+VKc9fb4YR9Qngva5ZeXXfoFzBXHrmOvYigsY9m8alzPEewg==", - "requires": {} - }, - "@remirror/core-constants": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz", - "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==", - "peer": true - }, - "@replit/codemirror-lang-svelte": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-svelte/-/codemirror-lang-svelte-6.0.0.tgz", - "integrity": "sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==", - "peer": true, - "requires": {} - }, - "@rollup/browser": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/@rollup/browser/-/browser-3.28.0.tgz", - "integrity": "sha512-7U9WFjEArYZF0GVz/durys8tzBePwu4HkI5yxDmaRFn0B0qH1yabvworYZiGZYhevlZ+jDFAU4gKgF0gNsANDg==" - }, - "@supabase/auth-helpers-shared": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.4.1.tgz", - "integrity": "sha512-IEDX9JzWkIjQiLUaP4Qy5YDiG0jFQatWfS+jw8cCQs6QfbNdEPd2Y3qonwGHnM90CZom9SvjuylBv2pFVAL7Lw==", - "requires": { - "jose": "^4.14.3" - } - }, - "@supabase/auth-helpers-sveltekit": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-sveltekit/-/auth-helpers-sveltekit-0.10.2.tgz", - "integrity": "sha512-azQqh4ofgB+ewHBGQPp77R9552jD0DXZMd0QQQQvsgLUdGVghRrydW11491473DvcONoy2KMWUShVxccjzo6Gw==", - "requires": { - "@supabase/auth-helpers-shared": "0.4.1" - } - }, - "@supabase/functions-js": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.2.tgz", - "integrity": "sha512-QCR6pwJs9exCl37bmpMisUd6mf+0SUBJ6mUpiAjEkSJ/+xW8TCuO14bvkWHADd5hElJK9MxNlMQXxSA4DRz9nQ==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/gotrue-js": { - "version": "2.46.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.46.1.tgz", - "integrity": "sha512-tebFX3XvPqEJKHOVgkXTN20g9iUhLx6tebIYQvTggYTrqOT2af8oTpSBdgYzbwJ291G6P6CSpR6KY0cT9ade5A==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/postgrest-js": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.7.2.tgz", - "integrity": "sha512-GK80JpRq8l6Qll85erICypAfQCied8tdlXfsDN14W844HqXCSOisk8AaE01DAwGJanieaoN5fuqhzA2yKxDvEQ==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/realtime-js": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.3.tgz", - "integrity": "sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==", - "requires": { - "@types/phoenix": "^1.5.4", - "@types/websocket": "^1.0.3", - "websocket": "^1.0.34" - } - }, - "@supabase/storage-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.1.tgz", - "integrity": "sha512-nkR0fQA9ScAtIKA3vNoPEqbZv1k5B5HVRYEvRWdlP6mUpFphM9TwPL2jZ/ztNGMTG5xT6SrHr+H7Ykz8qzbhjw==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/supabase-js": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.31.0.tgz", - "integrity": "sha512-W9/4s+KnSUX67wJKBn/3yLq+ieycnMzVjK3nNTLX5Wko3ypNT/081l2iFYrf+nsLQ1CiT4mA92I3dxCy6CmxTg==", - "requires": { - "@supabase/functions-js": "^2.1.0", - "@supabase/gotrue-js": "^2.46.1", - "@supabase/postgrest-js": "^1.7.0", - "@supabase/realtime-js": "^2.7.3", - "@supabase/storage-js": "^2.5.1", - "cross-fetch": "^3.1.5" - } - }, - "@sveltejs/adapter-auto": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.1.tgz", - "integrity": "sha512-nzi6x/7/3Axh5VKQ8Eed3pYxastxoa06Y/bFhWb7h3Nu+nGRVxKAy3+hBJgmPCwWScy8n0TsstZjSVKfyrIHkg==", - "dev": true, - "requires": { - "import-meta-resolve": "^4.0.0" - } - }, - "@sveltejs/kit": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.22.4.tgz", - "integrity": "sha512-Opkqw1QXk4Cc25b/heJP2D7mX+OUBFAq4MXKfET58svTTxdeiHFKzmnuRsSF3nmxESqrLjqPAgHpib+knNGzRw==", - "requires": { - "@sveltejs/vite-plugin-svelte": "^2.4.1", - "@types/cookie": "^0.5.1", - "cookie": "^0.5.0", - "devalue": "^4.3.1", - "esm-env": "^1.0.0", - "kleur": "^4.1.5", - "magic-string": "^0.30.0", - "mime": "^3.0.0", - "sade": "^1.8.1", - "set-cookie-parser": "^2.6.0", - "sirv": "^2.0.2", - "undici": "~5.22.0" - } - }, - "@sveltejs/vite-plugin-svelte": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.3.tgz", - "integrity": "sha512-NY2h+B54KHZO3kDURTdARqthn6D4YSIebtfW75NvZ/fwyk4G+AJw3V/i0OBjyN4406Ht9yZcnNWMuRUFnDNNiA==", - "requires": { - "@sveltejs/vite-plugin-svelte-inspector": "^1.0.3", - "debug": "^4.3.4", - "deepmerge": "^4.3.1", - "kleur": "^4.1.5", - "magic-string": "^0.30.1", - "svelte-hmr": "^0.15.2", - "vitefu": "^0.2.4" - } - }, - "@sveltejs/vite-plugin-svelte-inspector": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.3.tgz", - "integrity": "sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==", - "requires": { - "debug": "^4.3.4" - } - }, - "@tiptap/core": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.2.4.tgz", - "integrity": "sha512-cRrI8IlLIhCE1hacBQzXIC8dsRvGq6a4lYWQK/BaHuZg21CG7szp3Vd8Ix+ra1f5v0xPOT+Hy+QFNQooRMKMCw==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-blockquote": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.2.4.tgz", - "integrity": "sha512-FrfPnn0VgVrUwWLwja1afX99JGLp6PE9ThVcmri+tLwUZQvTTVcCvHoCdOakav3/nge1+aV4iE3tQdyq1tWI9Q==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-bold": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.2.4.tgz", - "integrity": "sha512-v3tTLc8YESFZPOGj5ByFr8VbmQ/PTo49T1vsK50VubxIN/5r9cXlKH8kb3dZlZxCxJa3FrXNO/M8rdGBSWQvSg==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-bubble-menu": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.2.4.tgz", - "integrity": "sha512-Nx1fS9jcFlhxaTDYlnayz2UulhK6CMaePc36+7PQIVI+u20RhgTCRNr25zKNemvsiM0RPZZVUjlHkxC0l5as1Q==", - "peer": true, - "requires": { - "tippy.js": "^6.3.7" - } - }, - "@tiptap/extension-bullet-list": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.2.4.tgz", - "integrity": "sha512-z/MPmW8bhRougMuorl6MAQBXeK4rhlP+jBWlNwT+CT8h5IkXqPnDbM1sZeagp2nYfVV6Yc4RWpzimqHHtGnYTA==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-code": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.2.4.tgz", - "integrity": "sha512-JB4SJ2mUU/9qXFUf+K5K9szvovnN9AIcCb0f0UlcVBuddKHSqCl3wO3QJgYt44BfQTLMNuyzr+zVqfFd6BNt/g==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-code-block": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.2.4.tgz", - "integrity": "sha512-h6WV9TmaBEZmvqe1ezMR83DhCPUap6P2mSR5pwVk0WVq6rvZjfgU0iF3EetBJOeDgPlz7cNe2NMDfVb1nGTM/g==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-document": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.2.4.tgz", - "integrity": "sha512-z+05xGK0OFoXV1GL+/8bzcZuWMdMA3+EKwk5c+iziG60VZcvGTF7jBRsZidlu9Oaj0cDwWHCeeo6L9SgSh6i2A==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-dropcursor": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.2.4.tgz", - "integrity": "sha512-IHwkEKmqpqXyJi16h7871NrcIqeyN7I6XRE2qdqi+MhGigVWI8nWHoYbjRKa7K/1uhs5zeRYyDlq5EuZyL6mgA==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-floating-menu": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.2.4.tgz", - "integrity": "sha512-U25l7PEzOmlAPugNRl8t8lqyhQZS6W/+3f92+FdwW9qXju3i62iX/3OGCC3Gv+vybmQ4fbZmMjvl+VDfenNi3A==", - "peer": true, - "requires": { - "tippy.js": "^6.3.7" - } - }, - "@tiptap/extension-gapcursor": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.2.4.tgz", - "integrity": "sha512-Y6htT/RDSqkQ1UwG2Ia+rNVRvxrKPOs3RbqKHPaWr3vbFWwhHyKhMCvi/FqfI3d5pViVHOZQ7jhb5hT/a0BmNw==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-hard-break": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.2.4.tgz", - "integrity": "sha512-FPvS57GcqHIeLbPKGJa3gnH30Xw+YB1PXXnAWG2MpnMtc2Vtj1l5xaYYBZB+ADdXLAlU0YMbKhFLQO4+pg1Isg==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-heading": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.2.4.tgz", - "integrity": "sha512-gkq7Ns2FcrOCRq7Q+VRYt5saMt2R9g4REAtWy/jEevJ5UV5vA2AiGnYDmxwAkHutoYU0sAUkjqx37wE0wpamNw==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-highlight": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.2.4.tgz", - "integrity": "sha512-GGl6ehKQ0Q0gGgUQhkWg2XYPfhVU5c0JD3NHzV4OrBP6JAtFeMYeSLdfYzFcmoYnGafvSZaJ3NukUvnDHZGzRg==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-history": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.2.4.tgz", - "integrity": "sha512-FDM32XYF5NU4mzh+fJ8w2CyUqv0l2Nl15sd6fOhQkVxSj8t57z+DUXc9ZR3zkH+1RAagYJo/2Gu3e99KpMr0tg==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-horizontal-rule": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.2.4.tgz", - "integrity": "sha512-iCRHjFQQHApWg3R4fkKkJQhWEOdu1Fdc4YEAukdOXPSg3fg36IwjvsMXjt9SYBtVZ+iio3rORCZGXyMvgCH9uw==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-italic": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.2.4.tgz", - "integrity": "sha512-qIhGNvWnsQswSgEMRA8jQQjxfkOGNAuNWKEVQX9DPoqAUgknT41hQcAMP8L2+OdACpb2jbVMOO5Cy5Dof2L8/w==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-link": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.2.4.tgz", - "integrity": "sha512-Qsx0cFZm4dxbkToXs5TcXbSoUdicv8db1gV1DYIZdETqjBm4wFjlzCUP7hPHFlvNfeSy1BzAMRt+RpeuiwvxWQ==", - "peer": true, - "requires": { - "linkifyjs": "^4.1.0" - } - }, - "@tiptap/extension-list-item": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.2.4.tgz", - "integrity": "sha512-lPLKGKsHpM9ClUa8n7GEUn8pG6HCYU0vFruIy3l2t6jZdHkrgBnYtVGMZ13K8UDnj/hlAlccxku0D0P4mA1Vrg==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-ordered-list": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.2.4.tgz", - "integrity": "sha512-TpFy140O9Af1JciXt+xwqYUXxcJ6YG8zi/B5UDJujp+FH5sCmlYYBBnWxiFMhVaj6yEmA2eafu1qUkic/1X5Aw==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-paragraph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.2.4.tgz", - "integrity": "sha512-m1KwyvTNJxsq7StbspbcOhxO4Wk4YpElDbqOouWi+H4c8azdpI5Pn96ZqhFeE9bSyjByg6OcB/wqoJsLbeFWdQ==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-strike": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.2.4.tgz", - "integrity": "sha512-/a2EwQgA+PpG17V2tVRspcrIY0SN3blwcgM7lxdW4aucGkqSKnf7+91dkhQEwCZ//o8kv9mBCyRoCUcGy6S5Xg==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-text": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.2.4.tgz", - "integrity": "sha512-NlKHMPnRJXB+0AGtDlU0P2Pg+SdesA2lMMd7JzDUgJgL7pX2jOb8eUqSeOjFKuSzFSqYfH6C3o6mQiNhuQMv+g==", - "peer": true, - "requires": {} - }, - "@tiptap/pm": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.2.4.tgz", - "integrity": "sha512-Po0klR165zgtinhVp1nwMubjyKx6gAY9kH3IzcniYLCkqhPgiqnAcCr61TBpp4hfK8YURBS4ihvCB1dyfCyY8A==", - "peer": true, - "requires": { - "prosemirror-changeset": "^2.2.1", - "prosemirror-collab": "^1.3.1", - "prosemirror-commands": "^1.5.2", - "prosemirror-dropcursor": "^1.8.1", - "prosemirror-gapcursor": "^1.3.2", - "prosemirror-history": "^1.3.2", - "prosemirror-inputrules": "^1.3.0", - "prosemirror-keymap": "^1.2.2", - "prosemirror-markdown": "^1.12.0", - "prosemirror-menu": "^1.2.4", - "prosemirror-model": "^1.19.4", - "prosemirror-schema-basic": "^1.2.2", - "prosemirror-schema-list": "^1.3.0", - "prosemirror-state": "^1.4.3", - "prosemirror-tables": "^1.3.5", - "prosemirror-trailing-node": "^2.0.7", - "prosemirror-transform": "^1.8.0", - "prosemirror-view": "^1.32.7" - } - }, - "@tiptap/starter-kit": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.2.4.tgz", - "integrity": "sha512-Kbk7qUfIZg3+bNa3e/wBeDQt4jJB46uQgM+xy5NSY6H8NZP6gdmmap3aIrn9S/W/hGpxJl4RcXAeaT0CQji9XA==", - "peer": true, - "requires": { - "@tiptap/core": "^2.2.4", - "@tiptap/extension-blockquote": "^2.2.4", - "@tiptap/extension-bold": "^2.2.4", - "@tiptap/extension-bullet-list": "^2.2.4", - "@tiptap/extension-code": "^2.2.4", - "@tiptap/extension-code-block": "^2.2.4", - "@tiptap/extension-document": "^2.2.4", - "@tiptap/extension-dropcursor": "^2.2.4", - "@tiptap/extension-gapcursor": "^2.2.4", - "@tiptap/extension-hard-break": "^2.2.4", - "@tiptap/extension-heading": "^2.2.4", - "@tiptap/extension-history": "^2.2.4", - "@tiptap/extension-horizontal-rule": "^2.2.4", - "@tiptap/extension-italic": "^2.2.4", - "@tiptap/extension-list-item": "^2.2.4", - "@tiptap/extension-ordered-list": "^2.2.4", - "@tiptap/extension-paragraph": "^2.2.4", - "@tiptap/extension-strike": "^2.2.4", - "@tiptap/extension-text": "^2.2.4" - } - }, - "@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, - "requires": { - "@types/chai": "*" - } - }, - "@types/cookie": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", - "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==" - }, - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/node": { - "version": "18.11.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.19.tgz", - "integrity": "sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw==" - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/phoenix": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz", - "integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g==" - }, - "@types/pug": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", - "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", - "dev": true - }, - "@types/sass": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.45.0.tgz", - "integrity": "sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA==", - "dev": true, - "requires": { - "sass": "*" - } - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "@types/websocket": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", - "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", - "requires": { - "@types/node": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.50.0.tgz", - "integrity": "sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/type-utils": "5.50.0", - "@typescript-eslint/utils": "5.50.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.50.0.tgz", - "integrity": "sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/typescript-estree": "5.50.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", - "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.50.0.tgz", - "integrity": "sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.50.0", - "@typescript-eslint/utils": "5.50.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", - "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", - "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz", - "integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/typescript-estree": "5.50.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", - "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.50.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "requires": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "devOptional": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array-uniq": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", - "integrity": "sha512-GVYjmpL05al4dNlKJm53mKE4w9OOLiuVHWorsIA3YVz+Hu0hcn6PtE3Ydl0EqU7v+7ABC4mjjWsnLUxbpno+CA==", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "autosize": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/autosize/-/autosize-5.0.2.tgz", - "integrity": "sha512-FPVt5ynkqUAA9gcMZnJHka1XfQgr1WNd/yRfIjmj5WGmjua+u5Hl9hn8M2nU5CNy2bEIcj1ZUwXq7IOHsfZG9w==", - "peer": true - }, - "axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "requires": { - "follow-redirects": "^1.14.8" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "devOptional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "devOptional": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true - }, - "bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "requires": { - "streamsearch": "^1.1.0" - } - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001517", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", - "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", - "dev": true - }, - "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "devOptional": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "codemirror": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", - "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", - "peer": true, - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/commands": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/search": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0" - } - }, - "color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dev": true, - "requires": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "optional": true, - "peer": true - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "crelt": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", - "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", - "peer": true - }, - "cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "requires": { - "node-fetch": "^2.6.12" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", - "dev": true - }, - "css-unit-converter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", - "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" - }, - "defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true - }, - "detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true - }, - "detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "requires": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - } - }, - "devalue": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", - "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==" - }, - "didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "editorconfig": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", - "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", - "dev": true, - "requires": { - "@one-ini/wasm": "0.1.1", - "commander": "^10.0.0", - "minimatch": "9.0.1", - "semver": "^7.5.3" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "electron-to-chromium": { - "version": "1.4.473", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.473.tgz", - "integrity": "sha512-aVfC8+440vGfl06l8HKKn8/PD5jRfSnLkTTD65EFvU46igbpQRri1gxSzW9/+TeUlwYzrXk1sw867T96zlyECA==", - "dev": true - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "peer": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", - "dev": true - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "esbuild": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", - "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", - "requires": { - "@esbuild/android-arm": "0.18.17", - "@esbuild/android-arm64": "0.18.17", - "@esbuild/android-x64": "0.18.17", - "@esbuild/darwin-arm64": "0.18.17", - "@esbuild/darwin-x64": "0.18.17", - "@esbuild/freebsd-arm64": "0.18.17", - "@esbuild/freebsd-x64": "0.18.17", - "@esbuild/linux-arm": "0.18.17", - "@esbuild/linux-arm64": "0.18.17", - "@esbuild/linux-ia32": "0.18.17", - "@esbuild/linux-loong64": "0.18.17", - "@esbuild/linux-mips64el": "0.18.17", - "@esbuild/linux-ppc64": "0.18.17", - "@esbuild/linux-riscv64": "0.18.17", - "@esbuild/linux-s390x": "0.18.17", - "@esbuild/linux-x64": "0.18.17", - "@esbuild/netbsd-x64": "0.18.17", - "@esbuild/openbsd-x64": "0.18.17", - "@esbuild/sunos-x64": "0.18.17", - "@esbuild/win32-arm64": "0.18.17", - "@esbuild/win32-ia32": "0.18.17", - "@esbuild/win32-x64": "0.18.17" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "eslint": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", - "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.4.1", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz", - "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==", - "dev": true, - "requires": {} - }, - "eslint-plugin-svelte": { - "version": "2.32.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.32.4.tgz", - "integrity": "sha512-VJ12i2Iogug1jvhwxSlognnfGj76P5gks/V4pUD4SCSVQOp14u47MNP0zAG8AQR3LT0Fi1iUvIFnY4l9z5Rwbg==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@jridgewell/sourcemap-codec": "^1.4.14", - "debug": "^4.3.1", - "esutils": "^2.0.3", - "known-css-properties": "^0.28.0", - "postcss": "^8.4.5", - "postcss-load-config": "^3.1.4", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", - "semver": "^7.5.3", - "svelte-eslint-parser": "^0.32.2" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "esm-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", - "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==" - }, - "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "requires": { - "@types/estree": "^1.0.0" - } - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "requires": { - "type": "^2.7.2" - }, - "dependencies": { - "type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-saver": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", - "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "devOptional": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "optional": true, - "peer": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "highlight.js": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz", - "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==" - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", - "dev": true - }, - "html-encoder-decoder": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/html-encoder-decoder/-/html-encoder-decoder-1.3.9.tgz", - "integrity": "sha512-dHv7bdOTEE69EIxXsM8Vslt+NW7QfEB5EGOC29BR14c7RQ9iHUgK76k3/aS23xNIwDg/xlZLWCSZ8lxol9bYlQ==", - "requires": { - "he": "^1.1.0", - "iterate-object": "^1.3.2", - "regex-escape": "^3.4.2" - } - }, - "html-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true - }, - "idb-keyval": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", - "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==", - "peer": true - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, - "immutable": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.1.tgz", - "integrity": "sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==", - "devOptional": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-meta-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "devOptional": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "devOptional": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "iterate-object": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.4.tgz", - "integrity": "sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==" - }, - "jose": { - "version": "4.14.4", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", - "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==" - }, - "js-beautify": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.9.tgz", - "integrity": "sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg==", - "dev": true, - "requires": { - "config-chain": "^1.1.13", - "editorconfig": "^1.0.3", - "glob": "^8.1.0", - "nopt": "^6.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "optional": true, - "peer": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "optional": true, - "peer": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" - }, - "known-css-properties": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz", - "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "requires": { - "immediate": "~3.0.5" - } - }, - "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "peer": true, - "requires": { - "uc.micro": "^2.0.0" - } - }, - "linkifyjs": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.3.tgz", - "integrity": "sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==", - "peer": true - }, - "local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.topath": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", - "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==", - "dev": true - }, - "loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "magic-string": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", - "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "dependencies": { - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - } - } - }, - "markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "peer": true, - "requires": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - } - }, - "mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "peer": true - }, - "memfs": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.7.7.tgz", - "integrity": "sha512-x9qc6k88J/VVwnfTkJV8pRRswJ2156Rc4w5rciRqKceFDZ0y1MqsNL9pkg5sE0GOcDzZYbonreALhaHzg1siFw==", - "requires": { - "tslib": "^2.0.0" - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "modern-normalize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz", - "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==", - "dev": true - }, - "mousetrap": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", - "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" - }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" - }, - "mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "requires": { - "lodash": "^4.17.21" - } - }, - "node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==" - }, - "node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "requires": { - "abbrev": "^1.0.0" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "devOptional": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "orderedmap": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", - "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", - "peer": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true - }, - "playwright-core": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.33.0.tgz", - "integrity": "sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw==", - "dev": true - }, - "pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "peer": true - }, - "postcss": { - "version": "8.4.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", - "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-js": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz", - "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==", - "dev": true, - "requires": { - "camelcase-css": "^2.0.1", - "postcss": "^8.1.6" - } - }, - "postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "requires": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - } - }, - "postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.6" - } - }, - "postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "requires": {} - }, - "postcss-scss": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.6.tgz", - "integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==", - "dev": true, - "requires": {} - }, - "postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "peer": true - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "promise-worker": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-worker/-/promise-worker-2.0.1.tgz", - "integrity": "sha512-jR7vHqMEwWJ15i9vA3qyCKwRHihyLJp1sAa3RyY5F35m3u5s2lQUfq0nzVjbA8Xc7+3mL3Y9+9MHBO9UFRpFxA==" - }, - "prosemirror-changeset": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz", - "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==", - "peer": true, - "requires": { - "prosemirror-transform": "^1.0.0" - } - }, - "prosemirror-collab": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", - "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", - "peer": true, - "requires": { - "prosemirror-state": "^1.0.0" - } - }, - "prosemirror-commands": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz", - "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==", - "peer": true, - "requires": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "prosemirror-dropcursor": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", - "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", - "peer": true, - "requires": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0", - "prosemirror-view": "^1.1.0" - } - }, - "prosemirror-gapcursor": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", - "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", - "peer": true, - "requires": { - "prosemirror-keymap": "^1.0.0", - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-view": "^1.0.0" - } - }, - "prosemirror-history": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.0.tgz", - "integrity": "sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==", - "peer": true, - "requires": { - "prosemirror-state": "^1.2.2", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.31.0", - "rope-sequence": "^1.3.0" - } - }, - "prosemirror-inputrules": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz", - "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==", - "peer": true, - "requires": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "prosemirror-keymap": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", - "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", - "peer": true, - "requires": { - "prosemirror-state": "^1.0.0", - "w3c-keyname": "^2.2.0" - } - }, - "prosemirror-markdown": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.12.0.tgz", - "integrity": "sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==", - "peer": true, - "requires": { - "markdown-it": "^14.0.0", - "prosemirror-model": "^1.0.0" - } - }, - "prosemirror-menu": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz", - "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==", - "peer": true, - "requires": { - "crelt": "^1.0.0", - "prosemirror-commands": "^1.0.0", - "prosemirror-history": "^1.0.0", - "prosemirror-state": "^1.0.0" - } - }, - "prosemirror-model": { - "version": "1.19.4", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.19.4.tgz", - "integrity": "sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==", - "peer": true, - "requires": { - "orderedmap": "^2.0.0" - } - }, - "prosemirror-schema-basic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz", - "integrity": "sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==", - "peer": true, - "requires": { - "prosemirror-model": "^1.19.0" - } - }, - "prosemirror-schema-list": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz", - "integrity": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==", - "peer": true, - "requires": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.7.3" - } - }, - "prosemirror-state": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", - "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", - "peer": true, - "requires": { - "prosemirror-model": "^1.0.0", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.27.0" - } - }, - "prosemirror-tables": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.7.tgz", - "integrity": "sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==", - "peer": true, - "requires": { - "prosemirror-keymap": "^1.1.2", - "prosemirror-model": "^1.8.1", - "prosemirror-state": "^1.3.1", - "prosemirror-transform": "^1.2.1", - "prosemirror-view": "^1.13.3" - } - }, - "prosemirror-trailing-node": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.8.tgz", - "integrity": "sha512-ujRYhSuhQb1Jsarh1IHqb2KoSnRiD7wAMDGucP35DN7j5af6X7B18PfdPIrbwsPTqIAj0fyOvxbuPsWhNvylmA==", - "peer": true, - "requires": { - "@remirror/core-constants": "^2.0.2", - "escape-string-regexp": "^4.0.0" - } - }, - "prosemirror-transform": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz", - "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==", - "peer": true, - "requires": { - "prosemirror-model": "^1.0.0" - } - }, - "prosemirror-view": { - "version": "1.33.3", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.3.tgz", - "integrity": "sha512-P4Ao/bc4OrU/2yLIf8dL4lJaEtjLR3QjIvQHgJYp2jUS7kYM4bSR6okbBjkqzOs/FwUon6UGjTLdKMnPL1MZqw==", - "peer": true, - "requires": { - "prosemirror-model": "^1.16.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0" - } - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "peer": true - }, - "purgecss": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-4.1.3.tgz", - "integrity": "sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==", - "dev": true, - "requires": { - "commander": "^8.0.0", - "glob": "^7.1.7", - "postcss": "^8.3.5", - "postcss-selector-parser": "^6.0.6" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - } - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true - }, - "randombytes": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", - "integrity": "sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==", - "dev": true - }, - "randomstring": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.3.tgz", - "integrity": "sha512-3dEFySepTzp2CvH6W/ASYGguPPveBuz5MpZ7MuoUkoVehmyNl9+F9c9GFVrz2QPbM9NXTIHGcmJDY/3j4677kQ==", - "dev": true, - "requires": { - "array-uniq": "1.0.2", - "randombytes": "2.0.3" - } - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reduce-css-calc": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", - "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", - "dev": true, - "requires": { - "css-unit-converter": "^1.1.1", - "postcss-value-parser": "^3.3.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "regex-escape": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/regex-escape/-/regex-escape-3.4.10.tgz", - "integrity": "sha512-qEqf7uzW+iYcKNLMDFnMkghhQBnGdivT6KqVQyKsyjSWnoFyooXVnxrw9dtv3AFLnD6VBGXxtZGAQNFGFTnCqA==" - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.27.2.tgz", - "integrity": "sha512-YGwmHf7h2oUHkVBT248x0yt6vZkYQ3/rvE5iQuVBh3WO8GcJ6BNeOkpoX1yMHIiBm18EMLjBPIoUDkhgnyxGOQ==", - "requires": { - "fsevents": "~2.3.2" - } - }, - "rope-sequence": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", - "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", - "peer": true - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "requires": { - "mri": "^1.1.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "sander": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", - "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", - "dev": true, - "requires": { - "es6-promise": "^3.1.2", - "graceful-fs": "^4.1.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.2" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "sass": { - "version": "1.64.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", - "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", - "devOptional": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "set-cookie-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", - "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "showdown": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/showdown/-/showdown-2.1.0.tgz", - "integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==", - "requires": { - "commander": "^9.0.0" - }, - "dependencies": { - "commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" - } - } - }, - "showdown-highlight": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/showdown-highlight/-/showdown-highlight-3.1.0.tgz", - "integrity": "sha512-wrTxtE63L/bpW5A2Uy/AO1gblXnNHK/cDL6LszECOoCdMJKWTj0/4n4I/pmqub+3H3KCPVDDvtXpCArnT/heFA==", - "requires": { - "highlight.js": "^11.5.0", - "html-encoder-decoder": "^1.3.9", - "showdown": "^2.0.3" - } - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "sirv": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", - "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", - "requires": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^3.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "strip-literal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", - "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", - "dev": true, - "requires": { - "acorn": "^8.8.2" - } - }, - "style-mod": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", - "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", - "peer": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "svelte": { - "version": "3.59.2", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.2.tgz", - "integrity": "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==" - }, - "svelte-check": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.10.3.tgz", - "integrity": "sha512-Nt1aWHTOKFReBpmJ1vPug0aGysqPwJh2seM1OvICfM2oeyaA62mOiy5EvkXhltGfhCcIQcq2LoE0l1CwcWPjlw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.9", - "chokidar": "^3.4.1", - "fast-glob": "^3.2.7", - "import-fresh": "^3.2.1", - "picocolors": "^1.0.0", - "sade": "^1.7.4", - "svelte-preprocess": "^4.0.0", - "typescript": "*" - }, - "dependencies": { - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "svelte-preprocess": { - "version": "4.10.7", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", - "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", - "dev": true, - "requires": { - "@types/pug": "^2.0.4", - "@types/sass": "^1.16.0", - "detect-indent": "^6.0.0", - "magic-string": "^0.25.7", - "sorcery": "^0.10.0", - "strip-indent": "^3.0.0" - } - } - } - }, - "svelte-dnd-action": { - "version": "0.9.42", - "resolved": "https://registry.npmjs.org/svelte-dnd-action/-/svelte-dnd-action-0.9.42.tgz", - "integrity": "sha512-hrlMnAtUrQP8V4vH9+dKHzX3z5u9BAo6F/BUUqKftiF6/Wh+yC560kgzTzB2fSZxumd2e6A4RalwlH0NYIllSw==", - "peer": true, - "requires": {} - }, - "svelte-eslint-parser": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.32.2.tgz", - "integrity": "sha512-Ok9D3A4b23iLQsONrjqtXtYDu5ZZ/826Blaw2LeFZVTg1pwofKDG4mz3/GYTax8fQ0plRGHI6j+d9VQYy5Lo/A==", - "dev": true, - "requires": { - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", - "postcss": "^8.4.25", - "postcss-scss": "^4.0.6" - }, - "dependencies": { - "eslint-scope": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", - "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "svelte-hmr": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.2.tgz", - "integrity": "sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==", - "requires": {} - }, - "svelte-json-tree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svelte-json-tree/-/svelte-json-tree-1.0.0.tgz", - "integrity": "sha512-scs1OdkC8uFpTN4MX0yKkOzZ1/EG3eP1ARC+xcFthXp2IfcwBaXgab0FqA4Am0vQwffNNB+1Gd1LFkJBlynWTA==", - "dev": true - }, - "svelte-preprocess": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz", - "integrity": "sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==", - "dev": true, - "requires": { - "@types/pug": "^2.0.6", - "detect-indent": "^6.1.0", - "magic-string": "^0.27.0", - "sorcery": "^0.11.0", - "strip-indent": "^3.0.0" - }, - "dependencies": { - "magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dev": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.13" - } - }, - "sorcery": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", - "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", - "dev": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.14", - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0" - } - } - } - }, - "svelte-toggle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/svelte-toggle/-/svelte-toggle-3.1.0.tgz", - "integrity": "sha512-2gzDDMDhM+ImDaLEZVlnlHVY1340Y368tT4Qk5IwLnCeRJ4zV3cVwliVGacoHy7iCDukcGXzKwDzG/hTTcaljg==", - "peer": true - }, - "tailwindcss": { - "version": "2.2.19", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-2.2.19.tgz", - "integrity": "sha512-6Ui7JSVtXadtTUo2NtkBBacobzWiQYVjYW0ZnKaP9S1ZCKQ0w7KVNz+YSDI/j7O7KCMHbOkz94ZMQhbT9pOqjw==", - "dev": true, - "requires": { - "arg": "^5.0.1", - "bytes": "^3.0.0", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "color": "^4.0.1", - "cosmiconfig": "^7.0.1", - "detective": "^5.2.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.7", - "fs-extra": "^10.0.0", - "glob-parent": "^6.0.1", - "html-tags": "^3.1.0", - "is-color-stop": "^1.1.0", - "is-glob": "^4.0.1", - "lodash": "^4.17.21", - "lodash.topath": "^4.5.2", - "modern-normalize": "^1.1.0", - "node-emoji": "^1.11.0", - "normalize-path": "^3.0.0", - "object-hash": "^2.2.0", - "postcss-js": "^3.0.3", - "postcss-load-config": "^3.1.0", - "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.6", - "postcss-value-parser": "^4.1.0", - "pretty-hrtime": "^1.0.3", - "purgecss": "^4.0.3", - "quick-lru": "^5.1.1", - "reduce-css-calc": "^2.1.8", - "resolve": "^1.20.0", - "tmp": "^0.2.1" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "timeago.js": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/timeago.js/-/timeago.js-4.0.2.tgz", - "integrity": "sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w==" - }, - "tinybench": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.3.1.tgz", - "integrity": "sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==", - "dev": true - }, - "tinypool": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.1.tgz", - "integrity": "sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==", - "dev": true - }, - "tinyspy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", - "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", - "dev": true - }, - "tippy.js": { - "version": "6.3.7", - "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", - "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", - "peer": true, - "requires": { - "@popperjs/core": "^2.9.0" - } - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "optional": true, - "peer": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "devOptional": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "totalist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", - "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==" - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true - }, - "uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "peer": true - }, - "undici": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", - "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", - "requires": { - "busboy": "^1.6.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "peer": true - }, - "vite": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.8.tgz", - "integrity": "sha512-LONawOUUjxQridNWGQlNizfKH89qPigK36XhMI7COMGztz8KNY0JHim7/xDd71CZwGT4HtSRgI7Hy+RlhG0Gvg==", - "requires": { - "esbuild": "^0.18.10", - "fsevents": "~2.3.2", - "postcss": "^8.4.26", - "rollup": "^3.25.2" - } - }, - "vitefu": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", - "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", - "requires": {} - }, - "vitest": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.8.tgz", - "integrity": "sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==", - "dev": true, - "requires": { - "@types/chai": "^4.3.4", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "acorn": "^8.8.1", - "acorn-walk": "^8.2.0", - "chai": "^4.3.7", - "debug": "^4.3.4", - "local-pkg": "^0.4.2", - "source-map": "^0.6.1", - "strip-literal": "^1.0.0", - "tinybench": "^2.3.1", - "tinypool": "^0.3.0", - "tinyspy": "^1.0.2", - "vite": "^3.0.0 || ^4.0.0" - }, - "dependencies": { - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - } - } - }, - "w3c-keyname": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", - "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", - "peer": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "requires": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "optional": true, - "peer": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } - } + "name": "primo", + "version": "3.0.0--beta.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "primo", + "version": "3.0.0--beta.1", + "dependencies": { + "@anthropic-ai/sdk": "^0.31.0", + "@atlaskit/pragmatic-drag-and-drop": "^1.4.0", + "@aws-sdk/client-s3": "^3.454.0", + "@aws-sdk/lib-storage": "^3.454.0", + "@aws-sdk/s3-request-presigner": "^3.525.0", + "@babel/runtime": "^7.25.6", + "@codemirror/autocomplete": "^6.11.1", + "@codemirror/lang-css": "^6.2.1", + "@codemirror/lang-html": "^6.4.7", + "@iconify/svelte": "^2.2.1", + "@replit/codemirror-lang-svelte": "^6.0.0", + "@supabase/auth-helpers-sveltekit": "^0.13.0", + "@supabase/supabase-js": "^2.32.0", + "@tiptap/core": "^2.2.6", + "@tiptap/extension-bubble-menu": "^2.2.6", + "@tiptap/extension-code-block-lowlight": "^2.2.6", + "@tiptap/extension-floating-menu": "^2.2.6", + "@tiptap/extension-highlight": "^2.2.6", + "@tiptap/extension-image": "^2.2.6", + "@tiptap/extension-link": "^2.2.6", + "@tiptap/extension-typography": "^2.2.6", + "@tiptap/extension-youtube": "^2.2.6", + "@tiptap/pm": "^2.2.6", + "@tiptap/starter-kit": "^2.2.6", + "axios": "^0.26.0", + "bind-event-listener": "^3.0.0", + "browser-image-compression": "^1.0.17", + "cloudflare": "^4.0.0", + "codemirror": "^6.0.1", + "fetch-blob": "^4.0.0", + "file-saver": "^2.0.5", + "fuse.js": "^7.0.0", + "idb-keyval": "^6.1.0", + "js-beautify": "^1.14.0", + "jszip": "^3.10.1", + "lodash-es": "^4.17.21", + "lorem-ipsum": "^2.0.8", + "lowlight": "^3.1.0", + "memfs": "^4.7.7", + "mousetrap": "^1.6.5", + "nanoid": "^3.1.23", + "paneforge": "^0.0.5", + "pluralize": "^8.0.0", + "promise-worker": "^2.0.1", + "prosemirror-schema-basic": "^1.1.2", + "raf-schd": "^4.0.3", + "resend": "^1.0.0", + "resolve.exports": "^2.0.2", + "showdown-highlight": "^3.1.0", + "stripe": "^13.11.0", + "svelte-awesome-color-picker": "^3.1.4", + "svelte-inspect-value": "^0.1.3", + "timeago.js": "^4.0.2", + "uuid": "^9.0.0" + }, + "devDependencies": { + "@playwright/test": "^1.47.2", + "@sveltejs/adapter-vercel": "^5.4.1", + "@sveltejs/kit": "^2.5.27", + "@types/lodash-es": "^4.17.12", + "@types/uuid": "^9.0.8", + "@typescript-eslint/eslint-plugin": "^5.45.0", + "@typescript-eslint/parser": "^5.45.0", + "autoprefixer": "^10.3.6", + "autosize": "^5.0.1", + "bits-ui": "^1.0.0-next.87", + "clsx": "^2.1.1", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "lucide-svelte": "^0.469.0", + "mode-watcher": "^0.5.0", + "postcss-nested": "^5.0.6", + "prettier": "^3.3.3", + "prettier-plugin-svelte": "^3.2.6", + "randomstring": "^1.2.3", + "svelte": "^5.20.2", + "svelte-check": "^4.0.0", + "svelte-dnd-action": "^0.9.25", + "svelte-popperjs": "^1.3.2", + "svelte-preprocess": "^6.0.0", + "svelte-sonner": "^0.3.28", + "svelte-toggle": "^3.1.0", + "tailwind-merge": "^2.6.0", + "tailwind-variants": "^0.3.0", + "tailwindcss": "^3.4.17", + "tailwindcss-animate": "^1.0.7", + "tslib": "^2.4.1", + "typescript": "^5.5.0", + "vite": "^5.4.4", + "vite-plugin-node-polyfills": "^0.21.0", + "vitest": "^0.25.8" + }, + "engines": { + "node": ">=16.0.0 <=18.20.4" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@anthropic-ai/sdk": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.31.0.tgz", + "integrity": "sha512-9EX90YMUtj0d1aHPsnjgurUWAUoNQA/kMaN+UUN7eL3jhl1cijBIGKHQPrR4/ctvD9A065QnzzJDy5Oxb/Bk8A==", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + } + }, + "node_modules/@anthropic-ai/sdk/node_modules/@types/node": { + "version": "18.19.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.63.tgz", + "integrity": "sha512-hcUB7THvrGmaEcPcvUZCZtQ2Z3C+UR/aOcraBLCvTsFMh916Gc1kCCYcfcMuB76HM2pSerxl1PoP3KnmHzd9Lw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@anthropic-ai/sdk/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/@atlaskit/pragmatic-drag-and-drop": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@atlaskit/pragmatic-drag-and-drop/-/pragmatic-drag-and-drop-1.4.0.tgz", + "integrity": "sha512-qRY3PTJIcxfl/QB8Gwswz+BRvlmgAC5pB+J2hL6dkIxgqAgVwOhAamMUKsrOcFU/axG2Q7RbNs1xfoLKDuhoPg==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "bind-event-listener": "^3.0.0", + "raf-schd": "^4.0.3" + } + }, + "node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/crc32c": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", + "dependencies": { + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.622.0.tgz", + "integrity": "sha512-2lpvuQn/qymQPfwR2SxLyRy/Wi/RrEYpbQyoc9SYfhartw9TBY8c34yZkd8zNU7Y/KG3h+PLrCmNpncocuB3YA==", + "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.622.0", + "@aws-sdk/client-sts": "3.622.0", + "@aws-sdk/core": "3.622.0", + "@aws-sdk/credential-provider-node": "3.622.0", + "@aws-sdk/middleware-bucket-endpoint": "3.620.0", + "@aws-sdk/middleware-expect-continue": "3.620.0", + "@aws-sdk/middleware-flexible-checksums": "3.620.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-location-constraint": "3.609.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-sdk-s3": "3.622.0", + "@aws-sdk/middleware-signing": "3.620.0", + "@aws-sdk/middleware-ssec": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/signature-v4-multi-region": "3.622.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@aws-sdk/xml-builder": "3.609.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/eventstream-serde-browser": "^3.0.5", + "@smithy/eventstream-serde-config-resolver": "^3.0.3", + "@smithy/eventstream-serde-node": "^3.0.4", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-blob-browser": "^3.1.2", + "@smithy/hash-node": "^3.0.3", + "@smithy/hash-stream-node": "^3.1.2", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/md5-js": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-stream": "^3.1.3", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.622.0.tgz", + "integrity": "sha512-DJwUqVR/O2lImbktUHOpaQ8XElNBx3JmWzTT2USg6jh3ErgG1CS6LIV+VUlgtxGl+tFN/G6AcAV8SdnnGydB8Q==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.622.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.622.0.tgz", + "integrity": "sha512-dwWDfN+S98npeY77Ugyv8VIHKRHN+n/70PWE4EgolcjaMrTINjvUh9a/SypFEs5JmBOAeCQt8S2QpM3Wvzp+pQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.622.0", + "@aws-sdk/credential-provider-node": "3.622.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.622.0" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.622.0.tgz", + "integrity": "sha512-Yqtdf/wn3lcFVS42tR+zbz4HLyWxSmztjVW9L/yeMlvS7uza5nSkWqP/7ca+RxZnXLyrnA4jJtSHqykcErlhyg==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.622.0", + "@aws-sdk/core": "3.622.0", + "@aws-sdk/credential-provider-node": "3.622.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.622.0.tgz", + "integrity": "sha512-q1Ct2AjPxGtQBKtDpqm1umu3f4cuWMnEHTuDa6zjjaj+Aq/C6yxLgZJo9SlcU0tMl8rUCN7oFonszfTtp4Y0MA==", + "dependencies": { + "@smithy/core": "^2.3.2", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", + "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.622.0.tgz", + "integrity": "sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.622.0.tgz", + "integrity": "sha512-cD/6O9jOfzQyo8oyAbTKnyRO89BIMSTzwaN4NxGySC6pYVTqxNSWdRwaqg/vKbwJpjbPGGYYXpXEW11kop7dlg==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.622.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.622.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.622.0.tgz", + "integrity": "sha512-keldwz4Q/6TYc37JH6m43HumN7Vi+R0AuGuHn5tBV40Vi7IiqEzjpiE+yvsHIN+duUheFLL3j/o0H32jb+14DQ==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-ini": "3.622.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.622.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", + "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.622.0.tgz", + "integrity": "sha512-zrSoBVM2JlwvkBtrcUd4J/9CrG+T+hUy9r6jwo5gonFIN3QkneR/pqpbUn/n32Zy3zlzCo2VfB31g7MjG7kJmg==", + "dependencies": { + "@aws-sdk/client-sso": "3.622.0", + "@aws-sdk/token-providers": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", + "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.621.0" + } + }, + "node_modules/@aws-sdk/lib-storage": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.622.0.tgz", + "integrity": "sha512-4Ns3jk7B9XIeLIOCJlyEW0/Qr5tQJWOHG81t9c8Yov4KOgAuPiO1KS/2yZM089B1/3/4/SjZ49E1qaZ5W1TsZA==", + "dependencies": { + "@smithy/abort-controller": "^3.1.1", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/smithy-client": "^3.1.12", + "buffer": "5.6.0", + "events": "3.3.0", + "stream-browserify": "3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-s3": "^3.622.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz", + "integrity": "sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz", + "integrity": "sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz", + "integrity": "sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA==", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-sdk/types": "3.609.0", + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", + "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz", + "integrity": "sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", + "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", + "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.622.0.tgz", + "integrity": "sha512-tX9wZ2ALx5Ez4bkY+SvSj6DpNZ6TmY4zlsVsdgV95LZFLjNwqnZkKkS+uKnsIyLBiBp6g92JVQwnUEIp7ov2Zw==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-stream": "^3.1.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-signing": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.620.0.tgz", + "integrity": "sha512-gxI7rubiaanUXaLfJ4NybERa9MGPNg2Ycl/OqANsozrBnR3Pw8vqy3EuVImQOyn2pJ2IFvl8ZPoSMHf4pX56FQ==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz", + "integrity": "sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz", + "integrity": "sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", + "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/s3-request-presigner": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.622.0.tgz", + "integrity": "sha512-4ULolqkxIRRmpfrEloOtLC8iL4osk+FstbIJmyMLUbO1YObRkyRZ+tKUPbOTrWz3nzmLK8igkB579JKB9T6wRg==", + "dependencies": { + "@aws-sdk/signature-v4-multi-region": "3.622.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-format-url": "3.609.0", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.622.0.tgz", + "integrity": "sha512-K7ddofVNzwTFRjmLZLfs/v+hiE9m5LguajHk8WULxXQgkcDI3nPgOfmMMGuslYohaQhRwW+ic+dzYlateLUudQ==", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.622.0", + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz", + "integrity": "sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.614.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz", + "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz", + "integrity": "sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz", + "integrity": "sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "@smithy/util-endpoints": "^2.0.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-format-url": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.609.0.tgz", + "integrity": "sha512-fuk29BI/oLQlJ7pfm6iJ4gkEpHdavffAALZwXh9eaY1vQ0ip0aKfRTiNudPoJjyyahnz5yJ1HkmlcDitlzsOrQ==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", + "integrity": "sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz", + "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", + "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz", + "integrity": "sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@codemirror/autocomplete": { + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.17.0.tgz", + "integrity": "sha512-fdfj6e6ZxZf8yrkMHUSJJir7OJkHkZKaOZGzLWIYp2PZ3jd+d+UjG8zVPqJF6d3bKxkhvXTPan/UZ1t7Bqm0gA==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + }, + "peerDependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.6.0.tgz", + "integrity": "sha512-qnY+b7j1UNcTS31Eenuc/5YJB6gQOzkUoNmJQc0rznwqSRpeaWWpjkWy2C/MPTcePpsKJEM26hXrOXl1+nceXg==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/lang-css": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.1.tgz", + "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/css": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-html": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.9.tgz", + "integrity": "sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/css": "^1.1.0", + "@lezer/html": "^1.3.0" + } + }, + "node_modules/@codemirror/lang-javascript": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz", + "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.2.tgz", + "integrity": "sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.1.tgz", + "integrity": "sha512-IZ0Y7S4/bpaunwggW2jYqwLuHj0QtESf5xcROewY6+lDNwZ/NzvR4t+vpYgg9m7V8UXLPYqG+lu3DF470E5Oxg==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/search": { + "version": "6.5.6", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz", + "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz", + "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==" + }, + "node_modules/@codemirror/view": { + "version": "6.29.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.29.1.tgz", + "integrity": "sha512-7r+DlO/QFwPqKp73uq5mmrS4TuLPUVotbNOKYzN3OLP5ScrOVXcm4g13/48b6ZXGhdmzMinzFYqH0vo+qihIkQ==", + "dependencies": { + "@codemirror/state": "^6.4.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", + "dev": true, + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "dev": true, + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", + "dev": true + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@iconify/svelte": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@iconify/svelte/-/svelte-2.2.1.tgz", + "integrity": "sha512-eWZq8CRrr3WfnKAj8SWknfE3S/d+j/AzEcypeJaHurS1s4zTdFnkjATcFa8lerGtcX0PAtXiVL94tbIEd69N+w==", + "funding": { + "url": "http://github.com/sponsors/cyberalien" + } + }, + "node_modules/@internationalized/date": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.6.0.tgz", + "integrity": "sha512-+z6ti+CcJnRlLHok/emGEsWQhe7kfSmEW+/6qCzvKY67YPh7YOBfvc7+/+NXq+zJlbArg30tYpqLjNgcAYv2YQ==", + "dev": true, + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz", + "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.3.0.tgz", + "integrity": "sha512-Cebt4Vk7k1xHy87kHY7KSPLT77A7Ev7IfOblyLZhtYEhrdQ6fX4EoLq3xOQ3O/DRMEh2ok5nyC180E+ABS8Wmw==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@lezer/common": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==" + }, + "node_modules/@lezer/css": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.8.tgz", + "integrity": "sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/highlight": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", + "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/html": { + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.10.tgz", + "integrity": "sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/javascript": { + "version": "1.4.17", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.17.tgz", + "integrity": "sha512-bYW4ctpyGK+JMumDApeUzuIezX01H76R1foD6LcRX224FWfyYit/HYxiPGDjXXe/wQWASjCvVGoukTH68+0HIA==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz", + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==" + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@playwright/test": { + "version": "1.47.2", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.47.2.tgz", + "integrity": "sha512-jTXRsoSPONAs8Za9QEQdyjFn+0ZQFjCiIztAIF6bi1HqhBzG9Ma7g1WotyiGqFSBRZjIEqMdT8RUlbk1QVhzCQ==", + "dev": true, + "dependencies": { + "playwright": "1.47.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==" + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-email/render": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@react-email/render/-/render-0.0.7.tgz", + "integrity": "sha512-hMMhxk6TpOcDC5qnKzXPVJoVGEwfm+U5bGOPH+MyTTlx0F02RLQygcATBKsbP7aI/mvkmBAZoFbgPIHop7ovug==", + "dependencies": { + "html-to-text": "9.0.3", + "pretty": "2.0.0", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@remirror/core-constants": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz", + "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==" + }, + "node_modules/@replit/codemirror-lang-svelte": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-svelte/-/codemirror-lang-svelte-6.0.0.tgz", + "integrity": "sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==", + "peerDependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-css": "^6.0.1", + "@codemirror/lang-html": "^6.2.0", + "@codemirror/lang-javascript": "^6.1.1", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/javascript": "^1.2.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@rollup/plugin-inject": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", + "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-inject/node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.3.tgz", + "integrity": "sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.3.tgz", + "integrity": "sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.3.tgz", + "integrity": "sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.3.tgz", + "integrity": "sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.3.tgz", + "integrity": "sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.3.tgz", + "integrity": "sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.3.tgz", + "integrity": "sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.3.tgz", + "integrity": "sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.3.tgz", + "integrity": "sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.3.tgz", + "integrity": "sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.3.tgz", + "integrity": "sha512-yNaWw+GAO8JjVx3s3cMeG5Esz1cKVzz8PkTJSfYzE5u7A+NvGmbVFEHP+BikTIyYWuz0+DX9kaA3pH9Sqxp69g==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.3.tgz", + "integrity": "sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.3.tgz", + "integrity": "sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.3.tgz", + "integrity": "sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.3.tgz", + "integrity": "sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.3.tgz", + "integrity": "sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.3.tgz", + "integrity": "sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.3.tgz", + "integrity": "sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@selderee/plugin-htmlparser2": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.10.0.tgz", + "integrity": "sha512-gW69MEamZ4wk1OsOq1nG1jcyhXIQcnrsX5JwixVw/9xaiav8TCyjESAruu1Rz9yyInhgBXxkNwMeygKnN2uxNA==", + "dependencies": { + "domhandler": "^5.0.3", + "selderee": "^0.10.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/@smithy/abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.1.tgz", + "integrity": "sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz", + "integrity": "sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz", + "integrity": "sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==", + "dependencies": { + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz", + "integrity": "sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.3.2.tgz", + "integrity": "sha512-in5wwt6chDBcUv1Lw1+QzZxN9fBffi+qOixfb65yK4sDuKG7zAUO9HAFqmVzsZM3N+3tTyvZjtnDXePpvp007Q==", + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz", + "integrity": "sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz", + "integrity": "sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.5.tgz", + "integrity": "sha512-dEyiUYL/ekDfk+2Ra4GxV+xNnFoCmk1nuIXg+fMChFTrM2uI/1r9AdiTYzPqgb72yIv/NtAj6C3dG//1wwgakQ==", + "dependencies": { + "@smithy/eventstream-serde-universal": "^3.0.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz", + "integrity": "sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.4.tgz", + "integrity": "sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg==", + "dependencies": { + "@smithy/eventstream-serde-universal": "^3.0.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.4.tgz", + "integrity": "sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A==", + "dependencies": { + "@smithy/eventstream-codec": "^3.1.2", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz", + "integrity": "sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==", + "dependencies": { + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz", + "integrity": "sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg==", + "dependencies": { + "@smithy/chunked-blob-reader": "^3.0.0", + "@smithy/chunked-blob-reader-native": "^3.0.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/hash-node": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.3.tgz", + "integrity": "sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==", + "dependencies": { + "@smithy/types": "^3.3.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz", + "integrity": "sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g==", + "dependencies": { + "@smithy/types": "^3.3.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz", + "integrity": "sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.3.tgz", + "integrity": "sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q==", + "dependencies": { + "@smithy/types": "^3.3.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz", + "integrity": "sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==", + "dependencies": { + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz", + "integrity": "sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==", + "dependencies": { + "@smithy/middleware-serde": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.14.tgz", + "integrity": "sha512-7ZaWZJOjUxa5hgmuMspyt8v/zVsh0GXYuF7OvCmdcbVa/xbnKQoYC+uYKunAqRGTkxjOyuOCw9rmFUFOqqC0eQ==", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/service-error-classification": "^3.0.3", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz", + "integrity": "sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz", + "integrity": "sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", + "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==", + "dependencies": { + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz", + "integrity": "sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==", + "dependencies": { + "@smithy/abort-controller": "^3.1.1", + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz", + "integrity": "sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", + "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz", + "integrity": "sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==", + "dependencies": { + "@smithy/types": "^3.3.0", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz", + "integrity": "sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz", + "integrity": "sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==", + "dependencies": { + "@smithy/types": "^3.3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz", + "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", + "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.12.tgz", + "integrity": "sha512-wtm8JtsycthkHy1YA4zjIh2thJgIQ9vGkoR639DBx5lLlLNU0v4GARpQZkr2WjXue74nZ7MiTSWfVrLkyD8RkA==", + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", + "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.3.tgz", + "integrity": "sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==", + "dependencies": { + "@smithy/querystring-parser": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/util-base64": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.14.tgz", + "integrity": "sha512-0iwTgKKmAIf+vFLV8fji21Jb2px11ktKVxbX6LIDPAUJyWQqGqBVfwba7xwa1f2FZUoolYQgLvxQEpJycXuQ5w==", + "dependencies": { + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.14.tgz", + "integrity": "sha512-e9uQarJKfXApkTMMruIdxHprhcXivH1flYCe8JRDTzkkLx8dA3V5J8GZlST9yfDiRWkJpZJlUXGN9Rc9Ade3OQ==", + "dependencies": { + "@smithy/config-resolver": "^3.0.5", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz", + "integrity": "sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.3.tgz", + "integrity": "sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.3.tgz", + "integrity": "sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==", + "dependencies": { + "@smithy/service-error-classification": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.3.tgz", + "integrity": "sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==", + "dependencies": { + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.2.tgz", + "integrity": "sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw==", + "dependencies": { + "@smithy/abort-controller": "^3.1.1", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@supabase/auth-helpers-shared": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.7.0.tgz", + "integrity": "sha512-FBFf2ei2R7QC+B/5wWkthMha8Ca2bWHAndN+syfuEUUfufv4mLcAgBCcgNg5nJR8L0gZfyuaxgubtOc9aW3Cpg==", + "dependencies": { + "jose": "^4.14.4" + }, + "peerDependencies": { + "@supabase/supabase-js": "^2.39.8" + } + }, + "node_modules/@supabase/auth-helpers-sveltekit": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-sveltekit/-/auth-helpers-sveltekit-0.13.0.tgz", + "integrity": "sha512-nNZUJv49e0RpEaRBWAEqzPQkeTfWiN6XhVxBJJWGkS9BIk47H+dDRJvvDd1lCT+u6xKXkgnp2VHosT5UK2UOcg==", + "dependencies": { + "@supabase/auth-helpers-shared": "0.7.0" + }, + "peerDependencies": { + "@supabase/supabase-js": "^2.39.8", + "@sveltejs/kit": "^1.30.3 || ^2.0.0" + } + }, + "node_modules/@supabase/auth-js": { + "version": "2.64.4", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.64.4.tgz", + "integrity": "sha512-9ITagy4WP4FLl+mke1rchapOH0RQpf++DI+WSG2sO1OFOZ0rW3cwAM0nCrMOxu+Zw4vJ4zObc08uvQrXx590Tg==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.1.tgz", + "integrity": "sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/node-fetch": { + "version": "2.6.15", + "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz", + "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/@supabase/postgrest-js": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.15.8.tgz", + "integrity": "sha512-YunjXpoQjQ0a0/7vGAvGZA2dlMABXFdVI/8TuVKtlePxyT71sl6ERl6ay1fmIeZcqxiuFQuZw/LXUuStUG9bbg==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.10.2.tgz", + "integrity": "sha512-qyCQaNg90HmJstsvr2aJNxK2zgoKh9ZZA8oqb7UT2LCh3mj9zpa3Iwu167AuyNxsxrUE8eEJ2yH6wLCij4EApA==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14", + "@types/phoenix": "^1.5.4", + "@types/ws": "^8.5.10", + "ws": "^8.14.2" + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.6.0.tgz", + "integrity": "sha512-REAxr7myf+3utMkI2oOmZ6sdplMZZ71/2NEIEMBZHL9Fkmm3/JnaOZVSRqvG4LStYj2v5WhCruCzuMn6oD/Drw==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.45.0", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.45.0.tgz", + "integrity": "sha512-j66Mfs8RhzCQCKxKogAFQYH9oNhRmgIdKk6pexguI2Oc7hi+nL9UNJug5aL1tKnBdaBM3h65riPLQSdL6sWa3Q==", + "dependencies": { + "@supabase/auth-js": "2.64.4", + "@supabase/functions-js": "2.4.1", + "@supabase/node-fetch": "2.6.15", + "@supabase/postgrest-js": "1.15.8", + "@supabase/realtime-js": "2.10.2", + "@supabase/storage-js": "2.6.0" + } + }, + "node_modules/@sveltejs/adapter-vercel": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-5.4.1.tgz", + "integrity": "sha512-JLcD1OgMnu9lQ8EssxVGxv7w0waWuyVzItTT1eqIH98Krufd9qfr1uC9zgo82z3dJ9v1AfPEbvIX5tonceg7XQ==", + "dev": true, + "dependencies": { + "@vercel/nft": "^0.27.1", + "esbuild": "^0.21.5" + }, + "peerDependencies": { + "@sveltejs/kit": "^2.4.0" + } + }, + "node_modules/@sveltejs/kit": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.7.3.tgz", + "integrity": "sha512-Vx7nq5MJ86I8qXYsVidC5PX6xm+uxt8DydvOdmJoyOK7LvGP18OFEG359yY+aa51t6pENvqZAMqAREQQx1OI2Q==", + "hasInstallScript": true, + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^0.6.0", + "devalue": "^5.1.0", + "esm-env": "^1.0.0", + "import-meta-resolve": "^4.1.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "mrmime": "^2.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.6.0", + "sirv": "^3.0.0", + "tiny-glob": "^0.2.9" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.3" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.1.tgz", + "integrity": "sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==", + "peer": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.10", + "svelte-hmr": "^0.16.0", + "vitefu": "^0.2.5" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", + "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", + "peer": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte/node_modules/svelte-hmr": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", + "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", + "peer": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "dev": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tiptap/core": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.5.8.tgz", + "integrity": "sha512-lkWCKyoAoMTxM137MoEsorG7tZ5MZU6O3wMRuZ0P9fcTRY5vd1NWncWuPzuGSJIpL20gwBQOsS6PaQSfR3xjlA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-blockquote": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.5.8.tgz", + "integrity": "sha512-P8vDiagtRrUfIewfCKrJe0ddDSjPgOTKzqoM1UXKS+MenT8C/wT4bjiwopAoWP6zMoV0TfHWXah9emllmCfXFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-bold": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.5.8.tgz", + "integrity": "sha512-4vEn+U7Y8B4e8izcL7QuEKYJ9thCSdo+UF1K3TOqQWuJTzTrJLPMwTZ4vYOHzvuq5uIXyPLnWzLgnRLgy5mJRg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-bubble-menu": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.5.8.tgz", + "integrity": "sha512-COmd1Azudu7i281emZFIESECe7FnvWiRoBoQBVjjWSyq5PVzwJaA3PAlnU7GyNZKtVXMZ4xbrckdyNQfDeVQDA==", + "dependencies": { + "tippy.js": "^6.3.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-bullet-list": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.5.8.tgz", + "integrity": "sha512-Wvf0HWBI0ulssoCsCOguxJB1Ntmj9PtE8b/ieFwFvrNptP+sf25XiWgjMs7H1KQrtmpngBu/Bhh5jJRgAmAgeQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-code": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.5.8.tgz", + "integrity": "sha512-56lb4NnaYAbIkqBTCIg4ZoITrw86Dj8C2HSi6DrU7f5q9cfvGuH+2057I5n8eEEfASu1AeDN6tSnCz3NR+yiHw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-code-block": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.5.8.tgz", + "integrity": "sha512-atMtT1Ddc4hv9+OiH/UCLfQ6Ooo45xpPaaOhqs1Ab509YyqxoyEbfNSOth/yx9DFb8VOenRWE1WV3Z3C0ial0Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-code-block-lowlight": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.5.8.tgz", + "integrity": "sha512-ga5iYzVeX7pQ6P44ZkW+Sf+sTcAjD8gjkz6szQ4qKZbJNKWhUPbWyhp41mlhwBq+QzvqcGNWiGcOe6ZwPR01sA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/extension-code-block": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-document": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.5.8.tgz", + "integrity": "sha512-r3rP4ihCJAdp3VRIeqd80etHx7jttzZaKNFX8hkQShHK6eTHwrR92VL0jDE4K+NOE3bxjMsOlYizJYWV042BtA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-dropcursor": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.5.8.tgz", + "integrity": "sha512-xPmIfTYqurFF8RukCPlHd8mT8I7hDinWrgq7CQTRROxcJ3DNw8PooWrKWaBYs9HXHe1pbiQ5EK0uOsNvQ1bcDg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-floating-menu": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.5.8.tgz", + "integrity": "sha512-qsM6tCyRlXnI/gADrkO/2p0Tldu5aY96CnsXpZMaflMgsO577qhcXD0ReGg17uLXBzJa5xmV8qOik0Ptq3WEWg==", + "dependencies": { + "tippy.js": "^6.3.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-gapcursor": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.5.8.tgz", + "integrity": "sha512-nR7AUOE4xWdp0sDbLbe4uwAhQ/xq+MTLVafvffMLT81U/Hl9R+w0Ap2XF0+c6/JTQwVjZiOalAmg4dobx7rJUQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-hard-break": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.5.8.tgz", + "integrity": "sha512-samZEL0EXzHSmMQ7KyLnfSxdDv3qSjia0JzelfCnFZS6LLcbwjrIjV8ZPxEhJ7UlZqroQdFxPegllkLHZj/MdQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-heading": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.5.8.tgz", + "integrity": "sha512-fDQoUkTLN+U8MNQ8PI+syKyshS9qFHlKihxzMLf/+tRisJvP47gzHDur99nffTSbXFDnASDqhavhKjI/2xTWlQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-highlight": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.5.8.tgz", + "integrity": "sha512-Auli6YBdUjF8mo0beEYw6Eh1hySukoQVjq+Yz6RKpaRzrrvXjoZUciQ6RoGXS4BHT7sfp8fMw9OIVo9Ifx8d8w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-history": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.5.8.tgz", + "integrity": "sha512-5IrZZfp2Rg9Tov/08aYTKhwoiqdun8v3j3vleuqyW5RB7LU/NKLR19EtSSMh9mVkFZVbhab2zDOFmn5ilsEOhw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-horizontal-rule": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.5.8.tgz", + "integrity": "sha512-L8Is73WGaP6VNdKrIry+lCIM9W1KaL/Tw2Z6DGMVMU5mr1lLx0xq7nWEStqD7e4zh+n4+3PV15cZSA2F34DZrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-image": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.5.8.tgz", + "integrity": "sha512-xlF3dqzXSN/6vWdmGOaIz0YVUO/B69mPw9vUITg7bQdc4X2pc52tvTGhpAzAc/kbwSVrW33icxAsXx8XH9Bkkg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-italic": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.5.8.tgz", + "integrity": "sha512-Kh35a7slBai+Qr/tiF9XFXmuWMgUQz4Nt51hmzqVGVuG+QsdWzQE8IZBGypKm8aAzxTGSY0d0QA0rys+YRNq1Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-link": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.5.8.tgz", + "integrity": "sha512-qfeWR7sG2V7bn8z0f3HMyoR68pFlxYJmLs9cbW30diE9/zKClYEd3zTMPCgJ9yMSagCj4PWkqksIuktAhyRqOQ==", + "dependencies": { + "linkifyjs": "^4.1.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-list-item": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.5.8.tgz", + "integrity": "sha512-RFIIzHxxXdPmdf7BL0zhE4VPHoR6BTWtfi3JCTftmNqKoH7o+mLKT0RHMGvF1CGNn2HewHzXAF0iXfKCwmEgHQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-ordered-list": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.5.8.tgz", + "integrity": "sha512-84gWdWhc8rUCCssn8+6Z1rFKdG7/yIe+gwYkU6WqAtDrcluJdt5jRHrcMOLxb2dbY8ww9pa72EYV/bwOisZlFQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-paragraph": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.5.8.tgz", + "integrity": "sha512-AMfD3lfGSiomfkSE2tUourUjVahLtIfWUQew13NTPuWoxAXaSyoCGO0ULkiou/lO3JVUUUmF9+KJrAHWGIARdA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-strike": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.5.8.tgz", + "integrity": "sha512-uiHhBIEqawX9Up2ofklotVQ5XpGIjwRL6wprZF38s1le3XpsgyhVV7oDnqDkC7ujCsGkOJJfXZtv3LsO3R2nzQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-text": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.5.8.tgz", + "integrity": "sha512-CNkD51jRMdcYCqFVOkrnebqBQ6pCD3ZD5z9kO5bOC5UPZKZBkLsWdlrHGAVwosxcGxdJACbqJ0Nj+fMgIw4tNA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-typography": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-typography/-/extension-typography-2.5.8.tgz", + "integrity": "sha512-dv3RmRoUlyMpc3fPoDmPX3/zZPe4F62vaA6DfZurz0SkHCCk3HAA89spjPeoINfGOkbN06TZZj05TlpaR+KItw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-youtube": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-youtube/-/extension-youtube-2.5.8.tgz", + "integrity": "sha512-TEZ/mZgAIgc4thTO0pbmuNpWhMcCKk4IPgG3ko5HJ6w4lm13aVBroGoTXxHmK50kDzr+yD0g9JaJJTIvJ2cvGA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/pm": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.5.8.tgz", + "integrity": "sha512-CVhHaTG4QNHSkvuh6HHsUR4hE+nbUnk7z+VMUedaqPU8tNqkTwWGCMbiyTc+PCsz0T9Mni7vvBR+EXgEQ3+w4g==", + "dependencies": { + "prosemirror-changeset": "^2.2.1", + "prosemirror-collab": "^1.3.1", + "prosemirror-commands": "^1.5.2", + "prosemirror-dropcursor": "^1.8.1", + "prosemirror-gapcursor": "^1.3.2", + "prosemirror-history": "^1.4.1", + "prosemirror-inputrules": "^1.4.0", + "prosemirror-keymap": "^1.2.2", + "prosemirror-markdown": "^1.13.0", + "prosemirror-menu": "^1.2.4", + "prosemirror-model": "^1.22.2", + "prosemirror-schema-basic": "^1.2.3", + "prosemirror-schema-list": "^1.4.1", + "prosemirror-state": "^1.4.3", + "prosemirror-tables": "^1.4.0", + "prosemirror-trailing-node": "^2.0.9", + "prosemirror-transform": "^1.9.0", + "prosemirror-view": "^1.33.9" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/starter-kit": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.5.8.tgz", + "integrity": "sha512-Beb6Q3cFmJ1pE22WlFrG3wj8XAGXqaGkbqtsGAJDnoyWL4uoSs4vLt5I/UJshK/nQlNqTWFdpd9SxRFsxBYpqg==", + "dependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/extension-blockquote": "^2.5.8", + "@tiptap/extension-bold": "^2.5.8", + "@tiptap/extension-bullet-list": "^2.5.8", + "@tiptap/extension-code": "^2.5.8", + "@tiptap/extension-code-block": "^2.5.8", + "@tiptap/extension-document": "^2.5.8", + "@tiptap/extension-dropcursor": "^2.5.8", + "@tiptap/extension-gapcursor": "^2.5.8", + "@tiptap/extension-hard-break": "^2.5.8", + "@tiptap/extension-heading": "^2.5.8", + "@tiptap/extension-history": "^2.5.8", + "@tiptap/extension-horizontal-rule": "^2.5.8", + "@tiptap/extension-italic": "^2.5.8", + "@tiptap/extension-list-item": "^2.5.8", + "@tiptap/extension-ordered-list": "^2.5.8", + "@tiptap/extension-paragraph": "^2.5.8", + "@tiptap/extension-strike": "^2.5.8", + "@tiptap/extension-text": "^2.5.8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@types/chai": { + "version": "4.3.17", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.17.tgz", + "integrity": "sha512-zmZ21EWzR71B4Sscphjief5djsLre50M6lI622OSySTmn9DB3j+C3kWroHfBQWXbOBwbgg/M8CG/hUxDLIloow==", + "dev": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.5.tgz", + "integrity": "sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", + "dev": true + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "dev": true, + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "22.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.0.2.tgz", + "integrity": "sha512-yPL6DyFwY5PiMVEwymNeqUTKsDczQBJ/5T7W/46RwLU/VH+AA8aT5TZkvBviLKLbbm0hlfftEkGrNzfRk/fofQ==", + "dependencies": { + "undici-types": "~6.11.1" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/phoenix": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.5.tgz", + "integrity": "sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w==" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vercel/nft": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.27.3.tgz", + "integrity": "sha512-oySTdDSzUAFDXpsSLk9Q943o+/Yu/+TCFxnehpFQEf/3khi2stMpTHPVNwFdvZq/Z4Ky93lE+MGHpXCRpMkSCA==", + "dev": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.5", + "@rollup/pluginutils": "^4.0.0", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.2", + "node-gyp-build": "^4.2.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-typescript": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz", + "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==", + "peerDependencies": { + "acorn": ">=8.9.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/async-sema": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", + "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/autosize": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/autosize/-/autosize-5.0.2.tgz", + "integrity": "sha512-FPVt5ynkqUAA9gcMZnJHka1XfQgr1WNd/yRfIjmj5WGmjua+u5Hl9hn8M2nU5CNy2bEIcj1ZUwXq7IOHsfZG9w==", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bind-event-listener": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bind-event-listener/-/bind-event-listener-3.0.0.tgz", + "integrity": "sha512-PJvH288AWQhKs2v9zyfYdPzlPqf5bXbGMmhmUIY9x4dAUGIWgomO771oBQNwJnMQSnUIXhKu6sgzpBRXTlvb8Q==" + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bits-ui": { + "version": "1.0.0-next.87", + "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-1.0.0-next.87.tgz", + "integrity": "sha512-3NCcz/7Fwp9zEqA4sCz6oGWrL3haDkIe15EwY6GnoInbFPtH0x3ftJ00dP45BqQ/RukYHcoW1pzRlUerdcIvxA==", + "dev": true, + "dependencies": { + "@floating-ui/core": "^1.6.4", + "@floating-ui/dom": "^1.6.7", + "@internationalized/date": "^3.5.6", + "esm-env": "^1.1.2", + "runed": "^0.23.2", + "svelte-toolbelt": "^0.7.1" + }, + "engines": { + "node": ">=18", + "pnpm": ">=8.7.0" + }, + "funding": { + "url": "https://github.com/sponsors/huntabyte" + }, + "peerDependencies": { + "svelte": "^5.11.0" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browser-image-compression": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/browser-image-compression/-/browser-image-compression-1.0.17.tgz", + "integrity": "sha512-TMDh3gyNlVA5Vvn0D0AdWr33s2ftIeokHK406z8cYlLJ4ANAq1x6eMaSzqedDoZwUGyTVB+0rhNVaSFgM3YAZg==", + "dependencies": { + "core-js": "^3.16.1", + "uzip": "0.20201231.0" + } + }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "dependencies": { + "resolve": "^1.17.0" + } + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.5", + "hash-base": "~3.0", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001646", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001646.tgz", + "integrity": "sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/cloudflare": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cloudflare/-/cloudflare-4.0.0.tgz", + "integrity": "sha512-0o3rUVLTZoHKcM+83UbkeeFdWdsaEaF2e8QA7e8hNwTku8EwO14JoYyeBF+DJZnRdnoJGPbAjA9lDKQ7f6ylUg==", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + } + }, + "node_modules/cloudflare/node_modules/@types/node": { + "version": "18.19.70", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.70.tgz", + "integrity": "sha512-RE+K0+KZoEpDUbGGctnGdkrLFwi1eYKTlIHNl2Um98mUkGsm1u2Ff6Ltd0e8DktTtC98uy7rSj+hO8t/QuLoVQ==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/cloudflare/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "engines": { + "node": ">=14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-js": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", + "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domain-browser": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz", + "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz", + "integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.6", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.6.tgz", + "integrity": "sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esm-env": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==" + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrap": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.5.tgz", + "integrity": "sha512-CjNMjkBWWZeHn+VX+gS8YvFwJ5+NDhg8aWZBSFJPR8qQduDNjbJodA2WcwCm7uQa5Rjqj+nZvVmceg1RbHFB9g==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-blob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-4.0.0.tgz", + "integrity": "sha512-nPmnhRmpNMjYWnp9EBMGs6z5lq9RXed5W1vuZcECrsDVQInM8AMQSooVb3X183Aole60adzjWbH9qlRFWzDDTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0" + }, + "engines": { + "node": ">=16.7" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==" + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 12.20" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fuse.js": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.0.0.tgz", + "integrity": "sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==", + "engines": { + "node": ">=10" + } + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", + "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/html-encoder-decoder": { + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/html-encoder-decoder/-/html-encoder-decoder-1.3.10.tgz", + "integrity": "sha512-18SjgzQZ9U1mxb96rjcWgWMnTlEzNj2lU2wAU7OeUobdIWXTS6lOGc6419eLhMlX24sNQYDyQfgkSXWjyq/Ilg==", + "dependencies": { + "he": "^1.1.0", + "iterate-object": "^1.3.2", + "regex-escape": "^3.4.2" + } + }, + "node_modules/html-to-text": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.3.tgz", + "integrity": "sha512-hxDF1kVCF2uw4VUJ3vr2doc91pXf2D5ngKcNviSitNkhP9OMOaJkDrFIFL6RMvko7NisWTEiqGpQ9LAxcVok1w==", + "dependencies": { + "@selderee/plugin-htmlparser2": "^0.10.0", + "deepmerge": "^4.2.2", + "dom-serializer": "^2.0.0", + "htmlparser2": "^8.0.1", + "selderee": "^0.10.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "engines": { + "node": ">=10.18" + } + }, + "node_modules/idb-keyval": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", + "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "dev": true + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isomorphic-timers-promises": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/iterate-object": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.4.tgz", + "integrity": "sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/jose": { + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-beautify": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", + "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.3.3", + "js-cookie": "^3.0.5", + "nopt": "^7.2.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-beautify/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/js-beautify/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/js-beautify/node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/leac": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz", + "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==", + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/linkifyjs": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.3.tgz", + "integrity": "sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==" + }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lorem-ipsum": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/lorem-ipsum/-/lorem-ipsum-2.0.8.tgz", + "integrity": "sha512-5RIwHuCb979RASgCJH0VKERn9cQo/+NcAi2BMe9ddj+gp7hujl6BI+qdOG4nVsLDpwWEJwTVYXNKP6BGgbcoGA==", + "dependencies": { + "commander": "^9.3.0" + }, + "bin": { + "lorem-ipsum": "dist/bin/lorem-ipsum.bin.js" + }, + "engines": { + "node": ">= 8.x", + "npm": ">= 5.x" + } + }, + "node_modules/lorem-ipsum/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lowlight": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-3.1.0.tgz", + "integrity": "sha512-CEbNVoSikAxwDMDPjXlqlFYiZLkDJHwyGu/MfOsJnF3d7f3tds5J3z8s/l9TMXhzfsJCCJEAsD78842mwmg0PQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.0.0", + "highlight.js": "~11.9.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/lucide-svelte": { + "version": "0.469.0", + "resolved": "https://registry.npmjs.org/lucide-svelte/-/lucide-svelte-0.469.0.tgz", + "integrity": "sha512-PMIJ8jrFqVUsXJz4d1yfAQplaGhNOahwwkzbunha8DhpiD73xqX24n8dE1dPpUk3vcrdWVsHc1y/liHHotOnGQ==", + "dev": true, + "peerDependencies": { + "svelte": "^3 || ^4 || ^5.0.0-next.42" + } + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + }, + "node_modules/memfs": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.11.1.tgz", + "integrity": "sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ==", + "dependencies": { + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.3.0", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mode-watcher": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mode-watcher/-/mode-watcher-0.5.0.tgz", + "integrity": "sha512-5E6fh/aXhAVv+U+DbeM0hCmskQE9u7WSmvnCRijJB/MJu7HtB73sjiCaZ9n1M8QHmzLrBFo8XBAUcWXkDm8Z9A==", + "dev": true, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.1" + } + }, + "node_modules/mousetrap": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", + "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "node_modules/node-stdlib-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz", + "integrity": "sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==", + "dev": true, + "dependencies": { + "assert": "^2.0.0", + "browser-resolve": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^5.7.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "create-require": "^1.1.1", + "crypto-browserify": "^3.11.0", + "domain-browser": "^4.22.0", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "isomorphic-timers-promises": "^1.0.1", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "pkg-dir": "^5.0.0", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.1", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-stdlib-browser/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/node-stdlib-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/node-stdlib-browser/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/orderedmap": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", + "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==" + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/paneforge": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/paneforge/-/paneforge-0.0.5.tgz", + "integrity": "sha512-98QHobaN/KeQhqqglbvjUmNCTRC4h4iqDxpSV8jCGhRLttgGlRXZNzWNr4Firni5rwasAZjOza0k/JdwppB/AQ==", + "dependencies": { + "nanoid": "^5.0.4" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.1" + } + }, + "node_modules/paneforge/node_modules/nanoid": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz", + "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", + "dev": true, + "dependencies": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-asn1/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/parseley": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.11.0.tgz", + "integrity": "sha512-VfcwXlBWgTF+unPcr7yu3HSSA6QUdDaDnrHcytVfj5Z8azAyKBDrYnSIfeSxlrEayndNcLmrXzg+Vxbo6DWRXQ==", + "dependencies": { + "leac": "^0.6.0", + "peberminta": "^0.8.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/peberminta": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.8.0.tgz", + "integrity": "sha512-YYEs+eauIjDH5nUEGi18EohWE0nV2QbGTqmxQcqgZ/0g+laPCQmuIqq7EBLVi9uim9zMgfJv0QBZEnQ3uHw/Tw==", + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/playwright": { + "version": "1.47.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.47.2.tgz", + "integrity": "sha512-nx1cLMmQWqmA3UsnjaaokyoUpdVaaDhJhMoxX2qj3McpjnsqFHs516QAKYhqHAgOP+oCFTEOCOAaD1RgD/RQfA==", + "dev": true, + "dependencies": { + "playwright-core": "1.47.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.47.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.47.2.tgz", + "integrity": "sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.6" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.7.tgz", + "integrity": "sha512-/Dswx/ea0lV34If1eDcG3nulQ63YNr5KPDfMsjbdtpSWOxKKJ7nAc2qlVuYwEvCr4raIuredNoR7K4JCkmTGaQ==", + "dev": true, + "peerDependencies": { + "prettier": "^3.0.0", + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" + } + }, + "node_modules/pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==", + "dependencies": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise-worker": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-worker/-/promise-worker-2.0.1.tgz", + "integrity": "sha512-jR7vHqMEwWJ15i9vA3qyCKwRHihyLJp1sAa3RyY5F35m3u5s2lQUfq0nzVjbA8Xc7+3mL3Y9+9MHBO9UFRpFxA==" + }, + "node_modules/prosemirror-changeset": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz", + "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==", + "dependencies": { + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-collab": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", + "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", + "dependencies": { + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-commands": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.6.0.tgz", + "integrity": "sha512-xn1U/g36OqXn2tn5nGmvnnimAj/g1pUx2ypJJIe8WkVX83WyJVC5LTARaxZa2AtQRwntu9Jc5zXs9gL9svp/mg==", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-dropcursor": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", + "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0", + "prosemirror-view": "^1.1.0" + } + }, + "node_modules/prosemirror-gapcursor": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", + "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", + "dependencies": { + "prosemirror-keymap": "^1.0.0", + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-view": "^1.0.0" + } + }, + "node_modules/prosemirror-history": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.1.tgz", + "integrity": "sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==", + "dependencies": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.31.0", + "rope-sequence": "^1.3.0" + } + }, + "node_modules/prosemirror-inputrules": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz", + "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-keymap": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", + "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", + "dependencies": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "node_modules/prosemirror-markdown": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.0.tgz", + "integrity": "sha512-UziddX3ZYSYibgx8042hfGKmukq5Aljp2qoBiJRejD/8MH70siQNz5RB1TrdTPheqLMy4aCe4GYNF10/3lQS5g==", + "dependencies": { + "markdown-it": "^14.0.0", + "prosemirror-model": "^1.20.0" + } + }, + "node_modules/prosemirror-menu": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz", + "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==", + "dependencies": { + "crelt": "^1.0.0", + "prosemirror-commands": "^1.0.0", + "prosemirror-history": "^1.0.0", + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-model": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.22.2.tgz", + "integrity": "sha512-I4lS7HHIW47D0Xv/gWmi4iUWcQIDYaJKd8Hk4+lcSps+553FlQrhmxtItpEvTr75iAruhzVShVp6WUwsT6Boww==", + "dependencies": { + "orderedmap": "^2.0.0" + } + }, + "node_modules/prosemirror-schema-basic": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.3.tgz", + "integrity": "sha512-h+H0OQwZVqMon1PNn0AG9cTfx513zgIG2DY00eJ00Yvgb3UD+GQ/VlWW5rcaxacpCGT1Yx8nuhwXk4+QbXUfJA==", + "dependencies": { + "prosemirror-model": "^1.19.0" + } + }, + "node_modules/prosemirror-schema-list": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.4.1.tgz", + "integrity": "sha512-jbDyaP/6AFfDfu70VzySsD75Om2t3sXTOdl5+31Wlxlg62td1haUpty/ybajSfJ1pkGadlOfwQq9kgW5IMo1Rg==", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.7.3" + } + }, + "node_modules/prosemirror-state": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", + "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.27.0" + } + }, + "node_modules/prosemirror-tables": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.4.0.tgz", + "integrity": "sha512-fxryZZkQG12fSCNuZDrYx6Xvo2rLYZTbKLRd8rglOPgNJGMKIS8uvTt6gGC38m7UCu/ENnXIP9pEz5uDaPc+cA==", + "dependencies": { + "prosemirror-keymap": "^1.1.2", + "prosemirror-model": "^1.8.1", + "prosemirror-state": "^1.3.1", + "prosemirror-transform": "^1.2.1", + "prosemirror-view": "^1.13.3" + } + }, + "node_modules/prosemirror-trailing-node": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.9.tgz", + "integrity": "sha512-YvyIn3/UaLFlFKrlJB6cObvUhmwFNZVhy1Q8OpW/avoTbD/Y7H5EcjK4AZFKhmuS6/N6WkGgt7gWtBWDnmFvHg==", + "dependencies": { + "@remirror/core-constants": "^2.0.2", + "escape-string-regexp": "^4.0.0" + }, + "peerDependencies": { + "prosemirror-model": "^1.22.1", + "prosemirror-state": "^1.4.2", + "prosemirror-view": "^1.33.8" + } + }, + "node_modules/prosemirror-transform": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.9.0.tgz", + "integrity": "sha512-5UXkr1LIRx3jmpXXNKDhv8OyAOeLTGuXNwdVfg8x27uASna/wQkr9p6fD3eupGOi4PLJfbezxTyi/7fSJypXHg==", + "dependencies": { + "prosemirror-model": "^1.21.0" + } + }, + "node_modules/prosemirror-view": { + "version": "1.33.9", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.9.tgz", + "integrity": "sha512-xV1A0Vz9cIcEnwmMhKKFAOkfIp8XmJRnaZoPqNXrPS7EK5n11Ov8V76KhR0RsfQd/SIzmWY+bg+M44A2Lx/Nnw==", + "dependencies": { + "prosemirror-model": "^1.20.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/raf-schd": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", + "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==" + }, + "node_modules/randombytes": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", + "integrity": "sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==", + "dev": true + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill/node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomstring": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.3.0.tgz", + "integrity": "sha512-gY7aQ4i1BgwZ8I1Op4YseITAyiDiajeZOPQUbIq9TPGPhUm5FX59izIaOpmKbME1nmnEiABf28d9K2VSii6BBg==", + "dev": true, + "dependencies": { + "randombytes": "2.0.3" + }, + "bin": { + "randomstring": "bin/randomstring" + }, + "engines": { + "node": "*" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regex-escape": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/regex-escape/-/regex-escape-3.4.10.tgz", + "integrity": "sha512-qEqf7uzW+iYcKNLMDFnMkghhQBnGdivT6KqVQyKsyjSWnoFyooXVnxrw9dtv3AFLnD6VBGXxtZGAQNFGFTnCqA==" + }, + "node_modules/resend": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resend/-/resend-1.1.0.tgz", + "integrity": "sha512-it8TIDVT+/gAiJsUlv2tdHuvzwCCv4Zwu+udDqIm/dIuByQwe68TtFDcPccxqpSVVrNCBxxXLzsdT1tsV+P3GA==", + "dependencies": { + "@react-email/render": "0.0.7", + "type-fest": "3.13.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/resend/node_modules/type-fest": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.0.tgz", + "integrity": "sha512-Gur3yQGM9qiLNs0KPP7LPgeRbio2QTt4xXouobMCarR0/wyW3F+F/+OWwshg3NG0Adon7uQfSZBpB46NfhoF1A==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rollup": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.3.tgz", + "integrity": "sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.24.3", + "@rollup/rollup-android-arm64": "4.24.3", + "@rollup/rollup-darwin-arm64": "4.24.3", + "@rollup/rollup-darwin-x64": "4.24.3", + "@rollup/rollup-freebsd-arm64": "4.24.3", + "@rollup/rollup-freebsd-x64": "4.24.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.3", + "@rollup/rollup-linux-arm-musleabihf": "4.24.3", + "@rollup/rollup-linux-arm64-gnu": "4.24.3", + "@rollup/rollup-linux-arm64-musl": "4.24.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.3", + "@rollup/rollup-linux-riscv64-gnu": "4.24.3", + "@rollup/rollup-linux-s390x-gnu": "4.24.3", + "@rollup/rollup-linux-x64-gnu": "4.24.3", + "@rollup/rollup-linux-x64-musl": "4.24.3", + "@rollup/rollup-win32-arm64-msvc": "4.24.3", + "@rollup/rollup-win32-ia32-msvc": "4.24.3", + "@rollup/rollup-win32-x64-msvc": "4.24.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/rope-sequence": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/runed": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/runed/-/runed-0.23.2.tgz", + "integrity": "sha512-AhHCb5/B+YQW6ar1pzhGQOQy+byfjCH63ofuhrexSWwQKhC0EbQ60Z/wMYwETLo3ZubhwlNryxBt0seOMOrVFQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/huntabyte", + "https://github.com/sponsors/tglide" + ], + "dependencies": { + "esm-env": "^1.0.0" + }, + "peerDependencies": { + "svelte": "^5.7.0" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/selderee": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.10.0.tgz", + "integrity": "sha512-DEL/RW/f4qLw/NrVg97xKaEBC8IpzIG2fvxnzCp3Z4yk4jQ3MXom+Imav9wApjxX2dfS3eW7x0DXafJr85i39A==", + "dependencies": { + "parseley": "^0.11.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-cookie-parser": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz", + "integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/showdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/showdown/-/showdown-2.1.0.tgz", + "integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==", + "dependencies": { + "commander": "^9.0.0" + }, + "bin": { + "showdown": "bin/showdown.js" + }, + "funding": { + "type": "individual", + "url": "https://www.paypal.me/tiviesantos" + } + }, + "node_modules/showdown-highlight": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/showdown-highlight/-/showdown-highlight-3.1.0.tgz", + "integrity": "sha512-wrTxtE63L/bpW5A2Uy/AO1gblXnNHK/cDL6LszECOoCdMJKWTj0/4n4I/pmqub+3H3KCPVDDvtXpCArnT/heFA==", + "dependencies": { + "highlight.js": "^11.5.0", + "html-encoder-decoder": "^1.3.9", + "showdown": "^2.0.3" + } + }, + "node_modules/showdown/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sirv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", + "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/stripe": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-13.11.0.tgz", + "integrity": "sha512-yPxVJxUzP1QHhHeFnYjJl48QwDS1+5befcL7ju7+t+i88D5r0rbsL+GkCCS6zgcU+TiV5bF9eMGcKyJfLf8BZQ==", + "dependencies": { + "@types/node": ">=8.1.0", + "qs": "^6.11.0" + }, + "engines": { + "node": ">=12.*" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, + "node_modules/style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==" + }, + "node_modules/style-to-object": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", + "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "dev": true, + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "5.20.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.20.2.tgz", + "integrity": "sha512-aYXJreNUiyTob0QOzRZeBXZMGeFZDch6SrSRV8QTncZb6zj0O3BEdUzPpojuHQ1pTvk+KX7I6rZCXPUf8pTPxA==", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@types/estree": "^1.0.5", + "acorn": "^8.12.1", + "acorn-typescript": "^1.4.13", + "aria-query": "^5.3.1", + "axobject-query": "^4.1.0", + "clsx": "^2.1.1", + "esm-env": "^1.2.1", + "esrap": "^1.4.3", + "is-reference": "^3.0.3", + "locate-character": "^3.0.0", + "magic-string": "^0.30.11", + "zimmerframe": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/svelte-awesome-color-picker": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/svelte-awesome-color-picker/-/svelte-awesome-color-picker-3.1.4.tgz", + "integrity": "sha512-tiFakxvSpCwodOSFW6CflnLVSldSlDY77rDipHfW7hvB+4gTP3y6uO+Dm9O9e7P5N7K+CNyNjjdjbZOHYkMyNQ==", + "dependencies": { + "colord": "^2.9.3", + "svelte-awesome-slider": "^1.1.2" + }, + "peerDependencies": { + "svelte": "^3.55.1 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/svelte-awesome-slider": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/svelte-awesome-slider/-/svelte-awesome-slider-1.1.2.tgz", + "integrity": "sha512-HFIWwq6rtX6aXyc6ns2R0P6pDLYIr6nRjTPyAddAiTAgZqsohAoEfOEwKKqMmZ6Q+CH48zzcFdyo6lFkBJvyQw==", + "peerDependencies": { + "svelte": "^3.54.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/svelte-check": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.0.5.tgz", + "integrity": "sha512-icBTBZ3ibBaywbXUat3cK6hB5Du+Kq9Z8CRuyLmm64XIe2/r+lQcbuBx/IQgsbrC+kT2jQ0weVpZSSRIPwB6jQ==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "chokidar": "^4.0.1", + "fdir": "^6.2.0", + "picocolors": "^1.0.0", + "sade": "^1.7.4" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "typescript": ">=5.0.0" + } + }, + "node_modules/svelte-check/node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dev": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/svelte-check/node_modules/fdir": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "dev": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/svelte-check/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/svelte-check/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/svelte-dnd-action": { + "version": "0.9.49", + "resolved": "https://registry.npmjs.org/svelte-dnd-action/-/svelte-dnd-action-0.9.49.tgz", + "integrity": "sha512-kAIDTSMoTZcJCqUpT8COLAkF0/NRBoJ/pIbPUra9UVRnyJljLy6dLgRuL2OojSqyNs3nToBvn5XOGaFMREwjfQ==", + "dev": true, + "peerDependencies": { + "svelte": ">=3.23.0 || ^5.0.0-next.0" + } + }, + "node_modules/svelte-inspect-value": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svelte-inspect-value/-/svelte-inspect-value-0.1.3.tgz", + "integrity": "sha512-ERYGgLyv1TUBTsM5b4N4hmIi0A31eSOSlgyWfawSNgS3EcDn9I5wUblMIbTwFQ5FijS8dJOny4KNffDiBDzBpg==", + "dependencies": { + "esm-env": "^1.2.2", + "fast-deep-equal": "^3.1.3", + "highlight.js": "^11.10.0" + }, + "peerDependencies": { + "svelte": "^5.19.0" + } + }, + "node_modules/svelte-inspect-value/node_modules/highlight.js": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/svelte-popperjs": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svelte-popperjs/-/svelte-popperjs-1.3.2.tgz", + "integrity": "sha512-fwrErlkvngL876WXRnL3OLlfk/n9YkZwwLxuKRpZOYCJLt1zrwhoKTXS+/sRgDveD/zd6GQ35hV89EOip+NBGA==", + "dev": true, + "peerDependencies": { + "@popperjs/core": ">=2", + "svelte": ">=3" + } + }, + "node_modules/svelte-preprocess": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.3.tgz", + "integrity": "sha512-PLG2k05qHdhmRG7zR/dyo5qKvakhm8IJ+hD2eFRQmMLHp7X3eJnjeupUtvuRpbNiF31RjVw45W+abDwHEmP5OA==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": ">=3", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": ">=0.55", + "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.100 || ^5.0.0", + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/svelte-sonner": { + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/svelte-sonner/-/svelte-sonner-0.3.28.tgz", + "integrity": "sha512-K3AmlySeFifF/cKgsYNv5uXqMVNln0NBAacOYgmkQStLa/UoU0LhfAACU6Gr+YYC8bOCHdVmFNoKuDbMEsppJg==", + "dev": true, + "peerDependencies": { + "svelte": "^3.0.0 || ^4.0.0 || ^5.0.0-next.1" + } + }, + "node_modules/svelte-toggle": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/svelte-toggle/-/svelte-toggle-3.1.0.tgz", + "integrity": "sha512-2gzDDMDhM+ImDaLEZVlnlHVY1340Y368tT4Qk5IwLnCeRJ4zV3cVwliVGacoHy7iCDukcGXzKwDzG/hTTcaljg==", + "dev": true + }, + "node_modules/svelte-toolbelt": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.7.1.tgz", + "integrity": "sha512-HcBOcR17Vx9bjaOceUvxkY3nGmbBmCBBbuWLLEWO6jtmWH8f/QoWmbyUfQZrpDINH39en1b8mptfPQT9VKQ1xQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/huntabyte" + ], + "dependencies": { + "clsx": "^2.1.1", + "runed": "^0.23.2", + "style-to-object": "^1.0.8" + }, + "engines": { + "node": ">=18", + "pnpm": ">=8.7.0" + }, + "peerDependencies": { + "svelte": "^5.0.0" + } + }, + "node_modules/tailwind-merge": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", + "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwind-variants": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-0.3.0.tgz", + "integrity": "sha512-ho2k5kn+LB1fT5XdNS3Clb96zieWxbStE9wNLK7D0AV64kdZMaYzAKo0fWl6fXLPY99ffF9oBJnIj5escEl/8A==", + "dev": true, + "dependencies": { + "tailwind-merge": "^2.5.4" + }, + "engines": { + "node": ">=16.x", + "pnpm": ">=7.x" + }, + "peerDependencies": { + "tailwindcss": "*" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "dev": true, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/tailwindcss/node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/timeago.js": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/timeago.js/-/timeago.js-4.0.2.tgz", + "integrity": "sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w==" + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/tinybench": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz", + "integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.1.tgz", + "integrity": "sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.1.1.tgz", + "integrity": "sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tippy.js": { + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", + "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", + "dependencies": { + "@popperjs/core": "^2.9.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" + }, + "node_modules/undici-types": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.11.1.tgz", + "integrity": "sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==" + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uzip": { + "version": "0.20201231.0", + "resolved": "https://registry.npmjs.org/uzip/-/uzip-0.20201231.0.tgz", + "integrity": "sha512-OZeJfZP+R0z9D6TmBgLq2LHzSSptGMGDGigGiEe0pr8UBe/7fdflgHlHBNDASTXB5jnFuxHpNaJywSg8YFeGng==" + }, + "node_modules/vite": { + "version": "5.4.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", + "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-node-polyfills": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.21.0.tgz", + "integrity": "sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==", + "dev": true, + "dependencies": { + "@rollup/plugin-inject": "^5.0.5", + "node-stdlib-browser": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/davidmyersdev" + }, + "peerDependencies": { + "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/vite/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/vitefu": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "peer": true, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.8.tgz", + "integrity": "sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==", + "dev": true, + "dependencies": { + "@types/chai": "^4.3.4", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "acorn": "^8.8.1", + "acorn-walk": "^8.2.0", + "chai": "^4.3.7", + "debug": "^4.3.4", + "local-pkg": "^0.4.2", + "source-map": "^0.6.1", + "strip-literal": "^1.0.0", + "tinybench": "^2.3.1", + "tinypool": "^0.3.0", + "tinyspy": "^1.0.2", + "vite": "^3.0.0 || ^4.0.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.16.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/vitest/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/vitest/node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/vitest/node_modules/vite": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", + "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + }, + "node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zimmerframe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", + "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==" + } + } } diff --git a/package.json b/package.json index 927f83004..2032649f1 100644 --- a/package.json +++ b/package.json @@ -1,62 +1,112 @@ { - "name": "primo-server", - "version": "2.0.0--beta.48", - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "test": "playwright test", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "test:unit": "vitest", - "lint": "prettier --plugin-search-dir . --check . && eslint .", - "format": "prettier --plugin-search-dir . --write ." - }, - "dependencies": { - "@fontsource/fira-code": "^5.0.5", - "@iconify/svelte": "^2.2.1", - "@primocms/builder": "^0.1.66", - "@rollup/browser": "^3.28.0", - "@supabase/auth-helpers-sveltekit": "^0.10.2", - "@supabase/supabase-js": "^2.31.0", - "axios": "^0.26.0", - "estree-walker": "^3.0.3", - "lodash-es": "^4.17.21", - "memfs": "^4.7.7", - "nanoid": "^3.1.23", - "promise-worker": "^2.0.1", - "resolve.exports": "^2.0.2", - "timeago.js": "^4.0.2" - }, - "devDependencies": { - "@playwright/test": "^1.33.0", - "@sveltejs/adapter-auto": "2.1.1", - "@sveltejs/kit": "^1.22.4", - "@typescript-eslint/eslint-plugin": "^5.45.0", - "@typescript-eslint/parser": "^5.45.0", - "autoprefixer": "^10.3.6", - "eslint": "^8.28.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-svelte": "^2.32.4", - "file-saver": "^2.0.5", - "js-beautify": "^1.14.9", - "jszip": "^3.10.1", - "mousetrap": "^1.6.5", - "postcss-nested": "^5.0.6", - "randomstring": "^1.2.3", - "showdown-highlight": "^3.1.0", - "svelte": "^3.59.2", - "svelte-check": "^2.9.2", - "svelte-json-tree": "^1.0.0", - "svelte-preprocess": "^5.0.4", - "tailwindcss": "^2.2.16", - "tslib": "^2.4.1", - "typescript": "^4.9.3", - "vite": "^4.4.8", - "vitest": "^0.25.8" - }, - "type": "module", - "engines": { - "node": "18.x" - } -} \ No newline at end of file + "name": "primo", + "version": "3.0.0--beta.1", + "private": true, + "scripts": { + "dev": "vite dev", + "test": "playwright test", + "build": "NODE_OPTIONS=--max_old_space_size=16384 vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch", + "lint": "prettier --plugin-search-dir . --check .", + "format": "prettier --plugin-search-dir . --write ." + }, + "devDependencies": { + "@playwright/test": "^1.47.2", + "@sveltejs/adapter-vercel": "^5.4.1", + "@sveltejs/kit": "^2.5.27", + "@types/lodash-es": "^4.17.12", + "@types/uuid": "^9.0.8", + "@typescript-eslint/eslint-plugin": "^5.45.0", + "@typescript-eslint/parser": "^5.45.0", + "autoprefixer": "^10.3.6", + "autosize": "^5.0.1", + "bits-ui": "^1.0.0-next.87", + "clsx": "^2.1.1", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "lucide-svelte": "^0.469.0", + "mode-watcher": "^0.5.0", + "postcss-nested": "^5.0.6", + "prettier": "^3.3.3", + "prettier-plugin-svelte": "^3.2.6", + "randomstring": "^1.2.3", + "svelte": "^5.20.2", + "svelte-check": "^4.0.0", + "svelte-dnd-action": "^0.9.25", + "svelte-popperjs": "^1.3.2", + "svelte-preprocess": "^6.0.0", + "svelte-sonner": "^0.3.28", + "svelte-toggle": "^3.1.0", + "tailwind-merge": "^2.6.0", + "tailwind-variants": "^0.3.0", + "tailwindcss": "^3.4.17", + "tailwindcss-animate": "^1.0.7", + "tslib": "^2.4.1", + "typescript": "^5.5.0", + "vite": "^5.4.4", + "vite-plugin-node-polyfills": "^0.21.0", + "vitest": "^0.25.8" + }, + "type": "module", + "dependencies": { + "@anthropic-ai/sdk": "^0.31.0", + "@atlaskit/pragmatic-drag-and-drop": "^1.4.0", + "@aws-sdk/client-s3": "^3.454.0", + "@aws-sdk/lib-storage": "^3.454.0", + "@aws-sdk/s3-request-presigner": "^3.525.0", + "@babel/runtime": "^7.25.6", + "@codemirror/autocomplete": "^6.11.1", + "@codemirror/lang-css": "^6.2.1", + "@codemirror/lang-html": "^6.4.7", + "@iconify/svelte": "^2.2.1", + "@replit/codemirror-lang-svelte": "^6.0.0", + "@supabase/auth-helpers-sveltekit": "^0.13.0", + "@supabase/supabase-js": "^2.32.0", + "@tiptap/core": "^2.2.6", + "@tiptap/extension-bubble-menu": "^2.2.6", + "@tiptap/extension-code-block-lowlight": "^2.2.6", + "@tiptap/extension-floating-menu": "^2.2.6", + "@tiptap/extension-highlight": "^2.2.6", + "@tiptap/extension-image": "^2.2.6", + "@tiptap/extension-link": "^2.2.6", + "@tiptap/extension-typography": "^2.2.6", + "@tiptap/extension-youtube": "^2.2.6", + "@tiptap/pm": "^2.2.6", + "@tiptap/starter-kit": "^2.2.6", + "axios": "^0.26.0", + "bind-event-listener": "^3.0.0", + "browser-image-compression": "^1.0.17", + "cloudflare": "^4.0.0", + "codemirror": "^6.0.1", + "fetch-blob": "^4.0.0", + "file-saver": "^2.0.5", + "fuse.js": "^7.0.0", + "idb-keyval": "^6.1.0", + "js-beautify": "^1.14.0", + "jszip": "^3.10.1", + "lodash-es": "^4.17.21", + "lorem-ipsum": "^2.0.8", + "lowlight": "^3.1.0", + "memfs": "^4.7.7", + "mousetrap": "^1.6.5", + "nanoid": "^3.1.23", + "paneforge": "^0.0.5", + "pluralize": "^8.0.0", + "promise-worker": "^2.0.1", + "prosemirror-schema-basic": "^1.1.2", + "raf-schd": "^4.0.3", + "resend": "^1.0.0", + "resolve.exports": "^2.0.2", + "showdown-highlight": "^3.1.0", + "stripe": "^13.11.0", + "svelte-awesome-color-picker": "^3.1.4", + "svelte-inspect-value": "^0.1.3", + "timeago.js": "^4.0.2", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=16.0.0 <=18.20.4" + } +} diff --git a/playwright.config.ts b/playwright.config.ts index 80731beee..09d24367e 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,11 +1,16 @@ -import type { PlaywrightTestConfig } from '@playwright/test'; +import { PlaywrightTestConfig } from '@playwright/test' const config: PlaywrightTestConfig = { - webServer: { - command: 'npm run build && npm run preview', - port: 4173 + use: { + launchOptions: { + headless: false + }, + storageState: './playwright/.auth/user.json', + baseURL: 'http://localhost:5173' // Adjust this to your app's URL }, - testDir: 'tests' -}; + testDir: './tests/e2e', + timeout: 30000, + globalSetup: './playwright/global-setup.js' +} -export default config; +export default config diff --git a/playwright/.auth/user.json b/playwright/.auth/user.json new file mode 100644 index 000000000..e779f4414 --- /dev/null +++ b/playwright/.auth/user.json @@ -0,0 +1,49 @@ +{ + "cookies": [ + { + "name": "sb-gzymqmiorpcnahvfcdkt-auth-token", + "value": "%5B%22eyJhbGciOiJIUzI1NiIsImtpZCI6IjgvcTBzekliZlYzc3NKc1oiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2d6eW1xbWlvcnBjbmFodmZjZGt0LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIxMTU1ODk3Mi0zYWVjLTQwYTItYTUxZi0wMjM3MjczYTk2MDIiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzI3OTE5MjkxLCJpYXQiOjE3Mjc5MTU2OTEsImVtYWlsIjoibWF0ZW9AcHJpbW8uc28iLCJwaG9uZSI6IiIsImFwcF9tZXRhZGF0YSI6eyJwcm92aWRlciI6ImVtYWlsIiwicHJvdmlkZXJzIjpbImVtYWlsIl19LCJ1c2VyX21ldGFkYXRhIjp7ImVtYWlsIjoibWF0ZW9AcHJpbW8uc28iLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiMTE1NTg5NzItM2FlYy00MGEyLWE1MWYtMDIzNzI3M2E5NjAyIn0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3Mjc5MTU2OTF9XSwic2Vzc2lvbl9pZCI6IjA0NGJmNWYwLWFkMzAtNGU0OC1hODY5LWIyMGEyMmM2ZDk2NiIsImlzX2Fub255bW91cyI6ZmFsc2V9.eooXMcKmO89tbfaXbOxJIFcuVOVLSv_TuWHgnfMrHP8%22%2C%22Vw9xhDoa1imX4wssuSGBcQ%22%2Cnull%2Cnull%2Cnull%5D", + "domain": "localhost", + "path": "/", + "expires": 1762475691.785728, + "httpOnly": false, + "secure": false, + "sameSite": "Lax" + } + ], + "origins": [ + { + "origin": "http://localhost:5173", + "localStorage": [ + { + "name": "iconify2", + "value": "{\"cached\":479976,\"provider\":\"\",\"data\":{\"prefix\":\"ic\",\"lastModified\":1722794017,\"aliases\":{},\"width\":24,\"height\":24,\"icons\":{\"round-chevron-right\":{\"body\":\"\"},\"round-plus\":{\"body\":\"\"}}}}" + }, + { + "name": "iconify3", + "value": "{\"cached\":479976,\"provider\":\"\",\"data\":{\"prefix\":\"material-symbols\",\"lastModified\":1727761867,\"aliases\":{},\"width\":24,\"height\":24,\"icons\":{\"edit-square-outline-rounded\":{\"body\":\"\"}}}}" + }, + { + "name": "iconify1", + "value": "{\"cached\":479976,\"provider\":\"\",\"data\":{\"prefix\":\"mdi\",\"lastModified\":1718880438,\"aliases\":{},\"width\":24,\"height\":24,\"icons\":{\"chevron-down\":{\"body\":\"\"}}}}" + }, + { + "name": "iconify0", + "value": "{\"cached\":479976,\"provider\":\"\",\"data\":{\"prefix\":\"gg\",\"lastModified\":1722793900,\"aliases\":{},\"width\":24,\"height\":24,\"icons\":{\"spinner\":{\"body\":\"\"}}}}" + }, + { + "name": "iconify-count", + "value": "4" + }, + { + "name": "iconify-version", + "value": "iconify2" + }, + { + "name": "sb-gzymqmiorpcnahvfcdkt-auth-token", + "value": "{\"access_token\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6IjgvcTBzekliZlYzc3NKc1oiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2d6eW1xbWlvcnBjbmFodmZjZGt0LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIxMTU1ODk3Mi0zYWVjLTQwYTItYTUxZi0wMjM3MjczYTk2MDIiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzI3OTE5MjkxLCJpYXQiOjE3Mjc5MTU2OTEsImVtYWlsIjoibWF0ZW9AcHJpbW8uc28iLCJwaG9uZSI6IiIsImFwcF9tZXRhZGF0YSI6eyJwcm92aWRlciI6ImVtYWlsIiwicHJvdmlkZXJzIjpbImVtYWlsIl19LCJ1c2VyX21ldGFkYXRhIjp7ImVtYWlsIjoibWF0ZW9AcHJpbW8uc28iLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiMTE1NTg5NzItM2FlYy00MGEyLWE1MWYtMDIzNzI3M2E5NjAyIn0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3Mjc5MTU2OTF9XSwic2Vzc2lvbl9pZCI6IjA0NGJmNWYwLWFkMzAtNGU0OC1hODY5LWIyMGEyMmM2ZDk2NiIsImlzX2Fub255bW91cyI6ZmFsc2V9.eooXMcKmO89tbfaXbOxJIFcuVOVLSv_TuWHgnfMrHP8\",\"refresh_token\":\"Vw9xhDoa1imX4wssuSGBcQ\",\"user\":{\"id\":\"11558972-3aec-40a2-a51f-0237273a9602\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"mateo@primo.so\",\"email_confirmed_at\":\"2024-09-28T21:04:50.675118Z\",\"phone\":\"\",\"confirmed_at\":\"2024-09-28T21:04:50.675118Z\",\"last_sign_in_at\":\"2024-10-03T00:34:51.780464Z\",\"app_metadata\":{\"provider\":\"email\",\"providers\":[\"email\"]},\"user_metadata\":{\"email\":\"mateo@primo.so\",\"email_verified\":false,\"phone_verified\":false,\"sub\":\"11558972-3aec-40a2-a51f-0237273a9602\"},\"identities\":[{\"identity_id\":\"d88ea76f-9c84-46a4-9b09-7b86e01f9503\",\"id\":\"11558972-3aec-40a2-a51f-0237273a9602\",\"user_id\":\"11558972-3aec-40a2-a51f-0237273a9602\",\"identity_data\":{\"email\":\"mateo@primo.so\",\"email_verified\":false,\"phone_verified\":false,\"sub\":\"11558972-3aec-40a2-a51f-0237273a9602\"},\"provider\":\"email\",\"last_sign_in_at\":\"2024-09-28T21:04:50.659362Z\",\"created_at\":\"2024-09-28T21:04:50.659417Z\",\"updated_at\":\"2024-09-28T21:04:50.659417Z\",\"email\":\"mateo@primo.so\"}],\"created_at\":\"2024-09-28T21:04:50.64029Z\",\"updated_at\":\"2024-10-03T00:34:51.784759Z\",\"is_anonymous\":false},\"token_type\":\"bearer\",\"expires_in\":3598.654000043869,\"expires_at\":1727919291}" + } + ] + } + ] +} \ No newline at end of file diff --git a/playwright/global-setup.js b/playwright/global-setup.js new file mode 100644 index 000000000..2d8d17c8d --- /dev/null +++ b/playwright/global-setup.js @@ -0,0 +1,58 @@ +import { chromium } from '@playwright/test' +import fs from 'fs' +import { expect } from '@playwright/test' + +async function global_setup() { + const auth_file = 'playwright/.auth/user.json' + + let needAuth = true + + if (fs.existsSync(auth_file)) { + // Try to use existing auth data + const browser = await chromium.launch({ headless: false }) + const context = await browser.newContext({ storageState: auth_file }) + const page = await context.newPage() + + try { + // Navigate to a protected page + await page.goto('http://localhost:5173/1') + await page.waitForTimeout(10000) // Wait for 2 seconds + + // Check if we're still on the dashboard (i.e., not redirected to login) + if (page.url().includes('/1')) { + console.log('Existing auth is valid, skipping authentication') + needAuth = false + } else { + console.log('Existing auth is invalid or expired') + } + } catch (error) { + console.log('Error checking auth status:', error) + } + + await browser.close() + } + + if (needAuth) { + console.log('Performing authentication...') + const browser = await chromium.launch({ headless: false }) + const page = await browser.newPage() + await page.goto('http://localhost:5173/auth') + + // Perform authentication + await page.fill('[data-test-id="email"]', import.meta.env.PLAWRIGHT_AUTH_EMAIL) + await page.fill('[data-test-id="password"]', import.meta.env.PLAYWRIGHT_AUTH_PASSWORD) + await page.click('[data-test-id="submit"]') + + // Wait for authentication to complete + await expect(page.locator('.sites-container')).toBeVisible() + await page.waitForTimeout(2000) // Wait for 2 seconds + + // Save authentication state + await page.context().storageState({ path: 'playwright/.auth/user.json' }) + + await browser.close() + console.log('Authentication completed and state saved') + } +} + +export default global_setup diff --git a/postcss.config.cjs b/postcss.config.cjs index b0d528e4f..33ad091d2 100644 --- a/postcss.config.cjs +++ b/postcss.config.cjs @@ -1,7 +1,6 @@ module.exports = { - plugins: [ - require('tailwindcss'), - require("autoprefixer"), - require("postcss-nested") - ], -}; \ No newline at end of file + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/primo_schema.sql b/primo_schema.sql deleted file mode 100644 index dff77bf51..000000000 --- a/primo_schema.sql +++ /dev/null @@ -1,487 +0,0 @@ --- --- Name: collaborators; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."collaborators" ( - "id" bigint NOT NULL, - "created_at" timestamp with time zone DEFAULT "now"(), - "site" "uuid", - "user" "uuid" NOT NULL, - "role" "text" NOT NULL -); - -ALTER TABLE - "public"."collaborators" OWNER TO "postgres"; - --- --- Name: collaborators_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres --- -ALTER TABLE - "public"."collaborators" -ALTER COLUMN - "id" -ADD - GENERATED BY DEFAULT AS IDENTITY ( - SEQUENCE NAME "public"."collaborators_id_seq" START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1 - ); - --- --- Name: config; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."config" ( - "id" "text" NOT NULL, - "value" "text", - "options" "jsonb", - "created_at" timestamp with time zone DEFAULT "now"() -); - -ALTER TABLE - "public"."config" OWNER TO "postgres"; - --- --- Name: invitations; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."invitations" ( - "created_at" timestamp with time zone DEFAULT "now"(), - "email" "text", - "site" "uuid", - "inviter_email" "text", - "id" "uuid" DEFAULT "extensions"."uuid_generate_v4"() NOT NULL, - "role" "text" NOT NULL, - "server_invitation" boolean -); - -ALTER TABLE - "public"."invitations" OWNER TO "postgres"; - -INSERT INTO - public.config (id, value, options, created_at) -VALUES - ('github_token', null, null, now()); - --- --- Name: pages; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."pages" ( - "code" "jsonb" DEFAULT '{"js": "", "css": "", "html": {"head": "", "below": ""}}' :: "jsonb", - "name" "text", - "fields" "jsonb" DEFAULT '[]' :: "jsonb", - "created_at" timestamp with time zone DEFAULT "now"(), - "url" "text", - "content" "jsonb" DEFAULT '{}' :: "jsonb" NOT NULL, - "id" "uuid" DEFAULT "extensions"."uuid_generate_v4"() NOT NULL, - "site" "uuid" NOT NULL, - "parent" "uuid" -); - -ALTER TABLE - "public"."pages" OWNER TO "postgres"; - --- --- Name: sections; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."sections" ( - "content" "jsonb" DEFAULT '{"en": {}}' :: "jsonb" NOT NULL, - "created_at" timestamp with time zone DEFAULT "now"(), - "index" smallint DEFAULT '1' :: smallint NOT NULL, - "id" "uuid" DEFAULT "extensions"."uuid_generate_v4"() NOT NULL, - "page" "uuid" NOT NULL, - "symbol" "uuid" NOT NULL -); - -ALTER TABLE - "public"."sections" OWNER TO "postgres"; - --- Enable realtime for 'sections' table -alter publication supabase_realtime -add - table sections; - --- --- Name: server_members; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."server_members" ( - "id" bigint NOT NULL, - "user" "uuid", - "role" "text" DEFAULT 'DEV' :: "text", - "created_at" timestamp with time zone DEFAULT "now"(), - "admin" boolean DEFAULT false -); - -ALTER TABLE - "public"."server_members" OWNER TO "postgres"; - --- --- Name: server_members_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres --- -ALTER TABLE - "public"."server_members" -ALTER COLUMN - "id" -ADD - GENERATED BY DEFAULT AS IDENTITY ( - SEQUENCE NAME "public"."server_members_id_seq" START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1 - ); - --- --- Name: sites; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."sites" ( - "id" "uuid" NOT NULL, - "name" "text", - "active_deployment" "jsonb", - "created_at" timestamp with time zone DEFAULT "now"(), - "code" "jsonb" DEFAULT '{"js": "", "css": "", "html": {"head": "", "below": ""}}' :: "jsonb" NOT NULL, - "fields" "jsonb" DEFAULT '[]' :: "jsonb" NOT NULL, - "content" "jsonb" DEFAULT '{}' :: "jsonb" NOT NULL, - "url" "text" NOT NULL -); - -ALTER TABLE - "public"."sites" OWNER TO "postgres"; - --- --- Name: symbols; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."symbols" ( - "name" "text", - "code" "jsonb" DEFAULT '{"js": "", "css": "", "html": ""}' :: "jsonb" NOT NULL, - "fields" "jsonb" DEFAULT '[]' :: "jsonb" NOT NULL, - "content" "jsonb" DEFAULT '{}' :: "jsonb", - "created_at" timestamp with time zone DEFAULT "now"(), - "id" "uuid" DEFAULT "extensions"."uuid_generate_v4"() NOT NULL, - "site" "uuid" NOT NULL, - "index" smallint DEFAULT '1' :: smallint NOT NULL -); - -ALTER TABLE - "public"."symbols" OWNER TO "postgres"; - --- --- Name: users; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."users" ( - "email" "text", - "created_at" timestamp with time zone DEFAULT "now"(), - "id" "uuid" NOT NULL -); - -ALTER TABLE - "public"."users" OWNER TO "postgres"; - --- --- Name: collaborators collaborators_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."collaborators" -ADD - CONSTRAINT "collaborators_pkey" PRIMARY KEY ("id"); - --- --- Name: config config_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."config" -ADD - CONSTRAINT "config_pkey" PRIMARY KEY ("id"); - --- --- Name: invitations invitations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."invitations" -ADD - CONSTRAINT "invitations_pkey" PRIMARY KEY ("id"); - --- --- Name: pages pages_id_key; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."pages" -ADD - CONSTRAINT "pages_id_key" UNIQUE ("id"); - --- --- Name: pages pages_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."pages" -ADD - CONSTRAINT "pages_pkey" PRIMARY KEY ("id"); - --- --- Name: sections sections_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."sections" -ADD - CONSTRAINT "sections_pkey" PRIMARY KEY ("id"); - --- --- Name: server_members server_members_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."server_members" -ADD - CONSTRAINT "server_members_pkey" PRIMARY KEY ("id"); - --- --- Name: sites sites_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."sites" -ADD - CONSTRAINT "sites_pkey" PRIMARY KEY ("id"); - --- --- Name: sites sites_url_key; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."sites" -ADD - CONSTRAINT "sites_url_key" UNIQUE ("url"); - --- --- Name: symbols symbols_id_key; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."symbols" -ADD - CONSTRAINT "symbols_id_key" UNIQUE ("id"); - --- --- Name: symbols symbols_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."symbols" -ADD - CONSTRAINT "symbols_pkey" PRIMARY KEY ("id"); - --- --- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."users" -ADD - CONSTRAINT "users_pkey" PRIMARY KEY ("id"); - --- --- Name: collaborators collaborators_site_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."collaborators" -ADD - CONSTRAINT "collaborators_site_fkey" FOREIGN KEY ("site") REFERENCES "public"."sites"("id"); - --- --- Name: collaborators collaborators_user_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."collaborators" -ADD - CONSTRAINT "collaborators_user_fkey" FOREIGN KEY ("user") REFERENCES "public"."users"("id"); - --- --- Name: invitations invitations_site_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."invitations" -ADD - CONSTRAINT "invitations_site_fkey" FOREIGN KEY ("site") REFERENCES "public"."sites"("id"); - --- --- Name: pages pages_parent_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."pages" -ADD - CONSTRAINT "pages_parent_fkey" FOREIGN KEY ("parent") REFERENCES "public"."pages"("id"); - --- --- Name: pages pages_site_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."pages" -ADD - CONSTRAINT "pages_site_fkey" FOREIGN KEY ("site") REFERENCES "public"."sites"("id"); - --- --- Name: sections sections_page_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."sections" -ADD - CONSTRAINT "sections_page_fkey" FOREIGN KEY ("page") REFERENCES "public"."pages"("id"); - --- --- Name: sections sections_symbol_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."sections" -ADD - CONSTRAINT "sections_symbol_fkey" FOREIGN KEY ("symbol") REFERENCES "public"."symbols"("id"); - --- --- Name: server_members server_members_user_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."server_members" -ADD - CONSTRAINT "server_members_user_fkey" FOREIGN KEY ("user") REFERENCES "public"."users"("id") ON DELETE CASCADE; - --- --- Name: symbols symbols_site_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."symbols" -ADD - CONSTRAINT "symbols_site_fkey" FOREIGN KEY ("site") REFERENCES "public"."sites"("id"); - --- Set Row Level Security -ALTER TABLE - public.collaborators ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.config ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.invitations ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.pages ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.sections ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.server_members ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.sites ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.symbols ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.users ENABLE ROW LEVEL SECURITY; - --- Set RLS Policy -CREATE POLICY "Enable ALL for authenticated users" ON "public"."collaborators" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."config" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."invitations" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."pages" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."sections" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."server_members" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."sites" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."symbols" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."users" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - --- Create storage buckets for site files and images -INSERT INTO - storage.buckets (id, name, public) -VALUES - ('sites', 'sites', TRUE), - ('images', 'images', TRUE); - --- Set storage security -CREATE POLICY "Public access to view sites" ON storage.objects FOR -SELECT - USING (((bucket_id = 'sites' :: text))); - -CREATE POLICY "Give Authenticated users access to upload new sites" ON storage.objects FOR -INSERT - WITH CHECK ( - ( - (bucket_id = 'sites' :: text) - AND (auth.role() = 'authenticated' :: text) - ) - ); - -CREATE POLICY "Give Authenticated users access to update sites" ON storage.objects FOR -UPDATE - USING ( - ( - (bucket_id = 'sites' :: text) - AND (auth.role() = 'authenticated' :: text) - ) - ); - -CREATE POLICY "Give Authenticated users access to delete sites" ON storage.objects FOR DELETE USING ( - ( - (bucket_id = 'sites' :: text) - AND (auth.role() = 'authenticated' :: text) - ) -); - --- Set storage security -CREATE POLICY "Public access to view images" ON storage.objects FOR -SELECT - USING (((bucket_id = 'images' :: text))); - -CREATE POLICY "Give Authenticated users access to upload new images" ON storage.objects FOR -INSERT - WITH CHECK ( - ( - (bucket_id = 'images' :: text) - AND (auth.role() = 'authenticated' :: text) - ) - ); - -CREATE POLICY "Give Authenticated users access to update images" ON storage.objects FOR -UPDATE - USING ( - ( - (bucket_id = 'images' :: text) - AND (auth.role() = 'authenticated' :: text) - ) - ); - -CREATE POLICY "Give Authenticated users access to delete images" ON storage.objects FOR DELETE USING ( - ( - (bucket_id = 'images' :: text) - AND (auth.role() = 'authenticated' :: text) - ) -); - --- helper functions -CREATE OR REPLACE FUNCTION page_search(search_terms text, site_url text) -RETURNS TABLE(id uuid, name text, url text, created_at timestamp with time zone) AS $$ -BEGIN - RETURN QUERY - WITH RECURSIVE parent_urls AS ( - SELECT - p.id, - ARRAY[p.url] AS urls - FROM pages p - INNER JOIN sites s ON p.site = s.id - WHERE p.parent IS NULL AND s.url = site_url - - UNION ALL - - SELECT - p.id, - pu.urls || p.url - FROM pages p - INNER JOIN sites s ON p.site = s.id - INNER JOIN parent_urls pu ON p.parent = pu.id - WHERE s.url = site_url - ) - SELECT DISTINCT - p.id, - p.name, - ARRAY_TO_STRING(parent_urls.urls, '/', '/') AS url, - p.created_at - FROM pages p - INNER JOIN sites s ON p.site = s.id - INNER JOIN sections se ON p.id = se.page - INNER JOIN parent_urls ON p.id = parent_urls.id - WHERE s.url = site_url AND to_tsvector(se.content) @@ to_tsquery(search_terms); -END; -$$ LANGUAGE plpgsql; diff --git a/screenshot-v2.png b/screenshot-v2.png deleted file mode 100644 index b3e874fb9e6aece8021e0ca67132b75ffa7812fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 587927 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%0Aqv_inH{VD)2zCE(Xv! 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�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

BffOAO{hQo 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ɨ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

ZtZTEEGqr(V?>sw#yscJTdjIM)oXUautCq>d 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 JPDHLkV1iiAe@g%W diff --git a/src/app.css b/src/app.css new file mode 100644 index 000000000..df3e430e6 --- /dev/null +++ b/src/app.css @@ -0,0 +1,76 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + --destructive: 0 72.2% 50.6%; + --destructive-foreground: 0 0% 98%; + --ring: 0 0% 3.9%; + --radius: 0.25rem; + --sidebar-background: 0 0% 98%; + --sidebar-foreground: 240 5.3% 26.1%; + --sidebar-primary: 240 5.9% 10%; + --sidebar-primary-foreground: 0 0% 98%; + --sidebar-accent: 240 4.8% 95.9%; + --sidebar-accent-foreground: 240 5.9% 10%; + --sidebar-border: 220 13% 91%; + --sidebar-ring: 217.2 91.2% 59.8%; + } + + .dark { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --ring: 0 0% 83.1%; + --sidebar-background: 240 5.9% 10%; + --sidebar-foreground: 240 4.8% 95.9%; + --sidebar-primary: 224.3 76.3% 48%; + --sidebar-primary-foreground: 0 0% 100%; + --sidebar-accent: 240 3.7% 15.9%; + --sidebar-accent-foreground: 240 4.8% 95.9%; + --sidebar-border: 240 3.7% 15.9%; + --sidebar-ring: 217.2 91.2% 59.8%; + } +} + +@layer base { + * { + @apply border-border; + } + + body { + @apply bg-background text-foreground; + } +} \ No newline at end of file diff --git a/src/app.html b/src/app.html index d4c77f597..0436d19ef 100644 --- a/src/app.html +++ b/src/app.html @@ -1,18 +1,19 @@ - + - - - - %sveltekit.head% + + + + %sveltekit.head% - - %sveltekit.body% - - - + +
+ %sveltekit.body% +
+ + \ No newline at end of file diff --git a/src/compiler/cloud-workers/server-compiler.js b/src/compiler/cloud-workers/server-compiler.js index c80141dbb..36726748d 100644 --- a/src/compiler/cloud-workers/server-compiler.js +++ b/src/compiler/cloud-workers/server-compiler.js @@ -2,6 +2,10 @@ import vm from 'vm' import { Volume } from 'memfs' import _ from 'lodash-es' import rollup from './server-rollup' +import { Blob } from 'fetch-blob' +// import { render } from '../lib/svelte-5/server/index.js' + +globalThis.Blob = Blob // use Node.js Blob instead of Jsdom's Blob const COMPILED_COMPONENTS_CACHE = new Map() @@ -12,113 +16,111 @@ const COMPILED_COMPONENTS_CACHE = new Map() * @param {Object|Object[]} options.component - The component(s) to be rendered. Can be a single component or an array of components for a page. * @param {boolean} [options.buildStatic=true] - Indicates whether to build the component statically or not. * @param {string} [options.format='esm'] - The module format to use, such as 'esm' for ES Modules. + * @param {boolean} [options.dev_mode=false] - Whether Svelte should be compiled in dev mode (i.e. attaches LOC for inspecting) or not * @returns {Promise} Returns a payload containing the rendered HTML, CSS, JS, and other relevant data. * @throws {Error} Throws an error if the compilation or rendering fails. */ -export async function html_server({ component, buildStatic = true, format = 'esm' }) { - let cache_key - if (!buildStatic) { - cache_key = JSON.stringify({ - component, - format, - }) - if (COMPILED_COMPONENTS_CACHE.has(cache_key)) { - return COMPILED_COMPONENTS_CACHE.get(cache_key) - } - } +export async function html_server({ component, buildStatic = true, format = 'esm', dev_mode }) { + let cache_key + if (!buildStatic) { + cache_key = JSON.stringify({ + component, + format + }) + if (COMPILED_COMPONENTS_CACHE.has(cache_key)) { + return COMPILED_COMPONENTS_CACHE.get(cache_key) + } + } - const compile_page = Array.isArray(component) + const compile_page = Array.isArray(component) - let res - try { - const has_js = compile_page ? component.some((s) => s.js) : !!component.js - res = await rollup({ - component, - hydrated: buildStatic && has_js, - buildStatic, - format, - }) - // console.log({ component, res }) - } catch (e) { - console.log('error', e) - res = { - error: e.toString(), - } - } + let res + try { + const has_js = compile_page ? component.some((s) => s.js) : !!component.js + res = await rollup({ + component, + hydrated: buildStatic && has_js, + buildStatic, + format, + dev_mode + }) + // console.log({ component, res }) + } catch (e) { + console.log('error', e) + res = { + error: e.toString() + } + } - let payload + let payload - if (!res) { - payload = { - html: '

could not render

', - } - res = {} - } else if (res.error) { - // console.error(res.error) - payload = { - html: '

could not render

', - error: escapeHtml(res.error), - } - function escapeHtml(unsafe) { - return unsafe - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, ''') - } - } else if (buildStatic && res.ssr) { - let component_data - if (compile_page) { - // get the component data for the page - component_data = component.reduce((accumulator, item, i) => { - if (!_.isEmpty(item.data)) { - accumulator[`component_${i}_props`] = item.data - } - return accumulator - }, {}) - } else { - component_data = component.data - } + if (!res) { + payload = { + html: '

could not render

' + } + res = {} + } else if (res.error) { + // console.error(res.error) + payload = { + html: '

could not render

', + error: escapeHtml(res.error) + } + function escapeHtml(unsafe) { + return unsafe.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''') + } + } else if (buildStatic && res.ssr) { + let component_data + if (compile_page) { + // get the component data for the page + component_data = component.reduce((accumulator, item, i) => { + if (!_.isEmpty(item.data)) { + accumulator[`component_${i}_props`] = item.data + } + return accumulator + }, {}) + } else { + component_data = component.data + } - // Create a new in-memory volume - const code_path = `/${component.id}.js` - const vol = Volume.fromJSON({ - [code_path]: res.ssr.replace('export { Component as default }', 'module.exports = Component'), - }) + // Create a new in-memory volume + const code_path = `/${component.id}.js` + const vol = Volume.fromJSON({ + [code_path]: res.ssr.replace('export { Component as default }', 'module.exports = Component') + }) - // Initialize a common sandbox structure - const sandbox = { - console, - module: {}, - exports: {}, - } + // Initialize a common sandbox structure + const sandbox = { + console, + module: {}, + exports: {} + } - // Execute the script - executeInVm(vol.readFileSync(code_path, 'utf8'), sandbox) - const App = sandbox.module.exports // Access the exported content + // Execute the script + executeInVm(vol.readFileSync(code_path, 'utf8'), sandbox) + const App = sandbox.module.exports // Access the exported content - // Render using the exported component - const rendered = App.render(component_data) + // Render using the exported component + const rendered = App.render(component_data) + // const rendered = render(App, { props: component_data }) - payload = { - head: rendered.head, - html: rendered.html, - css: rendered.css.code, - js: res.dom, - } - } else { - payload = { - js: res.dom, - } - } + payload = { + head: rendered.head, + html: rendered.html, + css: rendered.css.code, + js: res.dom + } + } else { + payload = { + js: res.dom + } + } - return payload + return payload } // Utility function for executing scripts in a VM context function executeInVm(scriptContent, sandbox) { - const script = new vm.Script(scriptContent) - vm.createContext(sandbox) // Setup the context for the sandbox - script.runInContext(sandbox) + const script = new vm.Script(scriptContent) + vm.createContext(sandbox) // Setup the context for the sandbox + script.runInContext(sandbox) } diff --git a/src/compiler/cloud-workers/server-rollup.js b/src/compiler/cloud-workers/server-rollup.js index d46d571eb..ba505baf4 100644 --- a/src/compiler/cloud-workers/server-rollup.js +++ b/src/compiler/cloud-workers/server-rollup.js @@ -1,4 +1,4 @@ -import { rollup } from 'rollup' +import { rollup } from '../lib/rollup-browser.min.js' import svelte from './server-svelte' import * as resolve from 'resolve.exports' import commonjs from '../workers/plugins/commonjs' @@ -10,7 +10,7 @@ globalThis.Blob = Blob // use Node.js Blob instead of Jsdom's Blob const CDN_URL = 'https://cdn.jsdelivr.net/npm' // or 'https://unpkg.com' -export default async function rollup_worker({ component, hydrated, buildStatic = true, format = 'esm' }) { +export default async function rollup_worker({ component, hydrated, buildStatic = true, format = 'esm', dev_mode = false }) { const final = { ssr: '', dom: '', @@ -88,7 +88,7 @@ export default async function rollup_worker({ component, hydrated, buildStatic = const output = (await bundle.generate({ format })).output[0].code final.ssr = output } else { - const bundle = await compile() + const bundle = await compile({ dev: dev_mode }) const output = (await bundle.generate({ format })).output[0].code final.dom = output } diff --git a/src/compiler/cloud-workers/server-svelte.js b/src/compiler/cloud-workers/server-svelte.js index 96f7e3f4c..474c99b13 100644 --- a/src/compiler/cloud-workers/server-svelte.js +++ b/src/compiler/cloud-workers/server-svelte.js @@ -1,9 +1,10 @@ -import { compile as svelte_compile } from 'svelte/compiler' +import { compile as svelte_compile } from '../lib/svelte-compiler.min.js' +// import { compile as svelte_compile } from '../lib/svelte-5/compiler/index.js' export default async function svelte({ code, svelteOptions }) { - const res = svelte_compile(code, svelteOptions) - return { - code: res?.js?.code, - warnings: res.warnings.map((w) => ({ message: w.message, code: w.code })), - } + const res = svelte_compile(code, svelteOptions) + return { + code: res?.js?.code, + warnings: res.warnings.map((w) => ({ message: w.message, code: w.code })) + } } diff --git a/src/compiler/lib/rollup-browser.min.js b/src/compiler/lib/rollup-browser.min.js new file mode 100644 index 000000000..5abe08365 --- /dev/null +++ b/src/compiler/lib/rollup-browser.min.js @@ -0,0 +1,14597 @@ +/* + @license + Rollup.js v3.29.4 + Thu, 28 Sep 2023 04:54:30 GMT - commit 4e92d60fa90cead39481e3703d26e5d812f43bd1 + + https://github.com/rollup/rollup + + Released under the MIT License. +*/ +var e = '3.29.4' +'undefined' != typeof globalThis ? globalThis : 'undefined' != typeof window ? window : 'undefined' != typeof global ? global : 'undefined' != typeof self && self +function t(e) { + return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, 'default') ? e.default : e +} +var s = { exports: {} } +!(function (e) { + const t = ','.charCodeAt(0), + s = ';'.charCodeAt(0), + i = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', + n = new Uint8Array(64), + r = new Uint8Array(128) + for (let e = 0; e < i.length; e++) { + const t = i.charCodeAt(e) + ;(n[e] = t), (r[t] = e) + } + const o = + 'undefined' != typeof TextDecoder + ? new TextDecoder() + : 'undefined' != typeof Buffer + ? { decode: (e) => Buffer.from(e.buffer, e.byteOffset, e.byteLength).toString() } + : { + decode(e) { + let t = '' + for (let s = 0; s < e.length; s++) t += String.fromCharCode(e[s]) + return t + } + } + function a(e) { + const t = new Int32Array(5), + s = [] + let i = 0 + do { + const n = l(e, i), + r = [] + let o = !0, + a = 0 + t[0] = 0 + for (let s = i; s < n; s++) { + let i + s = c(e, s, t, 0) + const l = t[0] + l < a && (o = !1), + (a = l), + h(e, s, n) ? ((s = c(e, s, t, 1)), (s = c(e, s, t, 2)), (s = c(e, s, t, 3)), h(e, s, n) ? ((s = c(e, s, t, 4)), (i = [l, t[1], t[2], t[3], t[4]])) : (i = [l, t[1], t[2], t[3]])) : (i = [l]), + r.push(i) + } + o || u(r), s.push(r), (i = n + 1) + } while (i <= e.length) + return s + } + function l(e, t) { + const s = e.indexOf(';', t) + return -1 === s ? e.length : s + } + function c(e, t, s, i) { + let n = 0, + o = 0, + a = 0 + do { + const s = e.charCodeAt(t++) + ;(a = r[s]), (n |= (31 & a) << o), (o += 5) + } while (32 & a) + const l = 1 & n + return (n >>>= 1), l && (n = -2147483648 | -n), (s[i] += n), t + } + function h(e, s, i) { + return !(s >= i) && e.charCodeAt(s) !== t + } + function u(e) { + e.sort(d) + } + function d(e, t) { + return e[0] - t[0] + } + function p(e) { + const i = new Int32Array(5), + n = 16384, + r = n - 36, + a = new Uint8Array(n), + l = a.subarray(0, r) + let c = 0, + h = '' + for (let u = 0; u < e.length; u++) { + const d = e[u] + if ((u > 0 && (c === n && ((h += o.decode(a)), (c = 0)), (a[c++] = s)), 0 !== d.length)) { + i[0] = 0 + for (let e = 0; e < d.length; e++) { + const s = d[e] + c > r && ((h += o.decode(l)), a.copyWithin(0, r, c), (c -= r)), + e > 0 && (a[c++] = t), + (c = f(a, c, i, s, 0)), + 1 !== s.length && ((c = f(a, c, i, s, 1)), (c = f(a, c, i, s, 2)), (c = f(a, c, i, s, 3)), 4 !== s.length && (c = f(a, c, i, s, 4))) + } + } + } + return h + o.decode(a.subarray(0, c)) + } + function f(e, t, s, i, r) { + const o = i[r] + let a = o - s[r] + ;(s[r] = o), (a = a < 0 ? (-a << 1) | 1 : a << 1) + do { + let s = 31 & a + ;(a >>>= 5), a > 0 && (s |= 32), (e[t++] = n[s]) + } while (a > 0) + return t + } + ;(e.decode = a), (e.encode = p), Object.defineProperty(e, '__esModule', { value: !0 }) +})(s.exports) +var i = s.exports +class n { + constructor(e) { + this.bits = e instanceof n ? e.bits.slice() : [] + } + add(e) { + this.bits[e >> 5] |= 1 << (31 & e) + } + has(e) { + return !!(this.bits[e >> 5] & (1 << (31 & e))) + } +} +let r = class e { + constructor(e, t, s) { + ;(this.start = e), + (this.end = t), + (this.original = s), + (this.intro = ''), + (this.outro = ''), + (this.content = s), + (this.storeName = !1), + (this.edited = !1), + (this.previous = null), + (this.next = null) + } + appendLeft(e) { + this.outro += e + } + appendRight(e) { + this.intro = this.intro + e + } + clone() { + const t = new e(this.start, this.end, this.original) + return (t.intro = this.intro), (t.outro = this.outro), (t.content = this.content), (t.storeName = this.storeName), (t.edited = this.edited), t + } + contains(e) { + return this.start < e && e < this.end + } + eachNext(e) { + let t = this + for (; t; ) e(t), (t = t.next) + } + eachPrevious(e) { + let t = this + for (; t; ) e(t), (t = t.previous) + } + edit(e, t, s) { + return (this.content = e), s || ((this.intro = ''), (this.outro = '')), (this.storeName = t), (this.edited = !0), this + } + prependLeft(e) { + this.outro = e + this.outro + } + prependRight(e) { + this.intro = e + this.intro + } + split(t) { + const s = t - this.start, + i = this.original.slice(0, s), + n = this.original.slice(s) + this.original = i + const r = new e(t, this.end, n) + return ( + (r.outro = this.outro), + (this.outro = ''), + (this.end = t), + this.edited ? (r.edit('', !1), (this.content = '')) : (this.content = i), + (r.next = this.next), + r.next && (r.next.previous = r), + (r.previous = this), + (this.next = r), + r + ) + } + toString() { + return this.intro + this.content + this.outro + } + trimEnd(e) { + if (((this.outro = this.outro.replace(e, '')), this.outro.length)) return !0 + const t = this.content.replace(e, '') + return t.length + ? (t !== this.content && (this.split(this.start + t.length).edit('', void 0, !0), this.edited && this.edit(t, this.storeName, !0)), !0) + : (this.edit('', void 0, !0), (this.intro = this.intro.replace(e, '')), !!this.intro.length || void 0) + } + trimStart(e) { + if (((this.intro = this.intro.replace(e, '')), this.intro.length)) return !0 + const t = this.content.replace(e, '') + if (t.length) { + if (t !== this.content) { + const e = this.split(this.end - t.length) + this.edited && e.edit(t, this.storeName, !0), this.edit('', void 0, !0) + } + return !0 + } + return this.edit('', void 0, !0), (this.outro = this.outro.replace(e, '')), !!this.outro.length || void 0 + } +} +function o() { + return 'undefined' != typeof window && 'function' == typeof window.btoa + ? (e) => window.btoa(unescape(encodeURIComponent(e))) + : 'function' == typeof Buffer + ? (e) => Buffer.from(e, 'utf-8').toString('base64') + : () => { + throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.') + } +} +const a = o() +class l { + constructor(e) { + ;(this.version = 3), + (this.file = e.file), + (this.sources = e.sources), + (this.sourcesContent = e.sourcesContent), + (this.names = e.names), + (this.mappings = i.encode(e.mappings)), + void 0 !== e.x_google_ignoreList && (this.x_google_ignoreList = e.x_google_ignoreList) + } + toString() { + return JSON.stringify(this) + } + toUrl() { + return 'data:application/json;charset=utf-8;base64,' + a(this.toString()) + } +} +function c(e, t) { + const s = e.split(/[/\\]/), + i = t.split(/[/\\]/) + for (s.pop(); s[0] === i[0]; ) s.shift(), i.shift() + if (s.length) { + let e = s.length + for (; e--; ) s[e] = '..' + } + return s.concat(i).join('/') +} +const h = Object.prototype.toString +function u(e) { + return '[object Object]' === h.call(e) +} +function d(e) { + const t = e.split('\n'), + s = [] + for (let e = 0, i = 0; e < t.length; e++) s.push(i), (i += t[e].length + 1) + return function (e) { + let t = 0, + i = s.length + for (; t < i; ) { + const n = (t + i) >> 1 + e < s[n] ? (i = n) : (t = n + 1) + } + const n = t - 1 + return { line: n, column: e - s[n] } + } +} +const p = /\w/ +class f { + constructor(e) { + ;(this.hires = e), (this.generatedCodeLine = 0), (this.generatedCodeColumn = 0), (this.raw = []), (this.rawSegments = this.raw[this.generatedCodeLine] = []), (this.pending = null) + } + addEdit(e, t, s, i) { + if (t.length) { + const t = [this.generatedCodeColumn, e, s.line, s.column] + i >= 0 && t.push(i), this.rawSegments.push(t) + } else this.pending && this.rawSegments.push(this.pending) + this.advance(t), (this.pending = null) + } + addUneditedChunk(e, t, s, i, n) { + let r = t.start, + o = !0, + a = !1 + for (; r < t.end; ) { + if (this.hires || o || n.has(r)) { + const t = [this.generatedCodeColumn, e, i.line, i.column] + 'boundary' === this.hires ? (p.test(s[r]) ? a || (this.rawSegments.push(t), (a = !0)) : (this.rawSegments.push(t), (a = !1))) : this.rawSegments.push(t) + } + '\n' === s[r] + ? ((i.line += 1), (i.column = 0), (this.generatedCodeLine += 1), (this.raw[this.generatedCodeLine] = this.rawSegments = []), (this.generatedCodeColumn = 0), (o = !0)) + : ((i.column += 1), (this.generatedCodeColumn += 1), (o = !1)), + (r += 1) + } + this.pending = null + } + advance(e) { + if (!e) return + const t = e.split('\n') + if (t.length > 1) { + for (let e = 0; e < t.length - 1; e++) this.generatedCodeLine++, (this.raw[this.generatedCodeLine] = this.rawSegments = []) + this.generatedCodeColumn = 0 + } + this.generatedCodeColumn += t[t.length - 1].length + } +} +const m = '\n', + g = { insertLeft: !1, insertRight: !1, storeName: !1 } +class y { + constructor(e, t = {}) { + const s = new r(0, e.length, e) + Object.defineProperties(this, { + original: { writable: !0, value: e }, + outro: { writable: !0, value: '' }, + intro: { writable: !0, value: '' }, + firstChunk: { writable: !0, value: s }, + lastChunk: { writable: !0, value: s }, + lastSearchedChunk: { writable: !0, value: s }, + byStart: { writable: !0, value: {} }, + byEnd: { writable: !0, value: {} }, + filename: { writable: !0, value: t.filename }, + indentExclusionRanges: { writable: !0, value: t.indentExclusionRanges }, + sourcemapLocations: { writable: !0, value: new n() }, + storedNames: { writable: !0, value: {} }, + indentStr: { writable: !0, value: void 0 }, + ignoreList: { writable: !0, value: t.ignoreList } + }), + (this.byStart[0] = s), + (this.byEnd[e.length] = s) + } + addSourcemapLocation(e) { + this.sourcemapLocations.add(e) + } + append(e) { + if ('string' != typeof e) throw new TypeError('outro content must be a string') + return (this.outro += e), this + } + appendLeft(e, t) { + if ('string' != typeof t) throw new TypeError('inserted content must be a string') + this._split(e) + const s = this.byEnd[e] + return s ? s.appendLeft(t) : (this.intro += t), this + } + appendRight(e, t) { + if ('string' != typeof t) throw new TypeError('inserted content must be a string') + this._split(e) + const s = this.byStart[e] + return s ? s.appendRight(t) : (this.outro += t), this + } + clone() { + const e = new y(this.original, { filename: this.filename }) + let t = this.firstChunk, + s = (e.firstChunk = e.lastSearchedChunk = t.clone()) + for (; t; ) { + ;(e.byStart[s.start] = s), (e.byEnd[s.end] = s) + const i = t.next, + n = i && i.clone() + n && ((s.next = n), (n.previous = s), (s = n)), (t = i) + } + return ( + (e.lastChunk = s), + this.indentExclusionRanges && (e.indentExclusionRanges = this.indentExclusionRanges.slice()), + (e.sourcemapLocations = new n(this.sourcemapLocations)), + (e.intro = this.intro), + (e.outro = this.outro), + e + ) + } + generateDecodedMap(e) { + e = e || {} + const t = Object.keys(this.storedNames), + s = new f(e.hires), + i = d(this.original) + return ( + this.intro && s.advance(this.intro), + this.firstChunk.eachNext((e) => { + const n = i(e.start) + e.intro.length && s.advance(e.intro), + e.edited ? s.addEdit(0, e.content, n, e.storeName ? t.indexOf(e.original) : -1) : s.addUneditedChunk(0, e, this.original, n, this.sourcemapLocations), + e.outro.length && s.advance(e.outro) + }), + { + file: e.file ? e.file.split(/[/\\]/).pop() : void 0, + sources: [e.source ? c(e.file || '', e.source) : e.file || ''], + sourcesContent: e.includeContent ? [this.original] : void 0, + names: t, + mappings: s.raw, + x_google_ignoreList: this.ignoreList ? [0] : void 0 + } + ) + } + generateMap(e) { + return new l(this.generateDecodedMap(e)) + } + _ensureindentStr() { + void 0 === this.indentStr && + (this.indentStr = (function (e) { + const t = e.split('\n'), + s = t.filter((e) => /^\t+/.test(e)), + i = t.filter((e) => /^ {2,}/.test(e)) + if (0 === s.length && 0 === i.length) return null + if (s.length >= i.length) return '\t' + const n = i.reduce((e, t) => { + const s = /^ +/.exec(t)[0].length + return Math.min(s, e) + }, 1 / 0) + return new Array(n + 1).join(' ') + })(this.original)) + } + _getRawIndentString() { + return this._ensureindentStr(), this.indentStr + } + getIndentString() { + return this._ensureindentStr(), null === this.indentStr ? '\t' : this.indentStr + } + indent(e, t) { + const s = /^[^\r\n]/gm + if ((u(e) && ((t = e), (e = void 0)), void 0 === e && (this._ensureindentStr(), (e = this.indentStr || '\t')), '' === e)) return this + const i = {} + if ((t = t || {}).exclude) { + ;('number' == typeof t.exclude[0] ? [t.exclude] : t.exclude).forEach((e) => { + for (let t = e[0]; t < e[1]; t += 1) i[t] = !0 + }) + } + let n = !1 !== t.indentStart + const r = (t) => (n ? `${e}${t}` : ((n = !0), t)) + this.intro = this.intro.replace(s, r) + let o = 0, + a = this.firstChunk + for (; a; ) { + const t = a.end + if (a.edited) i[o] || ((a.content = a.content.replace(s, r)), a.content.length && (n = '\n' === a.content[a.content.length - 1])) + else + for (o = a.start; o < t; ) { + if (!i[o]) { + const t = this.original[o] + '\n' === t ? (n = !0) : '\r' !== t && n && ((n = !1), o === a.start || (this._splitChunk(a, o), (a = a.next)), a.prependRight(e)) + } + o += 1 + } + ;(o = a.end), (a = a.next) + } + return (this.outro = this.outro.replace(s, r)), this + } + insert() { + throw new Error('magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)') + } + insertLeft(e, t) { + return g.insertLeft || (console.warn('magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead'), (g.insertLeft = !0)), this.appendLeft(e, t) + } + insertRight(e, t) { + return g.insertRight || (console.warn('magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead'), (g.insertRight = !0)), this.prependRight(e, t) + } + move(e, t, s) { + if (s >= e && s <= t) throw new Error('Cannot move a selection inside itself') + this._split(e), this._split(t), this._split(s) + const i = this.byStart[e], + n = this.byEnd[t], + r = i.previous, + o = n.next, + a = this.byStart[s] + if (!a && n === this.lastChunk) return this + const l = a ? a.previous : this.lastChunk + return ( + r && (r.next = o), + o && (o.previous = r), + l && (l.next = i), + a && (a.previous = n), + i.previous || (this.firstChunk = n.next), + n.next || ((this.lastChunk = i.previous), (this.lastChunk.next = null)), + (i.previous = l), + (n.next = a || null), + l || (this.firstChunk = i), + a || (this.lastChunk = n), + this + ) + } + overwrite(e, t, s, i) { + return (i = i || {}), this.update(e, t, s, { ...i, overwrite: !i.contentOnly }) + } + update(e, t, s, i) { + if ('string' != typeof s) throw new TypeError('replacement content must be a string') + for (; e < 0; ) e += this.original.length + for (; t < 0; ) t += this.original.length + if (t > this.original.length) throw new Error('end is out of bounds') + if (e === t) throw new Error('Cannot overwrite a zero-length range – use appendLeft or prependRight instead') + this._split(e), + this._split(t), + !0 === i && + (g.storeName || (console.warn('The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string'), (g.storeName = !0)), + (i = { storeName: !0 })) + const n = void 0 !== i && i.storeName, + o = void 0 !== i && i.overwrite + if (n) { + const s = this.original.slice(e, t) + Object.defineProperty(this.storedNames, s, { writable: !0, value: !0, enumerable: !0 }) + } + const a = this.byStart[e], + l = this.byEnd[t] + if (a) { + let e = a + for (; e !== l; ) { + if (e.next !== this.byStart[e.end]) throw new Error('Cannot overwrite across a split point') + ;(e = e.next), e.edit('', !1) + } + a.edit(s, n, !o) + } else { + const i = new r(e, t, '').edit(s, n) + ;(l.next = i), (i.previous = l) + } + return this + } + prepend(e) { + if ('string' != typeof e) throw new TypeError('outro content must be a string') + return (this.intro = e + this.intro), this + } + prependLeft(e, t) { + if ('string' != typeof t) throw new TypeError('inserted content must be a string') + this._split(e) + const s = this.byEnd[e] + return s ? s.prependLeft(t) : (this.intro = t + this.intro), this + } + prependRight(e, t) { + if ('string' != typeof t) throw new TypeError('inserted content must be a string') + this._split(e) + const s = this.byStart[e] + return s ? s.prependRight(t) : (this.outro = t + this.outro), this + } + remove(e, t) { + for (; e < 0; ) e += this.original.length + for (; t < 0; ) t += this.original.length + if (e === t) return this + if (e < 0 || t > this.original.length) throw new Error('Character is out of bounds') + if (e > t) throw new Error('end must be greater than start') + this._split(e), this._split(t) + let s = this.byStart[e] + for (; s; ) (s.intro = ''), (s.outro = ''), s.edit(''), (s = t > s.end ? this.byStart[s.end] : null) + return this + } + lastChar() { + if (this.outro.length) return this.outro[this.outro.length - 1] + let e = this.lastChunk + do { + if (e.outro.length) return e.outro[e.outro.length - 1] + if (e.content.length) return e.content[e.content.length - 1] + if (e.intro.length) return e.intro[e.intro.length - 1] + } while ((e = e.previous)) + return this.intro.length ? this.intro[this.intro.length - 1] : '' + } + lastLine() { + let e = this.outro.lastIndexOf(m) + if (-1 !== e) return this.outro.substr(e + 1) + let t = this.outro, + s = this.lastChunk + do { + if (s.outro.length > 0) { + if (((e = s.outro.lastIndexOf(m)), -1 !== e)) return s.outro.substr(e + 1) + t + t = s.outro + t + } + if (s.content.length > 0) { + if (((e = s.content.lastIndexOf(m)), -1 !== e)) return s.content.substr(e + 1) + t + t = s.content + t + } + if (s.intro.length > 0) { + if (((e = s.intro.lastIndexOf(m)), -1 !== e)) return s.intro.substr(e + 1) + t + t = s.intro + t + } + } while ((s = s.previous)) + return (e = this.intro.lastIndexOf(m)), -1 !== e ? this.intro.substr(e + 1) + t : this.intro + t + } + slice(e = 0, t = this.original.length) { + for (; e < 0; ) e += this.original.length + for (; t < 0; ) t += this.original.length + let s = '', + i = this.firstChunk + for (; i && (i.start > e || i.end <= e); ) { + if (i.start < t && i.end >= t) return s + i = i.next + } + if (i && i.edited && i.start !== e) throw new Error(`Cannot use replaced character ${e} as slice start anchor.`) + const n = i + for (; i; ) { + !i.intro || (n === i && i.start !== e) || (s += i.intro) + const r = i.start < t && i.end >= t + if (r && i.edited && i.end !== t) throw new Error(`Cannot use replaced character ${t} as slice end anchor.`) + const o = n === i ? e - i.start : 0, + a = r ? i.content.length + t - i.end : i.content.length + if (((s += i.content.slice(o, a)), !i.outro || (r && i.end !== t) || (s += i.outro), r)) break + i = i.next + } + return s + } + snip(e, t) { + const s = this.clone() + return s.remove(0, e), s.remove(t, s.original.length), s + } + _split(e) { + if (this.byStart[e] || this.byEnd[e]) return + let t = this.lastSearchedChunk + const s = e > t.end + for (; t; ) { + if (t.contains(e)) return this._splitChunk(t, e) + t = s ? this.byStart[t.end] : this.byEnd[t.start] + } + } + _splitChunk(e, t) { + if (e.edited && e.content.length) { + const s = d(this.original)(t) + throw new Error(`Cannot split a chunk that has already been edited (${s.line}:${s.column} – "${e.original}")`) + } + const s = e.split(t) + return (this.byEnd[t] = e), (this.byStart[t] = s), (this.byEnd[s.end] = s), e === this.lastChunk && (this.lastChunk = s), (this.lastSearchedChunk = e), !0 + } + toString() { + let e = this.intro, + t = this.firstChunk + for (; t; ) (e += t.toString()), (t = t.next) + return e + this.outro + } + isEmpty() { + let e = this.firstChunk + do { + if ((e.intro.length && e.intro.trim()) || (e.content.length && e.content.trim()) || (e.outro.length && e.outro.trim())) return !1 + } while ((e = e.next)) + return !0 + } + length() { + let e = this.firstChunk, + t = 0 + do { + t += e.intro.length + e.content.length + e.outro.length + } while ((e = e.next)) + return t + } + trimLines() { + return this.trim('[\\r\\n]') + } + trim(e) { + return this.trimStart(e).trimEnd(e) + } + trimEndAborted(e) { + const t = new RegExp((e || '\\s') + '+$') + if (((this.outro = this.outro.replace(t, '')), this.outro.length)) return !0 + let s = this.lastChunk + do { + const e = s.end, + i = s.trimEnd(t) + if ((s.end !== e && (this.lastChunk === s && (this.lastChunk = s.next), (this.byEnd[s.end] = s), (this.byStart[s.next.start] = s.next), (this.byEnd[s.next.end] = s.next)), i)) return !0 + s = s.previous + } while (s) + return !1 + } + trimEnd(e) { + return this.trimEndAborted(e), this + } + trimStartAborted(e) { + const t = new RegExp('^' + (e || '\\s') + '+') + if (((this.intro = this.intro.replace(t, '')), this.intro.length)) return !0 + let s = this.firstChunk + do { + const e = s.end, + i = s.trimStart(t) + if ((s.end !== e && (s === this.lastChunk && (this.lastChunk = s.next), (this.byEnd[s.end] = s), (this.byStart[s.next.start] = s.next), (this.byEnd[s.next.end] = s.next)), i)) return !0 + s = s.next + } while (s) + return !1 + } + trimStart(e) { + return this.trimStartAborted(e), this + } + hasChanged() { + return this.original !== this.toString() + } + _replaceRegexp(e, t) { + function s(e, s) { + return 'string' == typeof t + ? t.replace(/\$(\$|&|\d+)/g, (t, s) => { + if ('$' === s) return '$' + if ('&' === s) return e[0] + return +s < e.length ? e[+s] : `$${s}` + }) + : t(...e, e.index, s, e.groups) + } + if (e.global) { + ;(function (e, t) { + let s + const i = [] + for (; (s = e.exec(t)); ) i.push(s) + return i + })(e, this.original).forEach((e) => { + null != e.index && this.overwrite(e.index, e.index + e[0].length, s(e, this.original)) + }) + } else { + const t = this.original.match(e) + t && null != t.index && this.overwrite(t.index, t.index + t[0].length, s(t, this.original)) + } + return this + } + _replaceString(e, t) { + const { original: s } = this, + i = s.indexOf(e) + return -1 !== i && this.overwrite(i, i + e.length, t), this + } + replace(e, t) { + return 'string' == typeof e ? this._replaceString(e, t) : this._replaceRegexp(e, t) + } + _replaceAllString(e, t) { + const { original: s } = this, + i = e.length + for (let n = s.indexOf(e); -1 !== n; n = s.indexOf(e, n + i)) this.overwrite(n, n + i, t) + return this + } + replaceAll(e, t) { + if ('string' == typeof e) return this._replaceAllString(e, t) + if (!e.global) throw new TypeError('MagicString.prototype.replaceAll called with a non-global RegExp argument') + return this._replaceRegexp(e, t) + } +} +const x = Object.prototype.hasOwnProperty +let E = class e { + constructor(e = {}) { + ;(this.intro = e.intro || ''), (this.separator = void 0 !== e.separator ? e.separator : '\n'), (this.sources = []), (this.uniqueSources = []), (this.uniqueSourceIndexByFilename = {}) + } + addSource(e) { + if (e instanceof y) return this.addSource({ content: e, filename: e.filename, separator: this.separator }) + if (!u(e) || !e.content) throw new Error('bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`') + if ( + (['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((t) => { + x.call(e, t) || (e[t] = e.content[t]) + }), + void 0 === e.separator && (e.separator = this.separator), + e.filename) + ) + if (x.call(this.uniqueSourceIndexByFilename, e.filename)) { + const t = this.uniqueSources[this.uniqueSourceIndexByFilename[e.filename]] + if (e.content.original !== t.content) throw new Error(`Illegal source: same filename (${e.filename}), different contents`) + } else (this.uniqueSourceIndexByFilename[e.filename] = this.uniqueSources.length), this.uniqueSources.push({ filename: e.filename, content: e.content.original }) + return this.sources.push(e), this + } + append(e, t) { + return this.addSource({ content: new y(e), separator: (t && t.separator) || '' }), this + } + clone() { + const t = new e({ intro: this.intro, separator: this.separator }) + return ( + this.sources.forEach((e) => { + t.addSource({ filename: e.filename, content: e.content.clone(), separator: e.separator }) + }), + t + ) + } + generateDecodedMap(e = {}) { + const t = [] + let s + this.sources.forEach((e) => { + Object.keys(e.content.storedNames).forEach((e) => { + ~t.indexOf(e) || t.push(e) + }) + }) + const i = new f(e.hires) + return ( + this.intro && i.advance(this.intro), + this.sources.forEach((e, n) => { + n > 0 && i.advance(this.separator) + const r = e.filename ? this.uniqueSourceIndexByFilename[e.filename] : -1, + o = e.content, + a = d(o.original) + o.intro && i.advance(o.intro), + o.firstChunk.eachNext((s) => { + const n = a(s.start) + s.intro.length && i.advance(s.intro), + e.filename ? (s.edited ? i.addEdit(r, s.content, n, s.storeName ? t.indexOf(s.original) : -1) : i.addUneditedChunk(r, s, o.original, n, o.sourcemapLocations)) : i.advance(s.content), + s.outro.length && i.advance(s.outro) + }), + o.outro && i.advance(o.outro), + e.ignoreList && -1 !== r && (void 0 === s && (s = []), s.push(r)) + }), + { + file: e.file ? e.file.split(/[/\\]/).pop() : void 0, + sources: this.uniqueSources.map((t) => (e.file ? c(e.file, t.filename) : t.filename)), + sourcesContent: this.uniqueSources.map((t) => (e.includeContent ? t.content : null)), + names: t, + mappings: i.raw, + x_google_ignoreList: s + } + ) + } + generateMap(e) { + return new l(this.generateDecodedMap(e)) + } + getIndentString() { + const e = {} + return ( + this.sources.forEach((t) => { + const s = t.content._getRawIndentString() + null !== s && (e[s] || (e[s] = 0), (e[s] += 1)) + }), + Object.keys(e).sort((t, s) => e[t] - e[s])[0] || '\t' + ) + } + indent(e) { + if ((arguments.length || (e = this.getIndentString()), '' === e)) return this + let t = !this.intro || '\n' === this.intro.slice(-1) + return ( + this.sources.forEach((s, i) => { + const n = void 0 !== s.separator ? s.separator : this.separator, + r = t || (i > 0 && /\r?\n$/.test(n)) + s.content.indent(e, { exclude: s.indentExclusionRanges, indentStart: r }), (t = '\n' === s.content.lastChar()) + }), + this.intro && (this.intro = e + this.intro.replace(/^[^\n]/gm, (t, s) => (s > 0 ? e + t : t))), + this + ) + } + prepend(e) { + return (this.intro = e + this.intro), this + } + toString() { + const e = this.sources + .map((e, t) => { + const s = void 0 !== e.separator ? e.separator : this.separator + return (t > 0 ? s : '') + e.content.toString() + }) + .join('') + return this.intro + e + } + isEmpty() { + return (!this.intro.length || !this.intro.trim()) && !this.sources.some((e) => !e.content.isEmpty()) + } + length() { + return this.sources.reduce((e, t) => e + t.content.length(), this.intro.length) + } + trimLines() { + return this.trim('[\\r\\n]') + } + trim(e) { + return this.trimStart(e).trimEnd(e) + } + trimStart(e) { + const t = new RegExp('^' + (e || '\\s') + '+') + if (((this.intro = this.intro.replace(t, '')), !this.intro)) { + let t, + s = 0 + do { + if (((t = this.sources[s++]), !t)) break + } while (!t.content.trimStartAborted(e)) + } + return this + } + trimEnd(e) { + const t = new RegExp((e || '\\s') + '+$') + let s, + i = this.sources.length - 1 + do { + if (((s = this.sources[i--]), !s)) { + this.intro = this.intro.replace(t, '') + break + } + } while (!s.content.trimEndAborted(e)) + return this + } +} +const b = /^(?:\/|(?:[A-Za-z]:)?[/\\|])/, + v = /^\.?\.\//, + S = /\\/g, + A = /[/\\]/, + k = /\.[^.]+$/ +function I(e) { + return b.test(e) +} +function w(e) { + return v.test(e) +} +function P(e) { + return e.replace(S, '/') +} +function C(e) { + return e.split(A).pop() || '' +} +function $(e) { + const t = /[/\\][^/\\]*$/.exec(e) + if (!t) return '.' + return e.slice(0, -t[0].length) || '/' +} +function N(e) { + const t = k.exec(C(e)) + return t ? t[0] : '' +} +function _(e, t) { + const s = e.split(A).filter(Boolean), + i = t.split(A).filter(Boolean) + for ('.' === s[0] && s.shift(), '.' === i[0] && i.shift(); s[0] && i[0] && s[0] === i[0]; ) s.shift(), i.shift() + for (; '..' === i[0] && s.length > 0; ) i.shift(), s.pop() + for (; s.pop(); ) i.unshift('..') + return i.join('/') +} +function R(...e) { + const t = e.shift() + if (!t) return '/' + let s = t.split(A) + for (const t of e) + if (I(t)) s = t.split(A) + else { + const e = t.split(A) + for (; '.' === e[0] || '..' === e[0]; ) { + '..' === e.shift() && s.pop() + } + s.push(...e) + } + return s.join('/') +} +const M = /[\n\r'\\\u2028\u2029]/, + O = /([\n\r'\u2028\u2029])/g, + D = /\\/g +function L(e) { + return M.test(e) ? e.replace(D, '\\\\').replace(O, '\\$1') : e +} +function T(e) { + const t = C(e) + return t.slice(0, Math.max(0, t.length - N(e).length)) +} +function V(e) { + return I(e) ? _(R(), e) : e +} +function B(e) { + return '/' === e[0] || ('.' === e[0] && ('/' === e[1] || '.' === e[1])) || I(e) +} +const z = /^(\.\.\/)*\.\.$/ +function F(e, t, s, i) { + for (; t.startsWith('../'); ) (t = t.slice(3)), (e = '_/' + e) + let n = P(_($(e), t)) + if ((s && n.endsWith('.js') && (n = n.slice(0, -3)), i)) { + if ('' === n) return '../' + C(t) + if (z.test(n)) return [...n.split('/'), '..', C(t)].join('/') + } + return n ? (n.startsWith('..') ? n : './' + n) : '.' +} +class j { + constructor(e, t, s) { + ;(this.options = t), + (this.inputBase = s), + (this.defaultVariableName = ''), + (this.namespaceVariableName = ''), + (this.variableName = ''), + (this.fileName = null), + (this.importAssertions = null), + (this.id = e.id), + (this.moduleInfo = e.info), + (this.renormalizeRenderPath = e.renormalizeRenderPath), + (this.suggestedVariableName = e.suggestedVariableName) + } + getFileName() { + if (this.fileName) return this.fileName + const { paths: e } = this.options + return (this.fileName = ('function' == typeof e ? e(this.id) : e[this.id]) || (this.renormalizeRenderPath ? P(_(this.inputBase, this.id)) : this.id)) + } + getImportAssertions(e) { + return ( + this.importAssertions || + (this.importAssertions = (function (e, { getObject: t }) { + if (!e) return null + const s = Object.entries(e).map(([e, t]) => [e, `'${t}'`]) + if (s.length > 0) return t(s, { lineBreakIndent: null }) + return null + })('es' === this.options.format && this.options.externalImportAssertions && this.moduleInfo.assertions, e)) + ) + } + getImportPath(e) { + return L(this.renormalizeRenderPath ? F(e, this.getFileName(), 'amd' === this.options.format, !1) : this.getFileName()) + } +} +function U(e, t, s) { + const i = e.get(t) + if (void 0 !== i) return i + const n = s() + return e.set(t, n), n +} +function G() { + return new Set() +} +function W() { + return [] +} +const q = Symbol('Unknown Key'), + H = Symbol('Unknown Non-Accessor Key'), + K = Symbol('Unknown Integer'), + Y = Symbol('Symbol.toStringTag'), + X = [], + Q = [q], + Z = [H], + J = [K], + ee = Symbol('Entities') +class te { + constructor() { + this.entityPaths = Object.create(null, { [ee]: { value: new Set() } }) + } + trackEntityAtPathAndGetIfTracked(e, t) { + const s = this.getEntities(e) + return !!s.has(t) || (s.add(t), !1) + } + withTrackedEntityAtPath(e, t, s, i) { + const n = this.getEntities(e) + if (n.has(t)) return i + n.add(t) + const r = s() + return n.delete(t), r + } + getEntities(e) { + let t = this.entityPaths + for (const s of e) t = t[s] = t[s] || Object.create(null, { [ee]: { value: new Set() } }) + return t[ee] + } +} +const se = new te() +class ie { + constructor() { + this.entityPaths = Object.create(null, { [ee]: { value: new Map() } }) + } + trackEntityAtPathAndGetIfTracked(e, t, s) { + let i = this.entityPaths + for (const t of e) i = i[t] = i[t] || Object.create(null, { [ee]: { value: new Map() } }) + const n = U(i[ee], t, G) + return !!n.has(s) || (n.add(s), !1) + } +} +const ne = Symbol('Unknown Value'), + re = Symbol('Unknown Truthy Value') +class oe { + constructor() { + this.included = !1 + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + ce(e) + } + deoptimizePath(e) {} + getLiteralValueAtPath(e, t, s) { + return ne + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return le + } + hasEffectsOnInteractionAtPath(e, t, s) { + return !0 + } + include(e, t, s) { + this.included = !0 + } + includeCallArguments(e, t) { + for (const s of t) s.include(e, !1) + } + shouldBeIncluded(e) { + return !0 + } +} +const ae = new (class extends oe {})(), + le = [ae, !1], + ce = (e) => { + for (const t of e.args) t?.deoptimizePath(Q) + }, + he = { args: [null], type: 0 }, + ue = { args: [null, ae], type: 1 }, + de = { args: [null], type: 2, withNew: !1 } +class pe extends oe { + constructor(e) { + super(), + (this.name = e), + (this.alwaysRendered = !1), + (this.forbiddenNames = null), + (this.initReached = !1), + (this.isId = !1), + (this.isReassigned = !1), + (this.kind = null), + (this.renderBaseName = null), + (this.renderName = null) + } + addReference(e) {} + forbidName(e) { + ;(this.forbiddenNames || (this.forbiddenNames = new Set())).add(e) + } + getBaseVariableName() { + return this.renderBaseName || this.renderName || this.name + } + getName(e, t) { + if (t?.(this)) return this.name + const s = this.renderName || this.name + return this.renderBaseName ? `${this.renderBaseName}${e(s)}` : s + } + hasEffectsOnInteractionAtPath(e, { type: t }, s) { + return 0 !== t || e.length > 0 + } + include() { + this.included = !0 + } + markCalledFromTryStatement() {} + setRenderNames(e, t) { + ;(this.renderBaseName = e), (this.renderName = t) + } +} +class fe extends pe { + constructor(e, t) { + super(t), (this.referenced = !1), (this.module = e), (this.isNamespace = '*' === t) + } + addReference(e) { + ;(this.referenced = !0), ('default' !== this.name && '*' !== this.name) || this.module.suggestName(e.name) + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return 0 !== t || e.length > (this.isNamespace ? 1 : 0) + } + include() { + this.included || ((this.included = !0), (this.module.used = !0)) + } +} +const me = Object.freeze(Object.create(null)), + ge = Object.freeze({}), + ye = Object.freeze([]), + xe = Object.freeze( + new (class extends Set { + add() { + throw new Error('Cannot add to empty set') + } + })() + ) +var Ee = new Set([ + 'await', + 'break', + 'case', + 'catch', + 'class', + 'const', + 'continue', + 'debugger', + 'default', + 'delete', + 'do', + 'else', + 'enum', + 'eval', + 'export', + 'extends', + 'false', + 'finally', + 'for', + 'function', + 'if', + 'implements', + 'import', + 'in', + 'instanceof', + 'interface', + 'let', + 'NaN', + 'new', + 'null', + 'package', + 'private', + 'protected', + 'public', + 'return', + 'static', + 'super', + 'switch', + 'this', + 'throw', + 'true', + 'try', + 'typeof', + 'undefined', + 'var', + 'void', + 'while', + 'with', + 'yield' +]) +const be = /[^\w$]/g, + ve = (e) => ((e) => /\d/.test(e[0]))(e) || Ee.has(e) || 'arguments' === e +function Se(e) { + return (e = e.replace(/-(\w)/g, (e, t) => t.toUpperCase()).replace(be, '_')), ve(e) && (e = `_${e}`), e || '_' +} +const Ae = 'warn', + ke = 'info', + Ie = 'debug', + we = { [Ie]: 0, [ke]: 1, silent: 3, [Ae]: 2 } +function Pe(e, t) { + return e.start <= t && t < e.end +} +function Ce(e, t, s) { + return (function (e, t = {}) { + const { offsetLine: s = 0, offsetColumn: i = 0 } = t + let n = 0 + const r = e.split('\n').map((e, t) => { + const s = n + e.length + 1, + i = { start: n, end: s, line: t } + return (n = s), i + }) + let o = 0 + return function (t, n) { + if (('string' == typeof t && (t = e.indexOf(t, n ?? 0)), -1 === t)) return + let a = r[o] + const l = t >= a.end ? 1 : -1 + for (; a; ) { + if (Pe(a, t)) return { line: s + a.line, column: i + t - a.start, character: t } + ;(o += l), (a = r[o]) + } + } + })(e, s)(t, s && s.startIndex) +} +function $e(e) { + return e.replace(/^\t+/, (e) => e.split('\t').join(' ')) +} +const Ne = 120, + _e = 10, + Re = '...' +function Me(e, t, s) { + let i = e.split('\n') + if (t > i.length) return '' + const n = Math.max($e(i[t - 1].slice(0, s)).length + _e + Re.length, Ne), + r = Math.max(0, t - 3) + let o = Math.min(t + 2, i.length) + for (i = i.slice(r, o); !/\S/.test(i[i.length - 1]); ) i.pop(), (o -= 1) + const a = String(o).length + return i + .map((e, i) => { + const o = r + i + 1 === t + let l = String(i + r + 1) + for (; l.length < a; ) l = ` ${l}` + let c = $e(e) + if ((c.length > n && (c = `${c.slice(0, n - Re.length)}${Re}`), o)) { + const t = + (function (e) { + let t = '' + for (; e--; ) t += ' ' + return t + })(a + 2 + $e(e.slice(0, s)).length) + '^' + return `${l}: ${c}\n${t}` + } + return `${l}: ${c}` + }) + .join('\n') +} +function Oe(e, t) { + const s = e.length <= 1, + i = e.map((e) => `"${e}"`) + let n = s ? i[0] : `${i.slice(0, -1).join(', ')} and ${i.slice(-1)[0]}` + return t && (n += ` ${s ? t[0] : t[1]}`), n +} +function De(e) { + return `https://rollupjs.org/${e}` +} +const Le = 'troubleshooting/#error-name-is-not-exported-by-module', + Te = 'troubleshooting/#warning-sourcemap-is-likely-to-be-incorrect', + Ve = 'configuration-options/#output-amd-id', + Be = 'configuration-options/#output-dir', + ze = 'configuration-options/#output-exports', + Fe = 'configuration-options/#output-extend', + je = 'configuration-options/#output-format', + Ue = 'configuration-options/#output-experimentaldeepdynamicchunkoptimization', + Ge = 'configuration-options/#output-globals', + We = 'configuration-options/#output-inlinedynamicimports', + qe = 'configuration-options/#output-interop', + He = 'configuration-options/#output-manualchunks', + Ke = 'configuration-options/#output-name', + Ye = 'configuration-options/#output-sourcemapfile', + Xe = 'plugin-development/#this-getmoduleinfo' +function Qe(e) { + throw (e instanceof Error || ((e = Object.assign(new Error(e.message), e)), Object.defineProperty(e, 'name', { value: 'RollupError' })), e) +} +function Ze(e, t, s, i) { + if ('object' == typeof t) { + const { line: s, column: n } = t + e.loc = { column: n, file: i, line: s } + } else { + e.pos = t + const { line: n, column: r } = Ce(s, t, { offsetLine: 1 }) + e.loc = { column: r, file: i, line: n } + } + if (void 0 === e.frame) { + const { line: t, column: i } = e.loc + e.frame = Me(s, t, i) + } +} +const Je = 'ADDON_ERROR', + et = 'ALREADY_CLOSED', + tt = 'ANONYMOUS_PLUGIN_CACHE', + st = 'ASSET_NOT_FINALISED', + it = 'CANNOT_EMIT_FROM_OPTIONS_HOOK', + nt = 'CHUNK_NOT_GENERATED', + rt = 'CIRCULAR_REEXPORT', + ot = 'DEPRECATED_FEATURE', + at = 'DUPLICATE_PLUGIN_NAME', + lt = 'FILE_NAME_CONFLICT', + ct = 'ILLEGAL_IDENTIFIER_AS_NAME', + ht = 'INVALID_CHUNK', + ut = 'INVALID_EXPORT_OPTION', + dt = 'INVALID_LOG_POSITION', + pt = 'INVALID_OPTION', + ft = 'INVALID_PLUGIN_HOOK', + mt = 'INVALID_ROLLUP_PHASE', + gt = 'INVALID_SETASSETSOURCE', + yt = 'MISSING_EXPORT', + xt = 'MISSING_GLOBAL_NAME', + Et = 'MISSING_IMPLICIT_DEPENDANT', + bt = 'MISSING_NAME_OPTION_FOR_IIFE_EXPORT', + vt = 'MISSING_NODE_BUILTINS', + St = 'MISSING_OPTION', + At = 'MIXED_EXPORTS', + kt = 'NO_TRANSFORM_MAP_OR_AST_WITHOUT_CODE', + It = 'OPTIMIZE_CHUNK_STATUS', + wt = 'PLUGIN_ERROR', + Pt = 'SOURCEMAP_BROKEN', + Ct = 'UNEXPECTED_NAMED_IMPORT', + $t = 'UNKNOWN_OPTION', + Nt = 'UNRESOLVED_ENTRY', + _t = 'UNRESOLVED_IMPORT', + Rt = 'VALIDATION_ERROR' +function Mt() { + return { code: et, message: 'Bundle is already closed, no more calls to "generate" or "write" are allowed.' } +} +function Ot(e) { + return { code: 'CANNOT_CALL_NAMESPACE', message: `Cannot call a namespace ("${e}").` } +} +function Dt({ fileName: e, code: t }, s) { + const i = { code: 'CHUNK_INVALID', message: `Chunk "${e}" is not valid JavaScript: ${s.message}.` } + return Ze(i, s.loc, t, e), i +} +function Lt(e) { + return { code: 'CIRCULAR_DEPENDENCY', ids: e, message: `Circular dependency: ${e.map(V).join(' -> ')}` } +} +function Tt(e, t, { line: s, column: i }) { + return { code: 'FIRST_SIDE_EFFECT', message: `First side effect in ${V(t)} is at (${s}:${i})\n${Me(e, s, i)}` } +} +function Vt(e, t) { + return { code: 'ILLEGAL_REASSIGNMENT', message: `Illegal reassignment of import "${e}" in "${V(t)}".` } +} +function Bt(e, t, s, i) { + return { + code: 'INCONSISTENT_IMPORT_ASSERTIONS', + message: `Module "${V(i)}" tried to import "${V(s)}" with ${zt(t)} assertions, but it was already imported elsewhere with ${zt( + e + )} assertions. Please ensure that import assertions for the same module are always consistent.` + } +} +const zt = (e) => { + const t = Object.entries(e) + return 0 === t.length ? 'no' : t.map(([e, t]) => `"${e}": "${t}"`).join(', ') +} +function Ft(e, t, s) { + return { code: ut, message: `"${e}" was specified for "output.exports", but entry module "${V(s)}" has the following exports: ${Oe(t)}`, url: De(ze) } +} +function jt(e, t, s, i) { + return { code: pt, message: `Invalid value ${void 0 === i ? '' : `${JSON.stringify(i)} `}for option "${e}" - ${s}.`, url: De(t) } +} +function Ut(e, t, s) { + const i = '.json' === N(s) + return { + binding: e, + code: yt, + exporter: s, + id: t, + message: `"${e}" is not exported by "${V(s)}", imported by "${V(t)}".${i ? ' (Note that you need @rollup/plugin-json to import JSON files)' : ''}`, + url: De(Le) + } +} +function Gt(e) { + const t = [...e.implicitlyLoadedBefore].map((e) => V(e.id)).sort() + return { + code: Et, + message: `Module "${V(e.id)}" that should be implicitly loaded before ${Oe( + t + )} is not included in the module graph. Either it was not imported by an included module or only via a tree-shaken dynamic import, or no imported bindings were used and it had otherwise no side-effects.` + } +} +function Wt(e, t, s) { + return { code: It, message: `${s}, there are\n${e} chunks, of which\n${t} are below minChunkSize.` } +} +function qt(e, t, { hook: s, id: i } = {}) { + const n = e.code + return ( + e.pluginCode || null == n || ('string' == typeof n && ('string' != typeof n || n.startsWith('PLUGIN_'))) || (e.pluginCode = n), (e.code = wt), (e.plugin = t), s && (e.hook = s), i && (e.id = i), e + ) +} +function Ht(e) { + return { code: Pt, message: `Multiple conflicting contents for sourcemap source ${e}` } +} +function Kt(e, t, s) { + const i = s ? 'reexport' : 'import' + return { + code: Ct, + exporter: e, + message: `The named export "${t}" was ${i}ed from the external module "${V( + e + )}" even though its interop type is "defaultOnly". Either remove or change this ${i} or change the value of the "output.interop" option.`, + url: De(qe) + } +} +function Yt(e) { + return { + code: Ct, + exporter: e, + message: `There was a namespace "*" reexport from the external module "${V( + e + )}" even though its interop type is "defaultOnly". This will be ignored as namespace reexports only reexport named exports. If this is not intended, either remove or change this reexport or change the value of the "output.interop" option.`, + url: De(qe) + } +} +function Xt(e) { + return { code: Rt, message: e } +} +function Qt(e, t, s, i, n) { + Zt(e, t, s, i.onLog, i.strictDeprecations, n) +} +function Zt(e, t, s, i, n, r) { + if (s || n) { + const s = (function (e, t, s) { + return { code: ot, message: e, url: De(t), ...(s ? { plugin: s } : {}) } + })(e, t, r) + if (n) return Qe(s) + i(Ae, s) + } +} +class Jt { + constructor(e, t, s, i, n, r) { + ;(this.options = e), + (this.id = t), + (this.renormalizeRenderPath = n), + (this.dynamicImporters = []), + (this.execIndex = 1 / 0), + (this.exportedVariables = new Map()), + (this.importers = []), + (this.reexported = !1), + (this.used = !1), + (this.declarations = new Map()), + (this.mostCommonSuggestion = 0), + (this.nameSuggestions = new Map()), + (this.suggestedVariableName = Se(t.split(/[/\\]/).pop())) + const { importers: o, dynamicImporters: a } = this, + l = (this.info = { + assertions: r, + ast: null, + code: null, + dynamicallyImportedIdResolutions: ye, + dynamicallyImportedIds: ye, + get dynamicImporters() { + return a.sort() + }, + exportedBindings: null, + exports: null, + hasDefaultExport: null, + get hasModuleSideEffects() { + return Qt('Accessing ModuleInfo.hasModuleSideEffects from plugins is deprecated. Please use ModuleInfo.moduleSideEffects instead.', Xe, !0, e), l.moduleSideEffects + }, + id: t, + implicitlyLoadedAfterOneOf: ye, + implicitlyLoadedBefore: ye, + importedIdResolutions: ye, + importedIds: ye, + get importers() { + return o.sort() + }, + isEntry: !1, + isExternal: !0, + isIncluded: null, + meta: i, + moduleSideEffects: s, + syntheticNamedExports: !1 + }) + Object.defineProperty(this.info, 'hasModuleSideEffects', { enumerable: !1 }) + } + getVariableForExportName(e) { + const t = this.declarations.get(e) + if (t) return [t] + const s = new fe(this, e) + return this.declarations.set(e, s), this.exportedVariables.set(s, e), [s] + } + suggestName(e) { + const t = (this.nameSuggestions.get(e) ?? 0) + 1 + this.nameSuggestions.set(e, t), t > this.mostCommonSuggestion && ((this.mostCommonSuggestion = t), (this.suggestedVariableName = e)) + } + warnUnusedImports() { + const e = [...this.declarations].filter(([e, t]) => '*' !== e && !t.included && !this.reexported && !t.referenced).map(([e]) => e) + if (0 === e.length) return + const t = new Set() + for (const s of e) for (const e of this.declarations.get(s).module.importers) t.add(e) + const s = [...t] + var i, n, r + this.options.onLog(Ae, { + code: 'UNUSED_EXTERNAL_IMPORT', + exporter: (i = this.id), + ids: (r = s), + message: `${Oe((n = e), ['is', 'are'])} imported from external module "${i}" but never used in ${Oe(r.map((e) => V(e)))}.`, + names: n + }) + } +} +const es = { + ArrayPattern(e, t) { + for (const s of t.elements) s && es[s.type](e, s) + }, + AssignmentPattern(e, t) { + es[t.left.type](e, t.left) + }, + Identifier(e, t) { + e.push(t.name) + }, + MemberExpression() {}, + ObjectPattern(e, t) { + for (const s of t.properties) 'RestElement' === s.type ? es.RestElement(e, s) : es[s.value.type](e, s.value) + }, + RestElement(e, t) { + es[t.argument.type](e, t.argument) + } + }, + ts = function (e) { + const t = [] + return es[e.type](t, e), t + } +function ss() { + return { brokenFlow: !1, hasBreak: !1, hasContinue: !1, includedCallArguments: new Set(), includedLabels: new Set() } +} +function is() { + return { + accessed: new te(), + assigned: new te(), + brokenFlow: !1, + called: new ie(), + hasBreak: !1, + hasContinue: !1, + ignore: { breaks: !1, continues: !1, labels: new Set(), returnYield: !1, this: !1 }, + includedLabels: new Set(), + instantiated: new ie(), + replacedVariableInits: new Map() + } +} +function ns(e, t = null) { + return Object.create(t, e) +} +new Set( + 'break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl'.split( + ' ' + ) +).add('') +const rs = new (class extends oe { + getLiteralValueAtPath() {} + })(), + os = { value: { hasEffectsWhenCalled: null, returns: ae } }, + as = new (class extends oe { + getReturnExpressionWhenCalledAtPath(e) { + return 1 === e.length ? bs(ms, e[0]) : le + } + hasEffectsOnInteractionAtPath(e, t, s) { + return 0 === t.type ? e.length > 1 : 2 !== t.type || 1 !== e.length || Es(ms, e[0], t, s) + } + })(), + ls = { value: { hasEffectsWhenCalled: null, returns: as } }, + cs = new (class extends oe { + getReturnExpressionWhenCalledAtPath(e) { + return 1 === e.length ? bs(gs, e[0]) : le + } + hasEffectsOnInteractionAtPath(e, t, s) { + return 0 === t.type ? e.length > 1 : 2 !== t.type || 1 !== e.length || Es(gs, e[0], t, s) + } + })(), + hs = { value: { hasEffectsWhenCalled: null, returns: cs } }, + us = new (class extends oe { + getReturnExpressionWhenCalledAtPath(e) { + return 1 === e.length ? bs(xs, e[0]) : le + } + hasEffectsOnInteractionAtPath(e, t, s) { + return 0 === t.type ? e.length > 1 : 2 !== t.type || 1 !== e.length || Es(xs, e[0], t, s) + } + })(), + ds = { value: { hasEffectsWhenCalled: null, returns: us } }, + ps = { + value: { + hasEffectsWhenCalled({ args: e }, t) { + const s = e[2] + return e.length < 3 || ('symbol' == typeof s.getLiteralValueAtPath(X, se, { deoptimizeCache() {} }) && s.hasEffectsOnInteractionAtPath(X, de, t)) + }, + returns: us + } + }, + fs = ns({ hasOwnProperty: ls, isPrototypeOf: ls, propertyIsEnumerable: ls, toLocaleString: ds, toString: ds, valueOf: os }), + ms = ns({ valueOf: ls }, fs), + gs = ns({ toExponential: ds, toFixed: ds, toLocaleString: ds, toPrecision: ds, valueOf: hs }, fs), + ys = ns({ exec: os, test: ls }, fs), + xs = ns( + { + anchor: ds, + at: os, + big: ds, + blink: ds, + bold: ds, + charAt: ds, + charCodeAt: hs, + codePointAt: os, + concat: ds, + endsWith: ls, + fixed: ds, + fontcolor: ds, + fontsize: ds, + includes: ls, + indexOf: hs, + italics: ds, + lastIndexOf: hs, + link: ds, + localeCompare: hs, + match: os, + matchAll: os, + normalize: ds, + padEnd: ds, + padStart: ds, + repeat: ds, + replace: ps, + replaceAll: ps, + search: hs, + slice: ds, + small: ds, + split: os, + startsWith: ls, + strike: ds, + sub: ds, + substr: ds, + substring: ds, + sup: ds, + toLocaleLowerCase: ds, + toLocaleUpperCase: ds, + toLowerCase: ds, + toString: ds, + toUpperCase: ds, + trim: ds, + trimEnd: ds, + trimLeft: ds, + trimRight: ds, + trimStart: ds, + valueOf: ds + }, + fs + ) +function Es(e, t, s, i) { + return 'string' != typeof t || !e[t] || e[t].hasEffectsWhenCalled?.(s, i) || !1 +} +function bs(e, t) { + return 'string' == typeof t && e[t] ? [e[t].returns, !1] : le +} +function vs(e, t, s) { + s(e, t) +} +function Ss(e, t, s) {} +var As = {} +;(As.Program = + As.BlockStatement = + As.StaticBlock = + function (e, t, s) { + for (var i = 0, n = e.body; i < n.length; i += 1) { + s(n[i], t, 'Statement') + } + }), + (As.Statement = vs), + (As.EmptyStatement = Ss), + (As.ExpressionStatement = + As.ParenthesizedExpression = + As.ChainExpression = + function (e, t, s) { + return s(e.expression, t, 'Expression') + }), + (As.IfStatement = function (e, t, s) { + s(e.test, t, 'Expression'), s(e.consequent, t, 'Statement'), e.alternate && s(e.alternate, t, 'Statement') + }), + (As.LabeledStatement = function (e, t, s) { + return s(e.body, t, 'Statement') + }), + (As.BreakStatement = As.ContinueStatement = Ss), + (As.WithStatement = function (e, t, s) { + s(e.object, t, 'Expression'), s(e.body, t, 'Statement') + }), + (As.SwitchStatement = function (e, t, s) { + s(e.discriminant, t, 'Expression') + for (var i = 0, n = e.cases; i < n.length; i += 1) { + var r = n[i] + r.test && s(r.test, t, 'Expression') + for (var o = 0, a = r.consequent; o < a.length; o += 1) { + s(a[o], t, 'Statement') + } + } + }), + (As.SwitchCase = function (e, t, s) { + e.test && s(e.test, t, 'Expression') + for (var i = 0, n = e.consequent; i < n.length; i += 1) { + s(n[i], t, 'Statement') + } + }), + (As.ReturnStatement = + As.YieldExpression = + As.AwaitExpression = + function (e, t, s) { + e.argument && s(e.argument, t, 'Expression') + }), + (As.ThrowStatement = As.SpreadElement = + function (e, t, s) { + return s(e.argument, t, 'Expression') + }), + (As.TryStatement = function (e, t, s) { + s(e.block, t, 'Statement'), e.handler && s(e.handler, t), e.finalizer && s(e.finalizer, t, 'Statement') + }), + (As.CatchClause = function (e, t, s) { + e.param && s(e.param, t, 'Pattern'), s(e.body, t, 'Statement') + }), + (As.WhileStatement = As.DoWhileStatement = + function (e, t, s) { + s(e.test, t, 'Expression'), s(e.body, t, 'Statement') + }), + (As.ForStatement = function (e, t, s) { + e.init && s(e.init, t, 'ForInit'), e.test && s(e.test, t, 'Expression'), e.update && s(e.update, t, 'Expression'), s(e.body, t, 'Statement') + }), + (As.ForInStatement = As.ForOfStatement = + function (e, t, s) { + s(e.left, t, 'ForInit'), s(e.right, t, 'Expression'), s(e.body, t, 'Statement') + }), + (As.ForInit = function (e, t, s) { + 'VariableDeclaration' === e.type ? s(e, t) : s(e, t, 'Expression') + }), + (As.DebuggerStatement = Ss), + (As.FunctionDeclaration = function (e, t, s) { + return s(e, t, 'Function') + }), + (As.VariableDeclaration = function (e, t, s) { + for (var i = 0, n = e.declarations; i < n.length; i += 1) { + s(n[i], t) + } + }), + (As.VariableDeclarator = function (e, t, s) { + s(e.id, t, 'Pattern'), e.init && s(e.init, t, 'Expression') + }), + (As.Function = function (e, t, s) { + e.id && s(e.id, t, 'Pattern') + for (var i = 0, n = e.params; i < n.length; i += 1) { + s(n[i], t, 'Pattern') + } + s(e.body, t, e.expression ? 'Expression' : 'Statement') + }), + (As.Pattern = function (e, t, s) { + 'Identifier' === e.type ? s(e, t, 'VariablePattern') : 'MemberExpression' === e.type ? s(e, t, 'MemberPattern') : s(e, t) + }), + (As.VariablePattern = Ss), + (As.MemberPattern = vs), + (As.RestElement = function (e, t, s) { + return s(e.argument, t, 'Pattern') + }), + (As.ArrayPattern = function (e, t, s) { + for (var i = 0, n = e.elements; i < n.length; i += 1) { + var r = n[i] + r && s(r, t, 'Pattern') + } + }), + (As.ObjectPattern = function (e, t, s) { + for (var i = 0, n = e.properties; i < n.length; i += 1) { + var r = n[i] + 'Property' === r.type ? (r.computed && s(r.key, t, 'Expression'), s(r.value, t, 'Pattern')) : 'RestElement' === r.type && s(r.argument, t, 'Pattern') + } + }), + (As.Expression = vs), + (As.ThisExpression = As.Super = As.MetaProperty = Ss), + (As.ArrayExpression = function (e, t, s) { + for (var i = 0, n = e.elements; i < n.length; i += 1) { + var r = n[i] + r && s(r, t, 'Expression') + } + }), + (As.ObjectExpression = function (e, t, s) { + for (var i = 0, n = e.properties; i < n.length; i += 1) { + s(n[i], t) + } + }), + (As.FunctionExpression = As.ArrowFunctionExpression = As.FunctionDeclaration), + (As.SequenceExpression = function (e, t, s) { + for (var i = 0, n = e.expressions; i < n.length; i += 1) { + s(n[i], t, 'Expression') + } + }), + (As.TemplateLiteral = function (e, t, s) { + for (var i = 0, n = e.quasis; i < n.length; i += 1) { + s(n[i], t) + } + for (var r = 0, o = e.expressions; r < o.length; r += 1) { + s(o[r], t, 'Expression') + } + }), + (As.TemplateElement = Ss), + (As.UnaryExpression = As.UpdateExpression = + function (e, t, s) { + s(e.argument, t, 'Expression') + }), + (As.BinaryExpression = As.LogicalExpression = + function (e, t, s) { + s(e.left, t, 'Expression'), s(e.right, t, 'Expression') + }), + (As.AssignmentExpression = As.AssignmentPattern = + function (e, t, s) { + s(e.left, t, 'Pattern'), s(e.right, t, 'Expression') + }), + (As.ConditionalExpression = function (e, t, s) { + s(e.test, t, 'Expression'), s(e.consequent, t, 'Expression'), s(e.alternate, t, 'Expression') + }), + (As.NewExpression = As.CallExpression = + function (e, t, s) { + if ((s(e.callee, t, 'Expression'), e.arguments)) + for (var i = 0, n = e.arguments; i < n.length; i += 1) { + s(n[i], t, 'Expression') + } + }), + (As.MemberExpression = function (e, t, s) { + s(e.object, t, 'Expression'), e.computed && s(e.property, t, 'Expression') + }), + (As.ExportNamedDeclaration = As.ExportDefaultDeclaration = + function (e, t, s) { + e.declaration && s(e.declaration, t, 'ExportNamedDeclaration' === e.type || e.declaration.id ? 'Statement' : 'Expression'), e.source && s(e.source, t, 'Expression') + }), + (As.ExportAllDeclaration = function (e, t, s) { + e.exported && s(e.exported, t), s(e.source, t, 'Expression') + }), + (As.ImportDeclaration = function (e, t, s) { + for (var i = 0, n = e.specifiers; i < n.length; i += 1) { + s(n[i], t) + } + s(e.source, t, 'Expression') + }), + (As.ImportExpression = function (e, t, s) { + s(e.source, t, 'Expression') + }), + (As.ImportSpecifier = As.ImportDefaultSpecifier = As.ImportNamespaceSpecifier = As.Identifier = As.PrivateIdentifier = As.Literal = Ss), + (As.TaggedTemplateExpression = function (e, t, s) { + s(e.tag, t, 'Expression'), s(e.quasi, t, 'Expression') + }), + (As.ClassDeclaration = As.ClassExpression = + function (e, t, s) { + return s(e, t, 'Class') + }), + (As.Class = function (e, t, s) { + e.id && s(e.id, t, 'Pattern'), e.superClass && s(e.superClass, t, 'Expression'), s(e.body, t) + }), + (As.ClassBody = function (e, t, s) { + for (var i = 0, n = e.body; i < n.length; i += 1) { + s(n[i], t) + } + }), + (As.MethodDefinition = + As.PropertyDefinition = + As.Property = + function (e, t, s) { + e.computed && s(e.key, t, 'Expression'), e.value && s(e.value, t, 'Expression') + }) +const ks = 'ArrowFunctionExpression', + Is = 'BinaryExpression', + ws = 'BlockStatement', + Ps = 'CallExpression', + Cs = 'ChainExpression', + $s = 'ConditionalExpression', + Ns = 'ExportDefaultDeclaration', + _s = 'ExportNamedDeclaration', + Rs = 'ExpressionStatement', + Ms = 'FunctionDeclaration', + Os = 'Identifier', + Ds = 'LogicalExpression', + Ls = 'NewExpression', + Ts = 'Program', + Vs = 'SequenceExpression', + Bs = 'VariableDeclarator', + zs = 'VariableDeclaration' +let Fs = 'sourceMa' +Fs += 'ppingURL' +const js = new RegExp(`^#[ \\f\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+${Fs}=.+`), + Us = '_rollupAnnotations', + Gs = '_rollupRemoved' +function Ws(e, t, s = e.type) { + const { annotations: i, code: n } = t + let r = i[t.annotationIndex] + for (; r && e.start >= r.end; ) Ks(e, r, n), (r = i[++t.annotationIndex]) + if (r && r.end <= e.end) for (As[s](e, t, Ws); (r = i[t.annotationIndex]) && r.end <= e.end; ) ++t.annotationIndex, Qs(e, r, !1) +} +const qs = /[^\s(]/g, + Hs = /\S/g +function Ks(e, t, s) { + const i = [] + let n + if (Ys(s.slice(t.end, e.start), qs)) { + const t = e.start + for (;;) { + switch ((i.push(e), e.type)) { + case Rs: + case Cs: + e = e.expression + continue + case Vs: + if (Ys(s.slice(t, e.start), Hs)) { + e = e.expressions[0] + continue + } + n = !0 + break + case $s: + if (Ys(s.slice(t, e.start), Hs)) { + e = e.test + continue + } + n = !0 + break + case Ds: + case Is: + if (Ys(s.slice(t, e.start), Hs)) { + e = e.left + continue + } + n = !0 + break + case _s: + case Ns: + e = e.declaration + continue + case zs: { + const t = e + if ('const' === t.kind) { + e = t.declarations[0].init + continue + } + n = !0 + break + } + case Bs: + e = e.init + continue + case Ms: + case ks: + case Ps: + case Ls: + break + default: + n = !0 + } + break + } + } else n = !0 + if (n) Qs(e, t, !1) + else for (const e of i) Qs(e, t, !0) +} +function Ys(e, t) { + let s + for (; null !== (s = t.exec(e)); ) { + if ('/' === s[0]) { + const s = e.charCodeAt(t.lastIndex) + if (42 === s) { + t.lastIndex = e.indexOf('*/', t.lastIndex + 1) + 2 + continue + } + if (47 === s) { + t.lastIndex = e.indexOf('\n', t.lastIndex + 1) + 1 + continue + } + } + return (t.lastIndex = 0), !1 + } + return !0 +} +const Xs = [ + ['pure', /[#@]__PURE__/], + ['noSideEffects', /[#@]__NO_SIDE_EFFECTS__/] +] +function Qs(e, t, s) { + const i = s ? Us : Gs, + n = e[i] + n ? n.push(t) : (e[i] = [t]) +} +const Zs = { ImportExpression: ['arguments'], Literal: [], Program: ['body'] } +const Js = 'variables' +class ei extends oe { + constructor(e, t, s, i = !1) { + super(), + (this.deoptimized = !1), + (this.esTreeNode = i ? e : null), + (this.keys = + Zs[e.type] || + (function (e) { + return (Zs[e.type] = Object.keys(e).filter((t) => 'object' == typeof e[t] && 95 !== t.charCodeAt(0))), Zs[e.type] + })(e)), + (this.parent = t), + (this.context = t.context), + this.createScope(s), + this.parseNode(e), + this.initialise(), + this.context.magicString.addSourcemapLocation(this.start), + this.context.magicString.addSourcemapLocation(this.end) + } + addExportedVariables(e, t) {} + bind() { + for (const e of this.keys) { + const t = this[e] + if (Array.isArray(t)) for (const e of t) e?.bind() + else t && t.bind() + } + } + createScope(e) { + this.scope = e + } + hasEffects(e) { + this.deoptimized || this.applyDeoptimizations() + for (const t of this.keys) { + const s = this[t] + if (null !== s) + if (Array.isArray(s)) { + for (const t of s) if (t?.hasEffects(e)) return !0 + } else if (s.hasEffects(e)) return !0 + } + return !1 + } + hasEffectsAsAssignmentTarget(e, t) { + return this.hasEffects(e) || this.hasEffectsOnInteractionAtPath(X, this.assignmentInteraction, e) + } + include(e, t, s) { + this.deoptimized || this.applyDeoptimizations(), (this.included = !0) + for (const s of this.keys) { + const i = this[s] + if (null !== i) + if (Array.isArray(i)) for (const s of i) s?.include(e, t) + else i.include(e, t) + } + } + includeAsAssignmentTarget(e, t, s) { + this.include(e, t) + } + initialise() {} + insertSemicolon(e) { + ';' !== e.original[this.end - 1] && e.appendLeft(this.end, ';') + } + parseNode(e, t) { + for (const [s, i] of Object.entries(e)) + if (!this.hasOwnProperty(s)) + if (95 === s.charCodeAt(0)) { + if (s === Us) { + const e = i + ;(this.annotations = e), + this.context.options.treeshake.annotations && + ((this.annotationNoSideEffects = e.some((e) => 'noSideEffects' === e.annotationType)), (this.annotationPure = e.some((e) => 'pure' === e.annotationType))) + } else if (s === Gs) for (const { start: e, end: t } of i) this.context.magicString.remove(e, t) + } else if ('object' != typeof i || null === i) this[s] = i + else if (Array.isArray(i)) { + this[s] = [] + for (const e of i) this[s].push(null === e ? null : new (this.context.getNodeConstructor(e.type))(e, this, this.scope, t?.includes(s))) + } else this[s] = new (this.context.getNodeConstructor(i.type))(i, this, this.scope, t?.includes(s)) + } + render(e, t) { + for (const s of this.keys) { + const i = this[s] + if (null !== i) + if (Array.isArray(i)) for (const s of i) s?.render(e, t) + else i.render(e, t) + } + } + setAssignedValue(e) { + this.assignmentInteraction = { args: [null, e], type: 1 } + } + shouldBeIncluded(e) { + return this.included || (!e.brokenFlow && this.hasEffects(is())) + } + applyDeoptimizations() { + this.deoptimized = !0 + for (const e of this.keys) { + const t = this[e] + if (null !== t) + if (Array.isArray(t)) for (const e of t) e?.deoptimizePath(Q) + else t.deoptimizePath(Q) + } + this.context.requestTreeshakingPass() + } +} +class ti extends ei { + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + t.length > 0 && this.argument.deoptimizeArgumentsOnInteractionAtPath(e, [q, ...t], s) + } + hasEffects(e) { + this.deoptimized || this.applyDeoptimizations() + const { propertyReadSideEffects: t } = this.context.options.treeshake + return this.argument.hasEffects(e) || (t && ('always' === t || this.argument.hasEffectsOnInteractionAtPath(Q, he, e))) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.argument.deoptimizePath([q, q]), this.context.requestTreeshakingPass() + } +} +class si extends oe { + constructor(e) { + super(), (this.description = e) + } + deoptimizeArgumentsOnInteractionAtPath({ args: e, type: t }, s) { + 2 === t && 0 === s.length && this.description.mutatesSelfAsArray && e[0]?.deoptimizePath(J) + } + getReturnExpressionWhenCalledAtPath(e, { args: t }) { + return e.length > 0 ? le : [this.description.returnsPrimitive || ('self' === this.description.returns ? t[0] || ae : this.description.returns()), !1] + } + hasEffectsOnInteractionAtPath(e, t, s) { + const { type: i } = t + if (e.length > (0 === i ? 1 : 0)) return !0 + if (2 === i) { + const { args: e } = t + if (!0 === this.description.mutatesSelfAsArray && e[0]?.hasEffectsOnInteractionAtPath(J, ue, s)) return !0 + if (this.description.callsArgs) for (const t of this.description.callsArgs) if (e[t + 1]?.hasEffectsOnInteractionAtPath(X, de, s)) return !0 + } + return !1 + } +} +const ii = [new si({ callsArgs: null, mutatesSelfAsArray: !1, returns: null, returnsPrimitive: as })], + ni = [new si({ callsArgs: null, mutatesSelfAsArray: !1, returns: null, returnsPrimitive: us })], + ri = [new si({ callsArgs: null, mutatesSelfAsArray: !1, returns: null, returnsPrimitive: cs })], + oi = [new si({ callsArgs: null, mutatesSelfAsArray: !1, returns: null, returnsPrimitive: ae })], + ai = /^\d+$/ +class li extends oe { + constructor(e, t, s = !1) { + if ( + (super(), + (this.prototypeExpression = t), + (this.immutable = s), + (this.additionalExpressionsToBeDeoptimized = new Set()), + (this.allProperties = []), + (this.deoptimizedPaths = Object.create(null)), + (this.expressionsToBeDeoptimizedByKey = Object.create(null)), + (this.gettersByKey = Object.create(null)), + (this.hasLostTrack = !1), + (this.hasUnknownDeoptimizedInteger = !1), + (this.hasUnknownDeoptimizedProperty = !1), + (this.propertiesAndGettersByKey = Object.create(null)), + (this.propertiesAndSettersByKey = Object.create(null)), + (this.settersByKey = Object.create(null)), + (this.unknownIntegerProps = []), + (this.unmatchableGetters = []), + (this.unmatchablePropertiesAndGetters = []), + (this.unmatchableSetters = []), + Array.isArray(e)) + ) + this.buildPropertyMaps(e) + else { + this.propertiesAndGettersByKey = this.propertiesAndSettersByKey = e + for (const t of Object.values(e)) this.allProperties.push(...t) + } + } + deoptimizeAllProperties(e) { + const t = this.hasLostTrack || this.hasUnknownDeoptimizedProperty + if ((e ? (this.hasUnknownDeoptimizedProperty = !0) : (this.hasLostTrack = !0), !t)) { + for (const e of [...Object.values(this.propertiesAndGettersByKey), ...Object.values(this.settersByKey)]) for (const t of e) t.deoptimizePath(Q) + this.prototypeExpression?.deoptimizePath([q, q]), this.deoptimizeCachedEntities() + } + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + const [i, ...n] = t, + { args: r, type: o } = e + if (this.hasLostTrack || ((2 === o || t.length > 1) && (this.hasUnknownDeoptimizedProperty || ('string' == typeof i && this.deoptimizedPaths[i])))) return void ce(e) + const [a, l, c] = + 2 === o || t.length > 1 + ? [this.propertiesAndGettersByKey, this.propertiesAndGettersByKey, this.unmatchablePropertiesAndGetters] + : 0 === o + ? [this.propertiesAndGettersByKey, this.gettersByKey, this.unmatchableGetters] + : [this.propertiesAndSettersByKey, this.settersByKey, this.unmatchableSetters] + if ('string' == typeof i) { + if (a[i]) { + const t = l[i] + if (t) for (const i of t) i.deoptimizeArgumentsOnInteractionAtPath(e, n, s) + if (!this.immutable) for (const e of r) e && this.additionalExpressionsToBeDeoptimized.add(e) + return + } + for (const t of c) t.deoptimizeArgumentsOnInteractionAtPath(e, n, s) + if (ai.test(i)) for (const t of this.unknownIntegerProps) t.deoptimizeArgumentsOnInteractionAtPath(e, n, s) + } else { + for (const t of [...Object.values(l), c]) for (const i of t) i.deoptimizeArgumentsOnInteractionAtPath(e, n, s) + for (const t of this.unknownIntegerProps) t.deoptimizeArgumentsOnInteractionAtPath(e, n, s) + } + if (!this.immutable) for (const e of r) e && this.additionalExpressionsToBeDeoptimized.add(e) + this.prototypeExpression?.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizeIntegerProperties() { + if (!(this.hasLostTrack || this.hasUnknownDeoptimizedProperty || this.hasUnknownDeoptimizedInteger)) { + this.hasUnknownDeoptimizedInteger = !0 + for (const [e, t] of Object.entries(this.propertiesAndGettersByKey)) if (ai.test(e)) for (const e of t) e.deoptimizePath(Q) + this.deoptimizeCachedIntegerEntities() + } + } + deoptimizePath(e) { + if (this.hasLostTrack || this.immutable) return + const t = e[0] + if (1 === e.length) { + if ('string' != typeof t) return t === K ? this.deoptimizeIntegerProperties() : this.deoptimizeAllProperties(t === H) + if (!this.deoptimizedPaths[t]) { + this.deoptimizedPaths[t] = !0 + const e = this.expressionsToBeDeoptimizedByKey[t] + if (e) for (const t of e) t.deoptimizeCache() + } + } + const s = 1 === e.length ? Q : e.slice(1) + for (const e of 'string' == typeof t ? [...(this.propertiesAndGettersByKey[t] || this.unmatchablePropertiesAndGetters), ...(this.settersByKey[t] || this.unmatchableSetters)] : this.allProperties) + e.deoptimizePath(s) + this.prototypeExpression?.deoptimizePath(1 === e.length ? [...e, q] : e) + } + getLiteralValueAtPath(e, t, s) { + if (0 === e.length) return re + const i = e[0], + n = this.getMemberExpressionAndTrackDeopt(i, s) + return n ? n.getLiteralValueAtPath(e.slice(1), t, s) : this.prototypeExpression ? this.prototypeExpression.getLiteralValueAtPath(e, t, s) : 1 !== e.length ? ne : void 0 + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + if (0 === e.length) return le + const [n, ...r] = e, + o = this.getMemberExpressionAndTrackDeopt(n, i) + return o ? o.getReturnExpressionWhenCalledAtPath(r, t, s, i) : this.prototypeExpression ? this.prototypeExpression.getReturnExpressionWhenCalledAtPath(e, t, s, i) : le + } + hasEffectsOnInteractionAtPath(e, t, s) { + const [i, ...n] = e + if (n.length > 0 || 2 === t.type) { + const r = this.getMemberExpression(i) + return r ? r.hasEffectsOnInteractionAtPath(n, t, s) : !this.prototypeExpression || this.prototypeExpression.hasEffectsOnInteractionAtPath(e, t, s) + } + if (i === H) return !1 + if (this.hasLostTrack) return !0 + const [r, o, a] = 0 === t.type ? [this.propertiesAndGettersByKey, this.gettersByKey, this.unmatchableGetters] : [this.propertiesAndSettersByKey, this.settersByKey, this.unmatchableSetters] + if ('string' == typeof i) { + if (r[i]) { + const e = o[i] + if (e) for (const i of e) if (i.hasEffectsOnInteractionAtPath(n, t, s)) return !0 + return !1 + } + for (const e of a) if (e.hasEffectsOnInteractionAtPath(n, t, s)) return !0 + } else for (const e of [...Object.values(o), a]) for (const i of e) if (i.hasEffectsOnInteractionAtPath(n, t, s)) return !0 + return !!this.prototypeExpression && this.prototypeExpression.hasEffectsOnInteractionAtPath(e, t, s) + } + buildPropertyMaps(e) { + const { + allProperties: t, + propertiesAndGettersByKey: s, + propertiesAndSettersByKey: i, + settersByKey: n, + gettersByKey: r, + unknownIntegerProps: o, + unmatchablePropertiesAndGetters: a, + unmatchableGetters: l, + unmatchableSetters: c + } = this, + h = [] + for (let u = e.length - 1; u >= 0; u--) { + const { key: d, kind: p, property: f } = e[u] + if ((t.push(f), 'string' == typeof d)) + 'set' === p ? i[d] || ((i[d] = [f, ...h]), (n[d] = [f, ...c])) : 'get' === p ? s[d] || ((s[d] = [f, ...a]), (r[d] = [f, ...l])) : (i[d] || (i[d] = [f, ...h]), s[d] || (s[d] = [f, ...a])) + else { + if (d === K) { + o.push(f) + continue + } + 'set' === p && c.push(f), 'get' === p && l.push(f), 'get' !== p && h.push(f), 'set' !== p && a.push(f) + } + } + } + deoptimizeCachedEntities() { + for (const e of Object.values(this.expressionsToBeDeoptimizedByKey)) for (const t of e) t.deoptimizeCache() + for (const e of this.additionalExpressionsToBeDeoptimized) e.deoptimizePath(Q) + } + deoptimizeCachedIntegerEntities() { + for (const [e, t] of Object.entries(this.expressionsToBeDeoptimizedByKey)) if (ai.test(e)) for (const e of t) e.deoptimizeCache() + for (const e of this.additionalExpressionsToBeDeoptimized) e.deoptimizePath(J) + } + getMemberExpression(e) { + if (this.hasLostTrack || this.hasUnknownDeoptimizedProperty || 'string' != typeof e || (this.hasUnknownDeoptimizedInteger && ai.test(e)) || this.deoptimizedPaths[e]) return ae + const t = this.propertiesAndGettersByKey[e] + return 1 === t?.length ? t[0] : t || this.unmatchablePropertiesAndGetters.length > 0 || (this.unknownIntegerProps.length > 0 && ai.test(e)) ? ae : null + } + getMemberExpressionAndTrackDeopt(e, t) { + if ('string' != typeof e) return ae + const s = this.getMemberExpression(e) + if (s !== ae && !this.immutable) { + ;(this.expressionsToBeDeoptimizedByKey[e] = this.expressionsToBeDeoptimizedByKey[e] || []).push(t) + } + return s + } +} +const ci = (e) => 'string' == typeof e && /^\d+$/.test(e), + hi = new (class extends oe { + deoptimizeArgumentsOnInteractionAtPath(e, t) { + 2 !== e.type || 1 !== t.length || ci(t[0]) || ce(e) + } + getLiteralValueAtPath(e) { + return 1 === e.length && ci(e[0]) ? void 0 : ne + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return e.length > 1 || 2 === t + } + })(), + ui = new li({ __proto__: null, hasOwnProperty: ii, isPrototypeOf: ii, propertyIsEnumerable: ii, toLocaleString: ni, toString: ni, valueOf: oi }, hi, !0), + di = [ + { key: K, kind: 'init', property: ae }, + { key: 'length', kind: 'init', property: cs } + ], + pi = [new si({ callsArgs: [0], mutatesSelfAsArray: 'deopt-only', returns: null, returnsPrimitive: as })], + fi = [new si({ callsArgs: [0], mutatesSelfAsArray: 'deopt-only', returns: null, returnsPrimitive: cs })], + mi = [new si({ callsArgs: null, mutatesSelfAsArray: !0, returns: () => new li(di, ki), returnsPrimitive: null })], + gi = [new si({ callsArgs: null, mutatesSelfAsArray: 'deopt-only', returns: () => new li(di, ki), returnsPrimitive: null })], + yi = [new si({ callsArgs: [0], mutatesSelfAsArray: 'deopt-only', returns: () => new li(di, ki), returnsPrimitive: null })], + xi = [new si({ callsArgs: null, mutatesSelfAsArray: !0, returns: null, returnsPrimitive: cs })], + Ei = [new si({ callsArgs: null, mutatesSelfAsArray: !0, returns: null, returnsPrimitive: ae })], + bi = [new si({ callsArgs: null, mutatesSelfAsArray: 'deopt-only', returns: null, returnsPrimitive: ae })], + vi = [new si({ callsArgs: [0], mutatesSelfAsArray: 'deopt-only', returns: null, returnsPrimitive: ae })], + Si = [new si({ callsArgs: null, mutatesSelfAsArray: !0, returns: 'self', returnsPrimitive: null })], + Ai = [new si({ callsArgs: [0], mutatesSelfAsArray: !0, returns: 'self', returnsPrimitive: null })], + ki = new li( + { + __proto__: null, + at: bi, + concat: gi, + copyWithin: Si, + entries: gi, + every: pi, + fill: Si, + filter: yi, + find: vi, + findIndex: fi, + findLast: vi, + findLastIndex: fi, + flat: gi, + flatMap: yi, + forEach: vi, + includes: ii, + indexOf: ri, + join: ni, + keys: oi, + lastIndexOf: ri, + map: yi, + pop: Ei, + push: xi, + reduce: vi, + reduceRight: vi, + reverse: Si, + shift: Ei, + slice: gi, + some: pi, + sort: Ai, + splice: mi, + toLocaleString: ni, + toString: ni, + unshift: xi, + values: bi + }, + ui, + !0 + ) +class Ii extends ei { + constructor() { + super(...arguments), (this.objectEntity = null) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + this.getObjectEntity().deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.getObjectEntity().getLiteralValueAtPath(e, t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e, t, s, i) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return this.getObjectEntity().hasEffectsOnInteractionAtPath(e, t, s) + } + applyDeoptimizations() { + this.deoptimized = !0 + let e = !1 + for (let t = 0; t < this.elements.length; t++) { + const s = this.elements[t] + s && (e || s instanceof ti) && ((e = !0), s.deoptimizePath(Q)) + } + this.context.requestTreeshakingPass() + } + getObjectEntity() { + if (null !== this.objectEntity) return this.objectEntity + const e = [{ key: 'length', kind: 'init', property: cs }] + let t = !1 + for (let s = 0; s < this.elements.length; s++) { + const i = this.elements[s] + t || i instanceof ti + ? i && ((t = !0), e.unshift({ key: K, kind: 'init', property: i })) + : i + ? e.push({ key: String(s), kind: 'init', property: i }) + : e.push({ key: String(s), kind: 'init', property: rs }) + } + return (this.objectEntity = new li(e, ki)) + } +} +class wi extends ei { + addExportedVariables(e, t) { + for (const s of this.elements) s?.addExportedVariables(e, t) + } + declare(e) { + const t = [] + for (const s of this.elements) null !== s && t.push(...s.declare(e, ae)) + return t + } + deoptimizePath() { + for (const e of this.elements) e?.deoptimizePath(X) + } + hasEffectsOnInteractionAtPath(e, t, s) { + for (const e of this.elements) if (e?.hasEffectsOnInteractionAtPath(X, t, s)) return !0 + return !1 + } + markDeclarationReached() { + for (const e of this.elements) e?.markDeclarationReached() + } +} +class Pi extends pe { + constructor(e, t, s, i) { + super(e), + (this.init = s), + (this.calledFromTryStatement = !1), + (this.additionalInitializers = null), + (this.expressionsToBeDeoptimized = []), + (this.declarations = t ? [t] : []), + (this.deoptimizationTracker = i.deoptimizationTracker), + (this.module = i.module) + } + addDeclaration(e, t) { + this.declarations.push(e), this.markInitializersForDeoptimization().push(t) + } + consolidateInitializers() { + if (this.additionalInitializers) { + for (const e of this.additionalInitializers) e.deoptimizePath(Q) + this.additionalInitializers = null + } + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.isReassigned ? ce(e) : s.withTrackedEntityAtPath(t, this.init, () => this.init.deoptimizeArgumentsOnInteractionAtPath(e, t, s), void 0) + } + deoptimizePath(e) { + if (!this.isReassigned && !this.deoptimizationTracker.trackEntityAtPathAndGetIfTracked(e, this)) + if (0 === e.length) { + if (!this.isReassigned) { + this.isReassigned = !0 + const e = this.expressionsToBeDeoptimized + this.expressionsToBeDeoptimized = ye + for (const t of e) t.deoptimizeCache() + this.init.deoptimizePath(Q) + } + } else this.init.deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.isReassigned ? ne : t.withTrackedEntityAtPath(e, this.init, () => (this.expressionsToBeDeoptimized.push(s), this.init.getLiteralValueAtPath(e, t, s)), ne) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.isReassigned ? le : s.withTrackedEntityAtPath(e, this.init, () => (this.expressionsToBeDeoptimized.push(i), this.init.getReturnExpressionWhenCalledAtPath(e, t, s, i)), le) + } + hasEffectsOnInteractionAtPath(e, t, s) { + switch (t.type) { + case 0: + return !!this.isReassigned || (!s.accessed.trackEntityAtPathAndGetIfTracked(e, this) && this.init.hasEffectsOnInteractionAtPath(e, t, s)) + case 1: + return !!this.included || (0 !== e.length && (!!this.isReassigned || (!s.assigned.trackEntityAtPathAndGetIfTracked(e, this) && this.init.hasEffectsOnInteractionAtPath(e, t, s)))) + case 2: + return !!this.isReassigned || (!(t.withNew ? s.instantiated : s.called).trackEntityAtPathAndGetIfTracked(e, t.args, this) && this.init.hasEffectsOnInteractionAtPath(e, t, s)) + } + } + include() { + if (!this.included) { + this.included = !0 + for (const e of this.declarations) { + e.included || e.include(ss(), !1) + let t = e.parent + for (; !t.included && ((t.included = !0), t.type !== Ts); ) t = t.parent + } + } + } + includeCallArguments(e, t) { + if (this.isReassigned || e.includedCallArguments.has(this.init)) for (const s of t) s.include(e, !1) + else e.includedCallArguments.add(this.init), this.init.includeCallArguments(e, t), e.includedCallArguments.delete(this.init) + } + markCalledFromTryStatement() { + this.calledFromTryStatement = !0 + } + markInitializersForDeoptimization() { + return null === this.additionalInitializers && ((this.additionalInitializers = [this.init]), (this.init = ae), (this.isReassigned = !0)), this.additionalInitializers + } + mergeDeclarations(e) { + const { declarations: t } = this + for (const s of e.declarations) t.push(s) + const s = this.markInitializersForDeoptimization() + if ((s.push(e.init), e.additionalInitializers)) for (const t of e.additionalInitializers) s.push(t) + } +} +const Ci = ye, + $i = new Set([q]), + Ni = new te(), + _i = new Set([ae]) +class Ri extends Pi { + constructor(e, t, s) { + super(e, t, ae, s), (this.deoptimizationInteractions = []), (this.deoptimizations = new te()), (this.deoptimizedFields = new Set()), (this.entitiesToBeDeoptimized = new Set()) + } + addEntityToBeDeoptimized(e) { + if (e === ae) { + if (!this.entitiesToBeDeoptimized.has(ae)) { + this.entitiesToBeDeoptimized.add(ae) + for (const { interaction: e } of this.deoptimizationInteractions) ce(e) + this.deoptimizationInteractions = Ci + } + } else if (this.deoptimizedFields.has(q)) e.deoptimizePath(Q) + else if (!this.entitiesToBeDeoptimized.has(e)) { + this.entitiesToBeDeoptimized.add(e) + for (const t of this.deoptimizedFields) e.deoptimizePath([t]) + for (const { interaction: t, path: s } of this.deoptimizationInteractions) e.deoptimizeArgumentsOnInteractionAtPath(t, s, se) + } + } + deoptimizeArgumentsOnInteractionAtPath(e, t) { + if ( + t.length >= 2 || + this.entitiesToBeDeoptimized.has(ae) || + this.deoptimizationInteractions.length >= 20 || + (1 === t.length && (this.deoptimizedFields.has(q) || (2 === e.type && this.deoptimizedFields.has(t[0])))) + ) + ce(e) + else if (!this.deoptimizations.trackEntityAtPathAndGetIfTracked(t, e.args)) { + for (const s of this.entitiesToBeDeoptimized) s.deoptimizeArgumentsOnInteractionAtPath(e, t, se) + this.entitiesToBeDeoptimized.has(ae) || this.deoptimizationInteractions.push({ interaction: e, path: t }) + } + } + deoptimizePath(e) { + if (0 === e.length || this.deoptimizedFields.has(q)) return + const t = e[0] + if (!this.deoptimizedFields.has(t)) { + this.deoptimizedFields.add(t) + for (const e of this.entitiesToBeDeoptimized) e.deoptimizePath([t]) + t === q && ((this.deoptimizationInteractions = Ci), (this.deoptimizations = Ni), (this.deoptimizedFields = $i), (this.entitiesToBeDeoptimized = _i)) + } + } + getReturnExpressionWhenCalledAtPath(e) { + return 0 === e.length ? this.deoptimizePath(Q) : this.deoptimizedFields.has(e[0]) || this.deoptimizePath([e[0]]), le + } +} +const Mi = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$', + Oi = 64 +function Di(e) { + let t = '' + do { + const s = e % Oi + ;(e = (e / Oi) | 0), (t = Mi[s] + t) + } while (0 !== e) + return t +} +function Li(e, t, s) { + let i = e, + n = 1 + for (; t.has(i) || Ee.has(i) || s?.has(i); ) i = `${e}$${Di(n++)}` + return t.add(i), i +} +let Ti = class { + constructor() { + ;(this.children = []), (this.variables = new Map()) + } + addDeclaration(e, t, s, i) { + const n = e.name + let r = this.variables.get(n) + return r ? r.addDeclaration(e, s) : ((r = new Pi(e.name, e, s || rs, t)), this.variables.set(n, r)), r + } + contains(e) { + return this.variables.has(e) + } + findVariable(e) { + throw new Error('Internal Error: findVariable needs to be implemented by a subclass') + } +} +class Vi extends Ti { + constructor(e) { + super(), (this.accessedOutsideVariables = new Map()), (this.parent = e), e.children.push(this) + } + addAccessedDynamicImport(e) { + ;(this.accessedDynamicImports || (this.accessedDynamicImports = new Set())).add(e), this.parent instanceof Vi && this.parent.addAccessedDynamicImport(e) + } + addAccessedGlobals(e, t) { + const s = t.get(this) || new Set() + for (const t of e) s.add(t) + t.set(this, s), this.parent instanceof Vi && this.parent.addAccessedGlobals(e, t) + } + addNamespaceMemberAccess(e, t) { + this.accessedOutsideVariables.set(e, t), this.parent.addNamespaceMemberAccess(e, t) + } + addReturnExpression(e) { + this.parent instanceof Vi && this.parent.addReturnExpression(e) + } + addUsedOutsideNames(e, t, s, i) { + for (const i of this.accessedOutsideVariables.values()) i.included && (e.add(i.getBaseVariableName()), 'system' === t && s.has(i) && e.add('exports')) + const n = i.get(this) + if (n) for (const t of n) e.add(t) + } + contains(e) { + return this.variables.has(e) || this.parent.contains(e) + } + deconflict(e, t, s) { + const i = new Set() + if ((this.addUsedOutsideNames(i, e, t, s), this.accessedDynamicImports)) for (const e of this.accessedDynamicImports) e.inlineNamespace && i.add(e.inlineNamespace.getBaseVariableName()) + for (const [e, t] of this.variables) (t.included || t.alwaysRendered) && t.setRenderNames(null, Li(e, i, t.forbiddenNames)) + for (const i of this.children) i.deconflict(e, t, s) + } + findLexicalBoundary() { + return this.parent.findLexicalBoundary() + } + findVariable(e) { + const t = this.variables.get(e) || this.accessedOutsideVariables.get(e) + if (t) return t + const s = this.parent.findVariable(e) + return this.accessedOutsideVariables.set(e, s), s + } +} +class Bi extends Vi { + constructor(e, t) { + super(e), (this.parameters = []), (this.hasRest = !1), (this.context = t), (this.hoistedBodyVarScope = new Vi(this)) + } + addParameterDeclaration(e) { + const { name: t } = e, + s = new Ri(t, e, this.context), + i = this.hoistedBodyVarScope.variables.get(t) + return i && (this.hoistedBodyVarScope.variables.set(t, s), s.mergeDeclarations(i)), this.variables.set(t, s), s + } + addParameterVariables(e, t) { + this.parameters = e + for (const t of e) for (const e of t) e.alwaysRendered = !0 + this.hasRest = t + } + includeCallArguments(e, t) { + let s = !1, + i = !1 + const n = this.hasRest && this.parameters[this.parameters.length - 1] + for (const s of t) + if (s instanceof ti) { + for (const s of t) s.include(e, !1) + break + } + for (let r = t.length - 1; r >= 0; r--) { + const o = this.parameters[r] || n, + a = t[r] + if (o) + if (((s = !1), 0 === o.length)) i = !0 + else for (const e of o) e.included && (i = !0), e.calledFromTryStatement && (s = !0) + !i && a.shouldBeIncluded(e) && (i = !0), i && a.include(e, s) + } + } +} +class zi extends Bi { + constructor() { + super(...arguments), (this.returnExpression = null), (this.returnExpressions = []) + } + addReturnExpression(e) { + this.returnExpressions.push(e) + } + getReturnExpression() { + return null === this.returnExpression && this.updateReturnExpression(), this.returnExpression + } + updateReturnExpression() { + if (1 === this.returnExpressions.length) this.returnExpression = this.returnExpressions[0] + else { + this.returnExpression = ae + for (const e of this.returnExpressions) e.deoptimizePath(Q) + } + } +} +function Fi(e, t) { + if ('MemberExpression' === e.type) return !e.computed && Fi(e.object, e) + if ('Identifier' === e.type) { + if (!t) return !0 + switch (t.type) { + case 'MemberExpression': + return t.computed || e === t.object + case 'MethodDefinition': + return t.computed + case 'PropertyDefinition': + case 'Property': + return t.computed || e === t.value + case 'ExportSpecifier': + case 'ImportSpecifier': + return e === t.local + case 'LabeledStatement': + case 'BreakStatement': + case 'ContinueStatement': + return !1 + default: + return !0 + } + } + return !1 +} +const ji = Symbol('PureFunction'), + Ui = () => {}, + Gi = Symbol('Value Properties'), + Wi = () => re, + qi = () => !1, + Hi = () => !0, + Ki = { deoptimizeArgumentsOnCall: Ui, getLiteralValue: Wi, hasEffectsWhenCalled: qi }, + Yi = { deoptimizeArgumentsOnCall: Ui, getLiteralValue: Wi, hasEffectsWhenCalled: Hi }, + Xi = { __proto__: null, [Gi]: Yi }, + Qi = { __proto__: null, [Gi]: Ki }, + Zi = { + __proto__: null, + [Gi]: { + deoptimizeArgumentsOnCall: Ui, + getLiteralValue: Wi, + hasEffectsWhenCalled({ args: e }, t) { + const [s, i] = e + return !(i instanceof oe) || i.hasEffectsOnInteractionAtPath(Q, he, t) + } + } + }, + Ji = { + __proto__: null, + [Gi]: { + deoptimizeArgumentsOnCall({ args: [, e] }) { + e?.deoptimizePath(Q) + }, + getLiteralValue: Wi, + hasEffectsWhenCalled: ({ args: e }, t) => e.length <= 1 || e[1].hasEffectsOnInteractionAtPath(Z, ue, t) + } + }, + en = { __proto__: null, [Gi]: Yi, prototype: Xi }, + tn = { __proto__: null, [Gi]: Ki, prototype: Xi }, + sn = { __proto__: null, [Gi]: { deoptimizeArgumentsOnCall: Ui, getLiteralValue: Wi, hasEffectsWhenCalled: ({ args: e }) => e.length > 1 && !(e[1] instanceof Ii) }, prototype: Xi }, + nn = { __proto__: null, [Gi]: Ki, from: Xi, of: Qi, prototype: Xi }, + rn = { __proto__: null, [Gi]: Ki, supportedLocalesOf: tn }, + on = { + global: Xi, + globalThis: Xi, + self: Xi, + window: Xi, + __proto__: null, + [Gi]: Yi, + Array: { __proto__: null, [Gi]: Yi, from: Xi, isArray: Qi, of: Qi, prototype: Xi }, + ArrayBuffer: { __proto__: null, [Gi]: Ki, isView: Qi, prototype: Xi }, + Atomics: Xi, + BigInt: en, + BigInt64Array: en, + BigUint64Array: en, + Boolean: tn, + constructor: en, + DataView: tn, + Date: { __proto__: null, [Gi]: Ki, now: Qi, parse: Qi, prototype: Xi, UTC: Qi }, + decodeURI: Qi, + decodeURIComponent: Qi, + encodeURI: Qi, + encodeURIComponent: Qi, + Error: tn, + escape: Qi, + eval: Xi, + EvalError: tn, + Float32Array: nn, + Float64Array: nn, + Function: en, + hasOwnProperty: Xi, + Infinity: Xi, + Int16Array: nn, + Int32Array: nn, + Int8Array: nn, + isFinite: Qi, + isNaN: Qi, + isPrototypeOf: Xi, + JSON: Xi, + Map: sn, + Math: { + __proto__: null, + [Gi]: Yi, + abs: Qi, + acos: Qi, + acosh: Qi, + asin: Qi, + asinh: Qi, + atan: Qi, + atan2: Qi, + atanh: Qi, + cbrt: Qi, + ceil: Qi, + clz32: Qi, + cos: Qi, + cosh: Qi, + exp: Qi, + expm1: Qi, + floor: Qi, + fround: Qi, + hypot: Qi, + imul: Qi, + log: Qi, + log10: Qi, + log1p: Qi, + log2: Qi, + max: Qi, + min: Qi, + pow: Qi, + random: Qi, + round: Qi, + sign: Qi, + sin: Qi, + sinh: Qi, + sqrt: Qi, + tan: Qi, + tanh: Qi, + trunc: Qi + }, + NaN: Xi, + Number: { __proto__: null, [Gi]: Ki, isFinite: Qi, isInteger: Qi, isNaN: Qi, isSafeInteger: Qi, parseFloat: Qi, parseInt: Qi, prototype: Xi }, + Object: { + __proto__: null, + [Gi]: Ki, + create: Qi, + defineProperty: Ji, + defineProperties: Ji, + freeze: Ji, + getOwnPropertyDescriptor: Qi, + getOwnPropertyDescriptors: Qi, + getOwnPropertyNames: Qi, + getOwnPropertySymbols: Qi, + getPrototypeOf: Qi, + hasOwn: Qi, + is: Qi, + isExtensible: Qi, + isFrozen: Qi, + isSealed: Qi, + keys: Qi, + fromEntries: Xi, + entries: Zi, + values: Zi, + prototype: Xi + }, + parseFloat: Qi, + parseInt: Qi, + Promise: { __proto__: null, [Gi]: Yi, all: Xi, allSettled: Xi, any: Xi, prototype: Xi, race: Xi, reject: Xi, resolve: Xi }, + propertyIsEnumerable: Xi, + Proxy: Xi, + RangeError: tn, + ReferenceError: tn, + Reflect: Xi, + RegExp: tn, + Set: sn, + SharedArrayBuffer: en, + String: { __proto__: null, [Gi]: Ki, fromCharCode: Qi, fromCodePoint: Qi, prototype: Xi, raw: Qi }, + Symbol: { + __proto__: null, + [Gi]: Ki, + for: Qi, + keyFor: Qi, + prototype: Xi, + toStringTag: { __proto__: null, [Gi]: { deoptimizeArgumentsOnCall: Ui, getLiteralValue: () => Y, hasEffectsWhenCalled: Hi } } + }, + SyntaxError: tn, + toLocaleString: Xi, + toString: Xi, + TypeError: tn, + Uint16Array: nn, + Uint32Array: nn, + Uint8Array: nn, + Uint8ClampedArray: nn, + unescape: Qi, + URIError: tn, + valueOf: Xi, + WeakMap: sn, + WeakSet: sn, + clearInterval: en, + clearTimeout: en, + console: { + __proto__: null, + [Gi]: Yi, + assert: en, + clear: en, + count: en, + countReset: en, + debug: en, + dir: en, + dirxml: en, + error: en, + exception: en, + group: en, + groupCollapsed: en, + groupEnd: en, + info: en, + log: en, + table: en, + time: en, + timeEnd: en, + timeLog: en, + trace: en, + warn: en + }, + Intl: { __proto__: null, [Gi]: Yi, Collator: rn, DateTimeFormat: rn, DisplayNames: rn, ListFormat: rn, Locale: rn, NumberFormat: rn, PluralRules: rn, RelativeTimeFormat: rn, Segmenter: rn }, + setInterval: en, + setTimeout: en, + TextDecoder: en, + TextEncoder: en, + URL: { __proto__: null, [Gi]: Yi, prototype: Xi, canParse: Qi }, + URLSearchParams: en, + AbortController: en, + AbortSignal: en, + addEventListener: Xi, + alert: Xi, + AnalyserNode: en, + Animation: en, + AnimationEvent: en, + applicationCache: Xi, + ApplicationCache: en, + ApplicationCacheErrorEvent: en, + atob: Xi, + Attr: en, + Audio: en, + AudioBuffer: en, + AudioBufferSourceNode: en, + AudioContext: en, + AudioDestinationNode: en, + AudioListener: en, + AudioNode: en, + AudioParam: en, + AudioProcessingEvent: en, + AudioScheduledSourceNode: en, + AudioWorkletNode: en, + BarProp: en, + BaseAudioContext: en, + BatteryManager: en, + BeforeUnloadEvent: en, + BiquadFilterNode: en, + Blob: en, + BlobEvent: en, + blur: Xi, + BroadcastChannel: en, + btoa: Xi, + ByteLengthQueuingStrategy: en, + Cache: en, + caches: Xi, + CacheStorage: en, + cancelAnimationFrame: Xi, + cancelIdleCallback: Xi, + CanvasCaptureMediaStreamTrack: en, + CanvasGradient: en, + CanvasPattern: en, + CanvasRenderingContext2D: en, + ChannelMergerNode: en, + ChannelSplitterNode: en, + CharacterData: en, + clientInformation: Xi, + ClipboardEvent: en, + close: Xi, + closed: Xi, + CloseEvent: en, + Comment: en, + CompositionEvent: en, + confirm: Xi, + ConstantSourceNode: en, + ConvolverNode: en, + CountQueuingStrategy: en, + createImageBitmap: Xi, + Credential: en, + CredentialsContainer: en, + crypto: Xi, + Crypto: en, + CryptoKey: en, + CSS: en, + CSSConditionRule: en, + CSSFontFaceRule: en, + CSSGroupingRule: en, + CSSImportRule: en, + CSSKeyframeRule: en, + CSSKeyframesRule: en, + CSSMediaRule: en, + CSSNamespaceRule: en, + CSSPageRule: en, + CSSRule: en, + CSSRuleList: en, + CSSStyleDeclaration: en, + CSSStyleRule: en, + CSSStyleSheet: en, + CSSSupportsRule: en, + CustomElementRegistry: en, + customElements: Xi, + CustomEvent: { + __proto__: null, + [Gi]: { + deoptimizeArgumentsOnCall({ args: e }) { + e[2]?.deoptimizePath(['detail']) + }, + getLiteralValue: Wi, + hasEffectsWhenCalled: qi + }, + prototype: Xi + }, + DataTransfer: en, + DataTransferItem: en, + DataTransferItemList: en, + defaultstatus: Xi, + defaultStatus: Xi, + DelayNode: en, + DeviceMotionEvent: en, + DeviceOrientationEvent: en, + devicePixelRatio: Xi, + dispatchEvent: Xi, + document: Xi, + Document: en, + DocumentFragment: en, + DocumentType: en, + DOMError: en, + DOMException: en, + DOMImplementation: en, + DOMMatrix: en, + DOMMatrixReadOnly: en, + DOMParser: en, + DOMPoint: en, + DOMPointReadOnly: en, + DOMQuad: en, + DOMRect: en, + DOMRectReadOnly: en, + DOMStringList: en, + DOMStringMap: en, + DOMTokenList: en, + DragEvent: en, + DynamicsCompressorNode: en, + Element: en, + ErrorEvent: en, + Event: en, + EventSource: en, + EventTarget: en, + external: Xi, + fetch: Xi, + File: en, + FileList: en, + FileReader: en, + find: Xi, + focus: Xi, + FocusEvent: en, + FontFace: en, + FontFaceSetLoadEvent: en, + FormData: en, + frames: Xi, + GainNode: en, + Gamepad: en, + GamepadButton: en, + GamepadEvent: en, + getComputedStyle: Xi, + getSelection: Xi, + HashChangeEvent: en, + Headers: en, + history: Xi, + History: en, + HTMLAllCollection: en, + HTMLAnchorElement: en, + HTMLAreaElement: en, + HTMLAudioElement: en, + HTMLBaseElement: en, + HTMLBodyElement: en, + HTMLBRElement: en, + HTMLButtonElement: en, + HTMLCanvasElement: en, + HTMLCollection: en, + HTMLContentElement: en, + HTMLDataElement: en, + HTMLDataListElement: en, + HTMLDetailsElement: en, + HTMLDialogElement: en, + HTMLDirectoryElement: en, + HTMLDivElement: en, + HTMLDListElement: en, + HTMLDocument: en, + HTMLElement: en, + HTMLEmbedElement: en, + HTMLFieldSetElement: en, + HTMLFontElement: en, + HTMLFormControlsCollection: en, + HTMLFormElement: en, + HTMLFrameElement: en, + HTMLFrameSetElement: en, + HTMLHeadElement: en, + HTMLHeadingElement: en, + HTMLHRElement: en, + HTMLHtmlElement: en, + HTMLIFrameElement: en, + HTMLImageElement: en, + HTMLInputElement: en, + HTMLLabelElement: en, + HTMLLegendElement: en, + HTMLLIElement: en, + HTMLLinkElement: en, + HTMLMapElement: en, + HTMLMarqueeElement: en, + HTMLMediaElement: en, + HTMLMenuElement: en, + HTMLMetaElement: en, + HTMLMeterElement: en, + HTMLModElement: en, + HTMLObjectElement: en, + HTMLOListElement: en, + HTMLOptGroupElement: en, + HTMLOptionElement: en, + HTMLOptionsCollection: en, + HTMLOutputElement: en, + HTMLParagraphElement: en, + HTMLParamElement: en, + HTMLPictureElement: en, + HTMLPreElement: en, + HTMLProgressElement: en, + HTMLQuoteElement: en, + HTMLScriptElement: en, + HTMLSelectElement: en, + HTMLShadowElement: en, + HTMLSlotElement: en, + HTMLSourceElement: en, + HTMLSpanElement: en, + HTMLStyleElement: en, + HTMLTableCaptionElement: en, + HTMLTableCellElement: en, + HTMLTableColElement: en, + HTMLTableElement: en, + HTMLTableRowElement: en, + HTMLTableSectionElement: en, + HTMLTemplateElement: en, + HTMLTextAreaElement: en, + HTMLTimeElement: en, + HTMLTitleElement: en, + HTMLTrackElement: en, + HTMLUListElement: en, + HTMLUnknownElement: en, + HTMLVideoElement: en, + IDBCursor: en, + IDBCursorWithValue: en, + IDBDatabase: en, + IDBFactory: en, + IDBIndex: en, + IDBKeyRange: en, + IDBObjectStore: en, + IDBOpenDBRequest: en, + IDBRequest: en, + IDBTransaction: en, + IDBVersionChangeEvent: en, + IdleDeadline: en, + IIRFilterNode: en, + Image: en, + ImageBitmap: en, + ImageBitmapRenderingContext: en, + ImageCapture: en, + ImageData: en, + indexedDB: Xi, + innerHeight: Xi, + innerWidth: Xi, + InputEvent: en, + IntersectionObserver: en, + IntersectionObserverEntry: en, + isSecureContext: Xi, + KeyboardEvent: en, + KeyframeEffect: en, + length: Xi, + localStorage: Xi, + location: Xi, + Location: en, + locationbar: Xi, + matchMedia: Xi, + MediaDeviceInfo: en, + MediaDevices: en, + MediaElementAudioSourceNode: en, + MediaEncryptedEvent: en, + MediaError: en, + MediaKeyMessageEvent: en, + MediaKeySession: en, + MediaKeyStatusMap: en, + MediaKeySystemAccess: en, + MediaList: en, + MediaQueryList: en, + MediaQueryListEvent: en, + MediaRecorder: en, + MediaSettingsRange: en, + MediaSource: en, + MediaStream: en, + MediaStreamAudioDestinationNode: en, + MediaStreamAudioSourceNode: en, + MediaStreamEvent: en, + MediaStreamTrack: en, + MediaStreamTrackEvent: en, + menubar: Xi, + MessageChannel: en, + MessageEvent: en, + MessagePort: en, + MIDIAccess: en, + MIDIConnectionEvent: en, + MIDIInput: en, + MIDIInputMap: en, + MIDIMessageEvent: en, + MIDIOutput: en, + MIDIOutputMap: en, + MIDIPort: en, + MimeType: en, + MimeTypeArray: en, + MouseEvent: en, + moveBy: Xi, + moveTo: Xi, + MutationEvent: en, + MutationObserver: en, + MutationRecord: en, + name: Xi, + NamedNodeMap: en, + NavigationPreloadManager: en, + navigator: Xi, + Navigator: en, + NetworkInformation: en, + Node: en, + NodeFilter: Xi, + NodeIterator: en, + NodeList: en, + Notification: en, + OfflineAudioCompletionEvent: en, + OfflineAudioContext: en, + offscreenBuffering: Xi, + OffscreenCanvas: en, + open: Xi, + openDatabase: Xi, + Option: en, + origin: Xi, + OscillatorNode: en, + outerHeight: Xi, + outerWidth: Xi, + PageTransitionEvent: en, + pageXOffset: Xi, + pageYOffset: Xi, + PannerNode: en, + parent: Xi, + Path2D: en, + PaymentAddress: en, + PaymentRequest: en, + PaymentRequestUpdateEvent: en, + PaymentResponse: en, + performance: Xi, + Performance: en, + PerformanceEntry: en, + PerformanceLongTaskTiming: en, + PerformanceMark: en, + PerformanceMeasure: en, + PerformanceNavigation: en, + PerformanceNavigationTiming: en, + PerformanceObserver: en, + PerformanceObserverEntryList: en, + PerformancePaintTiming: en, + PerformanceResourceTiming: en, + PerformanceTiming: en, + PeriodicWave: en, + Permissions: en, + PermissionStatus: en, + personalbar: Xi, + PhotoCapabilities: en, + Plugin: en, + PluginArray: en, + PointerEvent: en, + PopStateEvent: en, + postMessage: Xi, + Presentation: en, + PresentationAvailability: en, + PresentationConnection: en, + PresentationConnectionAvailableEvent: en, + PresentationConnectionCloseEvent: en, + PresentationConnectionList: en, + PresentationReceiver: en, + PresentationRequest: en, + print: Xi, + ProcessingInstruction: en, + ProgressEvent: en, + PromiseRejectionEvent: en, + prompt: Xi, + PushManager: en, + PushSubscription: en, + PushSubscriptionOptions: en, + queueMicrotask: Xi, + RadioNodeList: en, + Range: en, + ReadableStream: en, + RemotePlayback: en, + removeEventListener: Xi, + Request: en, + requestAnimationFrame: Xi, + requestIdleCallback: Xi, + resizeBy: Xi, + ResizeObserver: en, + ResizeObserverEntry: en, + resizeTo: Xi, + Response: en, + RTCCertificate: en, + RTCDataChannel: en, + RTCDataChannelEvent: en, + RTCDtlsTransport: en, + RTCIceCandidate: en, + RTCIceTransport: en, + RTCPeerConnection: en, + RTCPeerConnectionIceEvent: en, + RTCRtpReceiver: en, + RTCRtpSender: en, + RTCSctpTransport: en, + RTCSessionDescription: en, + RTCStatsReport: en, + RTCTrackEvent: en, + screen: Xi, + Screen: en, + screenLeft: Xi, + ScreenOrientation: en, + screenTop: Xi, + screenX: Xi, + screenY: Xi, + ScriptProcessorNode: en, + scroll: Xi, + scrollbars: Xi, + scrollBy: Xi, + scrollTo: Xi, + scrollX: Xi, + scrollY: Xi, + SecurityPolicyViolationEvent: en, + Selection: en, + ServiceWorker: en, + ServiceWorkerContainer: en, + ServiceWorkerRegistration: en, + sessionStorage: Xi, + ShadowRoot: en, + SharedWorker: en, + SourceBuffer: en, + SourceBufferList: en, + speechSynthesis: Xi, + SpeechSynthesisEvent: en, + SpeechSynthesisUtterance: en, + StaticRange: en, + status: Xi, + statusbar: Xi, + StereoPannerNode: en, + stop: Xi, + Storage: en, + StorageEvent: en, + StorageManager: en, + styleMedia: Xi, + StyleSheet: en, + StyleSheetList: en, + SubtleCrypto: en, + SVGAElement: en, + SVGAngle: en, + SVGAnimatedAngle: en, + SVGAnimatedBoolean: en, + SVGAnimatedEnumeration: en, + SVGAnimatedInteger: en, + SVGAnimatedLength: en, + SVGAnimatedLengthList: en, + SVGAnimatedNumber: en, + SVGAnimatedNumberList: en, + SVGAnimatedPreserveAspectRatio: en, + SVGAnimatedRect: en, + SVGAnimatedString: en, + SVGAnimatedTransformList: en, + SVGAnimateElement: en, + SVGAnimateMotionElement: en, + SVGAnimateTransformElement: en, + SVGAnimationElement: en, + SVGCircleElement: en, + SVGClipPathElement: en, + SVGComponentTransferFunctionElement: en, + SVGDefsElement: en, + SVGDescElement: en, + SVGDiscardElement: en, + SVGElement: en, + SVGEllipseElement: en, + SVGFEBlendElement: en, + SVGFEColorMatrixElement: en, + SVGFEComponentTransferElement: en, + SVGFECompositeElement: en, + SVGFEConvolveMatrixElement: en, + SVGFEDiffuseLightingElement: en, + SVGFEDisplacementMapElement: en, + SVGFEDistantLightElement: en, + SVGFEDropShadowElement: en, + SVGFEFloodElement: en, + SVGFEFuncAElement: en, + SVGFEFuncBElement: en, + SVGFEFuncGElement: en, + SVGFEFuncRElement: en, + SVGFEGaussianBlurElement: en, + SVGFEImageElement: en, + SVGFEMergeElement: en, + SVGFEMergeNodeElement: en, + SVGFEMorphologyElement: en, + SVGFEOffsetElement: en, + SVGFEPointLightElement: en, + SVGFESpecularLightingElement: en, + SVGFESpotLightElement: en, + SVGFETileElement: en, + SVGFETurbulenceElement: en, + SVGFilterElement: en, + SVGForeignObjectElement: en, + SVGGElement: en, + SVGGeometryElement: en, + SVGGradientElement: en, + SVGGraphicsElement: en, + SVGImageElement: en, + SVGLength: en, + SVGLengthList: en, + SVGLinearGradientElement: en, + SVGLineElement: en, + SVGMarkerElement: en, + SVGMaskElement: en, + SVGMatrix: en, + SVGMetadataElement: en, + SVGMPathElement: en, + SVGNumber: en, + SVGNumberList: en, + SVGPathElement: en, + SVGPatternElement: en, + SVGPoint: en, + SVGPointList: en, + SVGPolygonElement: en, + SVGPolylineElement: en, + SVGPreserveAspectRatio: en, + SVGRadialGradientElement: en, + SVGRect: en, + SVGRectElement: en, + SVGScriptElement: en, + SVGSetElement: en, + SVGStopElement: en, + SVGStringList: en, + SVGStyleElement: en, + SVGSVGElement: en, + SVGSwitchElement: en, + SVGSymbolElement: en, + SVGTextContentElement: en, + SVGTextElement: en, + SVGTextPathElement: en, + SVGTextPositioningElement: en, + SVGTitleElement: en, + SVGTransform: en, + SVGTransformList: en, + SVGTSpanElement: en, + SVGUnitTypes: en, + SVGUseElement: en, + SVGViewElement: en, + TaskAttributionTiming: en, + Text: en, + TextEvent: en, + TextMetrics: en, + TextTrack: en, + TextTrackCue: en, + TextTrackCueList: en, + TextTrackList: en, + TimeRanges: en, + toolbar: Xi, + top: Xi, + Touch: en, + TouchEvent: en, + TouchList: en, + TrackEvent: en, + TransitionEvent: en, + TreeWalker: en, + UIEvent: en, + ValidityState: en, + visualViewport: Xi, + VisualViewport: en, + VTTCue: en, + WaveShaperNode: en, + WebAssembly: Xi, + WebGL2RenderingContext: en, + WebGLActiveInfo: en, + WebGLBuffer: en, + WebGLContextEvent: en, + WebGLFramebuffer: en, + WebGLProgram: en, + WebGLQuery: en, + WebGLRenderbuffer: en, + WebGLRenderingContext: en, + WebGLSampler: en, + WebGLShader: en, + WebGLShaderPrecisionFormat: en, + WebGLSync: en, + WebGLTexture: en, + WebGLTransformFeedback: en, + WebGLUniformLocation: en, + WebGLVertexArrayObject: en, + WebSocket: en, + WheelEvent: en, + Window: en, + Worker: en, + WritableStream: en, + XMLDocument: en, + XMLHttpRequest: en, + XMLHttpRequestEventTarget: en, + XMLHttpRequestUpload: en, + XMLSerializer: en, + XPathEvaluator: en, + XPathExpression: en, + XPathResult: en, + XSLTProcessor: en + } +for (const e of ['window', 'global', 'self', 'globalThis']) on[e] = on +function an(e) { + let t = on + for (const s of e) { + if ('string' != typeof s) return null + if (((t = t[s]), !t)) return null + } + return t[Gi] +} +class ln extends pe { + constructor() { + super(...arguments), (this.isReassigned = !0) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + switch (e.type) { + case 0: + case 1: + return void (an([this.name, ...t].slice(0, -1)) || super.deoptimizeArgumentsOnInteractionAtPath(e, t, s)) + case 2: { + const i = an([this.name, ...t]) + return void (i ? i.deoptimizeArgumentsOnCall(e) : super.deoptimizeArgumentsOnInteractionAtPath(e, t, s)) + } + } + } + getLiteralValueAtPath(e, t, s) { + const i = an([this.name, ...e]) + return i ? i.getLiteralValue() : ne + } + hasEffectsOnInteractionAtPath(e, t, s) { + switch (t.type) { + case 0: + return 0 === e.length ? 'undefined' !== this.name && !an([this.name]) : !an([this.name, ...e].slice(0, -1)) + case 1: + return !0 + case 2: { + const i = an([this.name, ...e]) + return !i || i.hasEffectsWhenCalled(t, s) + } + } + } +} +const cn = { __proto__: null, class: !0, const: !0, let: !0, var: !0 } +class hn extends ei { + constructor() { + super(...arguments), (this.variable = null), (this.isTDZAccess = null) + } + addExportedVariables(e, t) { + t.has(this.variable) && e.push(this.variable) + } + bind() { + !this.variable && Fi(this, this.parent) && ((this.variable = this.scope.findVariable(this.name)), this.variable.addReference(this)) + } + declare(e, t) { + let s + const { treeshake: i } = this.context.options + switch (e) { + case 'var': + ;(s = this.scope.addDeclaration(this, this.context, t, !0)), i && i.correctVarValueBeforeDeclaration && s.markInitializersForDeoptimization() + break + case 'function': + case 'let': + case 'const': + case 'class': + s = this.scope.addDeclaration(this, this.context, t, !1) + break + case 'parameter': + s = this.scope.addParameterDeclaration(this) + break + default: + throw new Error(`Internal Error: Unexpected identifier kind ${e}.`) + } + return (s.kind = e), [(this.variable = s)] + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.variable.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + 0 !== e.length || this.scope.contains(this.name) || this.disallowImportReassignment(), this.variable?.deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.getVariableRespectingTDZ().getLiteralValueAtPath(e, t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + const [n, r] = this.getVariableRespectingTDZ().getReturnExpressionWhenCalledAtPath(e, t, s, i) + return [n, r || this.isPureFunction(e)] + } + hasEffects(e) { + return ( + this.deoptimized || this.applyDeoptimizations(), + !(!this.isPossibleTDZ() || 'var' === this.variable.kind) || + (this.context.options.treeshake.unknownGlobalSideEffects && this.variable instanceof ln && !this.isPureFunction(X) && this.variable.hasEffectsOnInteractionAtPath(X, he, e)) + ) + } + hasEffectsOnInteractionAtPath(e, t, s) { + switch (t.type) { + case 0: + return null !== this.variable && !this.isPureFunction(e) && this.getVariableRespectingTDZ().hasEffectsOnInteractionAtPath(e, t, s) + case 1: + return (e.length > 0 ? this.getVariableRespectingTDZ() : this.variable).hasEffectsOnInteractionAtPath(e, t, s) + case 2: + return !this.isPureFunction(e) && this.getVariableRespectingTDZ().hasEffectsOnInteractionAtPath(e, t, s) + } + } + include() { + this.deoptimized || this.applyDeoptimizations(), this.included || ((this.included = !0), null !== this.variable && this.context.includeVariableInModule(this.variable)) + } + includeCallArguments(e, t) { + this.variable.includeCallArguments(e, t) + } + isPossibleTDZ() { + if (null !== this.isTDZAccess) return this.isTDZAccess + if (!(this.variable instanceof Pi && this.variable.kind && this.variable.kind in cn && this.variable.module === this.context.module)) return (this.isTDZAccess = !1) + let e + return this.variable.declarations && 1 === this.variable.declarations.length && (e = this.variable.declarations[0]) && this.start < e.start && un(this) === un(e) + ? (this.isTDZAccess = !0) + : this.variable.initReached + ? (this.isTDZAccess = !1) + : (this.isTDZAccess = !0) + } + markDeclarationReached() { + this.variable.initReached = !0 + } + render(e, { snippets: { getPropertyAccess: t }, useOriginalName: s }, { renderedParentType: i, isCalleeOfRenderedParent: n, isShorthandProperty: r } = me) { + if (this.variable) { + const o = this.variable.getName(t, s) + o !== this.name && (e.overwrite(this.start, this.end, o, { contentOnly: !0, storeName: !0 }), r && e.prependRight(this.start, `${this.name}: `)), + 'eval' === o && i === Ps && n && e.appendRight(this.start, '0, ') + } + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.variable instanceof Pi && (this.variable.consolidateInitializers(), this.context.requestTreeshakingPass()) + } + disallowImportReassignment() { + return this.context.error(Vt(this.name, this.context.module.id), this.start) + } + getVariableRespectingTDZ() { + return this.isPossibleTDZ() ? ae : this.variable + } + isPureFunction(e) { + let t = this.context.manualPureFunctions[this.name] + for (const s of e) { + if (!t) return !1 + if (t[ji]) return !0 + t = t[s] + } + return t?.[ji] + } +} +function un(e) { + for (; e && !/^Program|Function/.test(e.type); ) e = e.parent + return e +} +function dn(e, t, s, i) { + if ((t.remove(s, i), e.annotations)) + for (const i of e.annotations) { + if (!(i.start < s)) return + t.remove(i.start, i.end) + } +} +function pn(e, t) { + if ((e.annotations || e.parent.type !== Rs || (e = e.parent), e.annotations)) for (const s of e.annotations) t.remove(s.start, s.end) +} +const fn = { isNoStatement: !0 } +function mn(e, t, s = 0) { + let i, n + for (i = e.indexOf(t, s); ; ) { + if (-1 === (s = e.indexOf('/', s)) || s >= i) return i + ;(n = e.charCodeAt(++s)), ++s, (s = 47 === n ? e.indexOf('\n', s) + 1 : e.indexOf('*/', s) + 2) > i && (i = e.indexOf(t, s)) + } +} +const gn = /\S/g +function yn(e, t) { + gn.lastIndex = t + return gn.exec(e).index +} +function xn(e) { + let t, + s, + i = 0 + for (t = e.indexOf('\n', i); ; ) { + if (((i = e.indexOf('/', i)), -1 === i || i > t)) return [t, t + 1] + if (((s = e.charCodeAt(i + 1)), 47 === s)) return [i, t + 1] + ;(i = e.indexOf('*/', i + 3) + 2), i > t && (t = e.indexOf('\n', i)) + } +} +function En(e, t, s, i, n) { + let r, + o, + a, + l, + c = e[0], + h = !c.included || c.needsBoundaries + h && (l = s + xn(t.original.slice(s, c.start))[1]) + for (let s = 1; s <= e.length; s++) + (r = c), + (o = l), + (a = h), + (c = e[s]), + (h = void 0 !== c && (!c.included || c.needsBoundaries)), + a || h ? ((l = r.end + xn(t.original.slice(r.end, void 0 === c ? i : c.start))[1]), r.included ? (a ? r.render(t, n, { end: l, start: o }) : r.render(t, n)) : dn(r, t, o, l)) : r.render(t, n) +} +function bn(e, t, s, i) { + const n = [] + let r, + o, + a, + l, + c = s - 1 + for (const i of e) { + for ( + void 0 !== r && (c = r.end + mn(t.original.slice(r.end, i.start), ',')), o = a = c + 1 + xn(t.original.slice(c + 1, i.start))[1]; + (l = t.original.charCodeAt(o)), 32 === l || 9 === l || 10 === l || 13 === l; + + ) + o++ + void 0 !== r && n.push({ contentEnd: a, end: o, node: r, separator: c, start: s }), (r = i), (s = o) + } + return n.push({ contentEnd: i, end: i, node: r, separator: null, start: s }), n +} +function vn(e, t, s) { + for (;;) { + const [i, n] = xn(e.original.slice(t, s)) + if (-1 === i) break + e.remove(t + i, (t += n)) + } +} +class Sn extends Vi { + addDeclaration(e, t, s, i) { + if (i) { + const n = this.parent.addDeclaration(e, t, s, i) + return n.markInitializersForDeoptimization(), n + } + return super.addDeclaration(e, t, s, !1) + } +} +class An extends ei { + initialise() { + var e, t + this.directive && + 'use strict' !== this.directive && + this.parent.type === Ts && + this.context.log( + Ae, + ((e = this.directive), { code: 'MODULE_LEVEL_DIRECTIVE', id: (t = this.context.module.id), message: `Module level directives cause errors when bundled, "${e}" in "${V(t)}" was ignored.` }), + this.start + ) + } + render(e, t) { + super.render(e, t), this.included && this.insertSemicolon(e) + } + shouldBeIncluded(e) { + return this.directive && 'use strict' !== this.directive ? this.parent.type !== Ts : super.shouldBeIncluded(e) + } + applyDeoptimizations() {} +} +class kn extends ei { + constructor() { + super(...arguments), (this.directlyIncluded = !1) + } + addImplicitReturnExpressionToScope() { + const e = this.body[this.body.length - 1] + ;(e && 'ReturnStatement' === e.type) || this.scope.addReturnExpression(ae) + } + createScope(e) { + this.scope = this.parent.preventChildBlockScope ? e : new Sn(e) + } + hasEffects(e) { + if (this.deoptimizeBody) return !0 + for (const t of this.body) { + if (e.brokenFlow) break + if (t.hasEffects(e)) return !0 + } + return !1 + } + include(e, t) { + if (!this.deoptimizeBody || !this.directlyIncluded) { + ;(this.included = !0), (this.directlyIncluded = !0), this.deoptimizeBody && (t = !0) + for (const s of this.body) (t || s.shouldBeIncluded(e)) && s.include(e, t) + } + } + initialise() { + const e = this.body[0] + this.deoptimizeBody = e instanceof An && 'use asm' === e.directive + } + render(e, t) { + this.body.length > 0 ? En(this.body, e, this.start + 1, this.end - 1, t) : super.render(e, t) + } +} +class In extends ei { + constructor() { + super(...arguments), (this.declarationInit = null) + } + addExportedVariables(e, t) { + this.argument.addExportedVariables(e, t) + } + declare(e, t) { + return (this.declarationInit = t), this.argument.declare(e, ae) + } + deoptimizePath(e) { + 0 === e.length && this.argument.deoptimizePath(X) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return e.length > 0 || this.argument.hasEffectsOnInteractionAtPath(X, t, s) + } + markDeclarationReached() { + this.argument.markDeclarationReached() + } + applyDeoptimizations() { + ;(this.deoptimized = !0), null !== this.declarationInit && (this.declarationInit.deoptimizePath([q, q]), this.context.requestTreeshakingPass()) + } +} +class wn extends ei { + constructor() { + super(...arguments), (this.objectEntity = null), (this.deoptimizedReturn = !1) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + if (2 === e.type) { + const { parameters: t } = this.scope, + { args: s } = e + let i = !1 + for (let e = 0; e < s.length - 1; e++) { + const n = this.params[e], + r = s[e + 1] + i || n instanceof In + ? ((i = !0), r.deoptimizePath(Q)) + : n instanceof hn + ? (t[e][0].addEntityToBeDeoptimized(r), this.addArgumentToBeDeoptimized(r)) + : n + ? r.deoptimizePath(Q) + : this.addArgumentToBeDeoptimized(r) + } + } else this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + if ((this.getObjectEntity().deoptimizePath(e), 1 === e.length && e[0] === q)) { + this.scope.getReturnExpression().deoptimizePath(Q) + for (const e of this.scope.parameters) for (const t of e) t.deoptimizePath(Q) + } + } + getLiteralValueAtPath(e, t, s) { + return this.getObjectEntity().getLiteralValueAtPath(e, t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return e.length > 0 + ? this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e, t, s, i) + : this.async + ? (this.deoptimizedReturn || ((this.deoptimizedReturn = !0), this.scope.getReturnExpression().deoptimizePath(Q), this.context.requestTreeshakingPass()), le) + : [this.scope.getReturnExpression(), !1] + } + hasEffectsOnInteractionAtPath(e, t, s) { + if (e.length > 0 || 2 !== t.type) return this.getObjectEntity().hasEffectsOnInteractionAtPath(e, t, s) + if (this.annotationNoSideEffects) return !1 + if (this.async) { + const { propertyReadSideEffects: e } = this.context.options.treeshake, + t = this.scope.getReturnExpression() + if (t.hasEffectsOnInteractionAtPath(['then'], de, s) || (e && ('always' === e || t.hasEffectsOnInteractionAtPath(['then'], he, s)))) return !0 + } + for (const e of this.params) if (e.hasEffects(s)) return !0 + return !1 + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), (this.included = !0) + const { brokenFlow: s } = e + ;(e.brokenFlow = !1), this.body.include(e, t), (e.brokenFlow = s) + } + includeCallArguments(e, t) { + this.scope.includeCallArguments(e, t) + } + initialise() { + this.scope.addParameterVariables( + this.params.map((e) => e.declare('parameter', ae)), + this.params[this.params.length - 1] instanceof In + ), + this.body instanceof kn ? this.body.addImplicitReturnExpressionToScope() : this.scope.addReturnExpression(this.body) + } + parseNode(e) { + e.body.type === ws && (this.body = new kn(e.body, this, this.scope.hoistedBodyVarScope)), super.parseNode(e) + } + addArgumentToBeDeoptimized(e) {} + applyDeoptimizations() {} +} +wn.prototype.preventChildBlockScope = !0 +class Pn extends wn { + constructor() { + super(...arguments), (this.objectEntity = null) + } + createScope(e) { + this.scope = new zi(e, this.context) + } + hasEffects() { + return this.deoptimized || this.applyDeoptimizations(), !1 + } + hasEffectsOnInteractionAtPath(e, t, s) { + if (super.hasEffectsOnInteractionAtPath(e, t, s)) return !0 + if (this.annotationNoSideEffects) return !1 + if (2 === t.type) { + const { ignore: e, brokenFlow: t } = s + if (((s.ignore = { breaks: !1, continues: !1, labels: new Set(), returnYield: !0, this: !1 }), this.body.hasEffects(s))) return !0 + ;(s.ignore = e), (s.brokenFlow = t) + } + return !1 + } + include(e, t) { + super.include(e, t) + for (const s of this.params) s instanceof hn || s.include(e, t) + } + getObjectEntity() { + return null !== this.objectEntity ? this.objectEntity : (this.objectEntity = new li([], ui)) + } +} +function Cn(e, { exportNamesByVariable: t, snippets: { _: s, getObject: i, getPropertyAccess: n } }, r = '') { + if (1 === e.length && 1 === t.get(e[0]).length) { + const i = e[0] + return `exports('${t.get(i)}',${s}${i.getName(n)}${r})` + } + { + const s = [] + for (const i of e) for (const e of t.get(i)) s.push([e, i.getName(n) + r]) + return `exports(${i(s, { lineBreakIndent: null })})` + } +} +function $n(e, t, s, i, { exportNamesByVariable: n, snippets: { _: r } }) { + i.prependRight(t, `exports('${n.get(e)}',${r}`), i.appendLeft(s, ')') +} +function Nn(e, t, s, i, n, r) { + const { _: o, getPropertyAccess: a } = r.snippets + n.appendLeft(s, `,${o}${Cn([e], r)},${o}${e.getName(a)}`), i && (n.prependRight(t, '('), n.appendLeft(s, ')')) +} +class _n extends ei { + addExportedVariables(e, t) { + for (const s of this.properties) 'Property' === s.type ? s.value.addExportedVariables(e, t) : s.argument.addExportedVariables(e, t) + } + declare(e, t) { + const s = [] + for (const i of this.properties) s.push(...i.declare(e, t)) + return s + } + deoptimizePath(e) { + if (0 === e.length) for (const t of this.properties) t.deoptimizePath(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + for (const e of this.properties) if (e.hasEffectsOnInteractionAtPath(X, t, s)) return !0 + return !1 + } + markDeclarationReached() { + for (const e of this.properties) e.markDeclarationReached() + } +} +class Rn extends Pi { + constructor(e) { + super('arguments', null, ae, e), (this.deoptimizedArguments = []) + } + addArgumentToBeDeoptimized(e) { + this.included ? e.deoptimizePath(Q) : this.deoptimizedArguments.push(e) + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return 0 !== t || e.length > 1 + } + include() { + super.include() + for (const e of this.deoptimizedArguments) e.deoptimizePath(Q) + this.deoptimizedArguments.length = 0 + } +} +class Mn extends Ri { + constructor(e) { + super('this', null, e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return (s.replacedVariableInits.get(this) || ae).hasEffectsOnInteractionAtPath(e, t, s) + } +} +class On extends zi { + constructor(e, t) { + super(e, t), this.variables.set('arguments', (this.argumentsVariable = new Rn(t))), this.variables.set('this', (this.thisVariable = new Mn(t))) + } + findLexicalBoundary() { + return this + } + includeCallArguments(e, t) { + if ((super.includeCallArguments(e, t), this.argumentsVariable.included)) for (const s of t) s.included || s.include(e, !1) + } +} +class Dn extends wn { + constructor() { + super(...arguments), (this.objectEntity = null) + } + createScope(e) { + ;(this.scope = new On(e, this.context)), (this.constructedEntity = new li(Object.create(null), ui)), this.scope.thisVariable.addEntityToBeDeoptimized(this.constructedEntity) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + super.deoptimizeArgumentsOnInteractionAtPath(e, t, s), 2 === e.type && 0 === t.length && e.args[0] && this.scope.thisVariable.addEntityToBeDeoptimized(e.args[0]) + } + hasEffects(e) { + return this.deoptimized || this.applyDeoptimizations(), !this.annotationNoSideEffects && !!this.id?.hasEffects(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + if (super.hasEffectsOnInteractionAtPath(e, t, s)) return !0 + if (this.annotationNoSideEffects) return !1 + if (2 === t.type) { + const e = s.replacedVariableInits.get(this.scope.thisVariable) + s.replacedVariableInits.set(this.scope.thisVariable, t.withNew ? this.constructedEntity : ae) + const { brokenFlow: i, ignore: n, replacedVariableInits: r } = s + if (((s.ignore = { breaks: !1, continues: !1, labels: new Set(), returnYield: !0, this: t.withNew }), this.body.hasEffects(s))) return !0 + ;(s.brokenFlow = i), e ? r.set(this.scope.thisVariable, e) : r.delete(this.scope.thisVariable), (s.ignore = n) + } + return !1 + } + include(e, t) { + super.include(e, t), this.id?.include() + const s = this.scope.argumentsVariable.included + for (const i of this.params) (i instanceof hn && !s) || i.include(e, t) + } + initialise() { + super.initialise(), this.id?.declare('function', this) + } + addArgumentToBeDeoptimized(e) { + this.scope.argumentsVariable.addArgumentToBeDeoptimized(e) + } + getObjectEntity() { + return null !== this.objectEntity ? this.objectEntity : (this.objectEntity = new li([{ key: 'prototype', kind: 'init', property: new li([], ui) }], ui)) + } +} +class Ln extends ei { + hasEffects() { + return this.deoptimized || this.applyDeoptimizations(), !0 + } + include(e, t) { + if ((this.deoptimized || this.applyDeoptimizations(), !this.included)) { + this.included = !0 + e: if (!this.context.usesTopLevelAwait) { + let e = this.parent + do { + if (e instanceof Dn || e instanceof Pn) break e + } while ((e = e.parent)) + this.context.usesTopLevelAwait = !0 + } + } + this.argument.include(e, t) + } +} +const Tn = { + '!=': (e, t) => e != t, + '!==': (e, t) => e !== t, + '%': (e, t) => e % t, + '&': (e, t) => e & t, + '*': (e, t) => e * t, + '**': (e, t) => e ** t, + '+': (e, t) => e + t, + '-': (e, t) => e - t, + '/': (e, t) => e / t, + '<': (e, t) => e < t, + '<<': (e, t) => e << t, + '<=': (e, t) => e <= t, + '==': (e, t) => e == t, + '===': (e, t) => e === t, + '>': (e, t) => e > t, + '>=': (e, t) => e >= t, + '>>': (e, t) => e >> t, + '>>>': (e, t) => e >>> t, + '^': (e, t) => e ^ t, + '|': (e, t) => e | t +} +function Vn(e, t, s) { + if (s.arguments.length > 0) + if (s.arguments[s.arguments.length - 1].included) for (const i of s.arguments) i.render(e, t) + else { + let i = s.arguments.length - 2 + for (; i >= 0 && !s.arguments[i].included; ) i-- + if (i >= 0) { + for (let n = 0; n <= i; n++) s.arguments[n].render(e, t) + e.remove(mn(e.original, ',', s.arguments[i].end), s.end - 1) + } else e.remove(mn(e.original, '(', s.callee.end) + 1, s.end - 1) + } +} +class Bn extends ei { + deoptimizeArgumentsOnInteractionAtPath() {} + getLiteralValueAtPath(e) { + return e.length > 0 || (null === this.value && 110 !== this.context.code.charCodeAt(this.start)) || 'bigint' == typeof this.value || 47 === this.context.code.charCodeAt(this.start) + ? ne + : this.value + } + getReturnExpressionWhenCalledAtPath(e) { + return 1 !== e.length ? le : bs(this.members, e[0]) + } + hasEffectsOnInteractionAtPath(e, t, s) { + switch (t.type) { + case 0: + return e.length > (null === this.value ? 0 : 1) + case 1: + return !0 + case 2: + return !!(this.included && this.value instanceof RegExp && (this.value.global || this.value.sticky)) || 1 !== e.length || Es(this.members, e[0], t, s) + } + } + initialise() { + this.members = (function (e) { + if (e instanceof RegExp) return ys + switch (typeof e) { + case 'boolean': + return ms + case 'number': + return gs + case 'string': + return xs + } + return Object.create(null) + })(this.value) + } + parseNode(e) { + ;(this.value = e.value), (this.regex = e.regex), super.parseNode(e) + } + render(e) { + 'string' == typeof this.value && e.indentExclusionRanges.push([this.start + 1, this.end - 1]) + } +} +function zn(e) { + return e.computed + ? (function (e) { + if (e instanceof Bn) return String(e.value) + return null + })(e.property) + : e.property.name +} +function Fn(e) { + const t = e.propertyKey, + s = e.object + if ('string' == typeof t) { + if (s instanceof hn) + return [ + { key: s.name, pos: s.start }, + { key: t, pos: e.property.start } + ] + if (s instanceof jn) { + const i = Fn(s) + return i && [...i, { key: t, pos: e.property.start }] + } + } + return null +} +class jn extends ei { + constructor() { + super(...arguments), (this.variable = null), (this.assignmentDeoptimized = !1), (this.bound = !1), (this.expressionsToBeDeoptimized = []), (this.isUndefined = !1) + } + bind() { + this.bound = !0 + const e = Fn(this), + t = e && this.scope.findVariable(e[0].key) + if (t?.isNamespace) { + const s = Un(t, e.slice(1), this.context) + s + ? 'undefined' === s + ? (this.isUndefined = !0) + : ((this.variable = s), + this.scope.addNamespaceMemberAccess( + (function (e) { + let t = e[0].key + for (let s = 1; s < e.length; s++) t += '.' + e[s].key + return t + })(e), + s + )) + : super.bind() + } else super.bind() + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.variable + ? this.variable.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + : this.isUndefined || (t.length < 7 ? this.object.deoptimizeArgumentsOnInteractionAtPath(e, [this.getPropertyKey(), ...t], s) : ce(e)) + } + deoptimizeCache() { + const { expressionsToBeDeoptimized: e, object: t } = this + ;(this.expressionsToBeDeoptimized = ye), (this.propertyKey = q), t.deoptimizePath(Q) + for (const t of e) t.deoptimizeCache() + } + deoptimizePath(e) { + if ((0 === e.length && this.disallowNamespaceReassignment(), this.variable)) this.variable.deoptimizePath(e) + else if (!this.isUndefined && e.length < 7) { + const t = this.getPropertyKey() + this.object.deoptimizePath([t === q ? H : t, ...e]) + } + } + getLiteralValueAtPath(e, t, s) { + return this.variable + ? this.variable.getLiteralValueAtPath(e, t, s) + : this.isUndefined + ? void 0 + : this.propertyKey !== q && e.length < 7 + ? (this.expressionsToBeDeoptimized.push(s), this.object.getLiteralValueAtPath([this.getPropertyKey(), ...e], t, s)) + : ne + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.variable + ? this.variable.getReturnExpressionWhenCalledAtPath(e, t, s, i) + : this.isUndefined + ? [rs, !1] + : this.propertyKey !== q && e.length < 7 + ? (this.expressionsToBeDeoptimized.push(i), this.object.getReturnExpressionWhenCalledAtPath([this.getPropertyKey(), ...e], t, s, i)) + : le + } + hasEffects(e) { + return this.deoptimized || this.applyDeoptimizations(), this.property.hasEffects(e) || this.object.hasEffects(e) || this.hasAccessEffect(e) + } + hasEffectsAsAssignmentTarget(e, t) { + return ( + t && !this.deoptimized && this.applyDeoptimizations(), + this.assignmentDeoptimized || this.applyAssignmentDeoptimization(), + this.property.hasEffects(e) || this.object.hasEffects(e) || (t && this.hasAccessEffect(e)) || this.hasEffectsOnInteractionAtPath(X, this.assignmentInteraction, e) + ) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return this.variable + ? this.variable.hasEffectsOnInteractionAtPath(e, t, s) + : !!this.isUndefined || !(e.length < 7) || this.object.hasEffectsOnInteractionAtPath([this.getPropertyKey(), ...e], t, s) + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), this.includeProperties(e, t) + } + includeAsAssignmentTarget(e, t, s) { + this.assignmentDeoptimized || this.applyAssignmentDeoptimization(), s ? this.include(e, t) : this.includeProperties(e, t) + } + includeCallArguments(e, t) { + this.variable ? this.variable.includeCallArguments(e, t) : super.includeCallArguments(e, t) + } + initialise() { + ;(this.propertyKey = zn(this)), (this.accessInteraction = { args: [this.object], type: 0 }) + } + isSkippedAsOptional(e) { + return !this.variable && !this.isUndefined && (this.object.isSkippedAsOptional?.(e) || (this.optional && null == this.object.getLiteralValueAtPath(X, se, e))) + } + render(e, t, { renderedParentType: s, isCalleeOfRenderedParent: i, renderedSurroundingElement: n } = me) { + if (this.variable || this.isUndefined) { + const { + snippets: { getPropertyAccess: n } + } = t + let r = this.variable ? this.variable.getName(n) : 'undefined' + s && i && (r = '0, ' + r), e.overwrite(this.start, this.end, r, { contentOnly: !0, storeName: !0 }) + } else s && i && e.appendRight(this.start, '0, '), this.object.render(e, t, { renderedSurroundingElement: n }), this.property.render(e, t) + } + setAssignedValue(e) { + this.assignmentInteraction = { args: [this.object, e], type: 1 } + } + applyDeoptimizations() { + this.deoptimized = !0 + const { propertyReadSideEffects: e } = this.context.options.treeshake + if (this.bound && e && !this.variable && !this.isUndefined) { + const e = this.getPropertyKey() + this.object.deoptimizeArgumentsOnInteractionAtPath(this.accessInteraction, [e], se), this.context.requestTreeshakingPass() + } + } + applyAssignmentDeoptimization() { + this.assignmentDeoptimized = !0 + const { propertyReadSideEffects: e } = this.context.options.treeshake + this.bound && + e && + !this.variable && + !this.isUndefined && + (this.object.deoptimizeArgumentsOnInteractionAtPath(this.assignmentInteraction, [this.getPropertyKey()], se), this.context.requestTreeshakingPass()) + } + disallowNamespaceReassignment() { + if (this.object instanceof hn) { + this.scope.findVariable(this.object.name).isNamespace && + (this.variable && this.context.includeVariableInModule(this.variable), this.context.log(Ae, Vt(this.object.name, this.context.module.id), this.start)) + } + } + getPropertyKey() { + if (null === this.propertyKey) { + this.propertyKey = q + const e = this.property.getLiteralValueAtPath(X, se, this) + return (this.propertyKey = e === Y ? e : 'symbol' == typeof e ? q : String(e)) + } + return this.propertyKey + } + hasAccessEffect(e) { + const { propertyReadSideEffects: t } = this.context.options.treeshake + return !(this.variable || this.isUndefined) && t && ('always' === t || this.object.hasEffectsOnInteractionAtPath([this.getPropertyKey()], this.accessInteraction, e)) + } + includeProperties(e, t) { + this.included || ((this.included = !0), this.variable && this.context.includeVariableInModule(this.variable)), this.object.include(e, t), this.property.include(e, t) + } +} +function Un(e, t, s) { + if (0 === t.length) return e + if (!e.isNamespace || e instanceof fe) return null + const i = t[0].key, + n = e.context.traceExport(i) + if (!n) { + if (1 === t.length) { + const n = e.context.fileName + return s.log(Ae, Ut(i, s.module.id, n), t[0].pos), 'undefined' + } + return null + } + return Un(n, t.slice(1), s) +} +class Gn extends ei { + constructor() { + super(...arguments), (this.returnExpression = null), (this.deoptimizableDependentExpressions = []), (this.expressionsToBeDeoptimized = new Set()) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + const { args: i } = e, + [n, r] = this.getReturnExpression(s) + if (r) return + const o = i.filter((e) => !!e && e !== ae) + if (0 !== o.length) + if (n === ae) for (const e of o) e.deoptimizePath(Q) + else + s.withTrackedEntityAtPath( + t, + n, + () => { + for (const e of o) this.expressionsToBeDeoptimized.add(e) + n.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + }, + null + ) + } + deoptimizeCache() { + if (this.returnExpression?.[0] !== ae) { + this.returnExpression = le + const { deoptimizableDependentExpressions: e, expressionsToBeDeoptimized: t } = this + ;(this.expressionsToBeDeoptimized = xe), (this.deoptimizableDependentExpressions = ye) + for (const t of e) t.deoptimizeCache() + for (const e of t) e.deoptimizePath(Q) + } + } + deoptimizePath(e) { + if (0 === e.length || this.context.deoptimizationTracker.trackEntityAtPathAndGetIfTracked(e, this)) return + const [t] = this.getReturnExpression() + t !== ae && t.deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + const [i] = this.getReturnExpression(t) + return i === ae ? ne : t.withTrackedEntityAtPath(e, i, () => (this.deoptimizableDependentExpressions.push(s), i.getLiteralValueAtPath(e, t, s)), ne) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + const n = this.getReturnExpression(s) + return n[0] === ae + ? n + : s.withTrackedEntityAtPath( + e, + n, + () => { + this.deoptimizableDependentExpressions.push(i) + const [r, o] = n[0].getReturnExpressionWhenCalledAtPath(e, t, s, i) + return [r, o || n[1]] + }, + le + ) + } + hasEffectsOnInteractionAtPath(e, t, s) { + const { type: i } = t + if (2 === i) { + const { args: i, withNew: n } = t + if ((n ? s.instantiated : s.called).trackEntityAtPathAndGetIfTracked(e, i, this)) return !1 + } else if ((1 === i ? s.assigned : s.accessed).trackEntityAtPathAndGetIfTracked(e, this)) return !1 + const [n, r] = this.getReturnExpression() + return (1 === i || !r) && n.hasEffectsOnInteractionAtPath(e, t, s) + } +} +class Wn extends Gn { + bind() { + if ((super.bind(), this.callee instanceof hn)) { + this.scope.findVariable(this.callee.name).isNamespace && this.context.log(Ae, Ot(this.callee.name), this.start), + 'eval' === this.callee.name && + this.context.log( + Ae, + { + code: 'EVAL', + id: (e = this.context.module.id), + message: `Use of eval in "${V(e)}" is strongly discouraged as it poses security risks and may cause issues with minification.`, + url: De('troubleshooting/#avoiding-eval') + }, + this.start + ) + } + var e + this.interaction = { args: [this.callee instanceof jn && !this.callee.variable ? this.callee.object : null, ...this.arguments], type: 2, withNew: !1 } + } + hasEffects(e) { + try { + for (const t of this.arguments) if (t.hasEffects(e)) return !0 + return !this.annotationPure && (this.callee.hasEffects(e) || this.callee.hasEffectsOnInteractionAtPath(X, this.interaction, e)) + } finally { + this.deoptimized || this.applyDeoptimizations() + } + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), + t + ? (super.include(e, t), t === Js && this.callee instanceof hn && this.callee.variable && this.callee.variable.markCalledFromTryStatement()) + : ((this.included = !0), this.callee.include(e, !1)), + this.callee.includeCallArguments(e, this.arguments) + } + isSkippedAsOptional(e) { + return this.callee.isSkippedAsOptional?.(e) || (this.optional && null == this.callee.getLiteralValueAtPath(X, se, e)) + } + render(e, t, { renderedSurroundingElement: s } = me) { + this.callee.render(e, t, { isCalleeOfRenderedParent: !0, renderedSurroundingElement: s }), Vn(e, t, this) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.callee.deoptimizeArgumentsOnInteractionAtPath(this.interaction, X, se), this.context.requestTreeshakingPass() + } + getReturnExpression(e = se) { + return null === this.returnExpression + ? ((this.returnExpression = le), (this.returnExpression = this.callee.getReturnExpressionWhenCalledAtPath(X, this.interaction, e, this))) + : this.returnExpression + } +} +class qn extends Bi { + addDeclaration(e, t, s, i) { + const n = this.variables.get(e.name) + return n ? (this.parent.addDeclaration(e, t, rs, i), n.addDeclaration(e, s), n) : this.parent.addDeclaration(e, t, s, i) + } +} +class Hn extends Vi { + constructor(e, t, s) { + super(e), this.variables.set('this', (this.thisVariable = new Pi('this', null, t, s))), (this.instanceScope = new Vi(this)), this.instanceScope.variables.set('this', new Mn(s)) + } + findLexicalBoundary() { + return this + } +} +class Kn extends ei { + constructor() { + super(...arguments), (this.accessedValue = null) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + return (0 === e.type && 'get' === this.kind && 0 === t.length) || (1 === e.type && 'set' === this.kind && 0 === t.length) + ? this.value.deoptimizeArgumentsOnInteractionAtPath({ args: e.args, type: 2, withNew: !1 }, X, s) + : void this.getAccessedValue()[0].deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizeCache() {} + deoptimizePath(e) { + this.getAccessedValue()[0].deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.getAccessedValue()[0].getLiteralValueAtPath(e, t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.getAccessedValue()[0].getReturnExpressionWhenCalledAtPath(e, t, s, i) + } + hasEffects(e) { + return this.key.hasEffects(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return ('get' === this.kind && 0 === t.type && 0 === e.length) || ('set' === this.kind && 1 === t.type) + ? this.value.hasEffectsOnInteractionAtPath(X, { args: t.args, type: 2, withNew: !1 }, s) + : this.getAccessedValue()[0].hasEffectsOnInteractionAtPath(e, t, s) + } + applyDeoptimizations() {} + getAccessedValue() { + return null === this.accessedValue + ? 'get' === this.kind + ? ((this.accessedValue = le), (this.accessedValue = this.value.getReturnExpressionWhenCalledAtPath(X, de, se, this))) + : (this.accessedValue = [this.value, !1]) + : this.accessedValue + } +} +class Yn extends Kn { + applyDeoptimizations() {} +} +class Xn extends oe { + constructor(e, t) { + super(), (this.object = e), (this.key = t) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.object.deoptimizeArgumentsOnInteractionAtPath(e, [this.key, ...t], s) + } + deoptimizePath(e) { + this.object.deoptimizePath([this.key, ...e]) + } + getLiteralValueAtPath(e, t, s) { + return this.object.getLiteralValueAtPath([this.key, ...e], t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.object.getReturnExpressionWhenCalledAtPath([this.key, ...e], t, s, i) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return this.object.hasEffectsOnInteractionAtPath([this.key, ...e], t, s) + } +} +class Qn extends ei { + constructor() { + super(...arguments), (this.objectEntity = null) + } + createScope(e) { + this.scope = new Vi(e) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizeCache() { + this.getObjectEntity().deoptimizeAllProperties() + } + deoptimizePath(e) { + this.getObjectEntity().deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.getObjectEntity().getLiteralValueAtPath(e, t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e, t, s, i) + } + hasEffects(e) { + this.deoptimized || this.applyDeoptimizations() + const t = this.superClass?.hasEffects(e) || this.body.hasEffects(e) + return this.id?.markDeclarationReached(), t || super.hasEffects(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return 2 === t.type && 0 === e.length + ? !t.withNew || (null === this.classConstructor ? this.superClass?.hasEffectsOnInteractionAtPath(e, t, s) : this.classConstructor.hasEffectsOnInteractionAtPath(e, t, s)) || !1 + : this.getObjectEntity().hasEffectsOnInteractionAtPath(e, t, s) + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), (this.included = !0), this.superClass?.include(e, t), this.body.include(e, t), this.id && (this.id.markDeclarationReached(), this.id.include()) + } + initialise() { + this.id?.declare('class', this) + for (const e of this.body.body) if (e instanceof Yn && 'constructor' === e.kind) return void (this.classConstructor = e) + this.classConstructor = null + } + applyDeoptimizations() { + this.deoptimized = !0 + for (const e of this.body.body) e.static || (e instanceof Yn && 'constructor' === e.kind) || e.deoptimizePath(Q) + this.context.requestTreeshakingPass() + } + getObjectEntity() { + if (null !== this.objectEntity) return this.objectEntity + const e = [], + t = [] + for (const s of this.body.body) { + const i = s.static ? e : t, + n = s.kind + if (i === t && !n) continue + const r = 'set' === n || 'get' === n ? n : 'init' + let o + if (s.computed) { + const e = s.key.getLiteralValueAtPath(X, se, this) + if ('symbol' == typeof e) { + i.push({ key: q, kind: r, property: s }) + continue + } + o = String(e) + } else o = s.key instanceof hn ? s.key.name : String(s.key.value) + i.push({ key: o, kind: r, property: s }) + } + return e.unshift({ key: 'prototype', kind: 'init', property: new li(t, this.superClass ? new Xn(this.superClass, 'prototype') : ui) }), (this.objectEntity = new li(e, this.superClass || ui)) + } +} +class Zn extends Qn { + initialise() { + super.initialise(), null !== this.id && (this.id.variable.isId = !0) + } + parseNode(e) { + null !== e.id && (this.id = new hn(e.id, this, this.scope.parent)), super.parseNode(e) + } + render(e, t) { + const { + exportNamesByVariable: s, + format: i, + snippets: { _: n, getPropertyAccess: r } + } = t + if (this.id) { + const { variable: o, name: a } = this.id + 'system' === i && s.has(o) && e.appendLeft(this.end, `${n}${Cn([o], t)};`) + const l = o.getName(r) + if (l !== a) + return this.superClass?.render(e, t), this.body.render(e, { ...t, useOriginalName: (e) => e === o }), e.prependRight(this.start, `let ${l}${n}=${n}`), void e.prependLeft(this.end, ';') + } + super.render(e, t) + } + applyDeoptimizations() { + super.applyDeoptimizations() + const { id: e, scope: t } = this + if (e) { + const { name: s, variable: i } = e + for (const e of t.accessedOutsideVariables.values()) e !== i && e.forbidName(s) + } + } +} +class Jn extends Qn { + render(e, t, { renderedSurroundingElement: s } = me) { + super.render(e, t), s === Rs && (e.appendRight(this.start, '('), e.prependLeft(this.end, ')')) + } +} +class er extends oe { + constructor(e) { + super(), (this.expressions = e), (this.included = !1) + } + deoptimizePath(e) { + for (const t of this.expressions) t.deoptimizePath(e) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return [new er(this.expressions.map((n) => n.getReturnExpressionWhenCalledAtPath(e, t, s, i)[0])), !1] + } + hasEffectsOnInteractionAtPath(e, t, s) { + for (const i of this.expressions) if (i.hasEffectsOnInteractionAtPath(e, t, s)) return !0 + return !1 + } +} +function tr(e, t) { + const { brokenFlow: s, hasBreak: i, hasContinue: n, ignore: r } = e, + { breaks: o, continues: a } = r + return ( + (r.breaks = !0), + (r.continues = !0), + (e.hasBreak = !1), + (e.hasContinue = !1), + !!t.hasEffects(e) || ((r.breaks = o), (r.continues = a), (e.hasBreak = i), (e.hasContinue = n), (e.brokenFlow = s), !1) + ) +} +function sr(e, t, s) { + const { brokenFlow: i, hasBreak: n, hasContinue: r } = e + ;(e.hasBreak = !1), (e.hasContinue = !1), t.include(e, s, { asSingleStatement: !0 }), (e.hasBreak = n), (e.hasContinue = r), (e.brokenFlow = i) +} +class ir extends ei { + hasEffects() { + return !1 + } + initialise() { + this.context.addExport(this) + } + render(e, t, s) { + e.remove(s.start, s.end) + } + applyDeoptimizations() {} +} +ir.prototype.needsBoundaries = !0 +class nr extends Dn { + initialise() { + super.initialise(), null !== this.id && (this.id.variable.isId = !0) + } + parseNode(e) { + null !== e.id && (this.id = new hn(e.id, this, this.scope.parent)), super.parseNode(e) + } +} +class rr extends ei { + include(e, t) { + super.include(e, t), t && this.context.includeVariableInModule(this.variable) + } + initialise() { + const e = this.declaration + ;(this.declarationName = (e.id && e.id.name) || this.declaration.name), + (this.variable = this.scope.addExportDefaultDeclaration(this.declarationName || this.context.getModuleName(), this, this.context)), + this.context.addExport(this) + } + render(e, t, s) { + const { start: i, end: n } = s, + r = (function (e, t) { + return yn(e, mn(e, 'default', t) + 7) + })(e.original, this.start) + if (this.declaration instanceof nr) + this.renderNamedDeclaration( + e, + r, + null === this.declaration.id + ? (function (e, t) { + const s = mn(e, 'function', t) + 8 + e = e.slice(s, mn(e, '(', s)) + const i = mn(e, '*') + return -1 === i ? s : s + i + 1 + })(e.original, r) + : null, + t + ) + else if (this.declaration instanceof Zn) this.renderNamedDeclaration(e, r, null === this.declaration.id ? mn(e.original, 'class', i) + 5 : null, t) + else { + if (this.variable.getOriginalVariable() !== this.variable) return void dn(this, e, i, n) + if (!this.variable.included) + return e.remove(this.start, r), this.declaration.render(e, t, { renderedSurroundingElement: Rs }), void (';' !== e.original[this.end - 1] && e.appendLeft(this.end, ';')) + this.renderVariableDeclaration(e, r, t) + } + this.declaration.render(e, t) + } + applyDeoptimizations() {} + renderNamedDeclaration(e, t, s, i) { + const { + exportNamesByVariable: n, + format: r, + snippets: { getPropertyAccess: o } + } = i, + a = this.variable.getName(o) + e.remove(this.start, t), null !== s && e.appendLeft(s, ` ${a}`), 'system' === r && this.declaration instanceof Zn && n.has(this.variable) && e.appendLeft(this.end, ` ${Cn([this.variable], i)};`) + } + renderVariableDeclaration(e, t, { format: s, exportNamesByVariable: i, snippets: { cnst: n, getPropertyAccess: r } }) { + const o = 59 === e.original.charCodeAt(this.end - 1), + a = 'system' === s && i.get(this.variable) + a + ? (e.overwrite(this.start, t, `${n} ${this.variable.getName(r)} = exports('${a[0]}', `), e.appendRight(o ? this.end - 1 : this.end, ')' + (o ? '' : ';'))) + : (e.overwrite(this.start, t, `${n} ${this.variable.getName(r)} = `), o || e.appendLeft(this.end, ';')) + } +} +rr.prototype.needsBoundaries = !0 +class or extends ei { + bind() { + this.declaration?.bind() + } + hasEffects(e) { + return !!this.declaration?.hasEffects(e) + } + initialise() { + this.context.addExport(this) + } + render(e, t, s) { + const { start: i, end: n } = s + null === this.declaration ? e.remove(i, n) : (e.remove(this.start, this.declaration.start), this.declaration.render(e, t, { end: n, start: i })) + } + applyDeoptimizations() {} +} +or.prototype.needsBoundaries = !0 +class ar extends Dn { + render(e, t, { renderedSurroundingElement: s } = me) { + super.render(e, t), s === Rs && (e.appendRight(this.start, '('), e.prependLeft(this.end, ')')) + } +} +class lr extends Sn { + constructor() { + super(...arguments), (this.hoistedDeclarations = []) + } + addDeclaration(e, t, s, i) { + return this.hoistedDeclarations.push(e), super.addDeclaration(e, t, s, i) + } +} +const cr = Symbol('unset') +class hr extends ei { + constructor() { + super(...arguments), (this.testValue = cr) + } + deoptimizeCache() { + this.testValue = ne + } + hasEffects(e) { + if (this.test.hasEffects(e)) return !0 + const t = this.getTestValue() + if ('symbol' == typeof t) { + const { brokenFlow: t } = e + if (this.consequent.hasEffects(e)) return !0 + const s = e.brokenFlow + return (e.brokenFlow = t), null === this.alternate ? !1 : !!this.alternate.hasEffects(e) || ((e.brokenFlow = e.brokenFlow && s), !1) + } + return t ? this.consequent.hasEffects(e) : !!this.alternate?.hasEffects(e) + } + include(e, t) { + if (((this.included = !0), t)) this.includeRecursively(t, e) + else { + const t = this.getTestValue() + 'symbol' == typeof t ? this.includeUnknownTest(e) : this.includeKnownTest(e, t) + } + } + parseNode(e) { + ;(this.consequentScope = new lr(this.scope)), + (this.consequent = new (this.context.getNodeConstructor(e.consequent.type))(e.consequent, this, this.consequentScope)), + e.alternate && ((this.alternateScope = new lr(this.scope)), (this.alternate = new (this.context.getNodeConstructor(e.alternate.type))(e.alternate, this, this.alternateScope))), + super.parseNode(e) + } + render(e, t) { + const { + snippets: { getPropertyAccess: s } + } = t, + i = this.getTestValue(), + n = [], + r = this.test.included, + o = !this.context.options.treeshake + r ? this.test.render(e, t) : e.remove(this.start, this.consequent.start), + this.consequent.included && (o || 'symbol' == typeof i || i) + ? this.consequent.render(e, t) + : (e.overwrite(this.consequent.start, this.consequent.end, r ? ';' : ''), n.push(...this.consequentScope.hoistedDeclarations)), + this.alternate && + (!this.alternate.included || (!o && 'symbol' != typeof i && i) + ? (r && this.shouldKeepAlternateBranch() ? e.overwrite(this.alternate.start, this.end, ';') : e.remove(this.consequent.end, this.end), n.push(...this.alternateScope.hoistedDeclarations)) + : (r ? 101 === e.original.charCodeAt(this.alternate.start - 1) && e.prependLeft(this.alternate.start, ' ') : e.remove(this.consequent.end, this.alternate.start), + this.alternate.render(e, t))), + this.renderHoistedDeclarations(n, e, s) + } + applyDeoptimizations() {} + getTestValue() { + return this.testValue === cr ? (this.testValue = this.test.getLiteralValueAtPath(X, se, this)) : this.testValue + } + includeKnownTest(e, t) { + this.test.shouldBeIncluded(e) && this.test.include(e, !1), + t && this.consequent.shouldBeIncluded(e) && this.consequent.include(e, !1, { asSingleStatement: !0 }), + !t && this.alternate?.shouldBeIncluded(e) && this.alternate.include(e, !1, { asSingleStatement: !0 }) + } + includeRecursively(e, t) { + this.test.include(t, e), this.consequent.include(t, e), this.alternate?.include(t, e) + } + includeUnknownTest(e) { + this.test.include(e, !1) + const { brokenFlow: t } = e + let s = !1 + this.consequent.shouldBeIncluded(e) && (this.consequent.include(e, !1, { asSingleStatement: !0 }), (s = e.brokenFlow), (e.brokenFlow = t)), + this.alternate?.shouldBeIncluded(e) && (this.alternate.include(e, !1, { asSingleStatement: !0 }), (e.brokenFlow = e.brokenFlow && s)) + } + renderHoistedDeclarations(e, t, s) { + const i = [ + ...new Set( + e.map((e) => { + const t = e.variable + return t.included ? t.getName(s) : '' + }) + ) + ] + .filter(Boolean) + .join(', ') + if (i) { + const e = this.parent.type, + s = e !== Ts && e !== ws + t.prependRight(this.start, `${s ? '{ ' : ''}var ${i}; `), s && t.appendLeft(this.end, ' }') + } + } + shouldKeepAlternateBranch() { + let e = this.parent + do { + if (e instanceof hr && e.alternate) return !0 + if (e instanceof kn) return !1 + e = e.parent + } while (e) + return !1 + } +} +class ur extends ei { + bind() {} + hasEffects() { + return !1 + } + initialise() { + this.context.addImport(this) + } + render(e, t, s) { + e.remove(s.start, s.end) + } + applyDeoptimizations() {} +} +ur.prototype.needsBoundaries = !0 +class dr extends ei { + applyDeoptimizations() {} +} +const pr = '_interopDefault', + fr = '_interopDefaultCompat', + mr = '_interopNamespace', + gr = '_interopNamespaceCompat', + yr = '_interopNamespaceDefault', + xr = '_interopNamespaceDefaultOnly', + Er = '_mergeNamespaces', + br = '_documentCurrentScript', + vr = { auto: pr, compat: fr, default: null, defaultOnly: null, esModule: null }, + Sr = (e, t) => 'esModule' === e || (t && ('auto' === e || 'compat' === e)), + Ar = { auto: mr, compat: gr, default: yr, defaultOnly: xr, esModule: null }, + kr = (e, t) => 'esModule' !== e && Sr(e, t), + Ir = (e, t, s, i, n, r, o) => { + const a = new Set(e) + for (const e of Br) t.has(e) && a.add(e) + return Br.map((e) => (a.has(e) ? wr[e](s, i, n, r, o, a) : '')).join('') + }, + wr = { + [br]: (e, { _: t, n: s }) => `var${t}${br}${t}=${t}typeof${t}document${t}!==${t}'undefined'${t}?${t}document.currentScript${t}:${t}null;${s}`, + [fr](e, t, s) { + const { _: i, getDirectReturnFunction: n, n: r } = t, + [o, a] = n(['e'], { functionReturn: !0, lineBreakIndent: null, name: fr }) + return `${o}${$r(t)}${i}?${i}${s ? Pr(t) : Cr(t)}${a}${r}${r}` + }, + [pr](e, t, s) { + const { _: i, getDirectReturnFunction: n, n: r } = t, + [o, a] = n(['e'], { functionReturn: !0, lineBreakIndent: null, name: pr }) + return `${o}e${i}&&${i}e.__esModule${i}?${i}${s ? Pr(t) : Cr(t)}${a}${r}${r}` + }, + [gr](e, t, s, i, n, r) { + const { _: o, getDirectReturnFunction: a, n: l } = t + if (r.has(yr)) { + const [e, s] = a(['e'], { functionReturn: !0, lineBreakIndent: null, name: gr }) + return `${e}${$r(t)}${o}?${o}e${o}:${o}${yr}(e)${s}${l}${l}` + } + return `function ${gr}(e)${o}{${l}${e}if${o}(${$r(t)})${o}return e;${l}` + Nr(e, e, t, s, i, n) + `}${l}${l}` + }, + [xr](e, t, s, i, n) { + const { getDirectReturnFunction: r, getObject: o, n: a } = t, + [l, c] = r(['e'], { functionReturn: !0, lineBreakIndent: null, name: xr }) + return `${l}${Tr( + i, + Vr( + n, + o( + [ + ['__proto__', 'null'], + ['default', 'e'] + ], + { lineBreakIndent: null } + ), + t + ) + )}${c}${a}${a}` + }, + [yr](e, t, s, i, n) { + const { _: r, n: o } = t + return `function ${yr}(e)${r}{${o}` + Nr(e, e, t, s, i, n) + `}${o}${o}` + }, + [mr](e, t, s, i, n, r) { + const { _: o, getDirectReturnFunction: a, n: l } = t + if (r.has(yr)) { + const [e, t] = a(['e'], { functionReturn: !0, lineBreakIndent: null, name: mr }) + return `${e}e${o}&&${o}e.__esModule${o}?${o}e${o}:${o}${yr}(e)${t}${l}${l}` + } + return `function ${mr}(e)${o}{${l}${e}if${o}(e${o}&&${o}e.__esModule)${o}return e;${l}` + Nr(e, e, t, s, i, n) + `}${l}${l}` + }, + [Er](e, t, s, i, n) { + const { _: r, cnst: o, n: a } = t, + l = 'var' === o && s + return `function ${Er}(n, m)${r}{${a}${e}${Rr( + `{${a}${e}${e}${e}if${r}(k${r}!==${r}'default'${r}&&${r}!(k in n))${r}{${a}` + (s ? (l ? Or : Dr) : Lr)(e, e + e + e + e, t) + `${e}${e}${e}}${a}` + `${e}${e}}`, + l, + e, + t + )}${a}${e}return ${Tr(i, Vr(n, 'n', t))};${a}}${a}${a}` + } + }, + Pr = ({ _: e, getObject: t }) => `e${e}:${e}${t([['default', 'e']], { lineBreakIndent: null })}`, + Cr = ({ _: e, getPropertyAccess: t }) => `e${t('default')}${e}:${e}e`, + $r = ({ _: e }) => `e${e}&&${e}typeof e${e}===${e}'object'${e}&&${e}'default'${e}in e`, + Nr = (e, t, s, i, n, r) => { + const { _: o, cnst: a, getObject: l, getPropertyAccess: c, n: h, s: u } = s, + d = `{${h}` + (i ? Mr : Lr)(e, t + e + e, s) + `${t}${e}}` + return `${t}${a} n${o}=${o}Object.create(null${r ? `,${o}{${o}[Symbol.toStringTag]:${o}${zr(l)}${o}}` : ''});${h}${t}if${o}(e)${o}{${h}${t}${e}${_r(d, !i, s)}${h}${t}}${h}${t}n${c( + 'default' + )}${o}=${o}e;${h}${t}return ${Tr(n, 'n')}${u}${h}` + }, + _r = (e, t, { _: s, cnst: i, getFunctionIntro: n, s: r }) => ('var' !== i || t ? `for${s}(${i} k in e)${s}${e}` : `Object.keys(e).forEach(${n(['k'], { isAsync: !1, name: null })}${e})${r}`), + Rr = (e, t, s, { _: i, cnst: n, getDirectReturnFunction: r, getFunctionIntro: o, n: a }) => { + if (t) { + const [t, n] = r(['e'], { functionReturn: !1, lineBreakIndent: { base: s, t: s }, name: null }) + return `m.forEach(${t}e${i}&&${i}typeof e${i}!==${i}'string'${i}&&${i}!Array.isArray(e)${i}&&${i}Object.keys(e).forEach(${o(['k'], { isAsync: !1, name: null })}${e})${n});` + } + return `for${i}(var i${i}=${i}0;${i}i${i}<${i}m.length;${i}i++)${i}{${a}${s}${s}${n} e${i}=${i}m[i];${a}${s}${s}if${i}(typeof e${i}!==${i}'string'${i}&&${i}!Array.isArray(e))${i}{${i}for${i}(${n} k in e)${i}${e}${i}}${a}${s}}` + }, + Mr = (e, t, s) => { + const { _: i, n: n } = s + return `${t}if${i}(k${i}!==${i}'default')${i}{${n}` + Or(e, t + e, s) + `${t}}${n}` + }, + Or = (e, t, { _: s, cnst: i, getDirectReturnFunction: n, n: r }) => { + const [o, a] = n([], { functionReturn: !0, lineBreakIndent: null, name: null }) + return `${t}${i} d${s}=${s}Object.getOwnPropertyDescriptor(e,${s}k);${r}${t}Object.defineProperty(n,${s}k,${s}d.get${s}?${s}d${s}:${s}{${r}${t}${e}enumerable:${s}true,${r}${t}${e}get:${s}${o}e[k]${a}${r}${t}});${r}` + }, + Dr = (e, t, { _: s, cnst: i, getDirectReturnFunction: n, n: r }) => { + const [o, a] = n([], { functionReturn: !0, lineBreakIndent: null, name: null }) + return `${t}${i} d${s}=${s}Object.getOwnPropertyDescriptor(e,${s}k);${r}${t}if${s}(d)${s}{${r}${t}${e}Object.defineProperty(n,${s}k,${s}d.get${s}?${s}d${s}:${s}{${r}${t}${e}${e}enumerable:${s}true,${r}${t}${e}${e}get:${s}${o}e[k]${a}${r}${t}${e}});${r}${t}}${r}` + }, + Lr = (e, t, { _: s, n: i }) => `${t}n[k]${s}=${s}e[k];${i}`, + Tr = (e, t) => (e ? `Object.freeze(${t})` : t), + Vr = (e, t, { _: s, getObject: i }) => (e ? `Object.defineProperty(${t},${s}Symbol.toStringTag,${s}${zr(i)})` : t), + Br = Object.keys(wr) +function zr(e) { + return e([['value', "'Module'"]], { lineBreakIndent: null }) +} +function Fr(e, t) { + return null !== e.renderBaseName && t.has(e) && e.isReassigned +} +class jr extends ei { + declareDeclarator(e) { + this.id.declare(e, this.init || rs) + } + deoptimizePath(e) { + this.id.deoptimizePath(e) + } + hasEffects(e) { + this.deoptimized || this.applyDeoptimizations() + const t = this.init?.hasEffects(e) + return this.id.markDeclarationReached(), t || this.id.hasEffects(e) + } + include(e, t) { + const { deoptimized: s, id: i, init: n } = this + s || this.applyDeoptimizations(), (this.included = !0), n?.include(e, t), i.markDeclarationReached(), (t || i.shouldBeIncluded(e)) && i.include(e, t) + } + render(e, t) { + const { + exportNamesByVariable: s, + snippets: { _: i, getPropertyAccess: n } + } = t, + { end: r, id: o, init: a, start: l } = this, + c = o.included + if (c) o.render(e, t) + else { + const t = mn(e.original, '=', o.end) + e.remove(l, yn(e.original, t + 1)) + } + if (a) { + if (o instanceof hn && a instanceof Jn && !a.id) { + o.variable.getName(n) !== o.name && e.appendLeft(a.start + 5, ` ${o.name}`) + } + a.render(e, t, c ? me : { renderedSurroundingElement: Rs }) + } else o instanceof hn && Fr(o.variable, s) && e.appendLeft(r, `${i}=${i}void 0`) + } + applyDeoptimizations() { + this.deoptimized = !0 + const { id: e, init: t } = this + if (t && e instanceof hn && t instanceof Jn && !t.id) { + const { name: s, variable: i } = e + for (const e of t.scope.accessedOutsideVariables.values()) e !== i && e.forbidName(s) + } + } +} +function Ur(e, t, s) { + return 'external' === t ? Ar[s(e instanceof Jt ? e.id : null)] : 'default' === t ? xr : null +} +const Gr = { amd: ['require'], cjs: ['require'], system: ['module'] } +function Wr(e) { + const t = [] + for (const s of e.properties) { + if ('RestElement' === s.type || s.computed || 'Identifier' !== s.key.type) return + t.push(s.key.name) + } + return t +} +class qr extends ei { + applyDeoptimizations() {} +} +const Hr = 'ROLLUP_FILE_URL_', + Kr = 'import' +const Yr = ['cjs', 'iife', 'umd'], + Xr = { amd: ['document', 'module', 'URL'], cjs: ['document', 'require', 'URL', br], es: [], iife: ['document', 'URL', br], system: ['module'], umd: ['document', 'require', 'URL', br] }, + Qr = { amd: ['document', 'require', 'URL'], cjs: ['document', 'require', 'URL'], es: [], iife: ['document', 'URL'], system: ['module', 'URL'], umd: ['document', 'require', 'URL'] }, + Zr = (e, t = 'URL') => `new ${t}(${e}).href`, + Jr = (e, t = !1) => Zr(`'${L(e)}', ${t ? "typeof document === 'undefined' ? location.href : " : ''}document.currentScript && document.currentScript.src || document.baseURI`), + eo = + (e) => + (t, { chunkId: s }) => { + const i = e(s) + return null === t ? `({ url: ${i} })` : 'url' === t ? i : 'undefined' + }, + to = (e) => `require('u' + 'rl').pathToFileURL(${e}).href`, + so = (e) => to(`__dirname + '/${e}'`), + io = (e, t = !1) => `${t ? "typeof document === 'undefined' ? location.href : " : ''}(${br} && ${br}.src || new URL('${L(e)}', document.baseURI).href)`, + no = { + amd: (e) => ('.' !== e[0] && (e = './' + e), Zr(`require.toUrl('${e}'), document.baseURI`)), + cjs: (e) => `(typeof document === 'undefined' ? ${so(e)} : ${Jr(e)})`, + es: (e) => Zr(`'${e}', import.meta.url`), + iife: (e) => Jr(e), + system: (e) => Zr(`'${e}', module.meta.url`), + umd: (e) => `(typeof document === 'undefined' && typeof location === 'undefined' ? ${so(e)} : ${Jr(e, !0)})` + }, + ro = { + amd: eo(() => Zr('module.uri, document.baseURI')), + cjs: eo((e) => `(typeof document === 'undefined' ? ${to('__filename')} : ${io(e)})`), + iife: eo((e) => io(e)), + system: (e, { snippets: { getPropertyAccess: t } }) => (null === e ? 'module.meta' : `module.meta${t(e)}`), + umd: eo((e) => `(typeof document === 'undefined' && typeof location === 'undefined' ? ${to('__filename')} : ${io(e, !0)})`) + } +class oo extends ei { + constructor() { + super(...arguments), (this.hasCachedEffect = null), (this.hasLoggedEffect = !1) + } + hasCachedEffects() { + return !!this.included && (null === this.hasCachedEffect ? (this.hasCachedEffect = this.hasEffects(is())) : this.hasCachedEffect) + } + hasEffects(e) { + for (const t of this.body) + if (t.hasEffects(e)) { + if (this.context.options.experimentalLogSideEffects && !this.hasLoggedEffect) { + this.hasLoggedEffect = !0 + const { code: e, log: s, module: i } = this.context + s(ke, Tt(e, i.id, Ce(e, t.start, { offsetLine: 1 })), t.start) + } + return (this.hasCachedEffect = !0) + } + return !1 + } + include(e, t) { + this.included = !0 + for (const s of this.body) (t || s.shouldBeIncluded(e)) && s.include(e, t) + } + render(e, t) { + let s = this.start + if ((e.original.startsWith('#!') && ((s = Math.min(e.original.indexOf('\n') + 1, this.end)), e.remove(0, s)), this.body.length > 0)) { + for (; '/' === e.original[s] && /[*/]/.test(e.original[s + 1]); ) { + const t = xn(e.original.slice(s, this.body[0].start)) + if (-1 === t[0]) break + s += t[1] + } + En(this.body, e, s, this.end, t) + } else super.render(e, t) + } + applyDeoptimizations() {} +} +class ao extends ei { + hasEffects(e) { + if (this.test?.hasEffects(e)) return !0 + for (const t of this.consequent) { + if (e.brokenFlow) break + if (t.hasEffects(e)) return !0 + } + return !1 + } + include(e, t) { + ;(this.included = !0), this.test?.include(e, t) + for (const s of this.consequent) (t || s.shouldBeIncluded(e)) && s.include(e, t) + } + render(e, t, s) { + if (this.consequent.length > 0) { + this.test && this.test.render(e, t) + const i = this.test ? this.test.end : mn(e.original, 'default', this.start) + 7, + n = mn(e.original, ':', i) + 1 + En(this.consequent, e, n, s.end, t) + } else super.render(e, t) + } +} +ao.prototype.needsBoundaries = !0 +class lo extends ei { + deoptimizeArgumentsOnInteractionAtPath() {} + getLiteralValueAtPath(e) { + return e.length > 0 || 1 !== this.quasis.length ? ne : this.quasis[0].value.cooked + } + getReturnExpressionWhenCalledAtPath(e) { + return 1 !== e.length ? le : bs(xs, e[0]) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return 0 === t.type ? e.length > 1 : 2 !== t.type || 1 !== e.length || Es(xs, e[0], t, s) + } + render(e, t) { + e.indentExclusionRanges.push([this.start, this.end]), super.render(e, t) + } +} +class co extends pe { + constructor() { + super('undefined') + } + getLiteralValueAtPath() {} +} +class ho extends Pi { + constructor(e, t, s) { + super(e, t, t.declaration, s), (this.hasId = !1), (this.originalId = null), (this.originalVariable = null) + const i = t.declaration + ;(i instanceof nr || i instanceof Zn) && i.id ? ((this.hasId = !0), (this.originalId = i.id)) : i instanceof hn && (this.originalId = i) + } + addReference(e) { + this.hasId || (this.name = e.name) + } + forbidName(e) { + const t = this.getOriginalVariable() + t === this ? super.forbidName(e) : t.forbidName(e) + } + getAssignedVariableName() { + return (this.originalId && this.originalId.name) || null + } + getBaseVariableName() { + const e = this.getOriginalVariable() + return e === this ? super.getBaseVariableName() : e.getBaseVariableName() + } + getDirectOriginalVariable() { + return !this.originalId || + (!this.hasId && (this.originalId.isPossibleTDZ() || this.originalId.variable.isReassigned || this.originalId.variable instanceof co || 'syntheticNamespace' in this.originalId.variable)) + ? null + : this.originalId.variable + } + getName(e) { + const t = this.getOriginalVariable() + return t === this ? super.getName(e) : t.getName(e) + } + getOriginalVariable() { + if (this.originalVariable) return this.originalVariable + let e, + t = this + const s = new Set() + do { + s.add(t), (e = t), (t = e.getDirectOriginalVariable()) + } while (t instanceof ho && !s.has(t)) + return (this.originalVariable = t || e) + } +} +class uo extends Vi { + constructor(e, t) { + super(e), (this.context = t), this.variables.set('this', new Pi('this', null, rs, t)) + } + addExportDefaultDeclaration(e, t, s) { + const i = new ho(e, t, s) + return this.variables.set('default', i), i + } + addNamespaceMemberAccess() {} + deconflict(e, t, s) { + for (const i of this.children) i.deconflict(e, t, s) + } + findLexicalBoundary() { + return this + } + findVariable(e) { + const t = this.variables.get(e) || this.accessedOutsideVariables.get(e) + if (t) return t + const s = this.context.traceVariable(e) || this.parent.findVariable(e) + return s instanceof ln && this.accessedOutsideVariables.set(e, s), s + } +} +const po = { '!': (e) => !e, '+': (e) => +e, '-': (e) => -e, delete: () => ne, typeof: (e) => typeof e, void: () => {}, '~': (e) => ~e } +class fo extends ei { + deoptimizePath() { + for (const e of this.declarations) e.deoptimizePath(X) + } + hasEffectsOnInteractionAtPath() { + return !1 + } + include(e, t, { asSingleStatement: s } = me) { + this.included = !0 + for (const i of this.declarations) { + ;(t || i.shouldBeIncluded(e)) && i.include(e, t) + const { id: n, init: r } = i + s && n.include(e, t), r && n.included && !r.included && (n instanceof _n || n instanceof wi) && r.include(e, t) + } + } + initialise() { + for (const e of this.declarations) e.declareDeclarator(this.kind) + } + render(e, t, s = me) { + if ( + (function (e, t) { + for (const s of e) { + if (!s.id.included) return !1 + if (s.id.type === Os) { + if (t.has(s.id.variable)) return !1 + } else { + const e = [] + if ((s.id.addExportedVariables(e, t), e.length > 0)) return !1 + } + } + return !0 + })(this.declarations, t.exportNamesByVariable) + ) { + for (const s of this.declarations) s.render(e, t) + s.isNoStatement || 59 === e.original.charCodeAt(this.end - 1) || e.appendLeft(this.end, ';') + } else this.renderReplacedDeclarations(e, t) + } + applyDeoptimizations() {} + renderDeclarationEnd(e, t, s, i, n, r, o) { + 59 === e.original.charCodeAt(this.end - 1) && e.remove(this.end - 1, this.end), + (t += ';'), + null === s + ? e.appendLeft(n, t) + : (10 !== e.original.charCodeAt(i - 1) || (10 !== e.original.charCodeAt(this.end) && 13 !== e.original.charCodeAt(this.end)) || (i--, 13 === e.original.charCodeAt(i) && i--), + i === s + 1 ? e.overwrite(s, n, t) : (e.overwrite(s, s + 1, t), e.remove(i, n))), + r.length > 0 && e.appendLeft(n, ` ${Cn(r, o)};`) + } + renderReplacedDeclarations(e, t) { + const s = bn(this.declarations, e, this.start + this.kind.length, this.end - (59 === e.original.charCodeAt(this.end - 1) ? 1 : 0)) + let i, n + n = yn(e.original, this.start + this.kind.length) + let r = n - 1 + e.remove(this.start, r) + let o, + a, + l = !1, + c = !1, + h = '' + const u = [], + d = (function (e, t, s) { + let i = null + if ('system' === t.format) { + for (const { node: n } of e) + n.id instanceof hn && n.init && 0 === s.length && 1 === t.exportNamesByVariable.get(n.id.variable)?.length + ? ((i = n.id.variable), s.push(i)) + : n.id.addExportedVariables(s, t.exportNamesByVariable) + s.length > 1 ? (i = null) : i && (s.length = 0) + } + return i + })(s, t, u) + for (const { node: u, start: p, separator: f, contentEnd: m, end: g } of s) + if (u.included) { + if ((u.render(e, t), (o = ''), (a = ''), !u.id.included || (u.id instanceof hn && Fr(u.id.variable, t.exportNamesByVariable)))) c && (h += ';'), (l = !1) + else { + if (d && d === u.id.variable) { + const s = mn(e.original, '=', u.id.end) + $n(d, yn(e.original, s + 1), null === f ? m : f, e, t) + } + l ? (h += ',') : (c && (h += ';'), (o += `${this.kind} `), (l = !0)) + } + n === r + 1 ? e.overwrite(r, n, h + o) : (e.overwrite(r, r + 1, h), e.appendLeft(n, o)), (i = m), (n = g), (c = !0), (r = f), (h = '') + } else e.remove(p, g) + this.renderDeclarationEnd(e, h, r, i, n, u, t) + } +} +const mo = { + ArrayExpression: Ii, + ArrayPattern: wi, + ArrowFunctionExpression: Pn, + AssignmentExpression: class extends ei { + hasEffects(e) { + const { deoptimized: t, left: s, operator: i, right: n } = this + return t || this.applyDeoptimizations(), n.hasEffects(e) || s.hasEffectsAsAssignmentTarget(e, '=' !== i) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return this.right.hasEffectsOnInteractionAtPath(e, t, s) + } + include(e, t) { + const { deoptimized: s, left: i, right: n, operator: r } = this + s || this.applyDeoptimizations(), + (this.included = !0), + (t || '=' !== r || i.included || i.hasEffectsAsAssignmentTarget(is(), !1)) && i.includeAsAssignmentTarget(e, t, '=' !== r), + n.include(e, t) + } + initialise() { + this.left.setAssignedValue(this.right) + } + render(e, t, { preventASI: s, renderedParentType: i, renderedSurroundingElement: n } = me) { + const { left: r, right: o, start: a, end: l, parent: c } = this + if (r.included) r.render(e, t), o.render(e, t) + else { + const l = yn(e.original, mn(e.original, '=', r.end) + 1) + e.remove(a, l), s && vn(e, l, o.start), o.render(e, t, { renderedParentType: i || c.type, renderedSurroundingElement: n || c.type }) + } + if ('system' === t.format) + if (r instanceof hn) { + const s = r.variable, + i = t.exportNamesByVariable.get(s) + if (i) return void (1 === i.length ? $n(s, a, l, e, t) : Nn(s, a, l, c.type !== Rs, e, t)) + } else { + const s = [] + if ((r.addExportedVariables(s, t.exportNamesByVariable), s.length > 0)) + return void (function (e, t, s, i, n, r) { + const { _: o, getDirectReturnIifeLeft: a } = r.snippets + n.prependRight(t, a(['v'], `${Cn(e, r)},${o}v`, { needsArrowReturnParens: !0, needsWrappedFunction: i })), n.appendLeft(s, ')') + })(s, a, l, n === Rs, e, t) + } + r.included && r instanceof _n && (n === Rs || n === ks) && (e.appendRight(a, '('), e.prependLeft(l, ')')) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.left.deoptimizePath(X), this.right.deoptimizePath(Q), this.context.requestTreeshakingPass() + } + }, + AssignmentPattern: class extends ei { + addExportedVariables(e, t) { + this.left.addExportedVariables(e, t) + } + declare(e, t) { + return this.left.declare(e, t) + } + deoptimizePath(e) { + 0 === e.length && this.left.deoptimizePath(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return e.length > 0 || this.left.hasEffectsOnInteractionAtPath(X, t, s) + } + markDeclarationReached() { + this.left.markDeclarationReached() + } + render(e, t, { isShorthandProperty: s } = me) { + this.left.render(e, t, { isShorthandProperty: s }), this.right.render(e, t) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.left.deoptimizePath(X), this.right.deoptimizePath(Q), this.context.requestTreeshakingPass() + } + }, + AwaitExpression: Ln, + BinaryExpression: class extends ei { + deoptimizeCache() {} + getLiteralValueAtPath(e, t, s) { + if (e.length > 0) return ne + const i = this.left.getLiteralValueAtPath(X, t, s) + if ('symbol' == typeof i) return ne + const n = this.right.getLiteralValueAtPath(X, t, s) + if ('symbol' == typeof n) return ne + const r = Tn[this.operator] + return r ? r(i, n) : ne + } + hasEffects(e) { + return ('+' === this.operator && this.parent instanceof An && '' === this.left.getLiteralValueAtPath(X, se, this)) || super.hasEffects(e) + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return 0 !== t || e.length > 1 + } + render(e, t, { renderedSurroundingElement: s } = me) { + this.left.render(e, t, { renderedSurroundingElement: s }), this.right.render(e, t) + } + }, + BlockStatement: kn, + BreakStatement: class extends ei { + hasEffects(e) { + if (this.label) { + if (!e.ignore.labels.has(this.label.name)) return !0 + e.includedLabels.add(this.label.name) + } else { + if (!e.ignore.breaks) return !0 + e.hasBreak = !0 + } + return (e.brokenFlow = !0), !1 + } + include(e) { + ;(this.included = !0), this.label ? (this.label.include(), e.includedLabels.add(this.label.name)) : (e.hasBreak = !0), (e.brokenFlow = !0) + } + }, + CallExpression: Wn, + CatchClause: class extends ei { + createScope(e) { + this.scope = new qn(e, this.context) + } + parseNode(e) { + const { param: t } = e + t && ((this.param = new (this.context.getNodeConstructor(t.type))(t, this, this.scope)), this.param.declare('parameter', ae)), super.parseNode(e) + } + }, + ChainExpression: class extends ei { + deoptimizeCache() {} + getLiteralValueAtPath(e, t, s) { + if (!this.expression.isSkippedAsOptional(s)) return this.expression.getLiteralValueAtPath(e, t, s) + } + hasEffects(e) { + return !this.expression.isSkippedAsOptional(this) && this.expression.hasEffects(e) + } + }, + ClassBody: class extends ei { + createScope(e) { + this.scope = new Hn(e, this.parent, this.context) + } + include(e, t) { + ;(this.included = !0), this.context.includeVariableInModule(this.scope.thisVariable) + for (const s of this.body) s.include(e, t) + } + parseNode(e) { + const t = (this.body = []) + for (const s of e.body) t.push(new (this.context.getNodeConstructor(s.type))(s, this, s.static ? this.scope : this.scope.instanceScope)) + super.parseNode(e) + } + applyDeoptimizations() {} + }, + ClassDeclaration: Zn, + ClassExpression: Jn, + ConditionalExpression: class extends ei { + constructor() { + super(...arguments), (this.expressionsToBeDeoptimized = []), (this.isBranchResolutionAnalysed = !1), (this.usedBranch = null) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.consequent.deoptimizeArgumentsOnInteractionAtPath(e, t, s), this.alternate.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizeCache() { + if (null !== this.usedBranch) { + const e = this.usedBranch === this.consequent ? this.alternate : this.consequent + ;(this.usedBranch = null), e.deoptimizePath(Q) + const { expressionsToBeDeoptimized: t } = this + this.expressionsToBeDeoptimized = ye + for (const e of t) e.deoptimizeCache() + } + } + deoptimizePath(e) { + const t = this.getUsedBranch() + t ? t.deoptimizePath(e) : (this.consequent.deoptimizePath(e), this.alternate.deoptimizePath(e)) + } + getLiteralValueAtPath(e, t, s) { + const i = this.getUsedBranch() + return i ? (this.expressionsToBeDeoptimized.push(s), i.getLiteralValueAtPath(e, t, s)) : ne + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + const n = this.getUsedBranch() + return n + ? (this.expressionsToBeDeoptimized.push(i), n.getReturnExpressionWhenCalledAtPath(e, t, s, i)) + : [new er([this.consequent.getReturnExpressionWhenCalledAtPath(e, t, s, i)[0], this.alternate.getReturnExpressionWhenCalledAtPath(e, t, s, i)[0]]), !1] + } + hasEffects(e) { + if (this.test.hasEffects(e)) return !0 + const t = this.getUsedBranch() + return t ? t.hasEffects(e) : this.consequent.hasEffects(e) || this.alternate.hasEffects(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + const i = this.getUsedBranch() + return i ? i.hasEffectsOnInteractionAtPath(e, t, s) : this.consequent.hasEffectsOnInteractionAtPath(e, t, s) || this.alternate.hasEffectsOnInteractionAtPath(e, t, s) + } + include(e, t) { + this.included = !0 + const s = this.getUsedBranch() + t || this.test.shouldBeIncluded(e) || null === s ? (this.test.include(e, t), this.consequent.include(e, t), this.alternate.include(e, t)) : s.include(e, t) + } + includeCallArguments(e, t) { + const s = this.getUsedBranch() + s ? s.includeCallArguments(e, t) : (this.consequent.includeCallArguments(e, t), this.alternate.includeCallArguments(e, t)) + } + render(e, t, { isCalleeOfRenderedParent: s, preventASI: i, renderedParentType: n, renderedSurroundingElement: r } = me) { + const o = this.getUsedBranch() + if (this.test.included) this.test.render(e, t, { renderedSurroundingElement: r }), this.consequent.render(e, t), this.alternate.render(e, t) + else { + const a = mn(e.original, ':', this.consequent.end), + l = yn(e.original, (this.consequent.included ? mn(e.original, '?', this.test.end) : a) + 1) + i && vn(e, l, o.start), + e.remove(this.start, l), + this.consequent.included && e.remove(a, this.end), + pn(this, e), + o.render(e, t, { isCalleeOfRenderedParent: s, preventASI: !0, renderedParentType: n || this.parent.type, renderedSurroundingElement: r || this.parent.type }) + } + } + getUsedBranch() { + if (this.isBranchResolutionAnalysed) return this.usedBranch + this.isBranchResolutionAnalysed = !0 + const e = this.test.getLiteralValueAtPath(X, se, this) + return 'symbol' == typeof e ? null : (this.usedBranch = e ? this.consequent : this.alternate) + } + }, + ContinueStatement: class extends ei { + hasEffects(e) { + if (this.label) { + if (!e.ignore.labels.has(this.label.name)) return !0 + e.includedLabels.add(this.label.name) + } else { + if (!e.ignore.continues) return !0 + e.hasContinue = !0 + } + return (e.brokenFlow = !0), !1 + } + include(e) { + ;(this.included = !0), this.label ? (this.label.include(), e.includedLabels.add(this.label.name)) : (e.hasContinue = !0), (e.brokenFlow = !0) + } + }, + DoWhileStatement: class extends ei { + hasEffects(e) { + return !!this.test.hasEffects(e) || tr(e, this.body) + } + include(e, t) { + ;(this.included = !0), this.test.include(e, t), sr(e, this.body, t) + } + }, + EmptyStatement: class extends ei { + hasEffects() { + return !1 + } + }, + ExportAllDeclaration: ir, + ExportDefaultDeclaration: rr, + ExportNamedDeclaration: or, + ExportSpecifier: class extends ei { + applyDeoptimizations() {} + }, + ExpressionStatement: An, + ForInStatement: class extends ei { + createScope(e) { + this.scope = new Sn(e) + } + hasEffects(e) { + const { body: t, deoptimized: s, left: i, right: n } = this + return s || this.applyDeoptimizations(), !(!i.hasEffectsAsAssignmentTarget(e, !1) && !n.hasEffects(e)) || tr(e, t) + } + include(e, t) { + const { body: s, deoptimized: i, left: n, right: r } = this + i || this.applyDeoptimizations(), (this.included = !0), n.includeAsAssignmentTarget(e, t || !0, !1), r.include(e, t), sr(e, s, t) + } + initialise() { + this.left.setAssignedValue(ae) + } + render(e, t) { + this.left.render(e, t, fn), this.right.render(e, t, fn), 110 === e.original.charCodeAt(this.right.start - 1) && e.prependLeft(this.right.start, ' '), this.body.render(e, t) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.left.deoptimizePath(X), this.context.requestTreeshakingPass() + } + }, + ForOfStatement: class extends ei { + createScope(e) { + this.scope = new Sn(e) + } + hasEffects() { + return this.deoptimized || this.applyDeoptimizations(), !0 + } + include(e, t) { + const { body: s, deoptimized: i, left: n, right: r } = this + i || this.applyDeoptimizations(), (this.included = !0), n.includeAsAssignmentTarget(e, t || !0, !1), r.include(e, t), sr(e, s, t) + } + initialise() { + this.left.setAssignedValue(ae) + } + render(e, t) { + this.left.render(e, t, fn), this.right.render(e, t, fn), 102 === e.original.charCodeAt(this.right.start - 1) && e.prependLeft(this.right.start, ' '), this.body.render(e, t) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.left.deoptimizePath(X), this.right.deoptimizePath(Q), this.context.requestTreeshakingPass() + } + }, + ForStatement: class extends ei { + createScope(e) { + this.scope = new Sn(e) + } + hasEffects(e) { + return !!(this.init?.hasEffects(e) || this.test?.hasEffects(e) || this.update?.hasEffects(e)) || tr(e, this.body) + } + include(e, t) { + ;(this.included = !0), this.init?.include(e, t, { asSingleStatement: !0 }), this.test?.include(e, t), this.update?.include(e, t), sr(e, this.body, t) + } + render(e, t) { + this.init?.render(e, t, fn), this.test?.render(e, t, fn), this.update?.render(e, t, fn), this.body.render(e, t) + } + }, + FunctionDeclaration: nr, + FunctionExpression: ar, + Identifier: hn, + IfStatement: hr, + ImportAttribute: class extends ei {}, + ImportDeclaration: ur, + ImportDefaultSpecifier: dr, + ImportExpression: class extends ei { + constructor() { + super(...arguments), + (this.inlineNamespace = null), + (this.assertions = null), + (this.mechanism = null), + (this.namespaceExportName = void 0), + (this.resolution = null), + (this.resolutionString = null) + } + bind() { + this.source.bind() + } + getDeterministicImportedNames() { + const e = this.parent + if (e instanceof An) return ye + if (e instanceof Ln) { + const t = e.parent + if (t instanceof An) return ye + if (t instanceof jr) { + const e = t.id + return e instanceof _n ? Wr(e) : void 0 + } + if (t instanceof jn) { + const e = t.property + if (!t.computed && e instanceof hn) return [e.name] + } + } else if (e instanceof jn) { + const t = e.parent, + s = e.property + if (!(t instanceof Wn && s instanceof hn)) return + const i = s.name + if (t.parent instanceof An && ['catch', 'finally'].includes(i)) return ye + if ('then' !== i) return + if (0 === t.arguments.length) return ye + const n = t.arguments[0] + if (1 !== t.arguments.length || !(n instanceof Pn || n instanceof ar)) return + if (0 === n.params.length) return ye + const r = n.params[0] + return 1 === n.params.length && r instanceof _n ? Wr(r) : void 0 + } + } + hasEffects() { + return !0 + } + include(e, t) { + this.included || ((this.included = !0), this.context.includeDynamicImport(this), this.scope.addAccessedDynamicImport(this)), this.source.include(e, t) + } + initialise() { + this.context.addDynamicImport(this) + } + parseNode(e) { + super.parseNode(e, ['source']) + } + render(e, t) { + const { + snippets: { _: s, getDirectReturnFunction: i, getObject: n, getPropertyAccess: r } + } = t + if (this.inlineNamespace) { + const [t, s] = i([], { functionReturn: !0, lineBreakIndent: null, name: null }) + e.overwrite(this.start, this.end, `Promise.resolve().then(${t}${this.inlineNamespace.getName(r)}${s})`) + } else { + if ( + (this.mechanism && (e.overwrite(this.start, mn(e.original, '(', this.start + 6) + 1, this.mechanism.left), e.overwrite(this.end - 1, this.end, this.mechanism.right)), + this.resolutionString) + ) { + if ((e.overwrite(this.source.start, this.source.end, this.resolutionString), this.namespaceExportName)) { + const [t, s] = i(['n'], { functionReturn: !0, lineBreakIndent: null, name: null }) + e.prependLeft(this.end, `.then(${t}n.${this.namespaceExportName}${s})`) + } + } else this.source.render(e, t) + !0 !== this.assertions && + (this.arguments && e.overwrite(this.source.end, this.end - 1, '', { contentOnly: !0 }), + this.assertions && e.appendLeft(this.end - 1, `,${s}${n([['assert', this.assertions]], { lineBreakIndent: null })}`)) + } + } + setExternalResolution(e, t, s, i, n, r, o, a, l) { + const { format: c } = s + ;(this.inlineNamespace = null), (this.resolution = t), (this.resolutionString = o), (this.namespaceExportName = a), (this.assertions = l) + const h = [...(Gr[c] || [])] + let u + ;({ helper: u, mechanism: this.mechanism } = this.getDynamicImportMechanismAndHelper(t, e, s, i, n)), u && h.push(u), h.length > 0 && this.scope.addAccessedGlobals(h, r) + } + setInternalResolution(e) { + this.inlineNamespace = e + } + applyDeoptimizations() {} + getDynamicImportMechanismAndHelper( + e, + t, + { compact: s, dynamicImportFunction: i, dynamicImportInCjs: n, format: r, generatedCode: { arrowFunctions: o }, interop: a }, + { _: l, getDirectReturnFunction: c, getDirectReturnIifeLeft: h }, + u + ) { + const d = u.hookFirstSync('renderDynamicImport', [ + { + customResolution: 'string' == typeof this.resolution ? this.resolution : null, + format: r, + moduleId: this.context.module.id, + targetModuleId: this.resolution && 'string' != typeof this.resolution ? this.resolution.id : null + } + ]) + if (d) return { helper: null, mechanism: d } + const p = !this.resolution || 'string' == typeof this.resolution + switch (r) { + case 'cjs': { + if (n && (!e || 'string' == typeof e || e instanceof Jt)) return { helper: null, mechanism: null } + const s = Ur(e, t, a) + let i = 'require(', + r = ')' + s && ((i = `/*#__PURE__*/${s}(${i}`), (r += ')')) + const [l, u] = c([], { functionReturn: !0, lineBreakIndent: null, name: null }) + return ( + (i = `Promise.resolve().then(${l}${i}`), + (r += `${u})`), + !o && p && ((i = h(['t'], `${i}t${r}`, { needsArrowReturnParens: !1, needsWrappedFunction: !0 })), (r = ')')), + { helper: s, mechanism: { left: i, right: r } } + ) + } + case 'amd': { + const i = s ? 'c' : 'resolve', + n = s ? 'e' : 'reject', + r = Ur(e, t, a), + [u, d] = c(['m'], { functionReturn: !1, lineBreakIndent: null, name: null }), + f = r ? `${u}${i}(/*#__PURE__*/${r}(m))${d}` : i, + [m, g] = c([i, n], { functionReturn: !1, lineBreakIndent: null, name: null }) + let y = `new Promise(${m}require([`, + x = `],${l}${f},${l}${n})${g})` + return !o && p && ((y = h(['t'], `${y}t${x}`, { needsArrowReturnParens: !1, needsWrappedFunction: !0 })), (x = ')')), { helper: r, mechanism: { left: y, right: x } } + } + case 'system': + return { helper: null, mechanism: { left: 'module.import(', right: ')' } } + case 'es': + if (i) return { helper: null, mechanism: { left: `${i}(`, right: ')' } } + } + return { helper: null, mechanism: null } + } + }, + ImportNamespaceSpecifier: qr, + ImportSpecifier: class extends ei { + applyDeoptimizations() {} + }, + LabeledStatement: class extends ei { + hasEffects(e) { + const t = e.brokenFlow + return ( + e.ignore.labels.add(this.label.name), + !!this.body.hasEffects(e) || (e.ignore.labels.delete(this.label.name), e.includedLabels.has(this.label.name) && (e.includedLabels.delete(this.label.name), (e.brokenFlow = t)), !1) + ) + } + include(e, t) { + this.included = !0 + const s = e.brokenFlow + this.body.include(e, t), (t || e.includedLabels.has(this.label.name)) && (this.label.include(), e.includedLabels.delete(this.label.name), (e.brokenFlow = s)) + } + render(e, t) { + this.label.included ? this.label.render(e, t) : e.remove(this.start, yn(e.original, mn(e.original, ':', this.label.end) + 1)), this.body.render(e, t) + } + }, + Literal: Bn, + LogicalExpression: class extends ei { + constructor() { + super(...arguments), (this.expressionsToBeDeoptimized = []), (this.isBranchResolutionAnalysed = !1), (this.usedBranch = null) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.left.deoptimizeArgumentsOnInteractionAtPath(e, t, s), this.right.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizeCache() { + if (this.usedBranch) { + const e = this.usedBranch === this.left ? this.right : this.left + ;(this.usedBranch = null), e.deoptimizePath(Q) + const { context: t, expressionsToBeDeoptimized: s } = this + this.expressionsToBeDeoptimized = ye + for (const e of s) e.deoptimizeCache() + t.requestTreeshakingPass() + } + } + deoptimizePath(e) { + const t = this.getUsedBranch() + t ? t.deoptimizePath(e) : (this.left.deoptimizePath(e), this.right.deoptimizePath(e)) + } + getLiteralValueAtPath(e, t, s) { + const i = this.getUsedBranch() + return i ? (this.expressionsToBeDeoptimized.push(s), i.getLiteralValueAtPath(e, t, s)) : ne + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + const n = this.getUsedBranch() + return n + ? (this.expressionsToBeDeoptimized.push(i), n.getReturnExpressionWhenCalledAtPath(e, t, s, i)) + : [new er([this.left.getReturnExpressionWhenCalledAtPath(e, t, s, i)[0], this.right.getReturnExpressionWhenCalledAtPath(e, t, s, i)[0]]), !1] + } + hasEffects(e) { + return !!this.left.hasEffects(e) || (this.getUsedBranch() !== this.left && this.right.hasEffects(e)) + } + hasEffectsOnInteractionAtPath(e, t, s) { + const i = this.getUsedBranch() + return i ? i.hasEffectsOnInteractionAtPath(e, t, s) : this.left.hasEffectsOnInteractionAtPath(e, t, s) || this.right.hasEffectsOnInteractionAtPath(e, t, s) + } + include(e, t) { + this.included = !0 + const s = this.getUsedBranch() + t || (s === this.right && this.left.shouldBeIncluded(e)) || !s ? (this.left.include(e, t), this.right.include(e, t)) : s.include(e, t) + } + render(e, t, { isCalleeOfRenderedParent: s, preventASI: i, renderedParentType: n, renderedSurroundingElement: r } = me) { + if (this.left.included && this.right.included) this.left.render(e, t, { preventASI: i, renderedSurroundingElement: r }), this.right.render(e, t) + else { + const o = mn(e.original, this.operator, this.left.end) + if (this.right.included) { + const t = yn(e.original, o + 2) + e.remove(this.start, t), i && vn(e, t, this.right.start) + } else e.remove(o, this.end) + pn(this, e), this.getUsedBranch().render(e, t, { isCalleeOfRenderedParent: s, preventASI: i, renderedParentType: n || this.parent.type, renderedSurroundingElement: r || this.parent.type }) + } + } + getUsedBranch() { + if (!this.isBranchResolutionAnalysed) { + this.isBranchResolutionAnalysed = !0 + const e = this.left.getLiteralValueAtPath(X, se, this) + if ('symbol' == typeof e) return null + this.usedBranch = ('||' === this.operator && e) || ('&&' === this.operator && !e) || ('??' === this.operator && null != e) ? this.left : this.right + } + return this.usedBranch + } + }, + MemberExpression: jn, + MetaProperty: class extends ei { + constructor() { + super(...arguments), (this.metaProperty = null), (this.preliminaryChunkId = null), (this.referenceId = null) + } + getReferencedFileName(e) { + const { + meta: { name: t }, + metaProperty: s + } = this + return t === Kr && s?.startsWith(Hr) ? e.getFileName(s.slice(16)) : null + } + hasEffects() { + return !1 + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return e.length > 1 || 0 !== t + } + include() { + if (!this.included && ((this.included = !0), this.meta.name === Kr)) { + this.context.addImportMeta(this) + const e = this.parent, + t = (this.metaProperty = e instanceof jn && 'string' == typeof e.propertyKey ? e.propertyKey : null) + t?.startsWith(Hr) && (this.referenceId = t.slice(16)) + } + } + render(e, t) { + const { format: s, pluginDriver: i, snippets: n } = t, + { + context: { module: r }, + meta: { name: o }, + metaProperty: a, + parent: l, + preliminaryChunkId: c, + referenceId: h, + start: u, + end: d + } = this, + { id: p } = r + if (o !== Kr) return + const f = c + if (h) { + const t = i.getFileName(h), + n = P(_($(f), t)), + r = i.hookFirstSync('resolveFileUrl', [{ chunkId: f, fileName: t, format: s, moduleId: p, referenceId: h, relativePath: n }]) || no[s](n) + return void e.overwrite(l.start, l.end, r, { contentOnly: !0 }) + } + let m = i.hookFirstSync('resolveImportMeta', [a, { chunkId: f, format: s, moduleId: p }]) + m || ((m = ro[s]?.(a, { chunkId: f, snippets: n })), t.accessedDocumentCurrentScript || (t.accessedDocumentCurrentScript = Yr.includes(s) && 'undefined' !== m)), + 'string' == typeof m && (l instanceof jn ? e.overwrite(l.start, l.end, m, { contentOnly: !0 }) : e.overwrite(u, d, m, { contentOnly: !0 })) + } + setResolution(e, t, s) { + this.preliminaryChunkId = s + const i = (this.metaProperty?.startsWith(Hr) ? Qr : Xr)[e] + i.length > 0 && this.scope.addAccessedGlobals(i, t) + } + }, + MethodDefinition: Yn, + NewExpression: class extends ei { + hasEffects(e) { + try { + for (const t of this.arguments) if (t.hasEffects(e)) return !0 + return !this.annotationPure && (this.callee.hasEffects(e) || this.callee.hasEffectsOnInteractionAtPath(X, this.interaction, e)) + } finally { + this.deoptimized || this.applyDeoptimizations() + } + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return e.length > 0 || 0 !== t + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), t ? super.include(e, t) : ((this.included = !0), this.callee.include(e, !1)), this.callee.includeCallArguments(e, this.arguments) + } + initialise() { + this.interaction = { args: [null, ...this.arguments], type: 2, withNew: !0 } + } + render(e, t) { + this.callee.render(e, t), Vn(e, t, this) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.callee.deoptimizeArgumentsOnInteractionAtPath(this.interaction, X, se), this.context.requestTreeshakingPass() + } + }, + ObjectExpression: class extends ei { + constructor() { + super(...arguments), (this.objectEntity = null) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizeCache() { + this.getObjectEntity().deoptimizeAllProperties() + } + deoptimizePath(e) { + this.getObjectEntity().deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.getObjectEntity().getLiteralValueAtPath(e, t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e, t, s, i) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return this.getObjectEntity().hasEffectsOnInteractionAtPath(e, t, s) + } + render(e, t, { renderedSurroundingElement: s } = me) { + super.render(e, t), (s !== Rs && s !== ks) || (e.appendRight(this.start, '('), e.prependLeft(this.end, ')')) + } + applyDeoptimizations() {} + getObjectEntity() { + if (null !== this.objectEntity) return this.objectEntity + let e = ui + const t = [] + for (const s of this.properties) { + if (s instanceof ti) { + t.push({ key: q, kind: 'init', property: s }) + continue + } + let i + if (s.computed) { + const e = s.key.getLiteralValueAtPath(X, se, this) + if ('symbol' == typeof e) { + t.push({ key: q, kind: s.kind, property: s }) + continue + } + i = String(e) + } else if (((i = s.key instanceof hn ? s.key.name : String(s.key.value)), '__proto__' === i && 'init' === s.kind)) { + e = s.value instanceof Bn && null === s.value.value ? null : s.value + continue + } + t.push({ key: i, kind: s.kind, property: s }) + } + return (this.objectEntity = new li(t, e)) + } + }, + ObjectPattern: _n, + PrivateIdentifier: class extends ei {}, + Program: oo, + Property: class extends Kn { + constructor() { + super(...arguments), (this.declarationInit = null) + } + declare(e, t) { + return (this.declarationInit = t), this.value.declare(e, ae) + } + hasEffects(e) { + this.deoptimized || this.applyDeoptimizations() + const t = this.context.options.treeshake.propertyReadSideEffects + return ('ObjectPattern' === this.parent.type && 'always' === t) || this.key.hasEffects(e) || this.value.hasEffects(e) + } + markDeclarationReached() { + this.value.markDeclarationReached() + } + render(e, t) { + this.shorthand || this.key.render(e, t), this.value.render(e, t, { isShorthandProperty: this.shorthand }) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), null !== this.declarationInit && (this.declarationInit.deoptimizePath([q, q]), this.context.requestTreeshakingPass()) + } + }, + PropertyDefinition: class extends ei { + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.value?.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + this.value?.deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.value ? this.value.getLiteralValueAtPath(e, t, s) : ne + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.value ? this.value.getReturnExpressionWhenCalledAtPath(e, t, s, i) : le + } + hasEffects(e) { + return this.key.hasEffects(e) || (this.static && !!this.value?.hasEffects(e)) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return !this.value || this.value.hasEffectsOnInteractionAtPath(e, t, s) + } + applyDeoptimizations() {} + }, + RestElement: In, + ReturnStatement: class extends ei { + hasEffects(e) { + return !(e.ignore.returnYield && !this.argument?.hasEffects(e)) || ((e.brokenFlow = !0), !1) + } + include(e, t) { + ;(this.included = !0), this.argument?.include(e, t), (e.brokenFlow = !0) + } + initialise() { + this.scope.addReturnExpression(this.argument || ae) + } + render(e, t) { + this.argument && (this.argument.render(e, t, { preventASI: !0 }), this.argument.start === this.start + 6 && e.prependLeft(this.start + 6, ' ')) + } + }, + SequenceExpression: class extends ei { + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.expressions[this.expressions.length - 1].deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + this.expressions[this.expressions.length - 1].deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.expressions[this.expressions.length - 1].getLiteralValueAtPath(e, t, s) + } + hasEffects(e) { + for (const t of this.expressions) if (t.hasEffects(e)) return !0 + return !1 + } + hasEffectsOnInteractionAtPath(e, t, s) { + return this.expressions[this.expressions.length - 1].hasEffectsOnInteractionAtPath(e, t, s) + } + include(e, t) { + this.included = !0 + const s = this.expressions[this.expressions.length - 1] + for (const i of this.expressions) (t || (i === s && !(this.parent instanceof An)) || i.shouldBeIncluded(e)) && i.include(e, t) + } + render(e, t, { renderedParentType: s, isCalleeOfRenderedParent: i, preventASI: n } = me) { + let r = 0, + o = null + const a = this.expressions[this.expressions.length - 1] + for (const { node: l, separator: c, start: h, end: u } of bn(this.expressions, e, this.start, this.end)) + if (l.included) + if ((r++, (o = c), 1 === r && n && vn(e, h, l.start), 1 === r)) { + const n = s || this.parent.type + l.render(e, t, { isCalleeOfRenderedParent: i && l === a, renderedParentType: n, renderedSurroundingElement: n }) + } else l.render(e, t) + else dn(l, e, h, u) + o && e.remove(o, this.end) + } + }, + SpreadElement: ti, + StaticBlock: class extends ei { + createScope(e) { + this.scope = new Sn(e) + } + hasEffects(e) { + for (const t of this.body) if (t.hasEffects(e)) return !0 + return !1 + } + include(e, t) { + this.included = !0 + for (const s of this.body) (t || s.shouldBeIncluded(e)) && s.include(e, t) + } + render(e, t) { + if (this.body.length > 0) { + const s = mn(e.original.slice(this.start, this.end), '{') + 1 + En(this.body, e, this.start + s, this.end - 1, t) + } else super.render(e, t) + } + }, + Super: class extends ei { + bind() { + this.variable = this.scope.findVariable('this') + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.variable.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + this.variable.deoptimizePath(e) + } + include() { + this.included || ((this.included = !0), this.context.includeVariableInModule(this.variable)) + } + }, + SwitchCase: ao, + SwitchStatement: class extends ei { + createScope(e) { + ;(this.parentScope = e), (this.scope = new Sn(e)) + } + hasEffects(e) { + if (this.discriminant.hasEffects(e)) return !0 + const { brokenFlow: t, hasBreak: s, ignore: i } = e, + { breaks: n } = i + ;(i.breaks = !0), (e.hasBreak = !1) + let r = !0 + for (const s of this.cases) { + if (s.hasEffects(e)) return !0 + r && (r = e.brokenFlow && !e.hasBreak), (e.hasBreak = !1), (e.brokenFlow = t) + } + return null !== this.defaultCase && (e.brokenFlow = r), (i.breaks = n), (e.hasBreak = s), !1 + } + include(e, t) { + ;(this.included = !0), this.discriminant.include(e, t) + const { brokenFlow: s, hasBreak: i } = e + e.hasBreak = !1 + let n = !0, + r = t || (null !== this.defaultCase && this.defaultCase < this.cases.length - 1) + for (let i = this.cases.length - 1; i >= 0; i--) { + const o = this.cases[i] + if ((o.included && (r = !0), !r)) { + const e = is() + ;(e.ignore.breaks = !0), (r = o.hasEffects(e)) + } + r ? (o.include(e, t), n && (n = e.brokenFlow && !e.hasBreak), (e.hasBreak = !1), (e.brokenFlow = s)) : (n = s) + } + r && null !== this.defaultCase && (e.brokenFlow = n), (e.hasBreak = i) + } + initialise() { + for (let e = 0; e < this.cases.length; e++) if (null === this.cases[e].test) return void (this.defaultCase = e) + this.defaultCase = null + } + parseNode(e) { + ;(this.discriminant = new (this.context.getNodeConstructor(e.discriminant.type))(e.discriminant, this, this.parentScope)), super.parseNode(e) + } + render(e, t) { + this.discriminant.render(e, t), this.cases.length > 0 && En(this.cases, e, this.cases[0].start, this.end - 1, t) + } + }, + TaggedTemplateExpression: class extends Gn { + bind() { + if ((super.bind(), this.tag.type === Os)) { + const e = this.tag.name + this.scope.findVariable(e).isNamespace && this.context.log(Ae, Ot(e), this.start) + } + } + hasEffects(e) { + try { + for (const t of this.quasi.expressions) if (t.hasEffects(e)) return !0 + return this.tag.hasEffects(e) || this.tag.hasEffectsOnInteractionAtPath(X, this.interaction, e) + } finally { + this.deoptimized || this.applyDeoptimizations() + } + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), t ? super.include(e, t) : ((this.included = !0), this.tag.include(e, t), this.quasi.include(e, t)), this.tag.includeCallArguments(e, this.args) + const [s] = this.getReturnExpression() + s.included || s.include(e, !1) + } + initialise() { + ;(this.args = [ae, ...this.quasi.expressions]), (this.interaction = { args: [this.tag instanceof jn && !this.tag.variable ? this.tag.object : null, ...this.args], type: 2, withNew: !1 }) + } + render(e, t) { + this.tag.render(e, t, { isCalleeOfRenderedParent: !0 }), this.quasi.render(e, t) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.tag.deoptimizeArgumentsOnInteractionAtPath(this.interaction, X, se), this.context.requestTreeshakingPass() + } + getReturnExpression(e = se) { + return null === this.returnExpression + ? ((this.returnExpression = le), (this.returnExpression = this.tag.getReturnExpressionWhenCalledAtPath(X, this.interaction, e, this))) + : this.returnExpression + } + }, + TemplateElement: class extends ei { + bind() {} + hasEffects() { + return !1 + } + include() { + this.included = !0 + } + parseNode(e) { + ;(this.value = e.value), super.parseNode(e) + } + render() {} + }, + TemplateLiteral: lo, + ThisExpression: class extends ei { + bind() { + this.variable = this.scope.findVariable('this') + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.variable.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + this.variable.deoptimizePath(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return 0 === e.length ? 0 !== t.type : this.variable.hasEffectsOnInteractionAtPath(e, t, s) + } + include() { + this.included || ((this.included = !0), this.context.includeVariableInModule(this.variable)) + } + initialise() { + ;(this.alias = this.scope.findLexicalBoundary() instanceof uo ? this.context.moduleContext : null), + 'undefined' === this.alias && + this.context.log( + Ae, + { + code: 'THIS_IS_UNDEFINED', + message: "The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten", + url: De('troubleshooting/#error-this-is-undefined') + }, + this.start + ) + } + render(e) { + null !== this.alias && e.overwrite(this.start, this.end, this.alias, { contentOnly: !1, storeName: !0 }) + } + }, + ThrowStatement: class extends ei { + hasEffects() { + return !0 + } + include(e, t) { + ;(this.included = !0), this.argument.include(e, t), (e.brokenFlow = !0) + } + render(e, t) { + this.argument.render(e, t, { preventASI: !0 }), this.argument.start === this.start + 5 && e.prependLeft(this.start + 5, ' ') + } + }, + TryStatement: class extends ei { + constructor() { + super(...arguments), (this.directlyIncluded = !1), (this.includedLabelsAfterBlock = null) + } + hasEffects(e) { + return (this.context.options.treeshake.tryCatchDeoptimization ? this.block.body.length > 0 : this.block.hasEffects(e)) || !!this.finalizer?.hasEffects(e) + } + include(e, t) { + const s = this.context.options.treeshake?.tryCatchDeoptimization, + { brokenFlow: i, includedLabels: n } = e + if (this.directlyIncluded && s) { + if (this.includedLabelsAfterBlock) for (const e of this.includedLabelsAfterBlock) n.add(e) + } else (this.included = !0), (this.directlyIncluded = !0), this.block.include(e, s ? Js : t), n.size > 0 && (this.includedLabelsAfterBlock = [...n]), (e.brokenFlow = i) + null !== this.handler && (this.handler.include(e, t), (e.brokenFlow = i)), this.finalizer?.include(e, t) + } + }, + UnaryExpression: class extends ei { + getLiteralValueAtPath(e, t, s) { + if (e.length > 0) return ne + const i = this.argument.getLiteralValueAtPath(X, t, s) + return 'symbol' == typeof i ? ne : po[this.operator](i) + } + hasEffects(e) { + return ( + this.deoptimized || this.applyDeoptimizations(), + !('typeof' === this.operator && this.argument instanceof hn) && (this.argument.hasEffects(e) || ('delete' === this.operator && this.argument.hasEffectsOnInteractionAtPath(X, ue, e))) + ) + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return 0 !== t || e.length > ('void' === this.operator ? 0 : 1) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), 'delete' === this.operator && (this.argument.deoptimizePath(X), this.context.requestTreeshakingPass()) + } + }, + UnknownNode: class extends ei { + hasEffects() { + return !0 + } + include(e) { + super.include(e, !0) + } + }, + UpdateExpression: class extends ei { + hasEffects(e) { + return this.deoptimized || this.applyDeoptimizations(), this.argument.hasEffectsAsAssignmentTarget(e, !0) + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return e.length > 1 || 0 !== t + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), (this.included = !0), this.argument.includeAsAssignmentTarget(e, t, !0) + } + initialise() { + this.argument.setAssignedValue(ae) + } + render(e, t) { + const { + exportNamesByVariable: s, + format: i, + snippets: { _: n } + } = t + if ((this.argument.render(e, t), 'system' === i)) { + const i = this.argument.variable, + r = s.get(i) + if (r) + if (this.prefix) 1 === r.length ? $n(i, this.start, this.end, e, t) : Nn(i, this.start, this.end, this.parent.type !== Rs, e, t) + else { + const s = this.operator[0] + !(function (e, t, s, i, n, r, o) { + const { _: a } = r.snippets + n.prependRight(t, `${Cn([e], r, o)},${a}`), i && (n.prependRight(t, '('), n.appendLeft(s, ')')) + })(i, this.start, this.end, this.parent.type !== Rs, e, t, `${n}${s}${n}1`) + } + } + } + applyDeoptimizations() { + if (((this.deoptimized = !0), this.argument.deoptimizePath(X), this.argument instanceof hn)) { + this.scope.findVariable(this.argument.name).isReassigned = !0 + } + this.context.requestTreeshakingPass() + } + }, + VariableDeclaration: fo, + VariableDeclarator: jr, + WhileStatement: class extends ei { + hasEffects(e) { + return !!this.test.hasEffects(e) || tr(e, this.body) + } + include(e, t) { + ;(this.included = !0), this.test.include(e, t), sr(e, this.body, t) + } + }, + YieldExpression: class extends ei { + hasEffects(e) { + return this.deoptimized || this.applyDeoptimizations(), !(e.ignore.returnYield && !this.argument?.hasEffects(e)) + } + render(e, t) { + this.argument && (this.argument.render(e, t, { preventASI: !0 }), this.argument.start === this.start + 5 && e.prependLeft(this.start + 5, ' ')) + } + } + }, + go = '_missingExportShim' +class yo extends pe { + constructor(e) { + super(go), (this.module = e) + } + include() { + super.include(), (this.module.needsExportShim = !0) + } +} +class xo extends pe { + constructor(e) { + super(e.getModuleName()), (this.memberVariables = null), (this.mergedNamespaces = []), (this.referencedEarly = !1), (this.references = []), (this.context = e), (this.module = e.module) + } + addReference(e) { + this.references.push(e), (this.name = e.name) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + if (t.length > 1 || (1 === t.length && 2 === e.type)) { + const i = t[0] + 'string' == typeof i ? this.getMemberVariables()[i]?.deoptimizeArgumentsOnInteractionAtPath(e, t.slice(1), s) : ce(e) + } + } + deoptimizePath(e) { + if (e.length > 1) { + const t = e[0] + 'string' == typeof t && this.getMemberVariables()[t]?.deoptimizePath(e.slice(1)) + } + } + getLiteralValueAtPath(e) { + return e[0] === Y ? 'Module' : ne + } + getMemberVariables() { + if (this.memberVariables) return this.memberVariables + const e = Object.create(null), + t = [...this.context.getExports(), ...this.context.getReexports()].sort() + for (const s of t) + if ('*' !== s[0] && s !== this.module.info.syntheticNamedExports) { + const t = this.context.traceExport(s) + t && (e[s] = t) + } + return (this.memberVariables = e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + const { type: i } = t + if (0 === e.length) return !0 + if (1 === e.length && 2 !== i) return 1 === i + const n = e[0] + if ('string' != typeof n) return !0 + const r = this.getMemberVariables()[n] + return !r || r.hasEffectsOnInteractionAtPath(e.slice(1), t, s) + } + include() { + ;(this.included = !0), this.context.includeAllExports() + } + prepare(e) { + this.mergedNamespaces.length > 0 && this.module.scope.addAccessedGlobals([Er], e) + } + renderBlock(e) { + const { + exportNamesByVariable: t, + format: s, + freeze: i, + indent: n, + namespaceToStringTag: r, + snippets: { _: o, cnst: a, getObject: l, getPropertyAccess: c, n: h, s: u } + } = e, + d = this.getMemberVariables(), + p = Object.entries(d) + .filter(([e, t]) => t.included) + .map(([e, t]) => (this.referencedEarly || t.isReassigned || t === this ? [null, `get ${e}${o}()${o}{${o}return ${t.getName(c)}${u}${o}}`] : [e, t.getName(c)])) + p.unshift([null, `__proto__:${o}null`]) + let f = l(p, { lineBreakIndent: { base: '', t: n } }) + if (this.mergedNamespaces.length > 0) { + const e = this.mergedNamespaces.map((e) => e.getName(c)) + f = `/*#__PURE__*/${Er}(${f},${o}[${e.join(`,${o}`)}])` + } else r && (f = `/*#__PURE__*/Object.defineProperty(${f},${o}Symbol.toStringTag,${o}${zr(l)})`), i && (f = `/*#__PURE__*/Object.freeze(${f})`) + return (f = `${a} ${this.getName(c)}${o}=${o}${f};`), 'system' === s && t.has(this) && (f += `${h}${Cn([this], e)};`), f + } + renderFirst() { + return this.referencedEarly + } + setMergedNamespaces(e) { + this.mergedNamespaces = e + const t = this.context.getModuleExecIndex() + for (const e of this.references) + if (e.context.getModuleExecIndex() <= t) { + this.referencedEarly = !0 + break + } + } +} +xo.prototype.isNamespace = !0 +class Eo extends pe { + constructor(e, t, s) { + super(t), (this.baseVariable = null), (this.context = e), (this.module = e.module), (this.syntheticNamespace = s) + } + getBaseVariable() { + if (this.baseVariable) return this.baseVariable + let e = this.syntheticNamespace + for (; e instanceof ho || e instanceof Eo; ) { + if (e instanceof ho) { + const t = e.getOriginalVariable() + if (t === e) break + e = t + } + e instanceof Eo && (e = e.syntheticNamespace) + } + return (this.baseVariable = e) + } + getBaseVariableName() { + return this.syntheticNamespace.getBaseVariableName() + } + getName(e) { + return `${this.syntheticNamespace.getName(e)}${e(this.name)}` + } + include() { + ;(this.included = !0), this.context.includeVariableInModule(this.syntheticNamespace) + } + setRenderNames(e, t) { + super.setRenderNames(e, t) + } +} +var bo +!(function (e) { + ;(e[(e.LOAD_AND_PARSE = 0)] = 'LOAD_AND_PARSE'), (e[(e.ANALYSE = 1)] = 'ANALYSE'), (e[(e.GENERATE = 2)] = 'GENERATE') +})(bo || (bo = {})) +const vo = new WeakMap() +function So(e, t) { + if (e) { + const t = vo.get(e) + t && + (function (e) { + void 0 === e.encodedMappings && e.decodedMappings && (e.encodedMappings = i.encode(e.decodedMappings)), (e.decodedMappings = void 0) + })(t) + } + if (t) for (const e of t) e.missing || So(e) +} +function Ao(e) { + if (!e) return null + if (('string' == typeof e && (e = JSON.parse(e)), !e.mappings)) return { mappings: [], names: [], sources: [], version: 3 } + const t = e.mappings, + s = Array.isArray(t), + n = { decodedMappings: s ? t : void 0, encodedMappings: s ? void 0 : t }, + r = { + ...e, + get mappings() { + return n.decodedMappings || ((n.decodedMappings = n.encodedMappings ? i.decode(n.encodedMappings) : []), (n.encodedMappings = void 0)), n.decodedMappings + } + } + return vo.set(r, n), r +} +function ko(e) { + return e.id +} +const Io = (e) => { + const t = e.key + return t && (t.name || t.value) +} +function wo(e, t) { + const s = Object.keys(e) + return s.length !== Object.keys(t).length || s.some((s) => e[s] !== t[s]) +} +var Po = 'performance' in ('undefined' == typeof globalThis ? ('undefined' == typeof window ? {} : window) : globalThis) ? performance : { now: () => 0 }, + Co = { memoryUsage: () => ({ heapUsed: 0 }) } +let $o = new Map() +function No(e, t) { + switch (t) { + case 1: + return `# ${e}` + case 2: + return `## ${e}` + case 3: + return e + default: + return `${' '.repeat(t - 4)}- ${e}` + } +} +function _o(e, t = 3) { + e = No(e, t) + const s = Co.memoryUsage().heapUsed, + i = Po.now(), + n = $o.get(e) + void 0 === n ? $o.set(e, { memory: 0, startMemory: s, startTime: i, time: 0, totalMemory: 0 }) : ((n.startMemory = s), (n.startTime = i)) +} +function Ro(e, t = 3) { + e = No(e, t) + const s = $o.get(e) + if (void 0 !== s) { + const e = Co.memoryUsage().heapUsed + ;(s.memory += e - s.startMemory), (s.time += Po.now() - s.startTime), (s.totalMemory = Math.max(s.totalMemory, e)) + } +} +function Mo() { + const e = {} + for (const [t, { memory: s, time: i, totalMemory: n }] of $o) e[t] = [i, s, n] + return e +} +let Oo = Ui, + Do = Ui +const Lo = [ + 'augmentChunkHash', + 'buildEnd', + 'buildStart', + 'generateBundle', + 'load', + 'moduleParsed', + 'options', + 'outputOptions', + 'renderChunk', + 'renderDynamicImport', + 'renderStart', + 'resolveDynamicImport', + 'resolveFileUrl', + 'resolveId', + 'resolveImportMeta', + 'shouldTransformCachedModule', + 'transform', + 'writeBundle' +] +function To(e, t) { + if (e._hasTimer) return e + e._hasTimer = !0 + for (const s of Lo) + if (s in e) { + let i = `plugin ${t}` + e.name && (i += ` (${e.name})`), (i += ` - ${s}`) + const n = function (...e) { + Oo(i, 4) + const t = r.apply(this, e) + return Do(i, 4), t + } + let r + 'function' == typeof e[s].handler ? ((r = e[s].handler), (e[s].handler = n)) : ((r = e[s]), (e[s] = n)) + } + return e +} +function Vo(e) { + e.isExecuted = !0 + const t = [e], + s = new Set() + for (const e of t) + for (const i of [...e.dependencies, ...e.implicitlyLoadedBefore]) + i instanceof Jt || i.isExecuted || (!i.info.moduleSideEffects && !e.implicitlyLoadedBefore.has(i)) || s.has(i.id) || ((i.isExecuted = !0), s.add(i.id), t.push(i)) +} +const Bo = { identifier: null, localName: go } +function zo(e, t, s, i, n = new Map()) { + const r = n.get(t) + if (r) { + if (r.has(e)) return i ? [null] : Qe(((o = t), (a = e.id), { code: rt, exporter: a, message: `"${o}" cannot be exported from "${V(a)}" as it is a reexport that references itself.` })) + r.add(e) + } else n.set(t, new Set([e])) + var o, a + return e.getVariableForExportName(t, { importerForSideEffects: s, isExportAllSearch: i, searchedNamesAndModules: n }) +} +function Fo(e, t) { + const s = U(t.sideEffectDependenciesByVariable, e, G) + let i = e + const n = new Set([i]) + for (;;) { + const e = i.module + if (((i = i instanceof ho ? i.getDirectOriginalVariable() : i instanceof Eo ? i.syntheticNamespace : null), !i || n.has(i))) break + n.add(i), s.add(e) + const t = e.sideEffectDependenciesByVariable.get(i) + if (t) for (const e of t) s.add(e) + } + return s +} +class jo { + constructor(e, t, s, i, n, r, o, a) { + ;(this.graph = e), + (this.id = t), + (this.options = s), + (this.alternativeReexportModules = new Map()), + (this.chunkFileNames = new Set()), + (this.chunkNames = []), + (this.cycles = new Set()), + (this.dependencies = new Set()), + (this.dynamicDependencies = new Set()), + (this.dynamicImporters = []), + (this.dynamicImports = []), + (this.execIndex = 1 / 0), + (this.implicitlyLoadedAfter = new Set()), + (this.implicitlyLoadedBefore = new Set()), + (this.importDescriptions = new Map()), + (this.importMetas = []), + (this.importedFromNotTreeshaken = !1), + (this.importers = []), + (this.includedDynamicImporters = []), + (this.includedImports = new Set()), + (this.isExecuted = !1), + (this.isUserDefinedEntryPoint = !1), + (this.needsExportShim = !1), + (this.sideEffectDependenciesByVariable = new Map()), + (this.sourcesWithAssertions = new Map()), + (this.allExportNames = null), + (this.ast = null), + (this.exportAllModules = []), + (this.exportAllSources = new Set()), + (this.exportNamesByVariable = null), + (this.exportShimVariable = new yo(this)), + (this.exports = new Map()), + (this.namespaceReexportsByName = new Map()), + (this.reexportDescriptions = new Map()), + (this.relevantDependencies = null), + (this.syntheticExports = new Map()), + (this.syntheticNamespace = null), + (this.transformDependencies = []), + (this.transitiveReexports = null), + (this.excludeFromSourcemap = /\0/.test(t)), + (this.context = s.moduleContext(t)), + (this.preserveSignature = this.options.preserveEntrySignatures) + const l = this, + { + dynamicImports: c, + dynamicImporters: h, + exportAllSources: u, + exports: d, + implicitlyLoadedAfter: p, + implicitlyLoadedBefore: f, + importers: m, + reexportDescriptions: g, + sourcesWithAssertions: y + } = this + ;(this.info = { + assertions: a, + ast: null, + code: null, + get dynamicallyImportedIdResolutions() { + return c.map(({ argument: e }) => 'string' == typeof e && l.resolvedIds[e]).filter(Boolean) + }, + get dynamicallyImportedIds() { + return c.map(({ id: e }) => e).filter((e) => null != e) + }, + get dynamicImporters() { + return h.sort() + }, + get exportedBindings() { + const e = { '.': [...d.keys()] } + for (const [t, { source: s }] of g) (e[s] ?? (e[s] = [])).push(t) + for (const t of u) (e[t] ?? (e[t] = [])).push('*') + return e + }, + get exports() { + return [...d.keys(), ...g.keys(), ...[...u].map(() => '*')] + }, + get hasDefaultExport() { + return l.ast ? l.exports.has('default') || g.has('default') : null + }, + get hasModuleSideEffects() { + return Qt('Accessing ModuleInfo.hasModuleSideEffects from plugins is deprecated. Please use ModuleInfo.moduleSideEffects instead.', Xe, !0, s), this.moduleSideEffects + }, + id: t, + get implicitlyLoadedAfterOneOf() { + return Array.from(p, ko).sort() + }, + get implicitlyLoadedBefore() { + return Array.from(f, ko).sort() + }, + get importedIdResolutions() { + return Array.from(y.keys(), (e) => l.resolvedIds[e]).filter(Boolean) + }, + get importedIds() { + return Array.from(y.keys(), (e) => l.resolvedIds[e]?.id).filter(Boolean) + }, + get importers() { + return m.sort() + }, + isEntry: i, + isExternal: !1, + get isIncluded() { + return e.phase !== bo.GENERATE ? null : l.isIncluded() + }, + meta: { ...o }, + moduleSideEffects: n, + syntheticNamedExports: r + }), + Object.defineProperty(this.info, 'hasModuleSideEffects', { enumerable: !1 }) + } + basename() { + const e = C(this.id), + t = N(this.id) + return Se(t ? e.slice(0, -t.length) : e) + } + bindReferences() { + this.ast.bind() + } + error(e, t) { + return this.addLocationToLogProps(e, t), Qe(e) + } + estimateSize() { + let e = 0 + for (const t of this.ast.body) t.included && (e += t.end - t.start) + return e + } + getAllExportNames() { + if (this.allExportNames) return this.allExportNames + this.allExportNames = new Set([...this.exports.keys(), ...this.reexportDescriptions.keys()]) + for (const e of this.exportAllModules) + if (e instanceof Jt) this.allExportNames.add(`*${e.id}`) + else for (const t of e.getAllExportNames()) 'default' !== t && this.allExportNames.add(t) + return 'string' == typeof this.info.syntheticNamedExports && this.allExportNames.delete(this.info.syntheticNamedExports), this.allExportNames + } + getDependenciesToBeIncluded() { + if (this.relevantDependencies) return this.relevantDependencies + this.relevantDependencies = new Set() + const e = new Set(), + t = new Set(), + s = new Set(this.includedImports) + if (this.info.isEntry || this.includedDynamicImporters.length > 0 || this.namespace.included || this.implicitlyLoadedAfter.size > 0) + for (const e of [...this.getReexports(), ...this.getExports()]) { + const [t] = this.getVariableForExportName(e) + t?.included && s.add(t) + } + for (let i of s) { + const s = this.sideEffectDependenciesByVariable.get(i) + if (s) for (const e of s) t.add(e) + i instanceof Eo ? (i = i.getBaseVariable()) : i instanceof ho && (i = i.getOriginalVariable()), e.add(i.module) + } + if (this.options.treeshake && 'no-treeshake' !== this.info.moduleSideEffects) this.addRelevantSideEffectDependencies(this.relevantDependencies, e, t) + else for (const e of this.dependencies) this.relevantDependencies.add(e) + for (const t of e) this.relevantDependencies.add(t) + return this.relevantDependencies + } + getExportNamesByVariable() { + if (this.exportNamesByVariable) return this.exportNamesByVariable + const e = new Map() + for (const t of this.getAllExportNames()) { + let [s] = this.getVariableForExportName(t) + if ((s instanceof ho && (s = s.getOriginalVariable()), !s || !(s.included || s instanceof fe))) continue + const i = e.get(s) + i ? i.push(t) : e.set(s, [t]) + } + return (this.exportNamesByVariable = e) + } + getExports() { + return [...this.exports.keys()] + } + getReexports() { + if (this.transitiveReexports) return this.transitiveReexports + this.transitiveReexports = [] + const e = new Set(this.reexportDescriptions.keys()) + for (const t of this.exportAllModules) + if (t instanceof Jt) e.add(`*${t.id}`) + else for (const s of [...t.getReexports(), ...t.getExports()]) 'default' !== s && e.add(s) + return (this.transitiveReexports = [...e]) + } + getRenderedExports() { + const e = [], + t = [] + for (const s of this.exports.keys()) { + const [i] = this.getVariableForExportName(s) + ;(i && i.included ? e : t).push(s) + } + return { removedExports: t, renderedExports: e } + } + getSyntheticNamespace() { + return ( + null === this.syntheticNamespace && + ((this.syntheticNamespace = void 0), + ([this.syntheticNamespace] = this.getVariableForExportName('string' == typeof this.info.syntheticNamedExports ? this.info.syntheticNamedExports : 'default', { onlyExplicit: !0 }))), + this.syntheticNamespace + ? this.syntheticNamespace + : Qe( + ((e = this.id), + (t = this.info.syntheticNamedExports), + { + code: 'SYNTHETIC_NAMED_EXPORTS_NEED_NAMESPACE_EXPORT', + exporter: e, + message: `Module "${V(e)}" that is marked with \`syntheticNamedExports: ${JSON.stringify(t)}\` needs ${ + 'string' == typeof t && 'default' !== t ? `an explicit export named "${t}"` : 'a default export' + } that does not reexport an unresolved named export of the same module.` + }) + ) + ) + var e, t + } + getVariableForExportName(e, { importerForSideEffects: t, isExportAllSearch: s, onlyExplicit: i, searchedNamesAndModules: n } = ge) { + if ('*' === e[0]) { + if (1 === e.length) return [this.namespace] + return this.graph.modulesById.get(e.slice(1)).getVariableForExportName('*') + } + const r = this.reexportDescriptions.get(e) + if (r) { + const [e] = zo(r.module, r.localName, t, !1, n) + return e ? (t && (Uo(e, t, this), this.info.moduleSideEffects && U(t.sideEffectDependenciesByVariable, e, G).add(this)), [e]) : this.error(Ut(r.localName, this.id, r.module.id), r.start) + } + const o = this.exports.get(e) + if (o) { + if (o === Bo) return [this.exportShimVariable] + const e = o.localName, + s = this.traceVariable(e, { importerForSideEffects: t, searchedNamesAndModules: n }) + return t && (Uo(s, t, this), U(t.sideEffectDependenciesByVariable, s, G).add(this)), [s] + } + if (i) return [null] + if ('default' !== e) { + const s = this.namespaceReexportsByName.get(e) ?? this.getVariableFromNamespaceReexports(e, t, n) + if ((this.namespaceReexportsByName.set(e, s), s[0])) return s + } + return this.info.syntheticNamedExports + ? [U(this.syntheticExports, e, () => new Eo(this.astContext, e, this.getSyntheticNamespace()))] + : !s && this.options.shimMissingExports + ? (this.shimMissingExport(e), [this.exportShimVariable]) + : [null] + } + hasEffects() { + return 'no-treeshake' === this.info.moduleSideEffects || this.ast.hasCachedEffects() + } + include() { + const e = ss() + this.ast.shouldBeIncluded(e) && this.ast.include(e, !1) + } + includeAllExports(e) { + this.isExecuted || (Vo(this), (this.graph.needsTreeshakingPass = !0)) + for (const t of this.exports.keys()) + if (e || t !== this.info.syntheticNamedExports) { + const e = this.getVariableForExportName(t)[0] + e.deoptimizePath(Q), e.included || this.includeVariable(e) + } + for (const e of this.getReexports()) { + const [t] = this.getVariableForExportName(e) + t && (t.deoptimizePath(Q), t.included || this.includeVariable(t), t instanceof fe && (t.module.reexported = !0)) + } + e && this.namespace.setMergedNamespaces(this.includeAndGetAdditionalMergedNamespaces()) + } + includeAllInBundle() { + this.ast.include(ss(), !0), this.includeAllExports(!1) + } + includeExportsByNames(e) { + this.isExecuted || (Vo(this), (this.graph.needsTreeshakingPass = !0)) + let t = !1 + for (const s of e) { + const e = this.getVariableForExportName(s)[0] + e && (e.deoptimizePath(Q), e.included || this.includeVariable(e)), this.exports.has(s) || this.reexportDescriptions.has(s) || (t = !0) + } + t && this.namespace.setMergedNamespaces(this.includeAndGetAdditionalMergedNamespaces()) + } + isIncluded() { + return this.ast && (this.ast.included || this.namespace.included || this.importedFromNotTreeshaken || this.exportShimVariable.included) + } + linkImports() { + this.addModulesToImportDescriptions(this.importDescriptions), this.addModulesToImportDescriptions(this.reexportDescriptions) + const e = [] + for (const t of this.exportAllSources) { + const s = this.graph.modulesById.get(this.resolvedIds[t].id) + s instanceof Jt ? e.push(s) : this.exportAllModules.push(s) + } + this.exportAllModules.push(...e) + } + log(e, t, s) { + this.addLocationToLogProps(t, s), this.options.onLog(e, t) + } + render(e) { + const t = this.magicString.clone() + this.ast.render(t, e), t.trim() + const { usesTopLevelAwait: s } = this.astContext + return s && 'es' !== e.format && 'system' !== e.format + ? Qe(((i = this.id), (n = e.format), { code: 'INVALID_TLA_FORMAT', id: i, message: `Module format "${n}" does not support top-level await. Use the "es" or "system" output formats rather.` })) + : { source: t, usesTopLevelAwait: s } + var i, n + } + setSource({ ast: e, code: t, customTransformCache: s, originalCode: i, originalSourcemap: n, resolvedIds: r, sourcemapChain: o, transformDependencies: a, transformFiles: l, ...c }) { + Oo('generate ast', 3), + (this.info.code = t), + (this.originalCode = i), + (this.originalSourcemap = Ao(n)), + (this.sourcemapChain = o.map((e) => (e.missing ? e : Ao(e)))), + So(this.originalSourcemap, this.sourcemapChain), + l && (this.transformFiles = l), + (this.transformDependencies = a), + (this.customTransformCache = s), + this.updateOptions(c) + const h = e ?? this.tryParse() + Do('generate ast', 3), Oo('analyze ast', 3), (this.resolvedIds = r ?? Object.create(null)) + const u = this.id + ;(this.magicString = new y(t, { filename: this.excludeFromSourcemap ? null : u, indentExclusionRanges: [] })), + (this.astContext = { + addDynamicImport: this.addDynamicImport.bind(this), + addExport: this.addExport.bind(this), + addImport: this.addImport.bind(this), + addImportMeta: this.addImportMeta.bind(this), + code: t, + deoptimizationTracker: this.graph.deoptimizationTracker, + error: this.error.bind(this), + fileName: u, + getExports: this.getExports.bind(this), + getModuleExecIndex: () => this.execIndex, + getModuleName: this.basename.bind(this), + getNodeConstructor: (e) => mo[e] || mo.UnknownNode, + getReexports: this.getReexports.bind(this), + importDescriptions: this.importDescriptions, + includeAllExports: () => this.includeAllExports(!0), + includeDynamicImport: this.includeDynamicImport.bind(this), + includeVariableInModule: this.includeVariableInModule.bind(this), + log: this.log.bind(this), + magicString: this.magicString, + manualPureFunctions: this.graph.pureFunctions, + module: this, + moduleContext: this.context, + options: this.options, + requestTreeshakingPass: () => (this.graph.needsTreeshakingPass = !0), + traceExport: (e) => this.getVariableForExportName(e)[0], + traceVariable: this.traceVariable.bind(this), + usesTopLevelAwait: !1 + }), + (this.scope = new uo(this.graph.scope, this.astContext)), + (this.namespace = new xo(this.astContext)), + (this.ast = new oo(h, { context: this.astContext, type: 'Module' }, this.scope)), + e || !1 !== this.options.cache + ? (this.info.ast = h) + : Object.defineProperty(this.info, 'ast', { + get: () => { + if (this.graph.astLru.has(u)) return this.graph.astLru.get(u) + { + const e = this.tryParse() + return this.graph.astLru.set(u, e), e + } + } + }), + Do('analyze ast', 3) + } + toJSON() { + return { + assertions: this.info.assertions, + ast: this.info.ast, + code: this.info.code, + customTransformCache: this.customTransformCache, + dependencies: Array.from(this.dependencies, ko), + id: this.id, + meta: this.info.meta, + moduleSideEffects: this.info.moduleSideEffects, + originalCode: this.originalCode, + originalSourcemap: this.originalSourcemap, + resolvedIds: this.resolvedIds, + sourcemapChain: this.sourcemapChain, + syntheticNamedExports: this.info.syntheticNamedExports, + transformDependencies: this.transformDependencies, + transformFiles: this.transformFiles + } + } + traceVariable(e, { importerForSideEffects: t, isExportAllSearch: s, searchedNamesAndModules: i } = ge) { + const n = this.scope.variables.get(e) + if (n) return n + const r = this.importDescriptions.get(e) + if (r) { + const e = r.module + if (e instanceof jo && '*' === r.name) return e.namespace + const [n] = zo(e, r.name, t || this, s, i) + return n || this.error(Ut(r.name, this.id, e.id), r.start) + } + return null + } + updateOptions({ meta: e, moduleSideEffects: t, syntheticNamedExports: s }) { + null != t && (this.info.moduleSideEffects = t), null != s && (this.info.syntheticNamedExports = s), null != e && Object.assign(this.info.meta, e) + } + addDynamicImport(e) { + let t = e.source + t instanceof lo ? 1 === t.quasis.length && t.quasis[0].value.cooked && (t = t.quasis[0].value.cooked) : t instanceof Bn && 'string' == typeof t.value && (t = t.value), + this.dynamicImports.push({ argument: t, id: null, node: e, resolution: null }) + } + addExport(e) { + if (e instanceof rr) this.exports.set('default', { identifier: e.variable.getAssignedVariableName(), localName: 'default' }) + else if (e instanceof ir) { + const t = e.source.value + if ((this.addSource(t, e), e.exported)) { + const s = e.exported.name + this.reexportDescriptions.set(s, { localName: '*', module: null, source: t, start: e.start }) + } else this.exportAllSources.add(t) + } else if (e.source instanceof Bn) { + const t = e.source.value + this.addSource(t, e) + for (const { exported: s, local: i, start: n } of e.specifiers) { + const e = s instanceof Bn ? s.value : s.name + this.reexportDescriptions.set(e, { localName: i instanceof Bn ? i.value : i.name, module: null, source: t, start: n }) + } + } else if (e.declaration) { + const t = e.declaration + if (t instanceof fo) for (const e of t.declarations) for (const t of ts(e.id)) this.exports.set(t, { identifier: null, localName: t }) + else { + const e = t.id.name + this.exports.set(e, { identifier: null, localName: e }) + } + } else + for (const { local: t, exported: s } of e.specifiers) { + const e = t.name, + i = s instanceof hn ? s.name : s.value + this.exports.set(i, { identifier: null, localName: e }) + } + } + addImport(e) { + const t = e.source.value + this.addSource(t, e) + for (const s of e.specifiers) { + const e = s instanceof dr ? 'default' : s instanceof qr ? '*' : s.imported instanceof hn ? s.imported.name : s.imported.value + this.importDescriptions.set(s.local.name, { module: null, name: e, source: t, start: s.start }) + } + } + addImportMeta(e) { + this.importMetas.push(e) + } + addLocationToLogProps(e, t) { + ;(e.id = this.id), (e.pos = t) + let s = this.info.code + const i = Ce(s, t, { offsetLine: 1 }) + if (i) { + let { column: n, line: r } = i + try { + ;({ column: n, line: r } = (function (e, t) { + const s = e.filter((e) => !e.missing) + e: for (; s.length > 0; ) { + const e = s.pop().mappings[t.line - 1] + if (e) { + const s = e.filter((e) => e.length > 1), + i = s[s.length - 1] + for (const e of s) + if (e[0] >= t.column || e === i) { + t = { column: e[3], line: e[2] + 1 } + continue e + } + } + throw new Error("Can't resolve original location of error.") + } + return t + })(this.sourcemapChain, { column: n, line: r })), + (s = this.originalCode) + } catch (e) { + this.options.onLog( + Ae, + (function (e, t, s, i, n) { + return { cause: e, code: 'SOURCEMAP_ERROR', id: t, loc: { column: s, file: t, line: i }, message: `Error when using sourcemap for reporting an error: ${e.message}`, pos: n } + })(e, this.id, n, r, t) + ) + } + Ze(e, { column: n, line: r }, s, this.id) + } + } + addModulesToImportDescriptions(e) { + for (const t of e.values()) { + const { id: e } = this.resolvedIds[t.source] + t.module = this.graph.modulesById.get(e) + } + } + addRelevantSideEffectDependencies(e, t, s) { + const i = new Set(), + n = (r) => { + for (const o of r) i.has(o) || (i.add(o), t.has(o) ? e.add(o) : (o.info.moduleSideEffects || s.has(o)) && (o instanceof Jt || o.hasEffects() ? e.add(o) : n(o.dependencies))) + } + n(this.dependencies), n(s) + } + addSource(e, t) { + const s = ((i = t.assertions), i?.length ? Object.fromEntries(i.map((e) => [Io(e), e.value.value])) : ge) + var i + const n = this.sourcesWithAssertions.get(e) + n ? wo(n, s) && this.log(Ae, Bt(n, s, e, this.id), t.start) : this.sourcesWithAssertions.set(e, s) + } + getVariableFromNamespaceReexports(e, t, s) { + let i = null + const n = new Map(), + r = new Set() + for (const o of this.exportAllModules) { + if (o.info.syntheticNamedExports === e) continue + const [a, l] = zo(o, e, t, !0, Go(s)) + o instanceof Jt || l ? r.add(a) : a instanceof Eo ? i || (i = a) : a && n.set(a, o) + } + if (n.size > 0) { + const t = [...n], + s = t[0][0] + return 1 === t.length + ? [s] + : (this.options.onLog( + Ae, + ((o = e), + (a = this.id), + (l = t.map(([, e]) => e.id)), + { + binding: o, + code: 'NAMESPACE_CONFLICT', + ids: l, + message: `Conflicting namespaces: "${V(a)}" re-exports "${o}" from one of the modules ${Oe(l.map((e) => V(e)))} (will be ignored).`, + reexporter: a + }) + ), + [null]) + } + var o, a, l + if (r.size > 0) { + const t = [...r], + s = t[0] + return ( + t.length > 1 && + this.options.onLog( + Ae, + (function (e, t, s, i) { + return { + binding: e, + code: 'AMBIGUOUS_EXTERNAL_NAMESPACES', + ids: i, + message: `Ambiguous external namespace resolution: "${V(t)}" re-exports "${e}" from one of the external modules ${Oe(i.map((e) => V(e)))}, guessing "${V(s)}".`, + reexporter: t + } + })( + e, + this.id, + s.module.id, + t.map((e) => e.module.id) + ) + ), + [s, !0] + ) + } + return i ? [i] : [null] + } + includeAndGetAdditionalMergedNamespaces() { + const e = new Set(), + t = new Set() + for (const s of [this, ...this.exportAllModules]) + if (s instanceof Jt) { + const [t] = s.getVariableForExportName('*') + t.include(), this.includedImports.add(t), e.add(t) + } else if (s.info.syntheticNamedExports) { + const e = s.getSyntheticNamespace() + e.include(), this.includedImports.add(e), t.add(e) + } + return [...t, ...e] + } + includeDynamicImport(e) { + const t = this.dynamicImports.find((t) => t.node === e).resolution + if (t instanceof jo) { + t.includedDynamicImporters.push(this) + const s = this.options.treeshake ? e.getDeterministicImportedNames() : void 0 + s ? t.includeExportsByNames(s) : t.includeAllExports(!0) + } + } + includeVariable(e) { + const t = e.module + if (e.included) t instanceof jo && t !== this && Fo(e, this) + else if ((e.include(), (this.graph.needsTreeshakingPass = !0), t instanceof jo && (t.isExecuted || Vo(t), t !== this))) { + const t = Fo(e, this) + for (const e of t) e.isExecuted || Vo(e) + } + } + includeVariableInModule(e) { + this.includeVariable(e) + const t = e.module + t && t !== this && this.includedImports.add(e) + } + shimMissingExport(e) { + var t, s + this.options.onLog(Ae, ((t = this.id), { binding: (s = e), code: 'SHIMMED_EXPORT', exporter: t, message: `Missing export "${s}" has been shimmed in module "${V(t)}".` })), this.exports.set(e, Bo) + } + tryParse() { + try { + return this.graph.contextParse(this.info.code) + } catch (e) { + return this.error( + (function (e, t) { + let s = e.message.replace(/ \(\d+:\d+\)$/, '') + return ( + t.endsWith('.json') + ? (s += ' (Note that you need @rollup/plugin-json to import JSON files)') + : t.endsWith('.js') || (s += ' (Note that you need plugins to import files that are not JavaScript)'), + { cause: e, code: 'PARSE_ERROR', id: t, message: s } + ) + })(e, this.id), + e.pos + ) + } + } +} +function Uo(e, t, s) { + if (e.module instanceof jo && e.module !== s) { + const i = e.module.cycles + if (i.size > 0) { + const n = s.cycles + for (const r of n) + if (i.has(r)) { + t.alternativeReexportModules.set(e, s) + break + } + } + } +} +const Go = (e) => e && new Map(Array.from(e, ([e, t]) => [e, new Set(t)])) +function Wo(e) { + return e.endsWith('.js') ? e.slice(0, -3) : e +} +function qo(e, t) { + return e.autoId ? `${e.basePath ? e.basePath + '/' : ''}${Wo(t)}` : e.id ?? '' +} +function Ho(e, t, s, i, n, r, o, a = 'return ') { + const { _: l, getDirectReturnFunction: c, getFunctionIntro: h, getPropertyAccess: u, n: d, s: p } = n + if (!s) + return `${d}${d}${a}${(function (e, t, s, i, n) { + if (e.length > 0) return e[0].local + for (const { defaultVariableName: e, importPath: r, isChunk: o, name: a, namedExportsMode: l, namespaceVariableName: c, reexports: h } of t) + if (h) return Ko(a, h[0].imported, l, o, e, c, s, r, i, n) + })(e, t, i, o, u)};` + let f = '' + for (const { defaultVariableName: e, importPath: n, isChunk: a, name: h, namedExportsMode: p, namespaceVariableName: m, reexports: g } of t) + if (g && s) + for (const t of g) + if ('*' !== t.reexported) { + const s = Ko(h, t.imported, p, a, e, m, i, n, o, u) + if ((f && (f += d), '*' !== t.imported && t.needsLiveBinding)) { + const [e, i] = c([], { functionReturn: !0, lineBreakIndent: null, name: null }) + f += `Object.defineProperty(exports,${l}'${t.reexported}',${l}{${d}${r}enumerable:${l}true,${d}${r}get:${l}${e}${s}${i}${d}});` + } else f += `exports${u(t.reexported)}${l}=${l}${s};` + } + for (const { exported: t, local: s } of e) { + const e = `exports${u(t)}` + e !== s && (f && (f += d), (f += `${e}${l}=${l}${s};`)) + } + for (const { name: e, reexports: i } of t) + if (i && s) + for (const t of i) + if ('*' === t.reexported) { + f && (f += d) + const s = `{${d}${r}if${l}(k${l}!==${l}'default'${l}&&${l}!Object.prototype.hasOwnProperty.call(exports,${l}k))${l}${Qo(e, t.needsLiveBinding, r, n)}${p}${d}}` + f += `Object.keys(${e}).forEach(${h(['k'], { isAsync: !1, name: null })}${s});` + } + return f ? `${d}${d}${f}` : '' +} +function Ko(e, t, s, i, n, r, o, a, l, c) { + if ('default' === t) { + if (!i) { + const t = o(a), + s = vr[t] ? n : e + return Sr(t, l) ? `${s}${c('default')}` : s + } + return s ? `${e}${c('default')}` : e + } + return '*' === t ? ((i ? !s : Ar[o(a)]) ? r : e) : `${e}${c(t)}` +} +function Yo(e) { + return e([['value', 'true']], { lineBreakIndent: null }) +} +function Xo(e, t, s, { _: i, getObject: n }) { + if (e) { + if (t) + return s + ? `Object.defineProperties(exports,${i}${n( + [ + ['__esModule', Yo(n)], + [null, `[Symbol.toStringTag]:${i}${zr(n)}`] + ], + { lineBreakIndent: null } + )});` + : `Object.defineProperty(exports,${i}'__esModule',${i}${Yo(n)});` + if (s) return `Object.defineProperty(exports,${i}Symbol.toStringTag,${i}${zr(n)});` + } + return '' +} +const Qo = (e, t, s, { _: i, getDirectReturnFunction: n, n: r }) => { + if (t) { + const [t, o] = n([], { functionReturn: !0, lineBreakIndent: null, name: null }) + return `Object.defineProperty(exports,${i}k,${i}{${r}${s}${s}enumerable:${i}true,${r}${s}${s}get:${i}${t}${e}[k]${o}${r}${s}})` + } + return `exports[k]${i}=${i}${e}[k]` +} +function Zo(e, t, s, i, n, r, o, a) { + const { _: l, cnst: c, n: h } = a, + u = new Set(), + d = [], + p = (e, t, s) => { + u.add(t), d.push(`${c} ${e}${l}=${l}/*#__PURE__*/${t}(${s});`) + } + for (const { defaultVariableName: s, imports: i, importPath: n, isChunk: r, name: o, namedExportsMode: a, namespaceVariableName: l, reexports: c } of e) + if (r) { + for (const { imported: e, reexported: t } of [...(i || []), ...(c || [])]) + if ('*' === e && '*' !== t) { + a || p(l, xr, o) + break + } + } else { + const e = t(n) + let r = !1, + a = !1 + for (const { imported: t, reexported: n } of [...(i || []), ...(c || [])]) { + let i, c + 'default' === t ? r || ((r = !0), s !== l && ((c = s), (i = vr[e]))) : '*' !== t || '*' === n || a || ((a = !0), (i = Ar[e]), (c = l)), i && p(c, i, o) + } + } + return `${Ir(u, r, o, a, s, i, n)}${d.length > 0 ? `${d.join(h)}${h}${h}` : ''}` +} +function Jo(e, t) { + return '.' !== e[0] ? e : t ? ((s = e).endsWith('.js') ? s : s + '.js') : Wo(e) + var s +} +const ea = new Set([ + ...t([ + 'assert', + 'async_hooks', + 'buffer', + 'child_process', + 'cluster', + 'console', + 'constants', + 'crypto', + 'dgram', + 'diagnostics_channel', + 'dns', + 'domain', + 'events', + 'fs', + 'http', + 'http2', + 'https', + 'inspector', + 'module', + 'net', + 'os', + 'path', + 'perf_hooks', + 'process', + 'punycode', + 'querystring', + 'readline', + 'repl', + 'stream', + 'string_decoder', + 'timers', + 'tls', + 'trace_events', + 'tty', + 'url', + 'util', + 'v8', + 'vm', + 'wasi', + 'worker_threads', + 'zlib' + ]), + 'assert/strict', + 'dns/promises', + 'fs/promises', + 'path/posix', + 'path/win32', + 'readline/promises', + 'stream/consumers', + 'stream/promises', + 'stream/web', + 'timers/promises', + 'util/types' +]) +function ta(e, t) { + const s = t.map(({ importPath: e }) => e).filter((e) => ea.has(e) || e.startsWith('node:')) + 0 !== s.length && + e( + Ae, + (function (e) { + return { + code: vt, + ids: e, + message: `Creating a browser bundle that depends on Node.js built-in modules (${Oe(e)}). You might need to include https://github.com/FredKSchott/rollup-plugin-polyfill-node` + } + })(s) + ) +} +const sa = (e, t) => e.split('.').map(t).join('') +function ia(e, t, s, i, { _: n, getPropertyAccess: r }) { + const o = e.split('.') + o[0] = ('function' == typeof s ? s(o[0]) : s[o[0]]) || o[0] + const a = o.pop() + let l = t, + c = [...o.map((e) => ((l += r(e)), `${l}${n}=${n}${l}${n}||${n}{}`)), `${l}${r(a)}`].join(`,${n}`) + `${n}=${n}${i}` + return o.length > 0 && (c = `(${c})`), c +} +function na(e) { + let t = e.length + for (; t--; ) { + const { imports: s, reexports: i } = e[t] + if (s || i) return e.slice(0, t + 1) + } + return [] +} +const ra = ({ dependencies: e, exports: t }) => { + const s = new Set(t.map((e) => e.exported)) + s.add('default') + for (const { reexports: t } of e) if (t) for (const e of t) '*' !== e.reexported && s.add(e.reexported) + return s + }, + oa = (e, t, { _: s, cnst: i, getObject: n, n: r }) => + e + ? `${r}${t}${i} _starExcludes${s}=${s}${n( + [...e].map((e) => [e, '1']), + { lineBreakIndent: { base: t, t: t } } + )};` + : '', + aa = (e, t, { _: s, n: i }) => (e.length > 0 ? `${i}${t}var ${e.join(`,${s}`)};` : ''), + la = (e, t, s) => + ca( + e.filter((e) => e.hoisted).map((e) => ({ name: e.exported, value: e.local })), + t, + s + ) +function ca(e, t, { _: s, n: i }) { + return 0 === e.length + ? '' + : 1 === e.length + ? `exports('${e[0].name}',${s}${e[0].value});${i}${i}` + : `exports({${i}` + e.map(({ name: e, value: i }) => `${t}${e}:${s}${i}`).join(`,${i}`) + `${i}});${i}${i}` +} +const ha = (e, t, s) => + ca( + e.filter((e) => e.expression).map((e) => ({ name: e.exported, value: e.local })), + t, + s + ), + ua = (e, t, s) => + ca( + e.filter((e) => e.local === go).map((e) => ({ name: e.exported, value: go })), + t, + s + ) +function da(e, t, s) { + return e ? `${t}${sa(e, s)}` : 'null' +} +var pa = { + amd: function ( + e, + { + accessedGlobals: t, + dependencies: s, + exports: i, + hasDefaultExport: n, + hasExports: r, + id: o, + indent: a, + intro: l, + isEntryFacade: c, + isModuleFacade: h, + namedExportsMode: u, + log: d, + outro: p, + snippets: f + }, + { amd: m, esModule: g, externalLiveBindings: y, freeze: x, interop: E, namespaceToStringTag: b, strict: v } + ) { + ta(d, s) + const S = s.map((e) => `'${Jo(e.importPath, m.forceJsExtensionForImports)}'`), + A = s.map((e) => e.name), + { n: k, getNonArrowFunctionIntro: I, _: w } = f + u && r && (A.unshift('exports'), S.unshift("'exports'")), t.has('require') && (A.unshift('require'), S.unshift("'require'")), t.has('module') && (A.unshift('module'), S.unshift("'module'")) + const P = qo(m, o), + C = (P ? `'${P}',${w}` : '') + (S.length > 0 ? `[${S.join(`,${w}`)}],${w}` : ''), + $ = v ? `${w}'use strict';` : '' + e.prepend(`${l}${Zo(s, E, y, x, b, t, a, f)}`) + const N = Ho(i, s, u, E, f, a, y) + let _ = Xo(u && r, c && (!0 === g || ('if-default-prop' === g && n)), h && b, f) + _ && (_ = k + k + _), + e + .append(`${N}${_}${p}`) + .indent(a) + .prepend(`${m.define}(${C}(${I(A, { isAsync: !1, name: null })}{${$}${k}${k}`) + .append(`${k}${k}}));`) + }, + cjs: function ( + e, + { accessedGlobals: t, dependencies: s, exports: i, hasDefaultExport: n, hasExports: r, indent: o, intro: a, isEntryFacade: l, isModuleFacade: c, namedExportsMode: h, outro: u, snippets: d }, + { compact: p, esModule: f, externalLiveBindings: m, freeze: g, interop: y, namespaceToStringTag: x, strict: E } + ) { + const { _: b, n: v } = d, + S = E ? `'use strict';${v}${v}` : '' + let A = Xo(h && r, l && (!0 === f || ('if-default-prop' === f && n)), c && x, d) + A && (A += v + v) + const k = (function (e, { _: t, cnst: s, n: i }, n) { + let r = '', + o = !1 + for (const { importPath: a, name: l, reexports: c, imports: h } of e) + c || h ? ((r += n && o ? ',' : `${r ? `;${i}` : ''}${s} `), (o = !0), (r += `${l}${t}=${t}require('${a}')`)) : (r && (r += n && !o ? ',' : `;${i}`), (o = !1), (r += `require('${a}')`)) + if (r) return `${r};${i}${i}` + return '' + })(s, d, p), + I = Zo(s, y, m, g, x, t, o, d) + e.prepend(`${S}${a}${A}${k}${I}`) + const w = Ho(i, s, h, y, d, o, m, `module.exports${b}=${b}`) + e.append(`${w}${u}`) + }, + es: function (e, { accessedGlobals: t, indent: s, intro: i, outro: n, dependencies: r, exports: o, snippets: a }, { externalLiveBindings: l, freeze: c, namespaceToStringTag: h }) { + const { n: u } = a, + d = (function (e, { _: t }) { + const s = [] + for (const { importPath: i, reexports: n, imports: r, name: o, assertions: a } of e) { + const e = `'${i}'${a ? `${t}assert${t}${a}` : ''};` + if (n || r) { + if (r) { + let i = null, + n = null + const o = [] + for (const e of r) 'default' === e.imported ? (i = e) : '*' === e.imported ? (n = e) : o.push(e) + n && s.push(`import${t}*${t}as ${n.local} from${t}${e}`), + i && 0 === o.length + ? s.push(`import ${i.local} from${t}${e}`) + : o.length > 0 && + s.push(`import ${i ? `${i.local},${t}` : ''}{${t}${o.map((e) => (e.imported === e.local ? e.imported : `${e.imported} as ${e.local}`)).join(`,${t}`)}${t}}${t}from${t}${e}`) + } + if (n) { + let i = null + const a = [], + l = [] + for (const e of n) '*' === e.reexported ? (i = e) : '*' === e.imported ? a.push(e) : l.push(e) + if ((i && s.push(`export${t}*${t}from${t}${e}`), a.length > 0)) { + ;(r && r.some((e) => '*' === e.imported && e.local === o)) || s.push(`import${t}*${t}as ${o} from${t}${e}`) + for (const e of a) s.push(`export${t}{${t}${o === e.reexported ? o : `${o} as ${e.reexported}`} };`) + } + l.length > 0 && s.push(`export${t}{${t}${l.map((e) => (e.imported === e.reexported ? e.imported : `${e.imported} as ${e.reexported}`)).join(`,${t}`)}${t}}${t}from${t}${e}`) + } + } else s.push(`import${t}${e}`) + } + return s + })(r, a) + d.length > 0 && (i += d.join(u) + u + u), (i += Ir(null, t, s, a, l, c, h)) && e.prepend(i) + const p = (function (e, { _: t, cnst: s }) { + const i = [], + n = [] + for (const r of e) r.expression && i.push(`${s} ${r.local}${t}=${t}${r.expression};`), n.push(r.exported === r.local ? r.local : `${r.local} as ${r.exported}`) + n.length > 0 && i.push(`export${t}{${t}${n.join(`,${t}`)}${t}};`) + return i + })(o, a) + p.length > 0 && e.append(u + u + p.join(u).trim()), n && e.append(n), e.trim() + }, + iife: function ( + e, + { accessedGlobals: t, dependencies: s, exports: i, hasDefaultExport: n, hasExports: r, indent: o, intro: a, namedExportsMode: l, log: c, outro: h, snippets: u }, + { compact: d, esModule: p, extend: f, freeze: m, externalLiveBindings: g, globals: y, interop: x, name: E, namespaceToStringTag: b, strict: v } + ) { + const { _: S, getNonArrowFunctionIntro: A, getPropertyAccess: k, n: I } = u, + w = E && E.includes('.'), + P = !f && !w + if (E && P && (ve((C = E)) || be.test(C))) + return Qe( + (function (e) { + return { code: ct, message: `Given name "${e}" is not a legal JS identifier. If you need this, you can try "output.extend: true".`, url: De(Fe) } + })(E) + ) + var C + ta(c, s) + const $ = na(s), + N = $.map((e) => e.globalName || 'null'), + _ = $.map((e) => e.name) + r && !E && c(Ae, { code: bt, message: 'If you do not supply "output.name", you may not be able to access the exports of an IIFE bundle.', url: De(Ke) }), + l && r && (f ? (N.unshift(`this${sa(E, k)}${S}=${S}this${sa(E, k)}${S}||${S}{}`), _.unshift('exports')) : (N.unshift('{}'), _.unshift('exports'))) + const R = v ? `${o}'use strict';${I}` : '', + M = Zo(s, x, g, m, b, t, o, u) + e.prepend(`${a}${M}`) + let O = `(${A(_, { isAsync: !1, name: null })}{${I}${R}${I}` + r && + (!E || (f && l) || (O = (P ? `var ${E}` : `this${sa(E, k)}`) + `${S}=${S}${O}`), + w && + (O = + (function (e, t, s, { _: i, getPropertyAccess: n, s: r }, o) { + const a = e.split('.') + ;(a[0] = ('function' == typeof s ? s(a[0]) : s[a[0]]) || a[0]), a.pop() + let l = t + return a.map((e) => ((l += n(e)), `${l}${i}=${i}${l}${i}||${i}{}${r}`)).join(o ? ',' : '\n') + (o && a.length > 0 ? ';' : '\n') + })(E, 'this', y, u, d) + O)) + let D = `${I}${I}})(${N.join(`,${S}`)});` + r && !f && l && (D = `${I}${I}${o}return exports;${D}`) + const L = Ho(i, s, l, x, u, o, g) + let T = Xo(l && r, !0 === p || ('if-default-prop' === p && n), b, u) + T && (T = I + I + T), e.append(`${L}${T}${h}`).indent(o).prepend(O).append(D) + }, + system: function ( + e, + { accessedGlobals: t, dependencies: s, exports: i, hasExports: n, indent: r, intro: o, snippets: a, outro: l, usesTopLevelAwait: c }, + { externalLiveBindings: h, freeze: u, name: d, namespaceToStringTag: p, strict: f, systemNullSetters: m } + ) { + const { _: g, getFunctionIntro: y, getNonArrowFunctionIntro: x, n: E, s: b } = a, + { + importBindings: v, + setters: S, + starExcludes: A + } = (function (e, t, s, { _: i, cnst: n, getObject: r, getPropertyAccess: o, n: a }) { + const l = [], + c = [] + let h = null + for (const { imports: u, reexports: d } of e) { + const p = [] + if (u) for (const e of u) l.push(e.local), '*' === e.imported ? p.push(`${e.local}${i}=${i}module;`) : p.push(`${e.local}${i}=${i}module${o(e.imported)};`) + if (d) { + const a = [] + let l = !1 + for (const { imported: e, reexported: t } of d) '*' === t ? (l = !0) : a.push([t, '*' === e ? 'module' : `module${o(e)}`]) + if (a.length > 1 || l) { + const o = r(a, { lineBreakIndent: null }) + l + ? (h || (h = ra({ dependencies: e, exports: t })), + p.push(`${n} setter${i}=${i}${o};`, `for${i}(${n} name in module)${i}{`, `${s}if${i}(!_starExcludes[name])${i}setter[name]${i}=${i}module[name];`, '}', 'exports(setter);')) + : p.push(`exports(${o});`) + } else { + const [e, t] = a[0] + p.push(`exports('${e}',${i}${t});`) + } + } + c.push(p.join(`${a}${s}${s}${s}`)) + } + return { importBindings: l, setters: c, starExcludes: h } + })(s, i, r, a), + k = d ? `'${d}',${g}` : '', + I = t.has('module') ? ['exports', 'module'] : n ? ['exports'] : [] + let w = + `System.register(${k}[` + + s.map(({ importPath: e }) => `'${e}'`).join(`,${g}`) + + `],${g}(${x(I, { isAsync: !1, name: null })}{${E}${r}${f ? "'use strict';" : ''}` + + oa(A, r, a) + + aa(v, r, a) + + `${E}${r}return${g}{${ + S.length > 0 + ? `${E}${r}${r}setters:${g}[${S.map((e) => + e ? `${y(['module'], { isAsync: !1, name: null })}{${E}${r}${r}${r}${e}${E}${r}${r}}` : m ? 'null' : `${y([], { isAsync: !1, name: null })}{}` + ).join(`,${g}`)}],` + : '' + }${E}` + w += `${r}${r}execute:${g}(${x([], { isAsync: c, name: null })}{${E}${E}` + const P = `${r}${r}})${E}${r}}${b}${E}}));` + e.prepend(o + Ir(null, t, r, a, h, u, p) + la(i, r, a)) + .append(`${l}${E}${E}` + ha(i, r, a) + ua(i, r, a)) + .indent(`${r}${r}${r}`) + .append(P) + .prepend(w) + }, + umd: function ( + e, + { accessedGlobals: t, dependencies: s, exports: i, hasDefaultExport: n, hasExports: r, id: o, indent: a, intro: l, namedExportsMode: c, log: h, outro: u, snippets: d }, + { amd: p, compact: f, esModule: m, extend: g, externalLiveBindings: y, freeze: x, interop: E, name: b, namespaceToStringTag: v, globals: S, noConflict: A, strict: k } + ) { + const { _: I, cnst: w, getFunctionIntro: P, getNonArrowFunctionIntro: C, getPropertyAccess: $, n: N, s: _ } = d, + R = f ? 'f' : 'factory', + M = f ? 'g' : 'global' + if (r && !b) + return Qe({ code: bt, message: 'You must supply "output.name" for UMD bundles that have exports so that the exports are accessible in environments without a module loader.', url: De(Ke) }) + ta(h, s) + const O = s.map((e) => `'${Jo(e.importPath, p.forceJsExtensionForImports)}'`), + D = s.map((e) => `require('${e.importPath}')`), + L = na(s), + T = L.map((e) => da(e.globalName, M, $)), + V = L.map((e) => e.name) + c && (r || A) && (O.unshift("'exports'"), D.unshift('exports'), T.unshift(ia(b, M, S, (g ? `${da(b, M, $)}${I}||${I}` : '') + '{}', d)), V.unshift('exports')) + const B = qo(p, o), + z = (B ? `'${B}',${I}` : '') + (O.length > 0 ? `[${O.join(`,${I}`)}],${I}` : ''), + F = p.define, + j = !c && r ? `module.exports${I}=${I}` : '', + U = k ? `${I}'use strict';${N}` : '' + let G + if (A) { + const e = f ? 'e' : 'exports' + let t + if (!c && r) t = `${w} ${e}${I}=${I}${ia(b, M, S, `${R}(${T.join(`,${I}`)})`, d)};` + else { + t = `${w} ${e}${I}=${I}${T.shift()};${N}${a}${a}${R}(${[e, ...T].join(`,${I}`)});` + } + G = `(${P([], { isAsync: !1, name: null })}{${N}${a}${a}${w} current${I}=${I}${(function (e, t, { _: s, getPropertyAccess: i }) { + let n = t + return e + .split('.') + .map((e) => (n += i(e))) + .join(`${s}&&${s}`) + })(b, M, d)};${N}${a}${a}${t}${N}${a}${a}${e}.noConflict${I}=${I}${P([], { isAsync: !1, name: null })}{${I}${da(b, M, $)}${I}=${I}current;${I}return ${e}${_}${I}};${N}${a}})()` + } else (G = `${R}(${T.join(`,${I}`)})`), !c && r && (G = ia(b, M, S, G, d)) + const W = r || (A && c) || T.length > 0, + q = [R] + W && q.unshift(M) + const H = W ? `this,${I}` : '', + K = W ? `(${M}${I}=${I}typeof globalThis${I}!==${I}'undefined'${I}?${I}globalThis${I}:${I}${M}${I}||${I}self,${I}` : '', + Y = W ? ')' : '', + X = W ? `${a}typeof exports${I}===${I}'object'${I}&&${I}typeof module${I}!==${I}'undefined'${I}?${I}${j}${R}(${D.join(`,${I}`)})${I}:${N}` : '', + Q = + `(${C(q, { isAsync: !1, name: null })}{${N}` + + X + + `${a}typeof ${F}${I}===${I}'function'${I}&&${I}${F}.amd${I}?${I}${F}(${z}${R})${I}:${N}` + + `${a}${K}${G}${Y};${N}` + + `})(${H}(${C(V, { isAsync: !1, name: null })}{${U}${N}`, + Z = N + N + '}));' + e.prepend(`${l}${Zo(s, E, y, x, v, t, a, d)}`) + const J = Ho(i, s, c, E, d, a, y) + let ee = Xo(c && r, !0 === m || ('if-default-prop' === m && n), v, d) + ee && (ee = N + N + ee), e.append(`${J}${ee}${u}`).trim().indent(a).append(Z).prepend(Q) + } +} +const fa = (e, t) => (t ? `${e}\n${t}` : e), + ma = (e, t) => (t ? `${e}\n\n${t}` : e) +async function ga(e, t, s) { + try { + let [i, n, r, o] = await Promise.all([ + t.hookReduceValue('banner', e.banner(s), [s], fa), + t.hookReduceValue('footer', e.footer(s), [s], fa), + t.hookReduceValue('intro', e.intro(s), [s], ma), + t.hookReduceValue('outro', e.outro(s), [s], ma) + ]) + return r && (r += '\n\n'), o && (o = `\n\n${o}`), i && (i += '\n'), n && (n = '\n' + n), { banner: i, footer: n, intro: r, outro: o } + } catch (e) { + return Qe(((i = e.message), (n = e.hook), (r = e.plugin), { code: Je, message: `Could not retrieve "${n}". Check configuration of plugin "${r}".\n\tError Message: ${i}` })) + } + var i, n, r +} +const ya = { amd: ba, cjs: ba, es: Ea, iife: ba, system: Ea, umd: ba } +function xa(e, t, s, i, n, r, o, a, l, c, h, u, d, p) { + const f = [...e].reverse() + for (const e of f) e.scope.addUsedOutsideNames(i, n, u, d) + !(function (e, t, s) { + for (const i of t) { + for (const t of i.scope.variables.values()) t.included && !(t.renderBaseName || (t instanceof ho && t.getOriginalVariable() !== t)) && t.setRenderNames(null, Li(t.name, e, t.forbiddenNames)) + if (s.has(i)) { + const t = i.namespace + t.setRenderNames(null, Li(t.name, e, t.forbiddenNames)) + } + } + })(i, f, p), + ya[n](i, s, t, r, o, a, l, c, h) + for (const e of f) e.scope.deconflict(n, u, d) +} +function Ea(e, t, s, i, n, r, o, a, l) { + for (const t of s.dependencies) (n || t instanceof j) && (t.variableName = Li(t.suggestedVariableName, e, null)) + for (const s of t) { + const t = s.module, + i = s.name + s.isNamespace && (n || t instanceof Jt) + ? s.setRenderNames(null, (t instanceof Jt ? a.get(t) : o.get(t)).variableName) + : t instanceof Jt && 'default' === i + ? s.setRenderNames(null, Li([...t.exportedVariables].some(([e, t]) => '*' === t && e.included) ? t.suggestedVariableName + '__default' : t.suggestedVariableName, e, s.forbiddenNames)) + : s.setRenderNames(null, Li(i, e, s.forbiddenNames)) + } + for (const t of l) t.setRenderNames(null, Li(t.name, e, t.forbiddenNames)) +} +function ba(e, t, { deconflictedDefault: s, deconflictedNamespace: i, dependencies: n }, r, o, a, l, c) { + for (const t of n) t.variableName = Li(t.suggestedVariableName, e, null) + for (const t of i) t.namespaceVariableName = Li(`${t.suggestedVariableName}__namespace`, e, null) + for (const t of s) t.defaultVariableName = i.has(t) && kr(r(t.id), a) ? t.namespaceVariableName : Li(`${t.suggestedVariableName}__default`, e, null) + for (const e of t) { + const t = e.module + if (t instanceof Jt) { + const s = c.get(t), + i = e.name + if ('default' === i) { + const i = r(t.id), + n = vr[i] ? s.defaultVariableName : s.variableName + Sr(i, a) ? e.setRenderNames(n, 'default') : e.setRenderNames(null, n) + } else '*' === i ? e.setRenderNames(null, Ar[r(t.id)] ? s.namespaceVariableName : s.variableName) : e.setRenderNames(s.variableName, null) + } else { + const s = l.get(t) + o && e.isNamespace + ? e.setRenderNames(null, 'default' === s.exportMode ? s.namespaceVariableName : s.variableName) + : 'default' === s.exportMode + ? e.setRenderNames(null, s.variableName) + : e.setRenderNames(s.variableName, s.getVariableExportName(e)) + } + } +} +function va(e, { exports: t, name: s, format: i }, n, r) { + const o = e.getExportNames() + if ('default' === t) { + if (1 !== o.length || 'default' !== o[0]) return Qe(Ft('default', o, n)) + } else if ('none' === t && o.length > 0) return Qe(Ft('none', o, n)) + return ( + 'auto' === t && + (0 === o.length + ? (t = 'none') + : 1 === o.length && 'default' === o[0] + ? (t = 'default') + : ('es' !== i && + 'system' !== i && + o.includes('default') && + r( + Ae, + (function (e, t) { + return { + code: At, + id: e, + message: `Entry module "${V(e)}" is using named and default exports together. Consumers of your bundle will have to use \`${ + t || 'chunk' + }.default\` to access the default export, which may not be what you want. Use \`output.exports: "named"\` to disable this warning.`, + url: De(ze) + } + })(n, s) + ), + (t = 'named'))), + t + ) +} +function Sa(e) { + const t = e.split('\n'), + s = t.filter((e) => /^\t+/.test(e)), + i = t.filter((e) => /^ {2,}/.test(e)) + if (0 === s.length && 0 === i.length) return null + if (s.length >= i.length) return '\t' + const n = i.reduce((e, t) => { + const s = /^ +/.exec(t)[0].length + return Math.min(s, e) + }, 1 / 0) + return ' '.repeat(n) +} +function Aa(e, t, s, i, n, r) { + const o = e.getDependenciesToBeIncluded() + for (const e of o) { + if (e instanceof Jt) { + t.push(r.get(e)) + continue + } + const o = n.get(e) + o === i ? s.has(e) || (s.add(e), Aa(e, t, s, i, n, r)) : t.push(o) + } +} +const ka = '!~{', + Ia = '}~', + wa = new RegExp(`${ka}[0-9a-zA-Z_$]{1,59}${Ia}`, 'g'), + Pa = (e, t) => e.replace(wa, (e) => t.get(e) || e), + Ca = (e, t, s) => e.replace(wa, (e) => (e === t ? s : e)), + $a = (e, t) => { + const s = new Set(), + i = e.replace(wa, (e) => (t.has(e) ? (s.add(e), `${ka}${'0'.repeat(e.length - 5)}${Ia}`) : e)) + return { containedPlaceholders: s, transformedCode: i } + }, + Na = Symbol('bundleKeys'), + _a = { type: 'placeholder' } +function Ra(e, t, s) { + return B(e) + ? Qe( + Xt( + `Invalid pattern "${e}" for "${t}", patterns can be neither absolute nor relative paths. If you want your files to be stored in a subdirectory, write its name without a leading slash like this: subdirectory/pattern.` + ) + ) + : e.replace(/\[(\w+)(:\d+)?]/g, (e, i, n) => { + if (!s.hasOwnProperty(i) || (n && 'hash' !== i)) return Qe(Xt(`"[${i}${n || ''}]" is not a valid placeholder in the "${t}" pattern.`)) + const r = s[i](n && Number.parseInt(n.slice(1))) + return B(r) ? Qe(Xt(`Invalid substitution "${r}" for placeholder "[${i}]" in "${t}" pattern, can be neither absolute nor relative path.`)) : r + }) +} +function Ma(e, { [Na]: t }) { + if (!t.has(e.toLowerCase())) return e + const s = N(e) + e = e.slice(0, Math.max(0, e.length - s.length)) + let i, + n = 1 + for (; t.has((i = e + ++n + s).toLowerCase()); ); + return i +} +const Oa = new Set(['.js', '.jsx', '.ts', '.tsx', '.mjs', '.mts', '.cjs', '.cts']) +function Da(e, t, s, i) { + const n = 'function' == typeof t ? t(e.id) : t[e.id] + return ( + n || + (s + ? (i(Ae, ((r = e.id), (o = e.variableName), { code: xt, id: r, message: `No name was provided for external module "${r}" in "output.globals" – guessing "${o}".`, names: [o], url: De(Ge) })), + e.variableName) + : void 0) + ) + var r, o +} +class La { + constructor(e, t, s, i, n, r, o, a, l, c, h, u, d, p, f) { + ;(this.orderedModules = e), + (this.inputOptions = t), + (this.outputOptions = s), + (this.unsetOptions = i), + (this.pluginDriver = n), + (this.modulesById = r), + (this.chunkByModule = o), + (this.externalChunkByModule = a), + (this.facadeChunkByModule = l), + (this.includedNamespaces = c), + (this.manualChunkAlias = h), + (this.getPlaceholder = u), + (this.bundle = d), + (this.inputBase = p), + (this.snippets = f), + (this.entryModules = []), + (this.exportMode = 'named'), + (this.facadeModule = null), + (this.namespaceVariableName = ''), + (this.variableName = ''), + (this.accessedGlobalsByScope = new Map()), + (this.dependencies = new Set()), + (this.dynamicEntryModules = []), + (this.dynamicName = null), + (this.exportNamesByVariable = new Map()), + (this.exports = new Set()), + (this.exportsByName = new Map()), + (this.fileName = null), + (this.implicitEntryModules = []), + (this.implicitlyLoadedBefore = new Set()), + (this.imports = new Set()), + (this.includedDynamicImports = null), + (this.includedReexportsByModule = new Map()), + (this.isEmpty = !0), + (this.name = null), + (this.needsExportsShim = !1), + (this.preRenderedChunkInfo = null), + (this.preliminaryFileName = null), + (this.preliminarySourcemapFileName = null), + (this.renderedChunkInfo = null), + (this.renderedDependencies = null), + (this.renderedModules = Object.create(null)), + (this.sortedExportNames = null), + (this.strictFacade = !1), + (this.execIndex = e.length > 0 ? e[0].execIndex : 1 / 0) + const m = new Set(e) + for (const t of e) { + o.set(t, this), t.namespace.included && !s.preserveModules && c.add(t), this.isEmpty && t.isIncluded() && (this.isEmpty = !1), (t.info.isEntry || s.preserveModules) && this.entryModules.push(t) + for (const e of t.includedDynamicImporters) m.has(e) || (this.dynamicEntryModules.push(t), t.info.syntheticNamedExports && (c.add(t), this.exports.add(t.namespace))) + t.implicitlyLoadedAfter.size > 0 && this.implicitEntryModules.push(t) + } + this.suggestedVariableName = Se(this.generateVariableName()) + } + static generateFacade(e, t, s, i, n, r, o, a, l, c, h, u, d, p, f) { + const m = new La([], e, t, s, i, n, r, o, a, l, null, u, d, p, f) + m.assignFacadeName(h, c), a.has(c) || a.set(c, m) + for (const e of c.getDependenciesToBeIncluded()) m.dependencies.add(e instanceof jo ? r.get(e) : o.get(e)) + return ( + !m.dependencies.has(r.get(c)) && c.info.moduleSideEffects && c.hasEffects() && m.dependencies.add(r.get(c)), + m.ensureReexportsAreAvailableForModule(c), + (m.facadeModule = c), + (m.strictFacade = !0), + m + ) + } + canModuleBeFacade(e, t) { + const s = e.getExportNamesByVariable() + for (const e of this.exports) if (!s.has(e)) return !1 + for (const i of t) if (!(i.module === e || s.has(i) || (i instanceof Eo && s.has(i.getBaseVariable())))) return !1 + return !0 + } + finalizeChunk(e, t, s, i) { + const n = this.getRenderedChunkInfo(), + r = (e) => Pa(e, i), + o = n.fileName, + a = (this.fileName = r(o)) + return { + ...n, + code: e, + dynamicImports: n.dynamicImports.map(r), + fileName: a, + implicitlyLoadedBefore: n.implicitlyLoadedBefore.map(r), + importedBindings: Object.fromEntries(Object.entries(n.importedBindings).map(([e, t]) => [r(e), t])), + imports: n.imports.map(r), + map: t, + preliminaryFileName: o, + referencedFiles: n.referencedFiles.map(r), + sourcemapFileName: s + } + } + generateExports() { + this.sortedExportNames = null + const e = new Set(this.exports) + if (null !== this.facadeModule && (!1 !== this.facadeModule.preserveSignature || this.strictFacade)) { + const t = this.facadeModule.getExportNamesByVariable() + for (const [s, i] of t) { + this.exportNamesByVariable.set(s, [...i]) + for (const e of i) this.exportsByName.set(e, s) + e.delete(s) + } + } + this.outputOptions.minifyInternalExports + ? (function (e, t, s) { + let i = 0 + for (const n of e) { + let [e] = n.name + if (t.has(e)) + do { + ;(e = Di(++i)), 49 === e.charCodeAt(0) && ((i += 9 * 64 ** (e.length - 1)), (e = Di(i))) + } while (Ee.has(e) || t.has(e)) + t.set(e, n), s.set(n, [e]) + } + })(e, this.exportsByName, this.exportNamesByVariable) + : (function (e, t, s) { + for (const i of e) { + let e = 0, + n = i.name + for (; t.has(n); ) n = i.name + '$' + ++e + t.set(n, i), s.set(i, [n]) + } + })(e, this.exportsByName, this.exportNamesByVariable), + (this.outputOptions.preserveModules || (this.facadeModule && this.facadeModule.info.isEntry)) && (this.exportMode = va(this, this.outputOptions, this.facadeModule.id, this.inputOptions.onLog)) + } + generateFacades() { + const e = [], + t = new Set([...this.entryModules, ...this.implicitEntryModules]), + s = new Set(this.dynamicEntryModules.map(({ namespace: e }) => e)) + for (const e of t) if (e.preserveSignature) for (const t of e.getExportNamesByVariable().keys()) this.chunkByModule.get(t.module) === this && s.add(t) + for (const i of t) { + const t = Array.from(new Set(i.chunkNames.filter(({ isUserDefined: e }) => e).map(({ name: e }) => e)), (e) => ({ name: e })) + if ((0 === t.length && i.isUserDefinedEntryPoint && t.push({}), t.push(...Array.from(i.chunkFileNames, (e) => ({ fileName: e }))), 0 === t.length && t.push({}), !this.facadeModule)) { + const e = !this.outputOptions.preserveModules && ('strict' === i.preserveSignature || ('exports-only' === i.preserveSignature && i.getExportNamesByVariable().size > 0)) + ;(e && !this.canModuleBeFacade(i, s)) || + ((this.facadeModule = i), this.facadeChunkByModule.set(i, this), i.preserveSignature && (this.strictFacade = e), this.assignFacadeName(t.shift(), i, this.outputOptions.preserveModules)) + } + for (const s of t) + e.push( + La.generateFacade( + this.inputOptions, + this.outputOptions, + this.unsetOptions, + this.pluginDriver, + this.modulesById, + this.chunkByModule, + this.externalChunkByModule, + this.facadeChunkByModule, + this.includedNamespaces, + i, + s, + this.getPlaceholder, + this.bundle, + this.inputBase, + this.snippets + ) + ) + } + for (const e of this.dynamicEntryModules) + e.info.syntheticNamedExports || + (!this.facadeModule && this.canModuleBeFacade(e, s) + ? ((this.facadeModule = e), this.facadeChunkByModule.set(e, this), (this.strictFacade = !0), (this.dynamicName = Ta(e))) + : this.facadeModule === e && !this.strictFacade && this.canModuleBeFacade(e, s) + ? (this.strictFacade = !0) + : this.facadeChunkByModule.get(e)?.strictFacade || (this.includedNamespaces.add(e), this.exports.add(e.namespace))) + return this.outputOptions.preserveModules || this.addNecessaryImportsForFacades(), e + } + getChunkName() { + return this.name ?? (this.name = this.outputOptions.sanitizeFileName(this.getFallbackChunkName())) + } + getExportNames() { + return this.sortedExportNames ?? (this.sortedExportNames = [...this.exportsByName.keys()].sort()) + } + getFileName() { + return this.fileName || this.getPreliminaryFileName().fileName + } + getImportPath(e) { + return L(F(e, this.getFileName(), 'amd' === this.outputOptions.format && !this.outputOptions.amd.forceJsExtensionForImports, !0)) + } + getPreliminaryFileName() { + if (this.preliminaryFileName) return this.preliminaryFileName + let e, + t = null + const { chunkFileNames: s, entryFileNames: i, file: n, format: r, preserveModules: o } = this.outputOptions + if (n) e = C(n) + else if (null === this.fileName) { + const [n, a] = o || this.facadeModule?.isUserDefinedEntryPoint ? [i, 'output.entryFileNames'] : [s, 'output.chunkFileNames'] + ;(e = Ra('function' == typeof n ? n(this.getPreRenderedChunkInfo()) : n, a, { format: () => r, hash: (e) => t || (t = this.getPlaceholder(a, e)), name: () => this.getChunkName() })), + t || (e = Ma(e, this.bundle)) + } else e = this.fileName + return t || (this.bundle[e] = _a), (this.preliminaryFileName = { fileName: e, hashPlaceholder: t }) + } + getPreliminarySourcemapFileName() { + if (this.preliminarySourcemapFileName) return this.preliminarySourcemapFileName + let e = null, + t = null + const { sourcemapFileNames: s, format: i } = this.outputOptions + if (!s) return null + { + const [n, r] = [s, 'output.sourcemapFileNames'] + ;(e = Ra('function' == typeof n ? n(this.getPreRenderedChunkInfo()) : n, r, { + chunkhash: () => this.getPreliminaryFileName().hashPlaceholder || '', + format: () => i, + hash: (e) => t || (t = this.getPlaceholder(r, e)), + name: () => this.getChunkName() + })), + t || (e = Ma(e, this.bundle)) + } + return (this.preliminarySourcemapFileName = { fileName: e, hashPlaceholder: t }) + } + getRenderedChunkInfo() { + return this.renderedChunkInfo + ? this.renderedChunkInfo + : (this.renderedChunkInfo = { + ...this.getPreRenderedChunkInfo(), + dynamicImports: this.getDynamicDependencies().map(Fa), + fileName: this.getFileName(), + implicitlyLoadedBefore: Array.from(this.implicitlyLoadedBefore, Fa), + importedBindings: Ba(this.getRenderedDependencies(), Fa), + imports: Array.from(this.dependencies, Fa), + modules: this.renderedModules, + referencedFiles: this.getReferencedFiles() + }) + } + getVariableExportName(e) { + return this.outputOptions.preserveModules && e instanceof xo ? '*' : this.exportNamesByVariable.get(e)[0] + } + link() { + this.dependencies = (function (e, t, s, i) { + const n = [], + r = new Set() + for (let o = t.length - 1; o >= 0; o--) { + const a = t[o] + if (!r.has(a)) { + const t = [] + Aa(a, t, r, e, s, i), n.unshift(t) + } + } + const o = new Set() + for (const e of n) for (const t of e) o.add(t) + return o + })(this, this.orderedModules, this.chunkByModule, this.externalChunkByModule) + for (const e of this.orderedModules) this.addImplicitlyLoadedBeforeFromModule(e), this.setUpChunkImportsAndExportsForModule(e) + } + async render() { + const { + dependencies: e, + exportMode: t, + facadeModule: s, + inputOptions: { onLog: i }, + outputOptions: n, + pluginDriver: r, + snippets: o + } = this, + { format: a, hoistTransitiveImports: l, preserveModules: c } = n + if (l && !c && null !== s) for (const t of e) t instanceof La && this.inlineChunkDependencies(t) + const h = this.getPreliminaryFileName(), + u = this.getPreliminarySourcemapFileName(), + { accessedGlobals: d, indent: p, magicString: f, renderedSource: m, usedModules: g, usesTopLevelAwait: y } = this.renderModules(h.fileName), + x = [...this.getRenderedDependencies().values()], + E = 'none' === t ? [] : this.getChunkExportDeclarations(a) + let b = E.length > 0, + v = !1 + for (const e of x) { + const { reexports: t } = e + t?.length && ((b = !0), !v && t.some((e) => 'default' === e.reexported) && (v = !0), 'es' === a && (e.reexports = t.filter(({ reexported: e }) => !E.find(({ exported: t }) => t === e)))) + } + if (!v) + for (const { exported: e } of E) + if ('default' === e) { + v = !0 + break + } + const { intro: S, outro: A, banner: k, footer: I } = await ga(n, r, this.getRenderedChunkInfo()) + return ( + pa[a]( + m, + { + accessedGlobals: d, + dependencies: x, + exports: E, + hasDefaultExport: v, + hasExports: b, + id: h.fileName, + indent: p, + intro: S, + isEntryFacade: c || (null !== s && s.info.isEntry), + isModuleFacade: null !== s, + log: i, + namedExportsMode: 'default' !== t, + outro: A, + snippets: o, + usesTopLevelAwait: y + }, + n + ), + k && f.prepend(k), + I && f.append(I), + { chunk: this, magicString: f, preliminaryFileName: h, preliminarySourcemapFileName: u, usedModules: g } + ) + } + addImplicitlyLoadedBeforeFromModule(e) { + const { chunkByModule: t, implicitlyLoadedBefore: s } = this + for (const i of e.implicitlyLoadedBefore) { + const e = t.get(i) + e && e !== this && s.add(e) + } + } + addNecessaryImportsForFacades() { + for (const [e, t] of this.includedReexportsByModule) if (this.includedNamespaces.has(e)) for (const e of t) this.imports.add(e) + } + assignFacadeName({ fileName: e, name: t }, s, i) { + e ? (this.fileName = e) : (this.name = this.outputOptions.sanitizeFileName(t || (i ? this.getPreserveModulesChunkNameFromModule(s) : Ta(s)))) + } + checkCircularDependencyImport(e, t) { + const s = e.module + if (s instanceof jo) { + const l = this.chunkByModule.get(s) + let c + do { + if (((c = t.alternativeReexportModules.get(e)), c)) { + this.chunkByModule.get(c) !== l && + this.inputOptions.onLog( + Ae, + ((i = s.getExportNamesByVariable().get(e)?.[0] || '*'), + (n = s.id), + (r = c.id), + (o = t.id), + (a = this.outputOptions.preserveModules), + { + code: 'CYCLIC_CROSS_CHUNK_REEXPORT', + exporter: n, + id: o, + message: `Export "${i}" of module "${V(n)}" was reexported through module "${V( + r + )}" while both modules are dependencies of each other and will end up in different chunks by current Rollup settings. This scenario is not well supported at the moment as it will produce a circular dependency between chunks and will likely lead to broken execution order.\nEither change the import in "${V( + o + )}" to point directly to the exporting module or ${a ? 'do not use "output.preserveModules"' : 'reconfigure "output.manualChunks"'} to ensure these modules end up in the same chunk.`, + reexporter: r + }) + ), + (t = c) + } + } while (c) + } + var i, n, r, o, a + } + ensureReexportsAreAvailableForModule(e) { + const t = [], + s = e.getExportNamesByVariable() + for (const i of s.keys()) { + const s = i instanceof Eo, + n = s ? i.getBaseVariable() : i + if ((this.checkCircularDependencyImport(n, e), !(n instanceof xo && this.outputOptions.preserveModules))) { + const e = n.module + if (e instanceof jo) { + const i = this.chunkByModule.get(e) + i && i !== this && (i.exports.add(n), t.push(n), s && this.imports.add(n)) + } + } + } + t.length > 0 && this.includedReexportsByModule.set(e, t) + } + generateVariableName() { + if (this.manualChunkAlias) return this.manualChunkAlias + const e = this.entryModules[0] || this.implicitEntryModules[0] || this.dynamicEntryModules[0] || this.orderedModules[this.orderedModules.length - 1] + return e ? Ta(e) : 'chunk' + } + getChunkExportDeclarations(e) { + const t = [] + for (const s of this.getExportNames()) { + if ('*' === s[0]) continue + const i = this.exportsByName.get(s) + if (!(i instanceof Eo)) { + const t = i.module + if (t) { + const i = this.chunkByModule.get(t) + if (i !== this) { + if (!i || 'es' !== e) continue + const t = this.renderedDependencies.get(i) + if (!t) continue + const { imports: n, reexports: r } = t, + o = r?.find(({ reexported: e }) => e === s), + a = n?.find(({ imported: e }) => e === o?.imported) + if (!a) continue + } + } + } + let n = null, + r = !1, + o = i.getName(this.snippets.getPropertyAccess) + if (i instanceof Pi) { + for (const e of i.declarations) + if (e.parent instanceof nr || (e instanceof rr && e.declaration instanceof nr)) { + r = !0 + break + } + } else i instanceof Eo && ((n = o), 'es' === e && (o = i.renderName)) + t.push({ exported: s, expression: n, hoisted: r, local: o }) + } + return t + } + getDependenciesToBeDeconflicted(e, t, s) { + const i = new Set(), + n = new Set(), + r = new Set() + for (const t of [...this.exportNamesByVariable.keys(), ...this.imports]) + if (e || t.isNamespace) { + const o = t.module + if (o instanceof Jt) { + const a = this.externalChunkByModule.get(o) + i.add(a), e && ('default' === t.name ? vr[s(o.id)] && n.add(a) : '*' === t.name && Ar[s(o.id)] && r.add(a)) + } else { + const s = this.chunkByModule.get(o) + s !== this && (i.add(s), e && 'default' === s.exportMode && t.isNamespace && r.add(s)) + } + } + if (t) for (const e of this.dependencies) i.add(e) + return { deconflictedDefault: n, deconflictedNamespace: r, dependencies: i } + } + getDynamicDependencies() { + return this.getIncludedDynamicImports() + .map((e) => e.facadeChunk || e.chunk || e.externalChunk || e.resolution) + .filter((e) => e !== this && (e instanceof La || e instanceof j)) + } + getDynamicImportStringAndAssertions(e, t) { + if (e instanceof Jt) { + const s = this.externalChunkByModule.get(e) + return [`'${s.getImportPath(t)}'`, s.getImportAssertions(this.snippets)] + } + return [e || '', ('es' === this.outputOptions.format && this.outputOptions.externalImportAssertions) || null] + } + getFallbackChunkName() { + return this.manualChunkAlias ? this.manualChunkAlias : this.dynamicName ? this.dynamicName : this.fileName ? T(this.fileName) : T(this.orderedModules[this.orderedModules.length - 1].id) + } + getImportSpecifiers() { + const { interop: e } = this.outputOptions, + t = new Map() + for (const s of this.imports) { + const i = s.module + let n, r + if (i instanceof Jt) { + if (((n = this.externalChunkByModule.get(i)), (r = s.name), 'default' !== r && '*' !== r && 'defaultOnly' === e(i.id))) return Qe(Kt(i.id, r, !1)) + } else (n = this.chunkByModule.get(i)), (r = n.getVariableExportName(s)) + U(t, n, W).push({ imported: r, local: s.getName(this.snippets.getPropertyAccess) }) + } + return t + } + getIncludedDynamicImports() { + if (this.includedDynamicImports) return this.includedDynamicImports + const e = [] + for (const t of this.orderedModules) + for (const { node: s, resolution: i } of t.dynamicImports) + s.included && + e.push( + i instanceof jo + ? { chunk: this.chunkByModule.get(i), externalChunk: null, facadeChunk: this.facadeChunkByModule.get(i), node: s, resolution: i } + : i instanceof Jt + ? { chunk: null, externalChunk: this.externalChunkByModule.get(i), facadeChunk: null, node: s, resolution: i } + : { chunk: null, externalChunk: null, facadeChunk: null, node: s, resolution: i } + ) + return (this.includedDynamicImports = e) + } + getPreRenderedChunkInfo() { + if (this.preRenderedChunkInfo) return this.preRenderedChunkInfo + const { dynamicEntryModules: e, facadeModule: t, implicitEntryModules: s, orderedModules: i } = this + return (this.preRenderedChunkInfo = { + exports: this.getExportNames(), + facadeModuleId: t && t.id, + isDynamicEntry: e.length > 0, + isEntry: !!t?.info.isEntry, + isImplicitEntry: s.length > 0, + moduleIds: i.map(({ id: e }) => e), + name: this.getChunkName(), + type: 'chunk' + }) + } + getPreserveModulesChunkNameFromModule(e) { + const t = Va(e) + if (t) return t + const { preserveModulesRoot: s, sanitizeFileName: i } = this.outputOptions, + n = i(P(e.id.split(za, 1)[0])), + r = N(n), + o = Oa.has(r) ? n.slice(0, -r.length) : n + return I(o) ? (s && R(o).startsWith(s) ? o.slice(s.length).replace(/^[/\\]/, '') : _(this.inputBase, o)) : `_virtual/${C(o)}` + } + getReexportSpecifiers() { + const { externalLiveBindings: e, interop: t } = this.outputOptions, + s = new Map() + for (let i of this.getExportNames()) { + let n, + r, + o = !1 + if ('*' === i[0]) { + const s = i.slice(1) + 'defaultOnly' === t(s) && this.inputOptions.onLog(Ae, Yt(s)), (o = e), (n = this.externalChunkByModule.get(this.modulesById.get(s))), (r = i = '*') + } else { + const s = this.exportsByName.get(i) + if (s instanceof Eo) continue + const a = s.module + if (a instanceof jo) { + if (((n = this.chunkByModule.get(a)), n === this)) continue + ;(r = n.getVariableExportName(s)), (o = s.isReassigned) + } else { + if (((n = this.externalChunkByModule.get(a)), (r = s.name), 'default' !== r && '*' !== r && 'defaultOnly' === t(a.id))) return Qe(Kt(a.id, r, !0)) + o = e && ('default' !== r || Sr(t(a.id), !0)) + } + } + U(s, n, W).push({ imported: r, needsLiveBinding: o, reexported: i }) + } + return s + } + getReferencedFiles() { + const e = new Set() + for (const t of this.orderedModules) + for (const s of t.importMetas) { + const t = s.getReferencedFileName(this.pluginDriver) + t && e.add(t) + } + return [...e] + } + getRenderedDependencies() { + if (this.renderedDependencies) return this.renderedDependencies + const e = this.getImportSpecifiers(), + t = this.getReexportSpecifiers(), + s = new Map(), + i = this.getFileName() + for (const n of this.dependencies) { + const r = e.get(n) || null, + o = t.get(n) || null, + a = n instanceof j || 'default' !== n.exportMode, + l = n.getImportPath(i) + s.set(n, { + assertions: n instanceof j ? n.getImportAssertions(this.snippets) : null, + defaultVariableName: n.defaultVariableName, + globalName: n instanceof j && ('umd' === this.outputOptions.format || 'iife' === this.outputOptions.format) && Da(n, this.outputOptions.globals, null !== (r || o), this.inputOptions.onLog), + importPath: l, + imports: r, + isChunk: n instanceof La, + name: n.variableName, + namedExportsMode: a, + namespaceVariableName: n.namespaceVariableName, + reexports: o + }) + } + return (this.renderedDependencies = s) + } + inlineChunkDependencies(e) { + for (const t of e.dependencies) this.dependencies.has(t) || (this.dependencies.add(t), t instanceof La && this.inlineChunkDependencies(t)) + } + renderModules(e) { + const { + accessedGlobalsByScope: t, + dependencies: s, + exportNamesByVariable: i, + includedNamespaces: n, + inputOptions: { onLog: r }, + isEmpty: o, + orderedModules: a, + outputOptions: l, + pluginDriver: c, + renderedModules: h, + snippets: u + } = this, + { compact: d, dynamicImportFunction: p, format: f, freeze: m, namespaceToStringTag: g } = l, + { _: x, cnst: b, n: v } = u + this.setDynamicImportResolutions(e), this.setImportMetaResolutions(e), this.setIdentifierRenderResolutions() + const S = new E({ separator: `${v}${v}` }), + A = (function (e, t) { + if (!0 !== t.indent) return t.indent + for (const t of e) { + const e = Sa(t.originalCode) + if (null !== e) return e + } + return '\t' + })(a, l), + k = [] + let I = '' + const w = new Set(), + P = new Map(), + C = { + accessedDocumentCurrentScript: !1, + dynamicImportFunction: p, + exportNamesByVariable: i, + format: f, + freeze: m, + indent: A, + namespaceToStringTag: g, + pluginDriver: c, + snippets: u, + useOriginalName: null + } + let $ = !1 + for (const e of a) { + let s, + i = 0 + if (e.isIncluded() || n.has(e)) { + const r = e.render(C) + !C.accessedDocumentCurrentScript && Yr.includes(f) && this.accessedGlobalsByScope.get(e.scope)?.delete(br), + (C.accessedDocumentCurrentScript = !1), + ({ source: s } = r), + $ || ($ = r.usesTopLevelAwait), + (i = s.length()), + i && (d && s.lastLine().includes('//') && s.append('\n'), P.set(e, s), S.addSource(s), k.push(e)) + const o = e.namespace + if (n.has(e)) { + const e = o.renderBlock(C) + o.renderFirst() ? (I += v + e) : S.addSource(new y(e)) + } + const a = t.get(e.scope) + if (a) for (const e of a) w.add(e) + } + const { renderedExports: r, removedExports: o } = e.getRenderedExports() + h[e.id] = { + get code() { + return s?.toString() ?? null + }, + originalLength: e.originalCode.length, + removedExports: o, + renderedExports: r, + renderedLength: i + } + } + I && S.prepend(I + v + v), this.needsExportsShim && S.prepend(`${v}${b} ${go}${x}=${x}void 0;${v}${v}`) + const N = d ? S : S.trim() + var _ + return ( + o && 0 === this.getExportNames().length && 0 === s.size && r(Ae, { code: 'EMPTY_BUNDLE', message: `Generated an empty chunk: "${(_ = this.getChunkName())}".`, names: [_] }), + { accessedGlobals: w, indent: A, magicString: S, renderedSource: N, usedModules: k, usesTopLevelAwait: $ } + ) + } + setDynamicImportResolutions(e) { + const { accessedGlobalsByScope: t, outputOptions: s, pluginDriver: i, snippets: n } = this + for (const r of this.getIncludedDynamicImports()) + if (r.chunk) { + const { chunk: o, facadeChunk: a, node: l, resolution: c } = r + o === this + ? l.setInternalResolution(c.namespace) + : l.setExternalResolution((a || o).exportMode, c, s, n, i, t, `'${(a || o).getImportPath(e)}'`, !a?.strictFacade && o.exportNamesByVariable.get(c.namespace)[0], null) + } else { + const { node: o, resolution: a } = r, + [l, c] = this.getDynamicImportStringAndAssertions(a, e) + o.setExternalResolution('external', a, s, n, i, t, l, !1, c) + } + } + setIdentifierRenderResolutions() { + const { format: e, interop: t, namespaceToStringTag: s, preserveModules: i, externalLiveBindings: n } = this.outputOptions, + r = new Set() + for (const t of this.getExportNames()) { + const s = this.exportsByName.get(t) + 'es' !== e && 'system' !== e && s.isReassigned && !s.isId ? s.setRenderNames('exports', t) : s instanceof Eo ? r.add(s) : s.setRenderNames(null, null) + } + for (const e of this.orderedModules) + if (e.needsExportShim) { + this.needsExportsShim = !0 + break + } + const o = new Set(['Object', 'Promise']) + switch ((this.needsExportsShim && o.add(go), s && o.add('Symbol'), e)) { + case 'system': + o.add('module').add('exports') + break + case 'es': + break + case 'cjs': + o.add('module').add('require').add('__filename').add('__dirname') + default: + o.add('exports') + for (const e of Br) o.add(e) + } + xa( + this.orderedModules, + this.getDependenciesToBeDeconflicted('es' !== e && 'system' !== e, 'amd' === e || 'umd' === e || 'iife' === e, t), + this.imports, + o, + e, + t, + i, + n, + this.chunkByModule, + this.externalChunkByModule, + r, + this.exportNamesByVariable, + this.accessedGlobalsByScope, + this.includedNamespaces + ) + } + setImportMetaResolutions(e) { + const { + accessedGlobalsByScope: t, + includedNamespaces: s, + orderedModules: i, + outputOptions: { format: n } + } = this + for (const r of i) { + for (const s of r.importMetas) s.setResolution(n, t, e) + s.has(r) && r.namespace.prepare(t) + } + } + setUpChunkImportsAndExportsForModule(e) { + const t = new Set(e.includedImports) + if (!this.outputOptions.preserveModules && this.includedNamespaces.has(e)) { + const s = e.namespace.getMemberVariables() + for (const e of Object.values(s)) e.included && t.add(e) + } + for (let s of t) { + s instanceof ho && (s = s.getOriginalVariable()), s instanceof Eo && (s = s.getBaseVariable()) + const t = this.chunkByModule.get(s.module) + t !== this && (this.imports.add(s), s.module instanceof jo && (this.checkCircularDependencyImport(s, e), (s instanceof xo && this.outputOptions.preserveModules) || t.exports.add(s))) + } + ;(this.includedNamespaces.has(e) || (e.info.isEntry && !1 !== e.preserveSignature) || e.includedDynamicImporters.some((e) => this.chunkByModule.get(e) !== this)) && + this.ensureReexportsAreAvailableForModule(e) + for (const { node: t, resolution: s } of e.dynamicImports) + t.included && s instanceof jo && this.chunkByModule.get(s) === this && !this.includedNamespaces.has(s) && (this.includedNamespaces.add(s), this.ensureReexportsAreAvailableForModule(s)) + } +} +function Ta(e) { + return Va(e) ?? T(e.id) +} +function Va(e) { + return e.chunkNames.find(({ isUserDefined: e }) => e)?.name ?? e.chunkNames[0]?.name +} +function Ba(e, t) { + const s = {} + for (const [i, n] of e) { + const e = new Set() + if (n.imports) for (const { imported: t } of n.imports) e.add(t) + if (n.reexports) for (const { imported: t } of n.reexports) e.add(t) + s[t(i)] = [...e] + } + return s +} +const za = /[#?]/, + Fa = (e) => e.getFileName() +function* ja(e) { + for (const t of e) yield* t +} +function Ua(e, t, s, i) { + const { chunkDefinitions: n, modulesInManualChunks: r } = (function (e) { + const t = [], + s = new Set(e.keys()), + i = Object.create(null) + for (const [t, n] of e) Ga(t, i[n] || (i[n] = []), s) + for (const [e, s] of Object.entries(i)) t.push({ alias: e, modules: s }) + return { chunkDefinitions: t, modulesInManualChunks: s } + })(t), + { + allEntries: o, + dependentEntriesByModule: a, + dynamicallyDependentEntriesByDynamicEntry: l, + dynamicImportsByEntry: c + } = (function (e) { + const t = new Set(), + s = new Map(), + i = [], + n = new Set(e) + let r = 0 + for (const e of n) { + const o = new Set() + i.push(o) + const a = new Set([e]) + for (const e of a) { + U(s, e, G).add(r) + for (const t of e.getDependenciesToBeIncluded()) t instanceof Jt || a.add(t) + for (const { resolution: s } of e.dynamicImports) s instanceof jo && s.includedDynamicImporters.length > 0 && !n.has(s) && (t.add(s), n.add(s), o.add(s)) + for (const s of e.implicitlyLoadedBefore) n.has(s) || (t.add(s), n.add(s)) + } + r++ + } + const o = [...n], + { dynamicEntries: a, dynamicImportsByEntry: l } = (function (e, t, s) { + const i = new Map(), + n = new Set() + for (const [s, r] of e.entries()) i.set(r, s), t.has(r) && n.add(s) + const r = [] + for (const e of s) { + const t = new Set() + for (const s of e) t.add(i.get(s)) + r.push(t) + } + return { dynamicEntries: n, dynamicImportsByEntry: r } + })(o, t, i) + return { allEntries: o, dependentEntriesByModule: s, dynamicallyDependentEntriesByDynamicEntry: Wa(s, a, o), dynamicImportsByEntry: l } + })(e), + h = qa( + (function* (e, t) { + for (const [s, i] of e) t.has(s) || (yield { dependentEntries: i, modules: [s] }) + })(a, r) + ) + return ( + (function (e, t, s, i) { + const n = i.map(() => 0n), + r = i.map((e, s) => (t.has(s) ? -1n : 0n)) + let o = 1n + for (const { dependentEntries: t } of e) { + for (const e of t) n[e] |= o + o <<= 1n + } + const a = t + for (const [e, t] of a) { + a.delete(e) + const i = r[e] + let o = i + for (const e of t) o &= n[e] | r[e] + if (o !== i) { + r[e] = o + for (const t of s[e]) U(a, t, G).add(e) + } + } + o = 1n + for (const { dependentEntries: t } of e) { + for (const e of t) (r[e] & o) === o && t.delete(e) + o <<= 1n + } + })(h, l, c, o), + n.push( + ...(function (e, t, s, i) { + Oo('optimize chunks', 3) + const n = (function (e, t, s) { + const i = [], + n = [], + r = new Map(), + o = [] + let a = 0n, + l = 1n + for (const { dependentEntries: t, modules: c } of e) { + const e = { containedAtoms: l, correlatedAtoms: 0n, dependencies: new Set(), dependentChunks: new Set(), dependentEntries: t, modules: c, pure: !0, size: 0 } + let h = 0, + u = !0 + for (const t of c) r.set(t, e), t.isIncluded() && (u && (u = !t.hasEffects()), (h += s > 1 ? t.estimateSize() : 1)) + ;(e.pure = u), (e.size = h), o.push(h), u || (a |= l), (h < s ? i : n).push(e), (l <<= 1n) + } + if (0 === i.length) return null + return ( + (a |= (function (e, t, s, i) { + const n = new Map() + let r = 0n + const o = [] + for (let e = 0; e < s; e++) o.push(0n) + for (const s of e) { + s.sort(Ya) + for (const e of s) { + const { dependencies: s, dependentEntries: a, modules: l } = e + for (const o of l) + for (const a of o.getDependenciesToBeIncluded()) + if (a instanceof Jt) + a.info.moduleSideEffects && + (e.containedAtoms |= U(n, a, () => { + const e = i + return (i <<= 1n), (r |= e), e + })) + else { + const i = t.get(a) + i && i !== e && (s.add(i), i.dependentChunks.add(e)) + } + const { containedAtoms: c } = e + for (const e of a) o[e] |= c + } + } + for (const t of e) + for (const e of t) { + const { dependentEntries: t } = e + e.correlatedAtoms = -1n + for (const s of t) e.correlatedAtoms &= o[s] + } + return r + })([n, i], r, t, l)), + { big: new Set(n), sideEffectAtoms: a, sizeByAtom: o, small: new Set(i) } + ) + })(e, t, s) + if (!n) return Do('optimize chunks', 3), e + return ( + s > 1 && i('info', Wt(e.length, n.small.size, 'Initially')), + (function (e, t) { + const { small: s } = e + for (const i of s) { + const n = Ha(i, e, t <= 1 ? 1 : 1 / 0) + if (n) { + const { containedAtoms: r, correlatedAtoms: o, modules: a, pure: l, size: c } = i + s.delete(i), Ka(n, t, e).delete(n), n.modules.push(...a), (n.size += c), n.pure && (n.pure = l) + const { dependencies: h, dependentChunks: u, dependentEntries: d } = n + ;(n.correlatedAtoms &= o), (n.containedAtoms |= r) + for (const e of i.dependentEntries) d.add(e) + for (const e of i.dependencies) h.add(e), e.dependentChunks.delete(i), e.dependentChunks.add(n) + for (const e of i.dependentChunks) u.add(e), e.dependencies.delete(i), e.dependencies.add(n) + h.delete(n), u.delete(n), Ka(n, t, e).add(n) + } + } + })(n, s), + s > 1 && i('info', Wt(n.small.size + n.big.size, n.small.size, 'After merging chunks')), + Do('optimize chunks', 3), + [...n.small, ...n.big] + ) + })(qa(h), o.length, s, i).map(({ modules: e }) => ({ alias: null, modules: e })) + ), + n + ) +} +function Ga(e, t, s) { + const i = new Set([e]) + for (const e of i) { + s.add(e), t.push(e) + for (const t of e.dependencies) t instanceof Jt || s.has(t) || i.add(t) + } +} +function Wa(e, t, s) { + const i = new Map() + for (const n of t) { + const t = U(i, n, G), + r = s[n] + for (const s of ja([r.includedDynamicImporters, r.implicitlyLoadedAfter])) for (const i of e.get(s)) t.add(i) + } + return i +} +function qa(e) { + var t + const s = Object.create(null) + for (const { dependentEntries: i, modules: n } of e) { + let e = 0n + for (const t of i) e |= 1n << BigInt(t) + ;(s[(t = String(e))] || (s[t] = { dependentEntries: new Set(i), modules: [] })).modules.push(...n) + } + return Object.values(s) +} +function Ha(e, { big: t, sideEffectAtoms: s, sizeByAtom: i, small: n }, r) { + let o = null + for (const a of ja([n, t])) { + if (e === a) continue + const t = Xa(e, a, r, s, i) + if (t < r) { + if (((o = a), 0 === t)) break + r = t + } + } + return o +} +function Ka(e, t, s) { + return e.size < t ? s.small : s.big +} +function Ya({ size: e }, { size: t }) { + return e - t +} +function Xa(e, t, s, i, n) { + const r = Qa(e, t, s, i, n) + return r < s ? r + Qa(t, e, s - r, i, n) : 1 / 0 +} +function Qa(e, t, s, i, n) { + const { correlatedAtoms: r } = t + let o = e.containedAtoms + const a = o & i + if ((r & a) !== a) return 1 / 0 + const l = new Set(e.dependencies) + for (const { dependencies: e, containedAtoms: s } of l) { + o |= s + const n = s & i + if ((r & n) !== n) return 1 / 0 + for (const s of e) { + if (s === t) return 1 / 0 + l.add(s) + } + } + return (function (e, t, s) { + let i = 0, + n = 0, + r = 1n + const { length: o } = s + for (; n < o; n++) if (((e & r) === r && (i += s[n]), (r <<= 1n), i >= t)) return 1 / 0 + return i + })(o & ~r, s, n) +} +const Za = (e, t) => (e.execIndex > t.execIndex ? 1 : -1) +function Ja(e, t, s) { + const i = Symbol(e.id), + n = [e.id] + let r = t + for (e.cycles.add(i); r !== e; ) r.cycles.add(i), n.push(r.id), (r = s.get(r)) + return n.push(n[0]), n.reverse(), n +} +const el = (e, t) => (t ? `(${e})` : e), + tl = /^(?!\d)[\w$]+$/ +class sl { + constructor(e, t) { + ;(this.isOriginal = !0), (this.filename = e), (this.content = t) + } + traceSegment(e, t, s) { + return { column: t, line: e, name: s, source: this } + } +} +class il { + constructor(e, t) { + ;(this.sources = t), (this.names = e.names), (this.mappings = e.mappings) + } + traceMappings() { + const e = [], + t = new Map(), + s = [], + i = [], + n = new Map(), + r = [] + for (const o of this.mappings) { + const a = [] + for (const r of o) { + if (1 === r.length) continue + const o = this.sources[r[1]] + if (!o) continue + const l = o.traceSegment(r[2], r[3], 5 === r.length ? this.names[r[4]] : '') + if (l) { + const { + column: o, + line: c, + name: h, + source: { content: u, filename: d } + } = l + let p = t.get(d) + if (void 0 === p) (p = e.length), e.push(d), t.set(d, p), (s[p] = u) + else if (null == s[p]) s[p] = u + else if (null != u && s[p] !== u) return Qe(Ht(d)) + const f = [r[0], p, c, o] + if (h) { + let e = n.get(h) + void 0 === e && ((e = i.length), i.push(h), n.set(h, e)), (f[4] = e) + } + a.push(f) + } + } + r.push(a) + } + return { mappings: r, names: i, sources: e, sourcesContent: s } + } + traceSegment(e, t, s) { + const i = this.mappings[e] + if (!i) return null + let n = 0, + r = i.length - 1 + for (; n <= r; ) { + const e = (n + r) >> 1, + o = i[e] + if (o[0] === t || n === r) { + if (1 == o.length) return null + const e = this.sources[o[1]] + return e ? e.traceSegment(o[2], o[3], 5 === o.length ? this.names[o[4]] : s) : null + } + o[0] > t ? (r = e - 1) : (n = e + 1) + } + return null + } +} +function nl(e) { + return function (t, s) { + return s.missing + ? (e( + Ae, + ((i = s.plugin), + { + code: Pt, + message: `Sourcemap is likely to be incorrect: a plugin (${i}) was used to transform files, but didn't generate a sourcemap for the transformation. Consult the plugin documentation for help`, + plugin: i, + url: De(Te) + }) + ), + new il({ mappings: [], names: [] }, [t])) + : new il(s, [t]) + var i + } +} +function rl(e, t, s, i, n) { + let r + if (s) { + const t = s.sources, + i = s.sourcesContent || [], + n = $(e) || '.', + o = s.sourceRoot || '.', + a = t.map((e, t) => new sl(R(n, o, e), i[t])) + r = new il(s, a) + } else r = new sl(e, t) + return i.reduce(n, r) +} +var ol = {}, + al = ll +function ll(e, t) { + if (!e) throw new Error(t || 'Assertion failed') +} +ll.equal = function (e, t, s) { + if (e != t) throw new Error(s || 'Assertion failed: ' + e + ' != ' + t) +} +var cl = { exports: {} } +'function' == typeof Object.create + ? (cl.exports = function (e, t) { + t && ((e.super_ = t), (e.prototype = Object.create(t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }))) + }) + : (cl.exports = function (e, t) { + if (t) { + e.super_ = t + var s = function () {} + ;(s.prototype = t.prototype), (e.prototype = new s()), (e.prototype.constructor = e) + } + }) +var hl = cl.exports, + ul = al, + dl = hl +function pl(e, t) { + return 55296 == (64512 & e.charCodeAt(t)) && !(t < 0 || t + 1 >= e.length) && 56320 == (64512 & e.charCodeAt(t + 1)) +} +function fl(e) { + return ((e >>> 24) | ((e >>> 8) & 65280) | ((e << 8) & 16711680) | ((255 & e) << 24)) >>> 0 +} +function ml(e) { + return 1 === e.length ? '0' + e : e +} +function gl(e) { + return 7 === e.length + ? '0' + e + : 6 === e.length + ? '00' + e + : 5 === e.length + ? '000' + e + : 4 === e.length + ? '0000' + e + : 3 === e.length + ? '00000' + e + : 2 === e.length + ? '000000' + e + : 1 === e.length + ? '0000000' + e + : e +} +;(ol.inherits = dl), + (ol.toArray = function (e, t) { + if (Array.isArray(e)) return e.slice() + if (!e) return [] + var s = [] + if ('string' == typeof e) + if (t) { + if ('hex' === t) for ((e = e.replace(/[^a-z0-9]+/gi, '')).length % 2 != 0 && (e = '0' + e), n = 0; n < e.length; n += 2) s.push(parseInt(e[n] + e[n + 1], 16)) + } else + for (var i = 0, n = 0; n < e.length; n++) { + var r = e.charCodeAt(n) + r < 128 + ? (s[i++] = r) + : r < 2048 + ? ((s[i++] = (r >> 6) | 192), (s[i++] = (63 & r) | 128)) + : pl(e, n) + ? ((r = 65536 + ((1023 & r) << 10) + (1023 & e.charCodeAt(++n))), + (s[i++] = (r >> 18) | 240), + (s[i++] = ((r >> 12) & 63) | 128), + (s[i++] = ((r >> 6) & 63) | 128), + (s[i++] = (63 & r) | 128)) + : ((s[i++] = (r >> 12) | 224), (s[i++] = ((r >> 6) & 63) | 128), (s[i++] = (63 & r) | 128)) + } + else for (n = 0; n < e.length; n++) s[n] = 0 | e[n] + return s + }), + (ol.toHex = function (e) { + for (var t = '', s = 0; s < e.length; s++) t += ml(e[s].toString(16)) + return t + }), + (ol.htonl = fl), + (ol.toHex32 = function (e, t) { + for (var s = '', i = 0; i < e.length; i++) { + var n = e[i] + 'little' === t && (n = fl(n)), (s += gl(n.toString(16))) + } + return s + }), + (ol.zero2 = ml), + (ol.zero8 = gl), + (ol.join32 = function (e, t, s, i) { + var n = s - t + ul(n % 4 == 0) + for (var r = new Array(n / 4), o = 0, a = t; o < r.length; o++, a += 4) { + var l + ;(l = 'big' === i ? (e[a] << 24) | (e[a + 1] << 16) | (e[a + 2] << 8) | e[a + 3] : (e[a + 3] << 24) | (e[a + 2] << 16) | (e[a + 1] << 8) | e[a]), (r[o] = l >>> 0) + } + return r + }), + (ol.split32 = function (e, t) { + for (var s = new Array(4 * e.length), i = 0, n = 0; i < e.length; i++, n += 4) { + var r = e[i] + 'big' === t + ? ((s[n] = r >>> 24), (s[n + 1] = (r >>> 16) & 255), (s[n + 2] = (r >>> 8) & 255), (s[n + 3] = 255 & r)) + : ((s[n + 3] = r >>> 24), (s[n + 2] = (r >>> 16) & 255), (s[n + 1] = (r >>> 8) & 255), (s[n] = 255 & r)) + } + return s + }), + (ol.rotr32 = function (e, t) { + return (e >>> t) | (e << (32 - t)) + }), + (ol.rotl32 = function (e, t) { + return (e << t) | (e >>> (32 - t)) + }), + (ol.sum32 = function (e, t) { + return (e + t) >>> 0 + }), + (ol.sum32_3 = function (e, t, s) { + return (e + t + s) >>> 0 + }), + (ol.sum32_4 = function (e, t, s, i) { + return (e + t + s + i) >>> 0 + }), + (ol.sum32_5 = function (e, t, s, i, n) { + return (e + t + s + i + n) >>> 0 + }), + (ol.sum64 = function (e, t, s, i) { + var n = e[t], + r = (i + e[t + 1]) >>> 0, + o = (r < i ? 1 : 0) + s + n + ;(e[t] = o >>> 0), (e[t + 1] = r) + }), + (ol.sum64_hi = function (e, t, s, i) { + return (((t + i) >>> 0 < t ? 1 : 0) + e + s) >>> 0 + }), + (ol.sum64_lo = function (e, t, s, i) { + return (t + i) >>> 0 + }), + (ol.sum64_4_hi = function (e, t, s, i, n, r, o, a) { + var l = 0, + c = t + return (l += (c = (c + i) >>> 0) < t ? 1 : 0), (l += (c = (c + r) >>> 0) < r ? 1 : 0), (e + s + n + o + (l += (c = (c + a) >>> 0) < a ? 1 : 0)) >>> 0 + }), + (ol.sum64_4_lo = function (e, t, s, i, n, r, o, a) { + return (t + i + r + a) >>> 0 + }), + (ol.sum64_5_hi = function (e, t, s, i, n, r, o, a, l, c) { + var h = 0, + u = t + return (h += (u = (u + i) >>> 0) < t ? 1 : 0), (h += (u = (u + r) >>> 0) < r ? 1 : 0), (h += (u = (u + a) >>> 0) < a ? 1 : 0), (e + s + n + o + l + (h += (u = (u + c) >>> 0) < c ? 1 : 0)) >>> 0 + }), + (ol.sum64_5_lo = function (e, t, s, i, n, r, o, a, l, c) { + return (t + i + r + a + c) >>> 0 + }), + (ol.rotr64_hi = function (e, t, s) { + return ((t << (32 - s)) | (e >>> s)) >>> 0 + }), + (ol.rotr64_lo = function (e, t, s) { + return ((e << (32 - s)) | (t >>> s)) >>> 0 + }), + (ol.shr64_hi = function (e, t, s) { + return e >>> s + }), + (ol.shr64_lo = function (e, t, s) { + return ((e << (32 - s)) | (t >>> s)) >>> 0 + }) +var yl = {}, + xl = ol, + El = al +function bl() { + ;(this.pending = null), + (this.pendingTotal = 0), + (this.blockSize = this.constructor.blockSize), + (this.outSize = this.constructor.outSize), + (this.hmacStrength = this.constructor.hmacStrength), + (this.padLength = this.constructor.padLength / 8), + (this.endian = 'big'), + (this._delta8 = this.blockSize / 8), + (this._delta32 = this.blockSize / 32) +} +;(yl.BlockHash = bl), + (bl.prototype.update = function (e, t) { + if (((e = xl.toArray(e, t)), this.pending ? (this.pending = this.pending.concat(e)) : (this.pending = e), (this.pendingTotal += e.length), this.pending.length >= this._delta8)) { + var s = (e = this.pending).length % this._delta8 + ;(this.pending = e.slice(e.length - s, e.length)), 0 === this.pending.length && (this.pending = null), (e = xl.join32(e, 0, e.length - s, this.endian)) + for (var i = 0; i < e.length; i += this._delta32) this._update(e, i, i + this._delta32) + } + return this + }), + (bl.prototype.digest = function (e) { + return this.update(this._pad()), El(null === this.pending), this._digest(e) + }), + (bl.prototype._pad = function () { + var e = this.pendingTotal, + t = this._delta8, + s = t - ((e + this.padLength) % t), + i = new Array(s + this.padLength) + i[0] = 128 + for (var n = 1; n < s; n++) i[n] = 0 + if (((e <<= 3), 'big' === this.endian)) { + for (var r = 8; r < this.padLength; r++) i[n++] = 0 + ;(i[n++] = 0), (i[n++] = 0), (i[n++] = 0), (i[n++] = 0), (i[n++] = (e >>> 24) & 255), (i[n++] = (e >>> 16) & 255), (i[n++] = (e >>> 8) & 255), (i[n++] = 255 & e) + } else + for (i[n++] = 255 & e, i[n++] = (e >>> 8) & 255, i[n++] = (e >>> 16) & 255, i[n++] = (e >>> 24) & 255, i[n++] = 0, i[n++] = 0, i[n++] = 0, i[n++] = 0, r = 8; r < this.padLength; r++) i[n++] = 0 + return i + }) +var vl = {}, + Sl = ol.rotr32 +function Al(e, t, s) { + return (e & t) ^ (~e & s) +} +function kl(e, t, s) { + return (e & t) ^ (e & s) ^ (t & s) +} +function Il(e, t, s) { + return e ^ t ^ s +} +;(vl.ft_1 = function (e, t, s, i) { + return 0 === e ? Al(t, s, i) : 1 === e || 3 === e ? Il(t, s, i) : 2 === e ? kl(t, s, i) : void 0 +}), + (vl.ch32 = Al), + (vl.maj32 = kl), + (vl.p32 = Il), + (vl.s0_256 = function (e) { + return Sl(e, 2) ^ Sl(e, 13) ^ Sl(e, 22) + }), + (vl.s1_256 = function (e) { + return Sl(e, 6) ^ Sl(e, 11) ^ Sl(e, 25) + }), + (vl.g0_256 = function (e) { + return Sl(e, 7) ^ Sl(e, 18) ^ (e >>> 3) + }), + (vl.g1_256 = function (e) { + return Sl(e, 17) ^ Sl(e, 19) ^ (e >>> 10) + }) +var wl = ol, + Pl = yl, + Cl = vl, + $l = al, + Nl = wl.sum32, + _l = wl.sum32_4, + Rl = wl.sum32_5, + Ml = Cl.ch32, + Ol = Cl.maj32, + Dl = Cl.s0_256, + Ll = Cl.s1_256, + Tl = Cl.g0_256, + Vl = Cl.g1_256, + Bl = Pl.BlockHash, + zl = [ + 1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, + 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, + 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, + 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298 + ] +function Fl() { + if (!(this instanceof Fl)) return new Fl() + Bl.call(this), (this.h = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]), (this.k = zl), (this.W = new Array(64)) +} +wl.inherits(Fl, Bl) +var jl = Fl +;(Fl.blockSize = 512), + (Fl.outSize = 256), + (Fl.hmacStrength = 192), + (Fl.padLength = 64), + (Fl.prototype._update = function (e, t) { + for (var s = this.W, i = 0; i < 16; i++) s[i] = e[t + i] + for (; i < s.length; i++) s[i] = _l(Vl(s[i - 2]), s[i - 7], Tl(s[i - 15]), s[i - 16]) + var n = this.h[0], + r = this.h[1], + o = this.h[2], + a = this.h[3], + l = this.h[4], + c = this.h[5], + h = this.h[6], + u = this.h[7] + for ($l(this.k.length === s.length), i = 0; i < s.length; i++) { + var d = Rl(u, Ll(l), Ml(l, c, h), this.k[i], s[i]), + p = Nl(Dl(n), Ol(n, r, o)) + ;(u = h), (h = c), (c = l), (l = Nl(a, d)), (a = o), (o = r), (r = n), (n = Nl(d, p)) + } + ;(this.h[0] = Nl(this.h[0], n)), + (this.h[1] = Nl(this.h[1], r)), + (this.h[2] = Nl(this.h[2], o)), + (this.h[3] = Nl(this.h[3], a)), + (this.h[4] = Nl(this.h[4], l)), + (this.h[5] = Nl(this.h[5], c)), + (this.h[6] = Nl(this.h[6], h)), + (this.h[7] = Nl(this.h[7], u)) + }), + (Fl.prototype._digest = function (e) { + return 'hex' === e ? wl.toHex32(this.h, 'big') : wl.split32(this.h, 'big') + }) +var Ul = t(jl) +const Gl = () => Ul() +async function Wl(e, t, s, i, n) { + Oo('render chunks', 2), + (function (e) { + for (const t of e) t.facadeModule && t.facadeModule.isUserDefinedEntryPoint && t.getPreliminaryFileName() + })(e) + const r = await Promise.all(e.map((e) => e.render())) + Do('render chunks', 2), Oo('transform chunks', 2) + const o = (function (e) { + return Object.fromEntries( + e.map((e) => { + const t = e.getRenderedChunkInfo() + return [t.fileName, t] + }) + ) + })(e), + { + initialHashesByPlaceholder: a, + nonHashedChunksWithPlaceholders: l, + renderedChunksByPlaceholder: c, + hashDependenciesByPlaceholder: h + } = await (async function (e, t, s, i, n) { + const r = [], + o = new Map(), + a = new Map(), + l = new Map(), + c = new Set() + for (const { + preliminaryFileName: { hashPlaceholder: t } + } of e) + t && c.add(t) + return ( + await Promise.all( + e.map(async ({ chunk: e, preliminaryFileName: { fileName: h, hashPlaceholder: u }, preliminarySourcemapFileName: d, magicString: p, usedModules: f }) => { + const m = { chunk: e, fileName: h, sourcemapFileName: d?.fileName ?? null, ...(await ql(p, h, f, t, s, i, n)) }, + { code: g, map: y } = m + if (u) { + const { containedPlaceholders: t, transformedCode: s } = $a(g, c), + n = Gl().update(s), + r = i.hookReduceValueSync('augmentChunkHash', '', [e.getRenderedChunkInfo()], (e, t) => (t && (e += t), e)) + r && n.update(r), o.set(u, m), a.set(u, { containedPlaceholders: t, contentHash: n.digest('hex') }) + } else r.push(m) + const x = d?.hashPlaceholder + y && x && l.set(d.hashPlaceholder, Gl().update(y.toString()).digest('hex').slice(0, d.hashPlaceholder.length)) + }) + ), + { hashDependenciesByPlaceholder: a, initialHashesByPlaceholder: l, nonHashedChunksWithPlaceholders: r, renderedChunksByPlaceholder: o } + ) + })(r, o, i, s, n), + u = (function (e, t, s, i) { + const n = new Map(s) + for (const [s, { fileName: r }] of e) { + let e = Gl() + const o = new Set([s]) + for (const s of o) { + const { containedPlaceholders: i, contentHash: n } = t.get(s) + e.update(n) + for (const e of i) o.add(e) + } + let a, l + do { + l && (e = Gl().update(l)), (l = e.digest('hex').slice(0, s.length)), (a = Ca(r, s, l)) + } while (i[Na].has(a.toLowerCase())) + ;(i[a] = _a), n.set(s, l) + } + return n + })(c, h, a, t) + !(function (e, t, s, i, n, r) { + for (const { chunk: i, code: o, fileName: a, sourcemapFileName: l, map: c } of e.values()) { + let e = Pa(o, t) + const h = Pa(a, t) + let u = null + c && ((u = l ? Pa(l, t) : `${h}.map`), (c.file = Pa(c.file, t)), (e += Hl(u, c, n, r))), (s[h] = i.finalizeChunk(e, c, u, t)) + } + for (const { chunk: e, code: o, fileName: a, sourcemapFileName: l, map: c } of i) { + let i = t.size > 0 ? Pa(o, t) : o, + h = null + c && ((h = l ? Pa(l, t) : `${a}.map`), (i += Hl(h, c, n, r))), (s[a] = e.finalizeChunk(i, c, h, t)) + } + })(c, u, t, l, s, i), + Do('transform chunks', 2) +} +async function ql(e, t, s, i, n, r, o) { + let a = null + const c = [] + let h = await r.hookReduceArg0('renderChunk', [e.toString(), i[t], n, { chunks: i }], (e, t, s) => { + if (null == t) return e + if (('string' == typeof t && (t = { code: t, map: void 0 }), null !== t.map)) { + const e = Ao(t.map) + c.push(e || { missing: !0, plugin: s.name }) + } + return t.code + }) + const { compact: u, dir: d, file: p, sourcemap: f, sourcemapExcludeSources: m, sourcemapFile: g, sourcemapPathTransform: y, sourcemapIgnoreList: x } = n + if ((u || '\n' === h[h.length - 1] || (h += '\n'), f)) { + let i + Oo('sourcemaps', 3), (i = p ? R(g || p) : d ? R(d, t) : R(t)) + a = (function (e, t, s, i, n, r) { + const o = nl(r), + a = s.filter((e) => !e.excludeFromSourcemap).map((e) => rl(e.id, e.originalCode, e.originalSourcemap, e.sourcemapChain, o)), + c = new il(t, a), + h = i.reduce(o, c) + let { sources: u, sourcesContent: d, names: p, mappings: f } = h.traceMappings() + if (e) { + const t = $(e) + ;(u = u.map((e) => _(t, e))), (e = C(e)) + } + d = n ? null : d + for (const e of s) So(e.originalSourcemap, e.sourcemapChain) + return new l({ file: e, mappings: f, names: p, sources: u, sourcesContent: d }) + })(i, e.generateDecodedMap({}), s, c, m, o) + for (let e = 0; e < a.sources.length; ++e) { + let t = a.sources[e] + const s = `${i}.map`, + n = x(t, s) + 'boolean' != typeof n && Qe(Xt('sourcemapIgnoreList function must return a boolean.')), + n && (void 0 === a.x_google_ignoreList && (a.x_google_ignoreList = []), a.x_google_ignoreList.includes(e) || a.x_google_ignoreList.push(e)), + y && ((t = y(t, s)), 'string' != typeof t && Qe(Xt('sourcemapPathTransform function must return a string.'))), + (a.sources[e] = P(t)) + } + Do('sourcemaps', 3) + } + return { code: h, map: a } +} +function Hl(e, t, s, { sourcemap: i, sourcemapBaseUrl: n }) { + let r + if ('inline' === i) r = t.toUrl() + else { + const i = C(e) + ;(r = n ? new URL(i, n).toString() : i), s.emitFile({ fileName: e, source: t.toString(), type: 'asset' }) + } + return 'hidden' === i ? '' : `//# ${Fs}=${r}\n` +} +class Kl { + constructor(e, t, s, i, n) { + ;(this.outputOptions = e), + (this.unsetOptions = t), + (this.inputOptions = s), + (this.pluginDriver = i), + (this.graph = n), + (this.facadeChunkByModule = new Map()), + (this.includedNamespaces = new Set()) + } + async generate(e) { + Oo('GENERATE', 1) + const t = Object.create(null), + s = ((e) => { + const t = new Set() + return new Proxy(e, { + deleteProperty: (e, s) => ('string' == typeof s && t.delete(s.toLowerCase()), Reflect.deleteProperty(e, s)), + get: (e, s) => (s === Na ? t : Reflect.get(e, s)), + set: (e, s, i) => ('string' == typeof s && t.add(s.toLowerCase()), Reflect.set(e, s, i)) + }) + })(t) + this.pluginDriver.setOutputBundle(s, this.outputOptions) + try { + Oo('initialize render', 2), await this.pluginDriver.hookParallel('renderStart', [this.outputOptions, this.inputOptions]), Do('initialize render', 2), Oo('generate chunks', 2) + const e = (() => { + let e = 0 + return (t, s = 8) => { + if (s > 64) return Qe(Xt(`Hashes cannot be longer than 64 characters, received ${s}. Check the "${t}" option.`)) + const i = `${ka}${Di(++e).padStart(s - 5, '0')}${Ia}` + return i.length > s ? Qe(Xt(`To generate hashes for this number of chunks (currently ${e}), you need a minimum hash size of ${i.length}, received ${s}. Check the "${t}" option.`)) : i + } + })(), + t = await this.generateChunks(s, e) + t.length > 1 && + (function (e, t) { + if ('umd' === e.format || 'iife' === e.format) return Qe(jt('output.format', je, 'UMD and IIFE output formats are not supported for code-splitting builds', e.format)) + if ('string' == typeof e.file) + return Qe(jt('output.file', Be, 'when building multiple chunks, the "output.dir" option must be used, not "output.file". To inline dynamic imports, set the "inlineDynamicImports" option')) + if (e.sourcemapFile) return Qe(jt('output.sourcemapFile', Ye, '"output.sourcemapFile" is only supported for single-file builds')) + !e.amd.autoId && e.amd.id && t(Ae, jt('output.amd.id', Ve, 'this option is only properly supported for single-file builds. Use "output.amd.autoId" and "output.amd.basePath" instead')) + })(this.outputOptions, this.inputOptions.onLog), + this.pluginDriver.setChunkInformation(this.facadeChunkByModule) + for (const e of t) e.generateExports() + Do('generate chunks', 2), await Wl(t, s, this.pluginDriver, this.outputOptions, this.inputOptions.onLog) + } catch (e) { + throw (await this.pluginDriver.hookParallel('renderError', [e]), e) + } + return ( + ((e) => { + const t = new Set(), + s = Object.values(e) + for (const e of s) 'asset' === e.type && e.needsCodeReference && t.add(e.fileName) + for (const e of s) if ('chunk' === e.type) for (const s of e.referencedFiles) t.has(s) && t.delete(s) + for (const s of t) delete e[s] + })(s), + Oo('generate bundle', 2), + await this.pluginDriver.hookSeq('generateBundle', [this.outputOptions, s, e]), + this.finaliseAssets(s), + Do('generate bundle', 2), + Do('GENERATE', 1), + t + ) + } + async addManualChunks(e) { + const t = new Map(), + s = await Promise.all(Object.entries(e).map(async ([e, t]) => ({ alias: e, entries: await this.graph.moduleLoader.addAdditionalModules(t, !0) }))) + for (const { alias: e, entries: i } of s) for (const s of i) Yl(e, s, t) + return t + } + assignManualChunks(e) { + const t = [], + s = { getModuleIds: () => this.graph.modulesById.keys(), getModuleInfo: this.graph.getModuleInfo } + for (const i of this.graph.modulesById.values()) + if (i instanceof jo) { + const n = e(i.id, s) + 'string' == typeof n && t.push([n, i]) + } + t.sort(([e], [t]) => (e > t ? 1 : e < t ? -1 : 0)) + const i = new Map() + for (const [e, s] of t) Yl(e, s, i) + return i + } + finaliseAssets(e) { + if (this.outputOptions.validate) + for (const t of Object.values(e)) + if ('code' in t) + try { + this.graph.contextParse(t.code, { ecmaVersion: 'latest' }) + } catch (e) { + this.inputOptions.onLog(Ae, Dt(t, e)) + } + this.pluginDriver.finaliseAssets() + } + async generateChunks(e, t) { + const { experimentalMinChunkSize: s, inlineDynamicImports: i, manualChunks: n, preserveModules: r } = this.outputOptions, + o = 'object' == typeof n ? await this.addManualChunks(n) : this.assignManualChunks(n), + a = (function ({ compact: e, generatedCode: { arrowFunctions: t, constBindings: s, objectShorthand: i, reservedNamesAsProps: n } }) { + const { _: r, n: o, s: a } = e ? { _: '', n: '', s: '' } : { _: ' ', n: '\n', s: ';' }, + l = s ? 'const' : 'var', + c = (e, { isAsync: t, name: s }) => `${t ? 'async ' : ''}function${s ? ` ${s}` : ''}${r}(${e.join(`,${r}`)})${r}`, + h = t + ? (e, { isAsync: t, name: s }) => { + const i = 1 === e.length + return `${s ? `${l} ${s}${r}=${r}` : ''}${t ? `async${i ? ' ' : r}` : ''}${i ? e[0] : `(${e.join(`,${r}`)})`}${r}=>${r}` + } + : c, + u = (e, { functionReturn: s, lineBreakIndent: i, name: n }) => [ + `${h(e, { isAsync: !1, name: n })}${t ? (i ? `${o}${i.base}${i.t}` : '') : `{${i ? `${o}${i.base}${i.t}` : r}${s ? 'return ' : ''}`}`, + t ? `${n ? ';' : ''}${i ? `${o}${i.base}` : ''}` : `${a}${i ? `${o}${i.base}` : r}}` + ], + d = n ? (e) => tl.test(e) : (e) => !Ee.has(e) && tl.test(e) + return { + _: r, + cnst: l, + getDirectReturnFunction: u, + getDirectReturnIifeLeft: (e, s, { needsArrowReturnParens: i, needsWrappedFunction: n }) => { + const [r, o] = u(e, { functionReturn: !0, lineBreakIndent: null, name: null }) + return `${el(`${r}${el(s, t && i)}${o}`, t || n)}(` + }, + getFunctionIntro: h, + getNonArrowFunctionIntro: c, + getObject(e, { lineBreakIndent: t }) { + const s = t ? `${o}${t.base}${t.t}` : r + return `{${e + .map(([e, t]) => { + if (null === e) return `${s}${t}` + const n = !d(e) + return e === t && i && !n ? s + e : `${s}${n ? `'${e}'` : e}:${r}${t}` + }) + .join(',')}${0 === e.length ? '' : t ? `${o}${t.base}` : r}}` + }, + getPropertyAccess: (e) => (d(e) ? `.${e}` : `[${JSON.stringify(e)}]`), + n: o, + s: a + } + })(this.outputOptions), + l = (function (e) { + const t = [] + for (const s of e.values()) s instanceof jo && (s.isIncluded() || s.info.isEntry || s.includedDynamicImporters.length > 0) && t.push(s) + return t + })(this.graph.modulesById), + c = (function (e) { + if (0 === e.length) return '/' + if (1 === e.length) return $(e[0]) + const t = e.slice(1).reduce((e, t) => { + const s = t.split(/\/+|\\+/) + let i + for (i = 0; e[i] === s[i] && i < Math.min(e.length, s.length); i++); + return e.slice(0, i) + }, e[0].split(/\/+|\\+/)) + return t.length > 1 ? t.join('/') : '/' + })( + (function (e, t) { + const s = [] + for (const i of e) (i.info.isEntry || t) && I(i.id) && s.push(i.id) + return s + })(l, r) + ), + h = (function (e, t, s) { + const i = new Map() + for (const n of e.values()) n instanceof Jt && i.set(n, new j(n, t, s)) + return i + })(this.graph.modulesById, this.outputOptions, c), + u = [], + d = new Map() + for (const { alias: n, modules: p } of i ? [{ alias: null, modules: l }] : r ? l.map((e) => ({ alias: null, modules: [e] })) : Ua(this.graph.entryModules, o, s, this.inputOptions.onLog)) { + p.sort(Za) + const s = new La(p, this.inputOptions, this.outputOptions, this.unsetOptions, this.pluginDriver, this.graph.modulesById, d, h, this.facadeChunkByModule, this.includedNamespaces, n, t, e, c, a) + u.push(s) + } + for (const e of u) e.link() + const p = [] + for (const e of u) p.push(...e.generateFacades()) + return [...u, ...p] + } +} +function Yl(e, t, s) { + const i = s.get(t) + if ('string' == typeof i && i !== e) return Qe(((n = t.id), (r = e), (o = i), { code: ht, message: `Cannot assign "${V(n)}" to the "${r}" chunk as it is already in the "${o}" chunk.` })) + var n, r, o + s.set(t, e) +} +var Xl = [ + 509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, + 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, + 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, + 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, + 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, + 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239 + ], + Ql = [ + 0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, + 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, + 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, + 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, + 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, + 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, + 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, + 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, + 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, + 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, + 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938, 6, 4191 + ], + Zl = + 'ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࡰ-ࢇࢉ-ࢎࢠ-ࣉऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౝౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೝೞೠೡೱೲഄ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜑᜟ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭌᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆿㇰ-ㇿ㐀-䶿一-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꟊꟐꟑꟓꟕ-ꟙꟲ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭩꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ', + Jl = { + 3: 'abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile', + 5: 'class enum extends super const export import', + 6: 'enum', + strict: 'implements interface let package private protected public static yield', + strictBind: 'eval arguments' + }, + ec = 'break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this', + tc = { 5: ec, '5module': ec + ' export import', 6: ec + ' const class extends export import super' }, + sc = /^in(stanceof)?$/, + ic = new RegExp('[' + Zl + ']'), + nc = new RegExp( + '[' + + Zl + + '‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߽߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛࢘-࢟࣊-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯৾ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ૺ-૿ଁ-ଃ଼ା-ୄେୈୋ-୍୕-ୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఄ఼ా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ೳഀ-ഃ഻഼ാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ඁ-ඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ຼ່-໎໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜕ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠏-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᪿ-ᫎᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭᳴᳷-᳹᷀-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧ꠬ꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱ꣿ-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_]' + ) +function rc(e, t) { + for (var s = 65536, i = 0; i < t.length; i += 2) { + if ((s += t[i]) > e) return !1 + if ((s += t[i + 1]) >= e) return !0 + } + return !1 +} +function oc(e, t) { + return e < 65 ? 36 === e : e < 91 || (e < 97 ? 95 === e : e < 123 || (e <= 65535 ? e >= 170 && ic.test(String.fromCharCode(e)) : !1 !== t && rc(e, Ql))) +} +function ac(e, t) { + return e < 48 ? 36 === e : e < 58 || (!(e < 65) && (e < 91 || (e < 97 ? 95 === e : e < 123 || (e <= 65535 ? e >= 170 && nc.test(String.fromCharCode(e)) : !1 !== t && (rc(e, Ql) || rc(e, Xl)))))) +} +var lc = function (e, t) { + void 0 === t && (t = {}), + (this.label = e), + (this.keyword = t.keyword), + (this.beforeExpr = !!t.beforeExpr), + (this.startsExpr = !!t.startsExpr), + (this.isLoop = !!t.isLoop), + (this.isAssign = !!t.isAssign), + (this.prefix = !!t.prefix), + (this.postfix = !!t.postfix), + (this.binop = t.binop || null), + (this.updateContext = null) +} +function cc(e, t) { + return new lc(e, { beforeExpr: !0, binop: t }) +} +var hc = { beforeExpr: !0 }, + uc = { startsExpr: !0 }, + dc = {} +function pc(e, t) { + return void 0 === t && (t = {}), (t.keyword = e), (dc[e] = new lc(e, t)) +} +var fc = { + num: new lc('num', uc), + regexp: new lc('regexp', uc), + string: new lc('string', uc), + name: new lc('name', uc), + privateId: new lc('privateId', uc), + eof: new lc('eof'), + bracketL: new lc('[', { beforeExpr: !0, startsExpr: !0 }), + bracketR: new lc(']'), + braceL: new lc('{', { beforeExpr: !0, startsExpr: !0 }), + braceR: new lc('}'), + parenL: new lc('(', { beforeExpr: !0, startsExpr: !0 }), + parenR: new lc(')'), + comma: new lc(',', hc), + semi: new lc(';', hc), + colon: new lc(':', hc), + dot: new lc('.'), + question: new lc('?', hc), + questionDot: new lc('?.'), + arrow: new lc('=>', hc), + template: new lc('template'), + invalidTemplate: new lc('invalidTemplate'), + ellipsis: new lc('...', hc), + backQuote: new lc('`', uc), + dollarBraceL: new lc('${', { beforeExpr: !0, startsExpr: !0 }), + eq: new lc('=', { beforeExpr: !0, isAssign: !0 }), + assign: new lc('_=', { beforeExpr: !0, isAssign: !0 }), + incDec: new lc('++/--', { prefix: !0, postfix: !0, startsExpr: !0 }), + prefix: new lc('!/~', { beforeExpr: !0, prefix: !0, startsExpr: !0 }), + logicalOR: cc('||', 1), + logicalAND: cc('&&', 2), + bitwiseOR: cc('|', 3), + bitwiseXOR: cc('^', 4), + bitwiseAND: cc('&', 5), + equality: cc('==/!=/===/!==', 6), + relational: cc('/<=/>=', 7), + bitShift: cc('<>/>>>', 8), + plusMin: new lc('+/-', { beforeExpr: !0, binop: 9, prefix: !0, startsExpr: !0 }), + modulo: cc('%', 10), + star: cc('*', 10), + slash: cc('/', 10), + starstar: new lc('**', { beforeExpr: !0 }), + coalesce: cc('??', 1), + _break: pc('break'), + _case: pc('case', hc), + _catch: pc('catch'), + _continue: pc('continue'), + _debugger: pc('debugger'), + _default: pc('default', hc), + _do: pc('do', { isLoop: !0, beforeExpr: !0 }), + _else: pc('else', hc), + _finally: pc('finally'), + _for: pc('for', { isLoop: !0 }), + _function: pc('function', uc), + _if: pc('if'), + _return: pc('return', hc), + _switch: pc('switch'), + _throw: pc('throw', hc), + _try: pc('try'), + _var: pc('var'), + _const: pc('const'), + _while: pc('while', { isLoop: !0 }), + _with: pc('with'), + _new: pc('new', { beforeExpr: !0, startsExpr: !0 }), + _this: pc('this', uc), + _super: pc('super', uc), + _class: pc('class', uc), + _extends: pc('extends', hc), + _export: pc('export'), + _import: pc('import', uc), + _null: pc('null', uc), + _true: pc('true', uc), + _false: pc('false', uc), + _in: pc('in', { beforeExpr: !0, binop: 7 }), + _instanceof: pc('instanceof', { beforeExpr: !0, binop: 7 }), + _typeof: pc('typeof', { beforeExpr: !0, prefix: !0, startsExpr: !0 }), + _void: pc('void', { beforeExpr: !0, prefix: !0, startsExpr: !0 }), + _delete: pc('delete', { beforeExpr: !0, prefix: !0, startsExpr: !0 }) + }, + mc = /\r\n?|\n|\u2028|\u2029/, + gc = new RegExp(mc.source, 'g') +function yc(e) { + return 10 === e || 13 === e || 8232 === e || 8233 === e +} +function xc(e, t, s) { + void 0 === s && (s = e.length) + for (var i = t; i < s; i++) { + var n = e.charCodeAt(i) + if (yc(n)) return i < s - 1 && 13 === n && 10 === e.charCodeAt(i + 1) ? i + 2 : i + 1 + } + return -1 +} +var Ec = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/, + bc = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g, + vc = Object.prototype, + Sc = vc.hasOwnProperty, + Ac = vc.toString, + kc = + Object.hasOwn || + function (e, t) { + return Sc.call(e, t) + }, + Ic = + Array.isArray || + function (e) { + return '[object Array]' === Ac.call(e) + } +function wc(e) { + return new RegExp('^(?:' + e.replace(/ /g, '|') + ')$') +} +function Pc(e) { + return e <= 65535 ? String.fromCharCode(e) : ((e -= 65536), String.fromCharCode(55296 + (e >> 10), 56320 + (1023 & e))) +} +var Cc = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/, + $c = function (e, t) { + ;(this.line = e), (this.column = t) + } +$c.prototype.offset = function (e) { + return new $c(this.line, this.column + e) +} +var Nc = function (e, t, s) { + ;(this.start = t), (this.end = s), null !== e.sourceFile && (this.source = e.sourceFile) +} +function _c(e, t) { + for (var s = 1, i = 0; ; ) { + var n = xc(e, i, t) + if (n < 0) return new $c(s, t - i) + ++s, (i = n) + } +} +var Rc = { + ecmaVersion: null, + sourceType: 'script', + onInsertedSemicolon: null, + onTrailingComma: null, + allowReserved: null, + allowReturnOutsideFunction: !1, + allowImportExportEverywhere: !1, + allowAwaitOutsideFunction: null, + allowSuperOutsideMethod: null, + allowHashBang: !1, + checkPrivateFields: !0, + locations: !1, + onToken: null, + onComment: null, + ranges: !1, + program: null, + sourceFile: null, + directSourceFile: null, + preserveParens: !1 + }, + Mc = !1 +function Oc(e) { + var t = {} + for (var s in Rc) t[s] = e && kc(e, s) ? e[s] : Rc[s] + if ( + ('latest' === t.ecmaVersion + ? (t.ecmaVersion = 1e8) + : null == t.ecmaVersion + ? (!Mc && + 'object' == typeof console && + console.warn && + ((Mc = !0), console.warn('Since Acorn 8.0.0, options.ecmaVersion is required.\nDefaulting to 2020, but this will stop working in the future.')), + (t.ecmaVersion = 11)) + : t.ecmaVersion >= 2015 && (t.ecmaVersion -= 2009), + null == t.allowReserved && (t.allowReserved = t.ecmaVersion < 5), + (e && null != e.allowHashBang) || (t.allowHashBang = t.ecmaVersion >= 14), + Ic(t.onToken)) + ) { + var i = t.onToken + t.onToken = function (e) { + return i.push(e) + } + } + return ( + Ic(t.onComment) && + (t.onComment = (function (e, t) { + return function (s, i, n, r, o, a) { + var l = { type: s ? 'Block' : 'Line', value: i, start: n, end: r } + e.locations && (l.loc = new Nc(this, o, a)), e.ranges && (l.range = [n, r]), t.push(l) + } + })(t, t.onComment)), + t + ) +} +var Dc = 256 +function Lc(e, t) { + return 2 | (e ? 4 : 0) | (t ? 8 : 0) +} +var Tc = function (e, t, s) { + ;(this.options = e = Oc(e)), (this.sourceFile = e.sourceFile), (this.keywords = wc(tc[e.ecmaVersion >= 6 ? 6 : 'module' === e.sourceType ? '5module' : 5])) + var i = '' + !0 !== e.allowReserved && ((i = Jl[e.ecmaVersion >= 6 ? 6 : 5 === e.ecmaVersion ? 5 : 3]), 'module' === e.sourceType && (i += ' await')), (this.reservedWords = wc(i)) + var n = (i ? i + ' ' : '') + Jl.strict + ;(this.reservedWordsStrict = wc(n)), + (this.reservedWordsStrictBind = wc(n + ' ' + Jl.strictBind)), + (this.input = String(t)), + (this.containsEsc = !1), + s + ? ((this.pos = s), (this.lineStart = this.input.lastIndexOf('\n', s - 1) + 1), (this.curLine = this.input.slice(0, this.lineStart).split(mc).length)) + : ((this.pos = this.lineStart = 0), (this.curLine = 1)), + (this.type = fc.eof), + (this.value = null), + (this.start = this.end = this.pos), + (this.startLoc = this.endLoc = this.curPosition()), + (this.lastTokEndLoc = this.lastTokStartLoc = null), + (this.lastTokStart = this.lastTokEnd = this.pos), + (this.context = this.initialContext()), + (this.exprAllowed = !0), + (this.inModule = 'module' === e.sourceType), + (this.strict = this.inModule || this.strictDirective(this.pos)), + (this.potentialArrowAt = -1), + (this.potentialArrowInForAwait = !1), + (this.yieldPos = this.awaitPos = this.awaitIdentPos = 0), + (this.labels = []), + (this.undefinedExports = Object.create(null)), + 0 === this.pos && e.allowHashBang && '#!' === this.input.slice(0, 2) && this.skipLineComment(2), + (this.scopeStack = []), + this.enterScope(1), + (this.regexpState = null), + (this.privateNameStack = []) + }, + Vc = { + inFunction: { configurable: !0 }, + inGenerator: { configurable: !0 }, + inAsync: { configurable: !0 }, + canAwait: { configurable: !0 }, + allowSuper: { configurable: !0 }, + allowDirectSuper: { configurable: !0 }, + treatFunctionsAsVar: { configurable: !0 }, + allowNewDotTarget: { configurable: !0 }, + inClassStaticBlock: { configurable: !0 } + } +;(Tc.prototype.parse = function () { + var e = this.options.program || this.startNode() + return this.nextToken(), this.parseTopLevel(e) +}), + (Vc.inFunction.get = function () { + return (2 & this.currentVarScope().flags) > 0 + }), + (Vc.inGenerator.get = function () { + return (8 & this.currentVarScope().flags) > 0 && !this.currentVarScope().inClassFieldInit + }), + (Vc.inAsync.get = function () { + return (4 & this.currentVarScope().flags) > 0 && !this.currentVarScope().inClassFieldInit + }), + (Vc.canAwait.get = function () { + for (var e = this.scopeStack.length - 1; e >= 0; e--) { + var t = this.scopeStack[e] + if (t.inClassFieldInit || t.flags & Dc) return !1 + if (2 & t.flags) return (4 & t.flags) > 0 + } + return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction + }), + (Vc.allowSuper.get = function () { + var e = this.currentThisScope(), + t = e.flags, + s = e.inClassFieldInit + return (64 & t) > 0 || s || this.options.allowSuperOutsideMethod + }), + (Vc.allowDirectSuper.get = function () { + return (128 & this.currentThisScope().flags) > 0 + }), + (Vc.treatFunctionsAsVar.get = function () { + return this.treatFunctionsAsVarInScope(this.currentScope()) + }), + (Vc.allowNewDotTarget.get = function () { + var e = this.currentThisScope(), + t = e.flags, + s = e.inClassFieldInit + return (258 & t) > 0 || s + }), + (Vc.inClassStaticBlock.get = function () { + return (this.currentVarScope().flags & Dc) > 0 + }), + (Tc.extend = function () { + for (var e = [], t = arguments.length; t--; ) e[t] = arguments[t] + for (var s = this, i = 0; i < e.length; i++) s = e[i](s) + return s + }), + (Tc.parse = function (e, t) { + return new this(t, e).parse() + }), + (Tc.parseExpressionAt = function (e, t, s) { + var i = new this(s, e, t) + return i.nextToken(), i.parseExpression() + }), + (Tc.tokenizer = function (e, t) { + return new this(t, e) + }), + Object.defineProperties(Tc.prototype, Vc) +var Bc = Tc.prototype, + zc = /^(?:'((?:\\.|[^'\\])*?)'|"((?:\\.|[^"\\])*?)")/ +;(Bc.strictDirective = function (e) { + if (this.options.ecmaVersion < 5) return !1 + for (;;) { + ;(bc.lastIndex = e), (e += bc.exec(this.input)[0].length) + var t = zc.exec(this.input.slice(e)) + if (!t) return !1 + if ('use strict' === (t[1] || t[2])) { + bc.lastIndex = e + t[0].length + var s = bc.exec(this.input), + i = s.index + s[0].length, + n = this.input.charAt(i) + return ';' === n || '}' === n || (mc.test(s[0]) && !(/[(`.[+\-/*%<>=,?^&]/.test(n) || ('!' === n && '=' === this.input.charAt(i + 1)))) + } + ;(e += t[0].length), (bc.lastIndex = e), (e += bc.exec(this.input)[0].length), ';' === this.input[e] && e++ + } +}), + (Bc.eat = function (e) { + return this.type === e && (this.next(), !0) + }), + (Bc.isContextual = function (e) { + return this.type === fc.name && this.value === e && !this.containsEsc + }), + (Bc.eatContextual = function (e) { + return !!this.isContextual(e) && (this.next(), !0) + }), + (Bc.expectContextual = function (e) { + this.eatContextual(e) || this.unexpected() + }), + (Bc.canInsertSemicolon = function () { + return this.type === fc.eof || this.type === fc.braceR || mc.test(this.input.slice(this.lastTokEnd, this.start)) + }), + (Bc.insertSemicolon = function () { + if (this.canInsertSemicolon()) return this.options.onInsertedSemicolon && this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc), !0 + }), + (Bc.semicolon = function () { + this.eat(fc.semi) || this.insertSemicolon() || this.unexpected() + }), + (Bc.afterTrailingComma = function (e, t) { + if (this.type === e) return this.options.onTrailingComma && this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc), t || this.next(), !0 + }), + (Bc.expect = function (e) { + this.eat(e) || this.unexpected() + }), + (Bc.unexpected = function (e) { + this.raise(null != e ? e : this.start, 'Unexpected token') + }) +var Fc = function () { + this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = this.doubleProto = -1 +} +;(Bc.checkPatternErrors = function (e, t) { + if (e) { + e.trailingComma > -1 && this.raiseRecoverable(e.trailingComma, 'Comma is not permitted after the rest element') + var s = t ? e.parenthesizedAssign : e.parenthesizedBind + s > -1 && this.raiseRecoverable(s, t ? 'Assigning to rvalue' : 'Parenthesized pattern') + } +}), + (Bc.checkExpressionErrors = function (e, t) { + if (!e) return !1 + var s = e.shorthandAssign, + i = e.doubleProto + if (!t) return s >= 0 || i >= 0 + s >= 0 && this.raise(s, 'Shorthand property assignments are valid only in destructuring patterns'), i >= 0 && this.raiseRecoverable(i, 'Redefinition of __proto__ property') + }), + (Bc.checkYieldAwaitInDefaultParams = function () { + this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos) && this.raise(this.yieldPos, 'Yield expression cannot be a default value'), + this.awaitPos && this.raise(this.awaitPos, 'Await expression cannot be a default value') + }), + (Bc.isSimpleAssignTarget = function (e) { + return 'ParenthesizedExpression' === e.type ? this.isSimpleAssignTarget(e.expression) : 'Identifier' === e.type || 'MemberExpression' === e.type + }) +var jc = Tc.prototype +jc.parseTopLevel = function (e) { + var t = Object.create(null) + for (e.body || (e.body = []); this.type !== fc.eof; ) { + var s = this.parseStatement(null, !0, t) + e.body.push(s) + } + if (this.inModule) + for (var i = 0, n = Object.keys(this.undefinedExports); i < n.length; i += 1) { + var r = n[i] + this.raiseRecoverable(this.undefinedExports[r].start, "Export '" + r + "' is not defined") + } + return this.adaptDirectivePrologue(e.body), this.next(), (e.sourceType = this.options.sourceType), this.finishNode(e, 'Program') +} +var Uc = { kind: 'loop' }, + Gc = { kind: 'switch' } +;(jc.isLet = function (e) { + if (this.options.ecmaVersion < 6 || !this.isContextual('let')) return !1 + bc.lastIndex = this.pos + var t = bc.exec(this.input), + s = this.pos + t[0].length, + i = this.input.charCodeAt(s) + if (91 === i || 92 === i) return !0 + if (e) return !1 + if (123 === i || (i > 55295 && i < 56320)) return !0 + if (oc(i, !0)) { + for (var n = s + 1; ac((i = this.input.charCodeAt(n)), !0); ) ++n + if (92 === i || (i > 55295 && i < 56320)) return !0 + var r = this.input.slice(s, n) + if (!sc.test(r)) return !0 + } + return !1 +}), + (jc.isAsyncFunction = function () { + if (this.options.ecmaVersion < 8 || !this.isContextual('async')) return !1 + bc.lastIndex = this.pos + var e, + t = bc.exec(this.input), + s = this.pos + t[0].length + return !( + mc.test(this.input.slice(this.pos, s)) || + 'function' !== this.input.slice(s, s + 8) || + (s + 8 !== this.input.length && (ac((e = this.input.charCodeAt(s + 8))) || (e > 55295 && e < 56320))) + ) + }), + (jc.parseStatement = function (e, t, s) { + var i, + n = this.type, + r = this.startNode() + switch ((this.isLet(e) && ((n = fc._var), (i = 'let')), n)) { + case fc._break: + case fc._continue: + return this.parseBreakContinueStatement(r, n.keyword) + case fc._debugger: + return this.parseDebuggerStatement(r) + case fc._do: + return this.parseDoStatement(r) + case fc._for: + return this.parseForStatement(r) + case fc._function: + return e && (this.strict || ('if' !== e && 'label' !== e)) && this.options.ecmaVersion >= 6 && this.unexpected(), this.parseFunctionStatement(r, !1, !e) + case fc._class: + return e && this.unexpected(), this.parseClass(r, !0) + case fc._if: + return this.parseIfStatement(r) + case fc._return: + return this.parseReturnStatement(r) + case fc._switch: + return this.parseSwitchStatement(r) + case fc._throw: + return this.parseThrowStatement(r) + case fc._try: + return this.parseTryStatement(r) + case fc._const: + case fc._var: + return (i = i || this.value), e && 'var' !== i && this.unexpected(), this.parseVarStatement(r, i) + case fc._while: + return this.parseWhileStatement(r) + case fc._with: + return this.parseWithStatement(r) + case fc.braceL: + return this.parseBlock(!0, r) + case fc.semi: + return this.parseEmptyStatement(r) + case fc._export: + case fc._import: + if (this.options.ecmaVersion > 10 && n === fc._import) { + bc.lastIndex = this.pos + var o = bc.exec(this.input), + a = this.pos + o[0].length, + l = this.input.charCodeAt(a) + if (40 === l || 46 === l) return this.parseExpressionStatement(r, this.parseExpression()) + } + return ( + this.options.allowImportExportEverywhere || + (t || this.raise(this.start, "'import' and 'export' may only appear at the top level"), + this.inModule || this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'")), + n === fc._import ? this.parseImport(r) : this.parseExport(r, s) + ) + default: + if (this.isAsyncFunction()) return e && this.unexpected(), this.next(), this.parseFunctionStatement(r, !0, !e) + var c = this.value, + h = this.parseExpression() + return n === fc.name && 'Identifier' === h.type && this.eat(fc.colon) ? this.parseLabeledStatement(r, c, h, e) : this.parseExpressionStatement(r, h) + } + }), + (jc.parseBreakContinueStatement = function (e, t) { + var s = 'break' === t + this.next(), this.eat(fc.semi) || this.insertSemicolon() ? (e.label = null) : this.type !== fc.name ? this.unexpected() : ((e.label = this.parseIdent()), this.semicolon()) + for (var i = 0; i < this.labels.length; ++i) { + var n = this.labels[i] + if (null == e.label || n.name === e.label.name) { + if (null != n.kind && (s || 'loop' === n.kind)) break + if (e.label && s) break + } + } + return i === this.labels.length && this.raise(e.start, 'Unsyntactic ' + t), this.finishNode(e, s ? 'BreakStatement' : 'ContinueStatement') + }), + (jc.parseDebuggerStatement = function (e) { + return this.next(), this.semicolon(), this.finishNode(e, 'DebuggerStatement') + }), + (jc.parseDoStatement = function (e) { + return ( + this.next(), + this.labels.push(Uc), + (e.body = this.parseStatement('do')), + this.labels.pop(), + this.expect(fc._while), + (e.test = this.parseParenExpression()), + this.options.ecmaVersion >= 6 ? this.eat(fc.semi) : this.semicolon(), + this.finishNode(e, 'DoWhileStatement') + ) + }), + (jc.parseForStatement = function (e) { + this.next() + var t = this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual('await') ? this.lastTokStart : -1 + if ((this.labels.push(Uc), this.enterScope(0), this.expect(fc.parenL), this.type === fc.semi)) return t > -1 && this.unexpected(t), this.parseFor(e, null) + var s = this.isLet() + if (this.type === fc._var || this.type === fc._const || s) { + var i = this.startNode(), + n = s ? 'let' : this.value + return ( + this.next(), + this.parseVar(i, !0, n), + this.finishNode(i, 'VariableDeclaration'), + (this.type === fc._in || (this.options.ecmaVersion >= 6 && this.isContextual('of'))) && 1 === i.declarations.length + ? (this.options.ecmaVersion >= 9 && (this.type === fc._in ? t > -1 && this.unexpected(t) : (e.await = t > -1)), this.parseForIn(e, i)) + : (t > -1 && this.unexpected(t), this.parseFor(e, i)) + ) + } + var r = this.isContextual('let'), + o = !1, + a = new Fc(), + l = this.parseExpression(!(t > -1) || 'await', a) + return this.type === fc._in || (o = this.options.ecmaVersion >= 6 && this.isContextual('of')) + ? (this.options.ecmaVersion >= 9 && (this.type === fc._in ? t > -1 && this.unexpected(t) : (e.await = t > -1)), + r && o && this.raise(l.start, "The left-hand side of a for-of loop may not start with 'let'."), + this.toAssignable(l, !1, a), + this.checkLValPattern(l), + this.parseForIn(e, l)) + : (this.checkExpressionErrors(a, !0), t > -1 && this.unexpected(t), this.parseFor(e, l)) + }), + (jc.parseFunctionStatement = function (e, t, s) { + return this.next(), this.parseFunction(e, qc | (s ? 0 : Hc), !1, t) + }), + (jc.parseIfStatement = function (e) { + return ( + this.next(), + (e.test = this.parseParenExpression()), + (e.consequent = this.parseStatement('if')), + (e.alternate = this.eat(fc._else) ? this.parseStatement('if') : null), + this.finishNode(e, 'IfStatement') + ) + }), + (jc.parseReturnStatement = function (e) { + return ( + this.inFunction || this.options.allowReturnOutsideFunction || this.raise(this.start, "'return' outside of function"), + this.next(), + this.eat(fc.semi) || this.insertSemicolon() ? (e.argument = null) : ((e.argument = this.parseExpression()), this.semicolon()), + this.finishNode(e, 'ReturnStatement') + ) + }), + (jc.parseSwitchStatement = function (e) { + var t + this.next(), (e.discriminant = this.parseParenExpression()), (e.cases = []), this.expect(fc.braceL), this.labels.push(Gc), this.enterScope(0) + for (var s = !1; this.type !== fc.braceR; ) + if (this.type === fc._case || this.type === fc._default) { + var i = this.type === fc._case + t && this.finishNode(t, 'SwitchCase'), + e.cases.push((t = this.startNode())), + (t.consequent = []), + this.next(), + i ? (t.test = this.parseExpression()) : (s && this.raiseRecoverable(this.lastTokStart, 'Multiple default clauses'), (s = !0), (t.test = null)), + this.expect(fc.colon) + } else t || this.unexpected(), t.consequent.push(this.parseStatement(null)) + return this.exitScope(), t && this.finishNode(t, 'SwitchCase'), this.next(), this.labels.pop(), this.finishNode(e, 'SwitchStatement') + }), + (jc.parseThrowStatement = function (e) { + return ( + this.next(), + mc.test(this.input.slice(this.lastTokEnd, this.start)) && this.raise(this.lastTokEnd, 'Illegal newline after throw'), + (e.argument = this.parseExpression()), + this.semicolon(), + this.finishNode(e, 'ThrowStatement') + ) + }) +var Wc = [] +;(jc.parseCatchClauseParam = function () { + var e = this.parseBindingAtom(), + t = 'Identifier' === e.type + return this.enterScope(t ? 32 : 0), this.checkLValPattern(e, t ? 4 : 2), this.expect(fc.parenR), e +}), + (jc.parseTryStatement = function (e) { + if ((this.next(), (e.block = this.parseBlock()), (e.handler = null), this.type === fc._catch)) { + var t = this.startNode() + this.next(), + this.eat(fc.parenL) ? (t.param = this.parseCatchClauseParam()) : (this.options.ecmaVersion < 10 && this.unexpected(), (t.param = null), this.enterScope(0)), + (t.body = this.parseBlock(!1)), + this.exitScope(), + (e.handler = this.finishNode(t, 'CatchClause')) + } + return (e.finalizer = this.eat(fc._finally) ? this.parseBlock() : null), e.handler || e.finalizer || this.raise(e.start, 'Missing catch or finally clause'), this.finishNode(e, 'TryStatement') + }), + (jc.parseVarStatement = function (e, t, s) { + return this.next(), this.parseVar(e, !1, t, s), this.semicolon(), this.finishNode(e, 'VariableDeclaration') + }), + (jc.parseWhileStatement = function (e) { + return this.next(), (e.test = this.parseParenExpression()), this.labels.push(Uc), (e.body = this.parseStatement('while')), this.labels.pop(), this.finishNode(e, 'WhileStatement') + }), + (jc.parseWithStatement = function (e) { + return ( + this.strict && this.raise(this.start, "'with' in strict mode"), this.next(), (e.object = this.parseParenExpression()), (e.body = this.parseStatement('with')), this.finishNode(e, 'WithStatement') + ) + }), + (jc.parseEmptyStatement = function (e) { + return this.next(), this.finishNode(e, 'EmptyStatement') + }), + (jc.parseLabeledStatement = function (e, t, s, i) { + for (var n = 0, r = this.labels; n < r.length; n += 1) { + r[n].name === t && this.raise(s.start, "Label '" + t + "' is already declared") + } + for (var o = this.type.isLoop ? 'loop' : this.type === fc._switch ? 'switch' : null, a = this.labels.length - 1; a >= 0; a--) { + var l = this.labels[a] + if (l.statementStart !== e.start) break + ;(l.statementStart = this.start), (l.kind = o) + } + return ( + this.labels.push({ name: t, kind: o, statementStart: this.start }), + (e.body = this.parseStatement(i ? (-1 === i.indexOf('label') ? i + 'label' : i) : 'label')), + this.labels.pop(), + (e.label = s), + this.finishNode(e, 'LabeledStatement') + ) + }), + (jc.parseExpressionStatement = function (e, t) { + return (e.expression = t), this.semicolon(), this.finishNode(e, 'ExpressionStatement') + }), + (jc.parseBlock = function (e, t, s) { + for (void 0 === e && (e = !0), void 0 === t && (t = this.startNode()), t.body = [], this.expect(fc.braceL), e && this.enterScope(0); this.type !== fc.braceR; ) { + var i = this.parseStatement(null) + t.body.push(i) + } + return s && (this.strict = !1), this.next(), e && this.exitScope(), this.finishNode(t, 'BlockStatement') + }), + (jc.parseFor = function (e, t) { + return ( + (e.init = t), + this.expect(fc.semi), + (e.test = this.type === fc.semi ? null : this.parseExpression()), + this.expect(fc.semi), + (e.update = this.type === fc.parenR ? null : this.parseExpression()), + this.expect(fc.parenR), + (e.body = this.parseStatement('for')), + this.exitScope(), + this.labels.pop(), + this.finishNode(e, 'ForStatement') + ) + }), + (jc.parseForIn = function (e, t) { + var s = this.type === fc._in + return ( + this.next(), + 'VariableDeclaration' === t.type && + null != t.declarations[0].init && + (!s || this.options.ecmaVersion < 8 || this.strict || 'var' !== t.kind || 'Identifier' !== t.declarations[0].id.type) && + this.raise(t.start, (s ? 'for-in' : 'for-of') + ' loop variable declaration may not have an initializer'), + (e.left = t), + (e.right = s ? this.parseExpression() : this.parseMaybeAssign()), + this.expect(fc.parenR), + (e.body = this.parseStatement('for')), + this.exitScope(), + this.labels.pop(), + this.finishNode(e, s ? 'ForInStatement' : 'ForOfStatement') + ) + }), + (jc.parseVar = function (e, t, s, i) { + for (e.declarations = [], e.kind = s; ; ) { + var n = this.startNode() + if ( + (this.parseVarId(n, s), + this.eat(fc.eq) + ? (n.init = this.parseMaybeAssign(t)) + : i || 'const' !== s || this.type === fc._in || (this.options.ecmaVersion >= 6 && this.isContextual('of')) + ? i || 'Identifier' === n.id.type || (t && (this.type === fc._in || this.isContextual('of'))) + ? (n.init = null) + : this.raise(this.lastTokEnd, 'Complex binding patterns require an initialization value') + : this.unexpected(), + e.declarations.push(this.finishNode(n, 'VariableDeclarator')), + !this.eat(fc.comma)) + ) + break + } + return e + }), + (jc.parseVarId = function (e, t) { + ;(e.id = this.parseBindingAtom()), this.checkLValPattern(e.id, 'var' === t ? 1 : 2, !1) + }) +var qc = 1, + Hc = 2 +function Kc(e, t) { + var s = t.key.name, + i = e[s], + n = 'true' + return ( + 'MethodDefinition' !== t.type || ('get' !== t.kind && 'set' !== t.kind) || (n = (t.static ? 's' : 'i') + t.kind), + ('iget' === i && 'iset' === n) || ('iset' === i && 'iget' === n) || ('sget' === i && 'sset' === n) || ('sset' === i && 'sget' === n) ? ((e[s] = 'true'), !1) : !!i || ((e[s] = n), !1) + ) +} +function Yc(e, t) { + var s = e.computed, + i = e.key + return !s && (('Identifier' === i.type && i.name === t) || ('Literal' === i.type && i.value === t)) +} +;(jc.parseFunction = function (e, t, s, i, n) { + this.initFunction(e), + (this.options.ecmaVersion >= 9 || (this.options.ecmaVersion >= 6 && !i)) && (this.type === fc.star && t & Hc && this.unexpected(), (e.generator = this.eat(fc.star))), + this.options.ecmaVersion >= 8 && (e.async = !!i), + t & qc && + ((e.id = 4 & t && this.type !== fc.name ? null : this.parseIdent()), + !e.id || t & Hc || this.checkLValSimple(e.id, this.strict || e.generator || e.async ? (this.treatFunctionsAsVar ? 1 : 2) : 3)) + var r = this.yieldPos, + o = this.awaitPos, + a = this.awaitIdentPos + return ( + (this.yieldPos = 0), + (this.awaitPos = 0), + (this.awaitIdentPos = 0), + this.enterScope(Lc(e.async, e.generator)), + t & qc || (e.id = this.type === fc.name ? this.parseIdent() : null), + this.parseFunctionParams(e), + this.parseFunctionBody(e, s, !1, n), + (this.yieldPos = r), + (this.awaitPos = o), + (this.awaitIdentPos = a), + this.finishNode(e, t & qc ? 'FunctionDeclaration' : 'FunctionExpression') + ) +}), + (jc.parseFunctionParams = function (e) { + this.expect(fc.parenL), (e.params = this.parseBindingList(fc.parenR, !1, this.options.ecmaVersion >= 8)), this.checkYieldAwaitInDefaultParams() + }), + (jc.parseClass = function (e, t) { + this.next() + var s = this.strict + ;(this.strict = !0), this.parseClassId(e, t), this.parseClassSuper(e) + var i = this.enterClassBody(), + n = this.startNode(), + r = !1 + for (n.body = [], this.expect(fc.braceL); this.type !== fc.braceR; ) { + var o = this.parseClassElement(null !== e.superClass) + o && + (n.body.push(o), + 'MethodDefinition' === o.type && 'constructor' === o.kind + ? (r && this.raiseRecoverable(o.start, 'Duplicate constructor in the same class'), (r = !0)) + : o.key && 'PrivateIdentifier' === o.key.type && Kc(i, o) && this.raiseRecoverable(o.key.start, "Identifier '#" + o.key.name + "' has already been declared")) + } + return (this.strict = s), this.next(), (e.body = this.finishNode(n, 'ClassBody')), this.exitClassBody(), this.finishNode(e, t ? 'ClassDeclaration' : 'ClassExpression') + }), + (jc.parseClassElement = function (e) { + if (this.eat(fc.semi)) return null + var t = this.options.ecmaVersion, + s = this.startNode(), + i = '', + n = !1, + r = !1, + o = 'method', + a = !1 + if (this.eatContextual('static')) { + if (t >= 13 && this.eat(fc.braceL)) return this.parseClassStaticBlock(s), s + this.isClassElementNameStart() || this.type === fc.star ? (a = !0) : (i = 'static') + } + if ( + ((s.static = a), + !i && t >= 8 && this.eatContextual('async') && ((!this.isClassElementNameStart() && this.type !== fc.star) || this.canInsertSemicolon() ? (i = 'async') : (r = !0)), + !i && (t >= 9 || !r) && this.eat(fc.star) && (n = !0), + !i && !r && !n) + ) { + var l = this.value + ;(this.eatContextual('get') || this.eatContextual('set')) && (this.isClassElementNameStart() ? (o = l) : (i = l)) + } + if ( + (i ? ((s.computed = !1), (s.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc)), (s.key.name = i), this.finishNode(s.key, 'Identifier')) : this.parseClassElementName(s), + t < 13 || this.type === fc.parenL || 'method' !== o || n || r) + ) { + var c = !s.static && Yc(s, 'constructor'), + h = c && e + c && 'method' !== o && this.raise(s.key.start, "Constructor can't have get/set modifier"), (s.kind = c ? 'constructor' : o), this.parseClassMethod(s, n, r, h) + } else this.parseClassField(s) + return s + }), + (jc.isClassElementNameStart = function () { + return this.type === fc.name || this.type === fc.privateId || this.type === fc.num || this.type === fc.string || this.type === fc.bracketL || this.type.keyword + }), + (jc.parseClassElementName = function (e) { + this.type === fc.privateId + ? ('constructor' === this.value && this.raise(this.start, "Classes can't have an element named '#constructor'"), (e.computed = !1), (e.key = this.parsePrivateIdent())) + : this.parsePropertyName(e) + }), + (jc.parseClassMethod = function (e, t, s, i) { + var n = e.key + 'constructor' === e.kind + ? (t && this.raise(n.start, "Constructor can't be a generator"), s && this.raise(n.start, "Constructor can't be an async method")) + : e.static && Yc(e, 'prototype') && this.raise(n.start, 'Classes may not have a static property named prototype') + var r = (e.value = this.parseMethod(t, s, i)) + return ( + 'get' === e.kind && 0 !== r.params.length && this.raiseRecoverable(r.start, 'getter should have no params'), + 'set' === e.kind && 1 !== r.params.length && this.raiseRecoverable(r.start, 'setter should have exactly one param'), + 'set' === e.kind && 'RestElement' === r.params[0].type && this.raiseRecoverable(r.params[0].start, 'Setter cannot use rest params'), + this.finishNode(e, 'MethodDefinition') + ) + }), + (jc.parseClassField = function (e) { + if ( + (Yc(e, 'constructor') + ? this.raise(e.key.start, "Classes can't have a field named 'constructor'") + : e.static && Yc(e, 'prototype') && this.raise(e.key.start, "Classes can't have a static field named 'prototype'"), + this.eat(fc.eq)) + ) { + var t = this.currentThisScope(), + s = t.inClassFieldInit + ;(t.inClassFieldInit = !0), (e.value = this.parseMaybeAssign()), (t.inClassFieldInit = s) + } else e.value = null + return this.semicolon(), this.finishNode(e, 'PropertyDefinition') + }), + (jc.parseClassStaticBlock = function (e) { + e.body = [] + var t = this.labels + for (this.labels = [], this.enterScope(320); this.type !== fc.braceR; ) { + var s = this.parseStatement(null) + e.body.push(s) + } + return this.next(), this.exitScope(), (this.labels = t), this.finishNode(e, 'StaticBlock') + }), + (jc.parseClassId = function (e, t) { + this.type === fc.name ? ((e.id = this.parseIdent()), t && this.checkLValSimple(e.id, 2, !1)) : (!0 === t && this.unexpected(), (e.id = null)) + }), + (jc.parseClassSuper = function (e) { + e.superClass = this.eat(fc._extends) ? this.parseExprSubscripts(null, !1) : null + }), + (jc.enterClassBody = function () { + var e = { declared: Object.create(null), used: [] } + return this.privateNameStack.push(e), e.declared + }), + (jc.exitClassBody = function () { + var e = this.privateNameStack.pop(), + t = e.declared, + s = e.used + if (this.options.checkPrivateFields) + for (var i = this.privateNameStack.length, n = 0 === i ? null : this.privateNameStack[i - 1], r = 0; r < s.length; ++r) { + var o = s[r] + kc(t, o.name) || (n ? n.used.push(o) : this.raiseRecoverable(o.start, "Private field '#" + o.name + "' must be declared in an enclosing class")) + } + }), + (jc.parseExportAllDeclaration = function (e, t) { + return ( + this.options.ecmaVersion >= 11 && (this.eatContextual('as') ? ((e.exported = this.parseModuleExportName()), this.checkExport(t, e.exported, this.lastTokStart)) : (e.exported = null)), + this.expectContextual('from'), + this.type !== fc.string && this.unexpected(), + (e.source = this.parseExprAtom()), + this.semicolon(), + this.finishNode(e, 'ExportAllDeclaration') + ) + }), + (jc.parseExport = function (e, t) { + if ((this.next(), this.eat(fc.star))) return this.parseExportAllDeclaration(e, t) + if (this.eat(fc._default)) return this.checkExport(t, 'default', this.lastTokStart), (e.declaration = this.parseExportDefaultDeclaration()), this.finishNode(e, 'ExportDefaultDeclaration') + if (this.shouldParseExportStatement()) + (e.declaration = this.parseExportDeclaration(e)), + 'VariableDeclaration' === e.declaration.type ? this.checkVariableExport(t, e.declaration.declarations) : this.checkExport(t, e.declaration.id, e.declaration.id.start), + (e.specifiers = []), + (e.source = null) + else { + if (((e.declaration = null), (e.specifiers = this.parseExportSpecifiers(t)), this.eatContextual('from'))) this.type !== fc.string && this.unexpected(), (e.source = this.parseExprAtom()) + else { + for (var s = 0, i = e.specifiers; s < i.length; s += 1) { + var n = i[s] + this.checkUnreserved(n.local), + this.checkLocalExport(n.local), + 'Literal' === n.local.type && this.raise(n.local.start, 'A string literal cannot be used as an exported binding without `from`.') + } + e.source = null + } + this.semicolon() + } + return this.finishNode(e, 'ExportNamedDeclaration') + }), + (jc.parseExportDeclaration = function (e) { + return this.parseStatement(null) + }), + (jc.parseExportDefaultDeclaration = function () { + var e + if (this.type === fc._function || (e = this.isAsyncFunction())) { + var t = this.startNode() + return this.next(), e && this.next(), this.parseFunction(t, 4 | qc, !1, e) + } + if (this.type === fc._class) { + var s = this.startNode() + return this.parseClass(s, 'nullableID') + } + var i = this.parseMaybeAssign() + return this.semicolon(), i + }), + (jc.checkExport = function (e, t, s) { + e && ('string' != typeof t && (t = 'Identifier' === t.type ? t.name : t.value), kc(e, t) && this.raiseRecoverable(s, "Duplicate export '" + t + "'"), (e[t] = !0)) + }), + (jc.checkPatternExport = function (e, t) { + var s = t.type + if ('Identifier' === s) this.checkExport(e, t, t.start) + else if ('ObjectPattern' === s) + for (var i = 0, n = t.properties; i < n.length; i += 1) { + var r = n[i] + this.checkPatternExport(e, r) + } + else if ('ArrayPattern' === s) + for (var o = 0, a = t.elements; o < a.length; o += 1) { + var l = a[o] + l && this.checkPatternExport(e, l) + } + else + 'Property' === s + ? this.checkPatternExport(e, t.value) + : 'AssignmentPattern' === s + ? this.checkPatternExport(e, t.left) + : 'RestElement' === s + ? this.checkPatternExport(e, t.argument) + : 'ParenthesizedExpression' === s && this.checkPatternExport(e, t.expression) + }), + (jc.checkVariableExport = function (e, t) { + if (e) + for (var s = 0, i = t; s < i.length; s += 1) { + var n = i[s] + this.checkPatternExport(e, n.id) + } + }), + (jc.shouldParseExportStatement = function () { + return 'var' === this.type.keyword || 'const' === this.type.keyword || 'class' === this.type.keyword || 'function' === this.type.keyword || this.isLet() || this.isAsyncFunction() + }), + (jc.parseExportSpecifier = function (e) { + var t = this.startNode() + return ( + (t.local = this.parseModuleExportName()), + (t.exported = this.eatContextual('as') ? this.parseModuleExportName() : t.local), + this.checkExport(e, t.exported, t.exported.start), + this.finishNode(t, 'ExportSpecifier') + ) + }), + (jc.parseExportSpecifiers = function (e) { + var t = [], + s = !0 + for (this.expect(fc.braceL); !this.eat(fc.braceR); ) { + if (s) s = !1 + else if ((this.expect(fc.comma), this.afterTrailingComma(fc.braceR))) break + t.push(this.parseExportSpecifier(e)) + } + return t + }), + (jc.parseImport = function (e) { + return ( + this.next(), + this.type === fc.string + ? ((e.specifiers = Wc), (e.source = this.parseExprAtom())) + : ((e.specifiers = this.parseImportSpecifiers()), this.expectContextual('from'), (e.source = this.type === fc.string ? this.parseExprAtom() : this.unexpected())), + this.semicolon(), + this.finishNode(e, 'ImportDeclaration') + ) + }), + (jc.parseImportSpecifier = function () { + var e = this.startNode() + return ( + (e.imported = this.parseModuleExportName()), + this.eatContextual('as') ? (e.local = this.parseIdent()) : (this.checkUnreserved(e.imported), (e.local = e.imported)), + this.checkLValSimple(e.local, 2), + this.finishNode(e, 'ImportSpecifier') + ) + }), + (jc.parseImportDefaultSpecifier = function () { + var e = this.startNode() + return (e.local = this.parseIdent()), this.checkLValSimple(e.local, 2), this.finishNode(e, 'ImportDefaultSpecifier') + }), + (jc.parseImportNamespaceSpecifier = function () { + var e = this.startNode() + return this.next(), this.expectContextual('as'), (e.local = this.parseIdent()), this.checkLValSimple(e.local, 2), this.finishNode(e, 'ImportNamespaceSpecifier') + }), + (jc.parseImportSpecifiers = function () { + var e = [], + t = !0 + if (this.type === fc.name && (e.push(this.parseImportDefaultSpecifier()), !this.eat(fc.comma))) return e + if (this.type === fc.star) return e.push(this.parseImportNamespaceSpecifier()), e + for (this.expect(fc.braceL); !this.eat(fc.braceR); ) { + if (t) t = !1 + else if ((this.expect(fc.comma), this.afterTrailingComma(fc.braceR))) break + e.push(this.parseImportSpecifier()) + } + return e + }), + (jc.parseModuleExportName = function () { + if (this.options.ecmaVersion >= 13 && this.type === fc.string) { + var e = this.parseLiteral(this.value) + return Cc.test(e.value) && this.raise(e.start, 'An export name cannot include a lone surrogate.'), e + } + return this.parseIdent(!0) + }), + (jc.adaptDirectivePrologue = function (e) { + for (var t = 0; t < e.length && this.isDirectiveCandidate(e[t]); ++t) e[t].directive = e[t].expression.raw.slice(1, -1) + }), + (jc.isDirectiveCandidate = function (e) { + return ( + this.options.ecmaVersion >= 5 && + 'ExpressionStatement' === e.type && + 'Literal' === e.expression.type && + 'string' == typeof e.expression.value && + ('"' === this.input[e.start] || "'" === this.input[e.start]) + ) + }) +var Xc = Tc.prototype +;(Xc.toAssignable = function (e, t, s) { + if (this.options.ecmaVersion >= 6 && e) + switch (e.type) { + case 'Identifier': + this.inAsync && 'await' === e.name && this.raise(e.start, "Cannot use 'await' as identifier inside an async function") + break + case 'ObjectPattern': + case 'ArrayPattern': + case 'AssignmentPattern': + case 'RestElement': + break + case 'ObjectExpression': + ;(e.type = 'ObjectPattern'), s && this.checkPatternErrors(s, !0) + for (var i = 0, n = e.properties; i < n.length; i += 1) { + var r = n[i] + this.toAssignable(r, t), 'RestElement' !== r.type || ('ArrayPattern' !== r.argument.type && 'ObjectPattern' !== r.argument.type) || this.raise(r.argument.start, 'Unexpected token') + } + break + case 'Property': + 'init' !== e.kind && this.raise(e.key.start, "Object pattern can't contain getter or setter"), this.toAssignable(e.value, t) + break + case 'ArrayExpression': + ;(e.type = 'ArrayPattern'), s && this.checkPatternErrors(s, !0), this.toAssignableList(e.elements, t) + break + case 'SpreadElement': + ;(e.type = 'RestElement'), this.toAssignable(e.argument, t), 'AssignmentPattern' === e.argument.type && this.raise(e.argument.start, 'Rest elements cannot have a default value') + break + case 'AssignmentExpression': + '=' !== e.operator && this.raise(e.left.end, "Only '=' operator can be used for specifying default value."), (e.type = 'AssignmentPattern'), delete e.operator, this.toAssignable(e.left, t) + break + case 'ParenthesizedExpression': + this.toAssignable(e.expression, t, s) + break + case 'ChainExpression': + this.raiseRecoverable(e.start, 'Optional chaining cannot appear in left-hand side') + break + case 'MemberExpression': + if (!t) break + default: + this.raise(e.start, 'Assigning to rvalue') + } + else s && this.checkPatternErrors(s, !0) + return e +}), + (Xc.toAssignableList = function (e, t) { + for (var s = e.length, i = 0; i < s; i++) { + var n = e[i] + n && this.toAssignable(n, t) + } + if (s) { + var r = e[s - 1] + 6 === this.options.ecmaVersion && t && r && 'RestElement' === r.type && 'Identifier' !== r.argument.type && this.unexpected(r.argument.start) + } + return e + }), + (Xc.parseSpread = function (e) { + var t = this.startNode() + return this.next(), (t.argument = this.parseMaybeAssign(!1, e)), this.finishNode(t, 'SpreadElement') + }), + (Xc.parseRestBinding = function () { + var e = this.startNode() + return this.next(), 6 === this.options.ecmaVersion && this.type !== fc.name && this.unexpected(), (e.argument = this.parseBindingAtom()), this.finishNode(e, 'RestElement') + }), + (Xc.parseBindingAtom = function () { + if (this.options.ecmaVersion >= 6) + switch (this.type) { + case fc.bracketL: + var e = this.startNode() + return this.next(), (e.elements = this.parseBindingList(fc.bracketR, !0, !0)), this.finishNode(e, 'ArrayPattern') + case fc.braceL: + return this.parseObj(!0) + } + return this.parseIdent() + }), + (Xc.parseBindingList = function (e, t, s, i) { + for (var n = [], r = !0; !this.eat(e); ) + if ((r ? (r = !1) : this.expect(fc.comma), t && this.type === fc.comma)) n.push(null) + else { + if (s && this.afterTrailingComma(e)) break + if (this.type === fc.ellipsis) { + var o = this.parseRestBinding() + this.parseBindingListItem(o), n.push(o), this.type === fc.comma && this.raiseRecoverable(this.start, 'Comma is not permitted after the rest element'), this.expect(e) + break + } + n.push(this.parseAssignableListItem(i)) + } + return n + }), + (Xc.parseAssignableListItem = function (e) { + var t = this.parseMaybeDefault(this.start, this.startLoc) + return this.parseBindingListItem(t), t + }), + (Xc.parseBindingListItem = function (e) { + return e + }), + (Xc.parseMaybeDefault = function (e, t, s) { + if (((s = s || this.parseBindingAtom()), this.options.ecmaVersion < 6 || !this.eat(fc.eq))) return s + var i = this.startNodeAt(e, t) + return (i.left = s), (i.right = this.parseMaybeAssign()), this.finishNode(i, 'AssignmentPattern') + }), + (Xc.checkLValSimple = function (e, t, s) { + void 0 === t && (t = 0) + var i = 0 !== t + switch (e.type) { + case 'Identifier': + this.strict && this.reservedWordsStrictBind.test(e.name) && this.raiseRecoverable(e.start, (i ? 'Binding ' : 'Assigning to ') + e.name + ' in strict mode'), + i && + (2 === t && 'let' === e.name && this.raiseRecoverable(e.start, 'let is disallowed as a lexically bound name'), + s && (kc(s, e.name) && this.raiseRecoverable(e.start, 'Argument name clash'), (s[e.name] = !0)), + 5 !== t && this.declareName(e.name, t, e.start)) + break + case 'ChainExpression': + this.raiseRecoverable(e.start, 'Optional chaining cannot appear in left-hand side') + break + case 'MemberExpression': + i && this.raiseRecoverable(e.start, 'Binding member expression') + break + case 'ParenthesizedExpression': + return i && this.raiseRecoverable(e.start, 'Binding parenthesized expression'), this.checkLValSimple(e.expression, t, s) + default: + this.raise(e.start, (i ? 'Binding' : 'Assigning to') + ' rvalue') + } + }), + (Xc.checkLValPattern = function (e, t, s) { + switch ((void 0 === t && (t = 0), e.type)) { + case 'ObjectPattern': + for (var i = 0, n = e.properties; i < n.length; i += 1) { + var r = n[i] + this.checkLValInnerPattern(r, t, s) + } + break + case 'ArrayPattern': + for (var o = 0, a = e.elements; o < a.length; o += 1) { + var l = a[o] + l && this.checkLValInnerPattern(l, t, s) + } + break + default: + this.checkLValSimple(e, t, s) + } + }), + (Xc.checkLValInnerPattern = function (e, t, s) { + switch ((void 0 === t && (t = 0), e.type)) { + case 'Property': + this.checkLValInnerPattern(e.value, t, s) + break + case 'AssignmentPattern': + this.checkLValPattern(e.left, t, s) + break + case 'RestElement': + this.checkLValPattern(e.argument, t, s) + break + default: + this.checkLValPattern(e, t, s) + } + }) +var Qc = function (e, t, s, i, n) { + ;(this.token = e), (this.isExpr = !!t), (this.preserveSpace = !!s), (this.override = i), (this.generator = !!n) + }, + Zc = { + b_stat: new Qc('{', !1), + b_expr: new Qc('{', !0), + b_tmpl: new Qc('${', !1), + p_stat: new Qc('(', !1), + p_expr: new Qc('(', !0), + q_tmpl: new Qc('`', !0, !0, function (e) { + return e.tryReadTemplateToken() + }), + f_stat: new Qc('function', !1), + f_expr: new Qc('function', !0), + f_expr_gen: new Qc('function', !0, !1, null, !0), + f_gen: new Qc('function', !1, !1, null, !0) + }, + Jc = Tc.prototype +;(Jc.initialContext = function () { + return [Zc.b_stat] +}), + (Jc.curContext = function () { + return this.context[this.context.length - 1] + }), + (Jc.braceIsBlock = function (e) { + var t = this.curContext() + return ( + t === Zc.f_expr || + t === Zc.f_stat || + (e !== fc.colon || (t !== Zc.b_stat && t !== Zc.b_expr) + ? e === fc._return || (e === fc.name && this.exprAllowed) + ? mc.test(this.input.slice(this.lastTokEnd, this.start)) + : e === fc._else || + e === fc.semi || + e === fc.eof || + e === fc.parenR || + e === fc.arrow || + (e === fc.braceL ? t === Zc.b_stat : e !== fc._var && e !== fc._const && e !== fc.name && !this.exprAllowed) + : !t.isExpr) + ) + }), + (Jc.inGeneratorContext = function () { + for (var e = this.context.length - 1; e >= 1; e--) { + var t = this.context[e] + if ('function' === t.token) return t.generator + } + return !1 + }), + (Jc.updateContext = function (e) { + var t, + s = this.type + s.keyword && e === fc.dot ? (this.exprAllowed = !1) : (t = s.updateContext) ? t.call(this, e) : (this.exprAllowed = s.beforeExpr) + }), + (Jc.overrideContext = function (e) { + this.curContext() !== e && (this.context[this.context.length - 1] = e) + }), + (fc.parenR.updateContext = fc.braceR.updateContext = + function () { + if (1 !== this.context.length) { + var e = this.context.pop() + e === Zc.b_stat && 'function' === this.curContext().token && (e = this.context.pop()), (this.exprAllowed = !e.isExpr) + } else this.exprAllowed = !0 + }), + (fc.braceL.updateContext = function (e) { + this.context.push(this.braceIsBlock(e) ? Zc.b_stat : Zc.b_expr), (this.exprAllowed = !0) + }), + (fc.dollarBraceL.updateContext = function () { + this.context.push(Zc.b_tmpl), (this.exprAllowed = !0) + }), + (fc.parenL.updateContext = function (e) { + var t = e === fc._if || e === fc._for || e === fc._with || e === fc._while + this.context.push(t ? Zc.p_stat : Zc.p_expr), (this.exprAllowed = !0) + }), + (fc.incDec.updateContext = function () {}), + (fc._function.updateContext = fc._class.updateContext = + function (e) { + !e.beforeExpr || + e === fc._else || + (e === fc.semi && this.curContext() !== Zc.p_stat) || + (e === fc._return && mc.test(this.input.slice(this.lastTokEnd, this.start))) || + ((e === fc.colon || e === fc.braceL) && this.curContext() === Zc.b_stat) + ? this.context.push(Zc.f_stat) + : this.context.push(Zc.f_expr), + (this.exprAllowed = !1) + }), + (fc.backQuote.updateContext = function () { + this.curContext() === Zc.q_tmpl ? this.context.pop() : this.context.push(Zc.q_tmpl), (this.exprAllowed = !1) + }), + (fc.star.updateContext = function (e) { + if (e === fc._function) { + var t = this.context.length - 1 + this.context[t] === Zc.f_expr ? (this.context[t] = Zc.f_expr_gen) : (this.context[t] = Zc.f_gen) + } + this.exprAllowed = !0 + }), + (fc.name.updateContext = function (e) { + var t = !1 + this.options.ecmaVersion >= 6 && e !== fc.dot && (('of' === this.value && !this.exprAllowed) || ('yield' === this.value && this.inGeneratorContext())) && (t = !0), (this.exprAllowed = t) + }) +var eh = Tc.prototype +function th(e) { + return ('MemberExpression' === e.type && 'PrivateIdentifier' === e.property.type) || ('ChainExpression' === e.type && th(e.expression)) +} +;(eh.checkPropClash = function (e, t, s) { + if (!((this.options.ecmaVersion >= 9 && 'SpreadElement' === e.type) || (this.options.ecmaVersion >= 6 && (e.computed || e.method || e.shorthand)))) { + var i, + n = e.key + switch (n.type) { + case 'Identifier': + i = n.name + break + case 'Literal': + i = String(n.value) + break + default: + return + } + var r = e.kind + if (this.options.ecmaVersion >= 6) + '__proto__' === i && 'init' === r && (t.proto && (s ? s.doubleProto < 0 && (s.doubleProto = n.start) : this.raiseRecoverable(n.start, 'Redefinition of __proto__ property')), (t.proto = !0)) + else { + var o = t[(i = '$' + i)] + if (o) ('init' === r ? (this.strict && o.init) || o.get || o.set : o.init || o[r]) && this.raiseRecoverable(n.start, 'Redefinition of property') + else o = t[i] = { init: !1, get: !1, set: !1 } + o[r] = !0 + } + } +}), + (eh.parseExpression = function (e, t) { + var s = this.start, + i = this.startLoc, + n = this.parseMaybeAssign(e, t) + if (this.type === fc.comma) { + var r = this.startNodeAt(s, i) + for (r.expressions = [n]; this.eat(fc.comma); ) r.expressions.push(this.parseMaybeAssign(e, t)) + return this.finishNode(r, 'SequenceExpression') + } + return n + }), + (eh.parseMaybeAssign = function (e, t, s) { + if (this.isContextual('yield')) { + if (this.inGenerator) return this.parseYield(e) + this.exprAllowed = !1 + } + var i = !1, + n = -1, + r = -1, + o = -1 + t ? ((n = t.parenthesizedAssign), (r = t.trailingComma), (o = t.doubleProto), (t.parenthesizedAssign = t.trailingComma = -1)) : ((t = new Fc()), (i = !0)) + var a = this.start, + l = this.startLoc + ;(this.type !== fc.parenL && this.type !== fc.name) || ((this.potentialArrowAt = this.start), (this.potentialArrowInForAwait = 'await' === e)) + var c = this.parseMaybeConditional(e, t) + if ((s && (c = s.call(this, c, a, l)), this.type.isAssign)) { + var h = this.startNodeAt(a, l) + return ( + (h.operator = this.value), + this.type === fc.eq && (c = this.toAssignable(c, !1, t)), + i || (t.parenthesizedAssign = t.trailingComma = t.doubleProto = -1), + t.shorthandAssign >= c.start && (t.shorthandAssign = -1), + this.type === fc.eq ? this.checkLValPattern(c) : this.checkLValSimple(c), + (h.left = c), + this.next(), + (h.right = this.parseMaybeAssign(e)), + o > -1 && (t.doubleProto = o), + this.finishNode(h, 'AssignmentExpression') + ) + } + return i && this.checkExpressionErrors(t, !0), n > -1 && (t.parenthesizedAssign = n), r > -1 && (t.trailingComma = r), c + }), + (eh.parseMaybeConditional = function (e, t) { + var s = this.start, + i = this.startLoc, + n = this.parseExprOps(e, t) + if (this.checkExpressionErrors(t)) return n + if (this.eat(fc.question)) { + var r = this.startNodeAt(s, i) + return (r.test = n), (r.consequent = this.parseMaybeAssign()), this.expect(fc.colon), (r.alternate = this.parseMaybeAssign(e)), this.finishNode(r, 'ConditionalExpression') + } + return n + }), + (eh.parseExprOps = function (e, t) { + var s = this.start, + i = this.startLoc, + n = this.parseMaybeUnary(t, !1, !1, e) + return this.checkExpressionErrors(t) || (n.start === s && 'ArrowFunctionExpression' === n.type) ? n : this.parseExprOp(n, s, i, -1, e) + }), + (eh.parseExprOp = function (e, t, s, i, n) { + var r = this.type.binop + if (null != r && (!n || this.type !== fc._in) && r > i) { + var o = this.type === fc.logicalOR || this.type === fc.logicalAND, + a = this.type === fc.coalesce + a && (r = fc.logicalAND.binop) + var l = this.value + this.next() + var c = this.start, + h = this.startLoc, + u = this.parseExprOp(this.parseMaybeUnary(null, !1, !1, n), c, h, r, n), + d = this.buildBinary(t, s, e, u, l, o || a) + return ( + ((o && this.type === fc.coalesce) || (a && (this.type === fc.logicalOR || this.type === fc.logicalAND))) && + this.raiseRecoverable(this.start, 'Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses'), + this.parseExprOp(d, t, s, i, n) + ) + } + return e + }), + (eh.buildBinary = function (e, t, s, i, n, r) { + 'PrivateIdentifier' === i.type && this.raise(i.start, 'Private identifier can only be left side of binary expression') + var o = this.startNodeAt(e, t) + return (o.left = s), (o.operator = n), (o.right = i), this.finishNode(o, r ? 'LogicalExpression' : 'BinaryExpression') + }), + (eh.parseMaybeUnary = function (e, t, s, i) { + var n, + r = this.start, + o = this.startLoc + if (this.isContextual('await') && this.canAwait) (n = this.parseAwait(i)), (t = !0) + else if (this.type.prefix) { + var a = this.startNode(), + l = this.type === fc.incDec + ;(a.operator = this.value), + (a.prefix = !0), + this.next(), + (a.argument = this.parseMaybeUnary(null, !0, l, i)), + this.checkExpressionErrors(e, !0), + l + ? this.checkLValSimple(a.argument) + : this.strict && 'delete' === a.operator && 'Identifier' === a.argument.type + ? this.raiseRecoverable(a.start, 'Deleting local variable in strict mode') + : 'delete' === a.operator && th(a.argument) + ? this.raiseRecoverable(a.start, 'Private fields can not be deleted') + : (t = !0), + (n = this.finishNode(a, l ? 'UpdateExpression' : 'UnaryExpression')) + } else if (t || this.type !== fc.privateId) { + if (((n = this.parseExprSubscripts(e, i)), this.checkExpressionErrors(e))) return n + for (; this.type.postfix && !this.canInsertSemicolon(); ) { + var c = this.startNodeAt(r, o) + ;(c.operator = this.value), (c.prefix = !1), (c.argument = n), this.checkLValSimple(n), this.next(), (n = this.finishNode(c, 'UpdateExpression')) + } + } else (i || 0 === this.privateNameStack.length) && this.options.checkPrivateFields && this.unexpected(), (n = this.parsePrivateIdent()), this.type !== fc._in && this.unexpected() + return s || !this.eat(fc.starstar) ? n : t ? void this.unexpected(this.lastTokStart) : this.buildBinary(r, o, n, this.parseMaybeUnary(null, !1, !1, i), '**', !1) + }), + (eh.parseExprSubscripts = function (e, t) { + var s = this.start, + i = this.startLoc, + n = this.parseExprAtom(e, t) + if ('ArrowFunctionExpression' === n.type && ')' !== this.input.slice(this.lastTokStart, this.lastTokEnd)) return n + var r = this.parseSubscripts(n, s, i, !1, t) + return ( + e && + 'MemberExpression' === r.type && + (e.parenthesizedAssign >= r.start && (e.parenthesizedAssign = -1), e.parenthesizedBind >= r.start && (e.parenthesizedBind = -1), e.trailingComma >= r.start && (e.trailingComma = -1)), + r + ) + }), + (eh.parseSubscripts = function (e, t, s, i, n) { + for ( + var r = + this.options.ecmaVersion >= 8 && + 'Identifier' === e.type && + 'async' === e.name && + this.lastTokEnd === e.end && + !this.canInsertSemicolon() && + e.end - e.start == 5 && + this.potentialArrowAt === e.start, + o = !1; + ; + + ) { + var a = this.parseSubscript(e, t, s, i, r, o, n) + if ((a.optional && (o = !0), a === e || 'ArrowFunctionExpression' === a.type)) { + if (o) { + var l = this.startNodeAt(t, s) + ;(l.expression = a), (a = this.finishNode(l, 'ChainExpression')) + } + return a + } + e = a + } + }), + (eh.shouldParseAsyncArrow = function () { + return !this.canInsertSemicolon() && this.eat(fc.arrow) + }), + (eh.parseSubscriptAsyncArrow = function (e, t, s, i) { + return this.parseArrowExpression(this.startNodeAt(e, t), s, !0, i) + }), + (eh.parseSubscript = function (e, t, s, i, n, r, o) { + var a = this.options.ecmaVersion >= 11, + l = a && this.eat(fc.questionDot) + i && l && this.raise(this.lastTokStart, 'Optional chaining cannot appear in the callee of new expressions') + var c = this.eat(fc.bracketL) + if (c || (l && this.type !== fc.parenL && this.type !== fc.backQuote) || this.eat(fc.dot)) { + var h = this.startNodeAt(t, s) + ;(h.object = e), + c + ? ((h.property = this.parseExpression()), this.expect(fc.bracketR)) + : this.type === fc.privateId && 'Super' !== e.type + ? (h.property = this.parsePrivateIdent()) + : (h.property = this.parseIdent('never' !== this.options.allowReserved)), + (h.computed = !!c), + a && (h.optional = l), + (e = this.finishNode(h, 'MemberExpression')) + } else if (!i && this.eat(fc.parenL)) { + var u = new Fc(), + d = this.yieldPos, + p = this.awaitPos, + f = this.awaitIdentPos + ;(this.yieldPos = 0), (this.awaitPos = 0), (this.awaitIdentPos = 0) + var m = this.parseExprList(fc.parenR, this.options.ecmaVersion >= 8, !1, u) + if (n && !l && this.shouldParseAsyncArrow()) + return ( + this.checkPatternErrors(u, !1), + this.checkYieldAwaitInDefaultParams(), + this.awaitIdentPos > 0 && this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"), + (this.yieldPos = d), + (this.awaitPos = p), + (this.awaitIdentPos = f), + this.parseSubscriptAsyncArrow(t, s, m, o) + ) + this.checkExpressionErrors(u, !0), (this.yieldPos = d || this.yieldPos), (this.awaitPos = p || this.awaitPos), (this.awaitIdentPos = f || this.awaitIdentPos) + var g = this.startNodeAt(t, s) + ;(g.callee = e), (g.arguments = m), a && (g.optional = l), (e = this.finishNode(g, 'CallExpression')) + } else if (this.type === fc.backQuote) { + ;(l || r) && this.raise(this.start, 'Optional chaining cannot appear in the tag of tagged template expressions') + var y = this.startNodeAt(t, s) + ;(y.tag = e), (y.quasi = this.parseTemplate({ isTagged: !0 })), (e = this.finishNode(y, 'TaggedTemplateExpression')) + } + return e + }), + (eh.parseExprAtom = function (e, t, s) { + this.type === fc.slash && this.readRegexp() + var i, + n = this.potentialArrowAt === this.start + switch (this.type) { + case fc._super: + return ( + this.allowSuper || this.raise(this.start, "'super' keyword outside a method"), + (i = this.startNode()), + this.next(), + this.type !== fc.parenL || this.allowDirectSuper || this.raise(i.start, 'super() call outside constructor of a subclass'), + this.type !== fc.dot && this.type !== fc.bracketL && this.type !== fc.parenL && this.unexpected(), + this.finishNode(i, 'Super') + ) + case fc._this: + return (i = this.startNode()), this.next(), this.finishNode(i, 'ThisExpression') + case fc.name: + var r = this.start, + o = this.startLoc, + a = this.containsEsc, + l = this.parseIdent(!1) + if (this.options.ecmaVersion >= 8 && !a && 'async' === l.name && !this.canInsertSemicolon() && this.eat(fc._function)) + return this.overrideContext(Zc.f_expr), this.parseFunction(this.startNodeAt(r, o), 0, !1, !0, t) + if (n && !this.canInsertSemicolon()) { + if (this.eat(fc.arrow)) return this.parseArrowExpression(this.startNodeAt(r, o), [l], !1, t) + if (this.options.ecmaVersion >= 8 && 'async' === l.name && this.type === fc.name && !a && (!this.potentialArrowInForAwait || 'of' !== this.value || this.containsEsc)) + return (l = this.parseIdent(!1)), (!this.canInsertSemicolon() && this.eat(fc.arrow)) || this.unexpected(), this.parseArrowExpression(this.startNodeAt(r, o), [l], !0, t) + } + return l + case fc.regexp: + var c = this.value + return ((i = this.parseLiteral(c.value)).regex = { pattern: c.pattern, flags: c.flags }), i + case fc.num: + case fc.string: + return this.parseLiteral(this.value) + case fc._null: + case fc._true: + case fc._false: + return ((i = this.startNode()).value = this.type === fc._null ? null : this.type === fc._true), (i.raw = this.type.keyword), this.next(), this.finishNode(i, 'Literal') + case fc.parenL: + var h = this.start, + u = this.parseParenAndDistinguishExpression(n, t) + return e && (e.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(u) && (e.parenthesizedAssign = h), e.parenthesizedBind < 0 && (e.parenthesizedBind = h)), u + case fc.bracketL: + return (i = this.startNode()), this.next(), (i.elements = this.parseExprList(fc.bracketR, !0, !0, e)), this.finishNode(i, 'ArrayExpression') + case fc.braceL: + return this.overrideContext(Zc.b_expr), this.parseObj(!1, e) + case fc._function: + return (i = this.startNode()), this.next(), this.parseFunction(i, 0) + case fc._class: + return this.parseClass(this.startNode(), !1) + case fc._new: + return this.parseNew() + case fc.backQuote: + return this.parseTemplate() + case fc._import: + return this.options.ecmaVersion >= 11 ? this.parseExprImport(s) : this.unexpected() + default: + return this.parseExprAtomDefault() + } + }), + (eh.parseExprAtomDefault = function () { + this.unexpected() + }), + (eh.parseExprImport = function (e) { + var t = this.startNode() + this.containsEsc && this.raiseRecoverable(this.start, 'Escape sequence in keyword import') + var s = this.parseIdent(!0) + return this.type !== fc.parenL || e ? (this.type === fc.dot ? ((t.meta = s), this.parseImportMeta(t)) : void this.unexpected()) : this.parseDynamicImport(t) + }), + (eh.parseDynamicImport = function (e) { + if ((this.next(), (e.source = this.parseMaybeAssign()), !this.eat(fc.parenR))) { + var t = this.start + this.eat(fc.comma) && this.eat(fc.parenR) ? this.raiseRecoverable(t, 'Trailing comma is not allowed in import()') : this.unexpected(t) + } + return this.finishNode(e, 'ImportExpression') + }), + (eh.parseImportMeta = function (e) { + this.next() + var t = this.containsEsc + return ( + (e.property = this.parseIdent(!0)), + 'meta' !== e.property.name && this.raiseRecoverable(e.property.start, "The only valid meta property for import is 'import.meta'"), + t && this.raiseRecoverable(e.start, "'import.meta' must not contain escaped characters"), + 'module' === this.options.sourceType || this.options.allowImportExportEverywhere || this.raiseRecoverable(e.start, "Cannot use 'import.meta' outside a module"), + this.finishNode(e, 'MetaProperty') + ) + }), + (eh.parseLiteral = function (e) { + var t = this.startNode() + return ( + (t.value = e), + (t.raw = this.input.slice(this.start, this.end)), + 110 === t.raw.charCodeAt(t.raw.length - 1) && (t.bigint = t.raw.slice(0, -1).replace(/_/g, '')), + this.next(), + this.finishNode(t, 'Literal') + ) + }), + (eh.parseParenExpression = function () { + this.expect(fc.parenL) + var e = this.parseExpression() + return this.expect(fc.parenR), e + }), + (eh.shouldParseArrow = function (e) { + return !this.canInsertSemicolon() + }), + (eh.parseParenAndDistinguishExpression = function (e, t) { + var s, + i = this.start, + n = this.startLoc, + r = this.options.ecmaVersion >= 8 + if (this.options.ecmaVersion >= 6) { + this.next() + var o, + a = this.start, + l = this.startLoc, + c = [], + h = !0, + u = !1, + d = new Fc(), + p = this.yieldPos, + f = this.awaitPos + for (this.yieldPos = 0, this.awaitPos = 0; this.type !== fc.parenR; ) { + if ((h ? (h = !1) : this.expect(fc.comma), r && this.afterTrailingComma(fc.parenR, !0))) { + u = !0 + break + } + if (this.type === fc.ellipsis) { + ;(o = this.start), c.push(this.parseParenItem(this.parseRestBinding())), this.type === fc.comma && this.raiseRecoverable(this.start, 'Comma is not permitted after the rest element') + break + } + c.push(this.parseMaybeAssign(!1, d, this.parseParenItem)) + } + var m = this.lastTokEnd, + g = this.lastTokEndLoc + if ((this.expect(fc.parenR), e && this.shouldParseArrow(c) && this.eat(fc.arrow))) + return this.checkPatternErrors(d, !1), this.checkYieldAwaitInDefaultParams(), (this.yieldPos = p), (this.awaitPos = f), this.parseParenArrowList(i, n, c, t) + ;(c.length && !u) || this.unexpected(this.lastTokStart), + o && this.unexpected(o), + this.checkExpressionErrors(d, !0), + (this.yieldPos = p || this.yieldPos), + (this.awaitPos = f || this.awaitPos), + c.length > 1 ? (((s = this.startNodeAt(a, l)).expressions = c), this.finishNodeAt(s, 'SequenceExpression', m, g)) : (s = c[0]) + } else s = this.parseParenExpression() + if (this.options.preserveParens) { + var y = this.startNodeAt(i, n) + return (y.expression = s), this.finishNode(y, 'ParenthesizedExpression') + } + return s + }), + (eh.parseParenItem = function (e) { + return e + }), + (eh.parseParenArrowList = function (e, t, s, i) { + return this.parseArrowExpression(this.startNodeAt(e, t), s, !1, i) + }) +var sh = [] +;(eh.parseNew = function () { + this.containsEsc && this.raiseRecoverable(this.start, 'Escape sequence in keyword new') + var e = this.startNode(), + t = this.parseIdent(!0) + if (this.options.ecmaVersion >= 6 && this.eat(fc.dot)) { + e.meta = t + var s = this.containsEsc + return ( + (e.property = this.parseIdent(!0)), + 'target' !== e.property.name && this.raiseRecoverable(e.property.start, "The only valid meta property for new is 'new.target'"), + s && this.raiseRecoverable(e.start, "'new.target' must not contain escaped characters"), + this.allowNewDotTarget || this.raiseRecoverable(e.start, "'new.target' can only be used in functions and class static block"), + this.finishNode(e, 'MetaProperty') + ) + } + var i = this.start, + n = this.startLoc + return ( + (e.callee = this.parseSubscripts(this.parseExprAtom(null, !1, !0), i, n, !0, !1)), + this.eat(fc.parenL) ? (e.arguments = this.parseExprList(fc.parenR, this.options.ecmaVersion >= 8, !1)) : (e.arguments = sh), + this.finishNode(e, 'NewExpression') + ) +}), + (eh.parseTemplateElement = function (e) { + var t = e.isTagged, + s = this.startNode() + return ( + this.type === fc.invalidTemplate + ? (t || this.raiseRecoverable(this.start, 'Bad escape sequence in untagged template literal'), (s.value = { raw: this.value, cooked: null })) + : (s.value = { raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, '\n'), cooked: this.value }), + this.next(), + (s.tail = this.type === fc.backQuote), + this.finishNode(s, 'TemplateElement') + ) + }), + (eh.parseTemplate = function (e) { + void 0 === e && (e = {}) + var t = e.isTagged + void 0 === t && (t = !1) + var s = this.startNode() + this.next(), (s.expressions = []) + var i = this.parseTemplateElement({ isTagged: t }) + for (s.quasis = [i]; !i.tail; ) + this.type === fc.eof && this.raise(this.pos, 'Unterminated template literal'), + this.expect(fc.dollarBraceL), + s.expressions.push(this.parseExpression()), + this.expect(fc.braceR), + s.quasis.push((i = this.parseTemplateElement({ isTagged: t }))) + return this.next(), this.finishNode(s, 'TemplateLiteral') + }), + (eh.isAsyncProp = function (e) { + return ( + !e.computed && + 'Identifier' === e.key.type && + 'async' === e.key.name && + (this.type === fc.name || this.type === fc.num || this.type === fc.string || this.type === fc.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === fc.star)) && + !mc.test(this.input.slice(this.lastTokEnd, this.start)) + ) + }), + (eh.parseObj = function (e, t) { + var s = this.startNode(), + i = !0, + n = {} + for (s.properties = [], this.next(); !this.eat(fc.braceR); ) { + if (i) i = !1 + else if ((this.expect(fc.comma), this.options.ecmaVersion >= 5 && this.afterTrailingComma(fc.braceR))) break + var r = this.parseProperty(e, t) + e || this.checkPropClash(r, n, t), s.properties.push(r) + } + return this.finishNode(s, e ? 'ObjectPattern' : 'ObjectExpression') + }), + (eh.parseProperty = function (e, t) { + var s, + i, + n, + r, + o = this.startNode() + if (this.options.ecmaVersion >= 9 && this.eat(fc.ellipsis)) + return e + ? ((o.argument = this.parseIdent(!1)), this.type === fc.comma && this.raiseRecoverable(this.start, 'Comma is not permitted after the rest element'), this.finishNode(o, 'RestElement')) + : ((o.argument = this.parseMaybeAssign(!1, t)), this.type === fc.comma && t && t.trailingComma < 0 && (t.trailingComma = this.start), this.finishNode(o, 'SpreadElement')) + this.options.ecmaVersion >= 6 && ((o.method = !1), (o.shorthand = !1), (e || t) && ((n = this.start), (r = this.startLoc)), e || (s = this.eat(fc.star))) + var a = this.containsEsc + return ( + this.parsePropertyName(o), + !e && !a && this.options.ecmaVersion >= 8 && !s && this.isAsyncProp(o) ? ((i = !0), (s = this.options.ecmaVersion >= 9 && this.eat(fc.star)), this.parsePropertyName(o)) : (i = !1), + this.parsePropertyValue(o, e, s, i, n, r, t, a), + this.finishNode(o, 'Property') + ) + }), + (eh.parseGetterSetter = function (e) { + ;(e.kind = e.key.name), this.parsePropertyName(e), (e.value = this.parseMethod(!1)) + var t = 'get' === e.kind ? 0 : 1 + if (e.value.params.length !== t) { + var s = e.value.start + 'get' === e.kind ? this.raiseRecoverable(s, 'getter should have no params') : this.raiseRecoverable(s, 'setter should have exactly one param') + } else 'set' === e.kind && 'RestElement' === e.value.params[0].type && this.raiseRecoverable(e.value.params[0].start, 'Setter cannot use rest params') + }), + (eh.parsePropertyValue = function (e, t, s, i, n, r, o, a) { + ;(s || i) && this.type === fc.colon && this.unexpected(), + this.eat(fc.colon) + ? ((e.value = t ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(!1, o)), (e.kind = 'init')) + : this.options.ecmaVersion >= 6 && this.type === fc.parenL + ? (t && this.unexpected(), (e.kind = 'init'), (e.method = !0), (e.value = this.parseMethod(s, i))) + : t || + a || + !(this.options.ecmaVersion >= 5) || + e.computed || + 'Identifier' !== e.key.type || + ('get' !== e.key.name && 'set' !== e.key.name) || + this.type === fc.comma || + this.type === fc.braceR || + this.type === fc.eq + ? this.options.ecmaVersion >= 6 && !e.computed && 'Identifier' === e.key.type + ? ((s || i) && this.unexpected(), + this.checkUnreserved(e.key), + 'await' !== e.key.name || this.awaitIdentPos || (this.awaitIdentPos = n), + (e.kind = 'init'), + t + ? (e.value = this.parseMaybeDefault(n, r, this.copyNode(e.key))) + : this.type === fc.eq && o + ? (o.shorthandAssign < 0 && (o.shorthandAssign = this.start), (e.value = this.parseMaybeDefault(n, r, this.copyNode(e.key)))) + : (e.value = this.copyNode(e.key)), + (e.shorthand = !0)) + : this.unexpected() + : ((s || i) && this.unexpected(), this.parseGetterSetter(e)) + }), + (eh.parsePropertyName = function (e) { + if (this.options.ecmaVersion >= 6) { + if (this.eat(fc.bracketL)) return (e.computed = !0), (e.key = this.parseMaybeAssign()), this.expect(fc.bracketR), e.key + e.computed = !1 + } + return (e.key = this.type === fc.num || this.type === fc.string ? this.parseExprAtom() : this.parseIdent('never' !== this.options.allowReserved)) + }), + (eh.initFunction = function (e) { + ;(e.id = null), this.options.ecmaVersion >= 6 && (e.generator = e.expression = !1), this.options.ecmaVersion >= 8 && (e.async = !1) + }), + (eh.parseMethod = function (e, t, s) { + var i = this.startNode(), + n = this.yieldPos, + r = this.awaitPos, + o = this.awaitIdentPos + return ( + this.initFunction(i), + this.options.ecmaVersion >= 6 && (i.generator = e), + this.options.ecmaVersion >= 8 && (i.async = !!t), + (this.yieldPos = 0), + (this.awaitPos = 0), + (this.awaitIdentPos = 0), + this.enterScope(64 | Lc(t, i.generator) | (s ? 128 : 0)), + this.expect(fc.parenL), + (i.params = this.parseBindingList(fc.parenR, !1, this.options.ecmaVersion >= 8)), + this.checkYieldAwaitInDefaultParams(), + this.parseFunctionBody(i, !1, !0, !1), + (this.yieldPos = n), + (this.awaitPos = r), + (this.awaitIdentPos = o), + this.finishNode(i, 'FunctionExpression') + ) + }), + (eh.parseArrowExpression = function (e, t, s, i) { + var n = this.yieldPos, + r = this.awaitPos, + o = this.awaitIdentPos + return ( + this.enterScope(16 | Lc(s, !1)), + this.initFunction(e), + this.options.ecmaVersion >= 8 && (e.async = !!s), + (this.yieldPos = 0), + (this.awaitPos = 0), + (this.awaitIdentPos = 0), + (e.params = this.toAssignableList(t, !0)), + this.parseFunctionBody(e, !0, !1, i), + (this.yieldPos = n), + (this.awaitPos = r), + (this.awaitIdentPos = o), + this.finishNode(e, 'ArrowFunctionExpression') + ) + }), + (eh.parseFunctionBody = function (e, t, s, i) { + var n = t && this.type !== fc.braceL, + r = this.strict, + o = !1 + if (n) (e.body = this.parseMaybeAssign(i)), (e.expression = !0), this.checkParams(e, !1) + else { + var a = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(e.params) + ;(r && !a) || ((o = this.strictDirective(this.end)) && a && this.raiseRecoverable(e.start, "Illegal 'use strict' directive in function with non-simple parameter list")) + var l = this.labels + ;(this.labels = []), + o && (this.strict = !0), + this.checkParams(e, !r && !o && !t && !s && this.isSimpleParamList(e.params)), + this.strict && e.id && this.checkLValSimple(e.id, 5), + (e.body = this.parseBlock(!1, void 0, o && !r)), + (e.expression = !1), + this.adaptDirectivePrologue(e.body.body), + (this.labels = l) + } + this.exitScope() + }), + (eh.isSimpleParamList = function (e) { + for (var t = 0, s = e; t < s.length; t += 1) { + if ('Identifier' !== s[t].type) return !1 + } + return !0 + }), + (eh.checkParams = function (e, t) { + for (var s = Object.create(null), i = 0, n = e.params; i < n.length; i += 1) { + var r = n[i] + this.checkLValInnerPattern(r, 1, t ? null : s) + } + }), + (eh.parseExprList = function (e, t, s, i) { + for (var n = [], r = !0; !this.eat(e); ) { + if (r) r = !1 + else if ((this.expect(fc.comma), t && this.afterTrailingComma(e))) break + var o = void 0 + s && this.type === fc.comma + ? (o = null) + : this.type === fc.ellipsis + ? ((o = this.parseSpread(i)), i && this.type === fc.comma && i.trailingComma < 0 && (i.trailingComma = this.start)) + : (o = this.parseMaybeAssign(!1, i)), + n.push(o) + } + return n + }), + (eh.checkUnreserved = function (e) { + var t = e.start, + s = e.end, + i = e.name + ;(this.inGenerator && 'yield' === i && this.raiseRecoverable(t, "Cannot use 'yield' as identifier inside a generator"), + this.inAsync && 'await' === i && this.raiseRecoverable(t, "Cannot use 'await' as identifier inside an async function"), + this.currentThisScope().inClassFieldInit && 'arguments' === i && this.raiseRecoverable(t, "Cannot use 'arguments' in class field initializer"), + !this.inClassStaticBlock || ('arguments' !== i && 'await' !== i) || this.raise(t, 'Cannot use ' + i + ' in class static initialization block'), + this.keywords.test(i) && this.raise(t, "Unexpected keyword '" + i + "'"), + this.options.ecmaVersion < 6 && -1 !== this.input.slice(t, s).indexOf('\\')) || + ((this.strict ? this.reservedWordsStrict : this.reservedWords).test(i) && + (this.inAsync || 'await' !== i || this.raiseRecoverable(t, "Cannot use keyword 'await' outside an async function"), this.raiseRecoverable(t, "The keyword '" + i + "' is reserved"))) + }), + (eh.parseIdent = function (e) { + var t = this.parseIdentNode() + return this.next(!!e), this.finishNode(t, 'Identifier'), e || (this.checkUnreserved(t), 'await' !== t.name || this.awaitIdentPos || (this.awaitIdentPos = t.start)), t + }), + (eh.parseIdentNode = function () { + var e = this.startNode() + return ( + this.type === fc.name + ? (e.name = this.value) + : this.type.keyword + ? ((e.name = this.type.keyword), + ('class' !== e.name && 'function' !== e.name) || (this.lastTokEnd === this.lastTokStart + 1 && 46 === this.input.charCodeAt(this.lastTokStart)) || this.context.pop()) + : this.unexpected(), + e + ) + }), + (eh.parsePrivateIdent = function () { + var e = this.startNode() + return ( + this.type === fc.privateId ? (e.name = this.value) : this.unexpected(), + this.next(), + this.finishNode(e, 'PrivateIdentifier'), + this.options.checkPrivateFields && + (0 === this.privateNameStack.length + ? this.raise(e.start, "Private field '#" + e.name + "' must be declared in an enclosing class") + : this.privateNameStack[this.privateNameStack.length - 1].used.push(e)), + e + ) + }), + (eh.parseYield = function (e) { + this.yieldPos || (this.yieldPos = this.start) + var t = this.startNode() + return ( + this.next(), + this.type === fc.semi || this.canInsertSemicolon() || (this.type !== fc.star && !this.type.startsExpr) + ? ((t.delegate = !1), (t.argument = null)) + : ((t.delegate = this.eat(fc.star)), (t.argument = this.parseMaybeAssign(e))), + this.finishNode(t, 'YieldExpression') + ) + }), + (eh.parseAwait = function (e) { + this.awaitPos || (this.awaitPos = this.start) + var t = this.startNode() + return this.next(), (t.argument = this.parseMaybeUnary(null, !0, !1, e)), this.finishNode(t, 'AwaitExpression') + }) +var ih = Tc.prototype +;(ih.raise = function (e, t) { + var s = _c(this.input, e) + t += ' (' + s.line + ':' + s.column + ')' + var i = new SyntaxError(t) + throw ((i.pos = e), (i.loc = s), (i.raisedAt = this.pos), i) +}), + (ih.raiseRecoverable = ih.raise), + (ih.curPosition = function () { + if (this.options.locations) return new $c(this.curLine, this.pos - this.lineStart) + }) +var nh = Tc.prototype, + rh = function (e) { + ;(this.flags = e), (this.var = []), (this.lexical = []), (this.functions = []), (this.inClassFieldInit = !1) + } +;(nh.enterScope = function (e) { + this.scopeStack.push(new rh(e)) +}), + (nh.exitScope = function () { + this.scopeStack.pop() + }), + (nh.treatFunctionsAsVarInScope = function (e) { + return 2 & e.flags || (!this.inModule && 1 & e.flags) + }), + (nh.declareName = function (e, t, s) { + var i = !1 + if (2 === t) { + var n = this.currentScope() + ;(i = n.lexical.indexOf(e) > -1 || n.functions.indexOf(e) > -1 || n.var.indexOf(e) > -1), n.lexical.push(e), this.inModule && 1 & n.flags && delete this.undefinedExports[e] + } else if (4 === t) { + this.currentScope().lexical.push(e) + } else if (3 === t) { + var r = this.currentScope() + ;(i = this.treatFunctionsAsVar ? r.lexical.indexOf(e) > -1 : r.lexical.indexOf(e) > -1 || r.var.indexOf(e) > -1), r.functions.push(e) + } else + for (var o = this.scopeStack.length - 1; o >= 0; --o) { + var a = this.scopeStack[o] + if ((a.lexical.indexOf(e) > -1 && !(32 & a.flags && a.lexical[0] === e)) || (!this.treatFunctionsAsVarInScope(a) && a.functions.indexOf(e) > -1)) { + i = !0 + break + } + if ((a.var.push(e), this.inModule && 1 & a.flags && delete this.undefinedExports[e], 259 & a.flags)) break + } + i && this.raiseRecoverable(s, "Identifier '" + e + "' has already been declared") + }), + (nh.checkLocalExport = function (e) { + ;-1 === this.scopeStack[0].lexical.indexOf(e.name) && -1 === this.scopeStack[0].var.indexOf(e.name) && (this.undefinedExports[e.name] = e) + }), + (nh.currentScope = function () { + return this.scopeStack[this.scopeStack.length - 1] + }), + (nh.currentVarScope = function () { + for (var e = this.scopeStack.length - 1; ; e--) { + var t = this.scopeStack[e] + if (259 & t.flags) return t + } + }), + (nh.currentThisScope = function () { + for (var e = this.scopeStack.length - 1; ; e--) { + var t = this.scopeStack[e] + if (259 & t.flags && !(16 & t.flags)) return t + } + }) +var oh = function (e, t, s) { + ;(this.type = ''), + (this.start = t), + (this.end = 0), + e.options.locations && (this.loc = new Nc(e, s)), + e.options.directSourceFile && (this.sourceFile = e.options.directSourceFile), + e.options.ranges && (this.range = [t, 0]) + }, + ah = Tc.prototype +function lh(e, t, s, i) { + return (e.type = t), (e.end = s), this.options.locations && (e.loc.end = i), this.options.ranges && (e.range[1] = s), e +} +;(ah.startNode = function () { + return new oh(this, this.start, this.startLoc) +}), + (ah.startNodeAt = function (e, t) { + return new oh(this, e, t) + }), + (ah.finishNode = function (e, t) { + return lh.call(this, e, t, this.lastTokEnd, this.lastTokEndLoc) + }), + (ah.finishNodeAt = function (e, t, s, i) { + return lh.call(this, e, t, s, i) + }), + (ah.copyNode = function (e) { + var t = new oh(this, e.start, this.startLoc) + for (var s in e) t[s] = e[s] + return t + }) +var ch = + 'ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS', + hh = ch + ' Extended_Pictographic', + uh = hh + ' EBase EComp EMod EPres ExtPict', + dh = { 9: ch, 10: hh, 11: hh, 12: uh, 13: uh, 14: uh }, + ph = { 9: '', 10: '', 11: '', 12: '', 13: '', 14: 'Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji' }, + fh = + 'Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu', + mh = + 'Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb', + gh = mh + ' Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd', + yh = gh + ' Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho', + xh = yh + ' Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi', + Eh = xh + ' Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith', + bh = { 9: mh, 10: gh, 11: yh, 12: xh, 13: Eh, 14: Eh + ' Hrkt Katakana_Or_Hiragana Kawi Nag_Mundari Nagm Unknown Zzzz' }, + vh = {} +function Sh(e) { + var t = (vh[e] = { binary: wc(dh[e] + ' ' + fh), binaryOfStrings: wc(ph[e]), nonBinary: { General_Category: wc(fh), Script: wc(bh[e]) } }) + ;(t.nonBinary.Script_Extensions = t.nonBinary.Script), (t.nonBinary.gc = t.nonBinary.General_Category), (t.nonBinary.sc = t.nonBinary.Script), (t.nonBinary.scx = t.nonBinary.Script_Extensions) +} +for (var Ah = 0, kh = [9, 10, 11, 12, 13, 14]; Ah < kh.length; Ah += 1) { + Sh(kh[Ah]) +} +var Ih = Tc.prototype, + wh = function (e) { + ;(this.parser = e), + (this.validFlags = + 'gim' + (e.options.ecmaVersion >= 6 ? 'uy' : '') + (e.options.ecmaVersion >= 9 ? 's' : '') + (e.options.ecmaVersion >= 13 ? 'd' : '') + (e.options.ecmaVersion >= 15 ? 'v' : '')), + (this.unicodeProperties = vh[e.options.ecmaVersion >= 14 ? 14 : e.options.ecmaVersion]), + (this.source = ''), + (this.flags = ''), + (this.start = 0), + (this.switchU = !1), + (this.switchV = !1), + (this.switchN = !1), + (this.pos = 0), + (this.lastIntValue = 0), + (this.lastStringValue = ''), + (this.lastAssertionIsQuantifiable = !1), + (this.numCapturingParens = 0), + (this.maxBackReference = 0), + (this.groupNames = []), + (this.backReferenceNames = []) + } +function Ph(e) { + return 36 === e || (e >= 40 && e <= 43) || 46 === e || 63 === e || (e >= 91 && e <= 94) || (e >= 123 && e <= 125) +} +function Ch(e) { + return (e >= 65 && e <= 90) || (e >= 97 && e <= 122) +} +;(wh.prototype.reset = function (e, t, s) { + var i = -1 !== s.indexOf('v'), + n = -1 !== s.indexOf('u') + ;(this.start = 0 | e), + (this.source = t + ''), + (this.flags = s), + i && this.parser.options.ecmaVersion >= 15 + ? ((this.switchU = !0), (this.switchV = !0), (this.switchN = !0)) + : ((this.switchU = n && this.parser.options.ecmaVersion >= 6), (this.switchV = !1), (this.switchN = n && this.parser.options.ecmaVersion >= 9)) +}), + (wh.prototype.raise = function (e) { + this.parser.raiseRecoverable(this.start, 'Invalid regular expression: /' + this.source + '/: ' + e) + }), + (wh.prototype.at = function (e, t) { + void 0 === t && (t = !1) + var s = this.source, + i = s.length + if (e >= i) return -1 + var n = s.charCodeAt(e) + if ((!t && !this.switchU) || n <= 55295 || n >= 57344 || e + 1 >= i) return n + var r = s.charCodeAt(e + 1) + return r >= 56320 && r <= 57343 ? (n << 10) + r - 56613888 : n + }), + (wh.prototype.nextIndex = function (e, t) { + void 0 === t && (t = !1) + var s = this.source, + i = s.length + if (e >= i) return i + var n, + r = s.charCodeAt(e) + return (!t && !this.switchU) || r <= 55295 || r >= 57344 || e + 1 >= i || (n = s.charCodeAt(e + 1)) < 56320 || n > 57343 ? e + 1 : e + 2 + }), + (wh.prototype.current = function (e) { + return void 0 === e && (e = !1), this.at(this.pos, e) + }), + (wh.prototype.lookahead = function (e) { + return void 0 === e && (e = !1), this.at(this.nextIndex(this.pos, e), e) + }), + (wh.prototype.advance = function (e) { + void 0 === e && (e = !1), (this.pos = this.nextIndex(this.pos, e)) + }), + (wh.prototype.eat = function (e, t) { + return void 0 === t && (t = !1), this.current(t) === e && (this.advance(t), !0) + }), + (wh.prototype.eatChars = function (e, t) { + void 0 === t && (t = !1) + for (var s = this.pos, i = 0, n = e; i < n.length; i += 1) { + var r = n[i], + o = this.at(s, t) + if (-1 === o || o !== r) return !1 + s = this.nextIndex(s, t) + } + return (this.pos = s), !0 + }), + (Ih.validateRegExpFlags = function (e) { + for (var t = e.validFlags, s = e.flags, i = !1, n = !1, r = 0; r < s.length; r++) { + var o = s.charAt(r) + ;-1 === t.indexOf(o) && this.raise(e.start, 'Invalid regular expression flag'), + s.indexOf(o, r + 1) > -1 && this.raise(e.start, 'Duplicate regular expression flag'), + 'u' === o && (i = !0), + 'v' === o && (n = !0) + } + this.options.ecmaVersion >= 15 && i && n && this.raise(e.start, 'Invalid regular expression flag') + }), + (Ih.validateRegExpPattern = function (e) { + this.regexp_pattern(e), !e.switchN && this.options.ecmaVersion >= 9 && e.groupNames.length > 0 && ((e.switchN = !0), this.regexp_pattern(e)) + }), + (Ih.regexp_pattern = function (e) { + ;(e.pos = 0), + (e.lastIntValue = 0), + (e.lastStringValue = ''), + (e.lastAssertionIsQuantifiable = !1), + (e.numCapturingParens = 0), + (e.maxBackReference = 0), + (e.groupNames.length = 0), + (e.backReferenceNames.length = 0), + this.regexp_disjunction(e), + e.pos !== e.source.length && (e.eat(41) && e.raise("Unmatched ')'"), (e.eat(93) || e.eat(125)) && e.raise('Lone quantifier brackets')), + e.maxBackReference > e.numCapturingParens && e.raise('Invalid escape') + for (var t = 0, s = e.backReferenceNames; t < s.length; t += 1) { + var i = s[t] + ;-1 === e.groupNames.indexOf(i) && e.raise('Invalid named capture referenced') + } + }), + (Ih.regexp_disjunction = function (e) { + for (this.regexp_alternative(e); e.eat(124); ) this.regexp_alternative(e) + this.regexp_eatQuantifier(e, !0) && e.raise('Nothing to repeat'), e.eat(123) && e.raise('Lone quantifier brackets') + }), + (Ih.regexp_alternative = function (e) { + for (; e.pos < e.source.length && this.regexp_eatTerm(e); ); + }), + (Ih.regexp_eatTerm = function (e) { + return this.regexp_eatAssertion(e) + ? (e.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(e) && e.switchU && e.raise('Invalid quantifier'), !0) + : !!(e.switchU ? this.regexp_eatAtom(e) : this.regexp_eatExtendedAtom(e)) && (this.regexp_eatQuantifier(e), !0) + }), + (Ih.regexp_eatAssertion = function (e) { + var t = e.pos + if (((e.lastAssertionIsQuantifiable = !1), e.eat(94) || e.eat(36))) return !0 + if (e.eat(92)) { + if (e.eat(66) || e.eat(98)) return !0 + e.pos = t + } + if (e.eat(40) && e.eat(63)) { + var s = !1 + if ((this.options.ecmaVersion >= 9 && (s = e.eat(60)), e.eat(61) || e.eat(33))) + return this.regexp_disjunction(e), e.eat(41) || e.raise('Unterminated group'), (e.lastAssertionIsQuantifiable = !s), !0 + } + return (e.pos = t), !1 + }), + (Ih.regexp_eatQuantifier = function (e, t) { + return void 0 === t && (t = !1), !!this.regexp_eatQuantifierPrefix(e, t) && (e.eat(63), !0) + }), + (Ih.regexp_eatQuantifierPrefix = function (e, t) { + return e.eat(42) || e.eat(43) || e.eat(63) || this.regexp_eatBracedQuantifier(e, t) + }), + (Ih.regexp_eatBracedQuantifier = function (e, t) { + var s = e.pos + if (e.eat(123)) { + var i = 0, + n = -1 + if (this.regexp_eatDecimalDigits(e) && ((i = e.lastIntValue), e.eat(44) && this.regexp_eatDecimalDigits(e) && (n = e.lastIntValue), e.eat(125))) + return -1 !== n && n < i && !t && e.raise('numbers out of order in {} quantifier'), !0 + e.switchU && !t && e.raise('Incomplete quantifier'), (e.pos = s) + } + return !1 + }), + (Ih.regexp_eatAtom = function (e) { + return ( + this.regexp_eatPatternCharacters(e) || + e.eat(46) || + this.regexp_eatReverseSolidusAtomEscape(e) || + this.regexp_eatCharacterClass(e) || + this.regexp_eatUncapturingGroup(e) || + this.regexp_eatCapturingGroup(e) + ) + }), + (Ih.regexp_eatReverseSolidusAtomEscape = function (e) { + var t = e.pos + if (e.eat(92)) { + if (this.regexp_eatAtomEscape(e)) return !0 + e.pos = t + } + return !1 + }), + (Ih.regexp_eatUncapturingGroup = function (e) { + var t = e.pos + if (e.eat(40)) { + if (e.eat(63) && e.eat(58)) { + if ((this.regexp_disjunction(e), e.eat(41))) return !0 + e.raise('Unterminated group') + } + e.pos = t + } + return !1 + }), + (Ih.regexp_eatCapturingGroup = function (e) { + if (e.eat(40)) { + if ((this.options.ecmaVersion >= 9 ? this.regexp_groupSpecifier(e) : 63 === e.current() && e.raise('Invalid group'), this.regexp_disjunction(e), e.eat(41))) + return (e.numCapturingParens += 1), !0 + e.raise('Unterminated group') + } + return !1 + }), + (Ih.regexp_eatExtendedAtom = function (e) { + return ( + e.eat(46) || + this.regexp_eatReverseSolidusAtomEscape(e) || + this.regexp_eatCharacterClass(e) || + this.regexp_eatUncapturingGroup(e) || + this.regexp_eatCapturingGroup(e) || + this.regexp_eatInvalidBracedQuantifier(e) || + this.regexp_eatExtendedPatternCharacter(e) + ) + }), + (Ih.regexp_eatInvalidBracedQuantifier = function (e) { + return this.regexp_eatBracedQuantifier(e, !0) && e.raise('Nothing to repeat'), !1 + }), + (Ih.regexp_eatSyntaxCharacter = function (e) { + var t = e.current() + return !!Ph(t) && ((e.lastIntValue = t), e.advance(), !0) + }), + (Ih.regexp_eatPatternCharacters = function (e) { + for (var t = e.pos, s = 0; -1 !== (s = e.current()) && !Ph(s); ) e.advance() + return e.pos !== t + }), + (Ih.regexp_eatExtendedPatternCharacter = function (e) { + var t = e.current() + return !(-1 === t || 36 === t || (t >= 40 && t <= 43) || 46 === t || 63 === t || 91 === t || 94 === t || 124 === t) && (e.advance(), !0) + }), + (Ih.regexp_groupSpecifier = function (e) { + if (e.eat(63)) { + if (this.regexp_eatGroupName(e)) return -1 !== e.groupNames.indexOf(e.lastStringValue) && e.raise('Duplicate capture group name'), void e.groupNames.push(e.lastStringValue) + e.raise('Invalid group') + } + }), + (Ih.regexp_eatGroupName = function (e) { + if (((e.lastStringValue = ''), e.eat(60))) { + if (this.regexp_eatRegExpIdentifierName(e) && e.eat(62)) return !0 + e.raise('Invalid capture group name') + } + return !1 + }), + (Ih.regexp_eatRegExpIdentifierName = function (e) { + if (((e.lastStringValue = ''), this.regexp_eatRegExpIdentifierStart(e))) { + for (e.lastStringValue += Pc(e.lastIntValue); this.regexp_eatRegExpIdentifierPart(e); ) e.lastStringValue += Pc(e.lastIntValue) + return !0 + } + return !1 + }), + (Ih.regexp_eatRegExpIdentifierStart = function (e) { + var t = e.pos, + s = this.options.ecmaVersion >= 11, + i = e.current(s) + return ( + e.advance(s), + 92 === i && this.regexp_eatRegExpUnicodeEscapeSequence(e, s) && (i = e.lastIntValue), + (function (e) { + return oc(e, !0) || 36 === e || 95 === e + })(i) + ? ((e.lastIntValue = i), !0) + : ((e.pos = t), !1) + ) + }), + (Ih.regexp_eatRegExpIdentifierPart = function (e) { + var t = e.pos, + s = this.options.ecmaVersion >= 11, + i = e.current(s) + return ( + e.advance(s), + 92 === i && this.regexp_eatRegExpUnicodeEscapeSequence(e, s) && (i = e.lastIntValue), + (function (e) { + return ac(e, !0) || 36 === e || 95 === e || 8204 === e || 8205 === e + })(i) + ? ((e.lastIntValue = i), !0) + : ((e.pos = t), !1) + ) + }), + (Ih.regexp_eatAtomEscape = function (e) { + return ( + !!(this.regexp_eatBackReference(e) || this.regexp_eatCharacterClassEscape(e) || this.regexp_eatCharacterEscape(e) || (e.switchN && this.regexp_eatKGroupName(e))) || + (e.switchU && (99 === e.current() && e.raise('Invalid unicode escape'), e.raise('Invalid escape')), !1) + ) + }), + (Ih.regexp_eatBackReference = function (e) { + var t = e.pos + if (this.regexp_eatDecimalEscape(e)) { + var s = e.lastIntValue + if (e.switchU) return s > e.maxBackReference && (e.maxBackReference = s), !0 + if (s <= e.numCapturingParens) return !0 + e.pos = t + } + return !1 + }), + (Ih.regexp_eatKGroupName = function (e) { + if (e.eat(107)) { + if (this.regexp_eatGroupName(e)) return e.backReferenceNames.push(e.lastStringValue), !0 + e.raise('Invalid named reference') + } + return !1 + }), + (Ih.regexp_eatCharacterEscape = function (e) { + return ( + this.regexp_eatControlEscape(e) || + this.regexp_eatCControlLetter(e) || + this.regexp_eatZero(e) || + this.regexp_eatHexEscapeSequence(e) || + this.regexp_eatRegExpUnicodeEscapeSequence(e, !1) || + (!e.switchU && this.regexp_eatLegacyOctalEscapeSequence(e)) || + this.regexp_eatIdentityEscape(e) + ) + }), + (Ih.regexp_eatCControlLetter = function (e) { + var t = e.pos + if (e.eat(99)) { + if (this.regexp_eatControlLetter(e)) return !0 + e.pos = t + } + return !1 + }), + (Ih.regexp_eatZero = function (e) { + return 48 === e.current() && !_h(e.lookahead()) && ((e.lastIntValue = 0), e.advance(), !0) + }), + (Ih.regexp_eatControlEscape = function (e) { + var t = e.current() + return 116 === t + ? ((e.lastIntValue = 9), e.advance(), !0) + : 110 === t + ? ((e.lastIntValue = 10), e.advance(), !0) + : 118 === t + ? ((e.lastIntValue = 11), e.advance(), !0) + : 102 === t + ? ((e.lastIntValue = 12), e.advance(), !0) + : 114 === t && ((e.lastIntValue = 13), e.advance(), !0) + }), + (Ih.regexp_eatControlLetter = function (e) { + var t = e.current() + return !!Ch(t) && ((e.lastIntValue = t % 32), e.advance(), !0) + }), + (Ih.regexp_eatRegExpUnicodeEscapeSequence = function (e, t) { + void 0 === t && (t = !1) + var s, + i = e.pos, + n = t || e.switchU + if (e.eat(117)) { + if (this.regexp_eatFixedHexDigits(e, 4)) { + var r = e.lastIntValue + if (n && r >= 55296 && r <= 56319) { + var o = e.pos + if (e.eat(92) && e.eat(117) && this.regexp_eatFixedHexDigits(e, 4)) { + var a = e.lastIntValue + if (a >= 56320 && a <= 57343) return (e.lastIntValue = 1024 * (r - 55296) + (a - 56320) + 65536), !0 + } + ;(e.pos = o), (e.lastIntValue = r) + } + return !0 + } + if (n && e.eat(123) && this.regexp_eatHexDigits(e) && e.eat(125) && (s = e.lastIntValue) >= 0 && s <= 1114111) return !0 + n && e.raise('Invalid unicode escape'), (e.pos = i) + } + return !1 + }), + (Ih.regexp_eatIdentityEscape = function (e) { + if (e.switchU) return !!this.regexp_eatSyntaxCharacter(e) || (!!e.eat(47) && ((e.lastIntValue = 47), !0)) + var t = e.current() + return !(99 === t || (e.switchN && 107 === t)) && ((e.lastIntValue = t), e.advance(), !0) + }), + (Ih.regexp_eatDecimalEscape = function (e) { + e.lastIntValue = 0 + var t = e.current() + if (t >= 49 && t <= 57) { + do { + ;(e.lastIntValue = 10 * e.lastIntValue + (t - 48)), e.advance() + } while ((t = e.current()) >= 48 && t <= 57) + return !0 + } + return !1 + }) +function $h(e) { + return Ch(e) || 95 === e +} +function Nh(e) { + return $h(e) || _h(e) +} +function _h(e) { + return e >= 48 && e <= 57 +} +function Rh(e) { + return (e >= 48 && e <= 57) || (e >= 65 && e <= 70) || (e >= 97 && e <= 102) +} +function Mh(e) { + return e >= 65 && e <= 70 ? e - 65 + 10 : e >= 97 && e <= 102 ? e - 97 + 10 : e - 48 +} +function Oh(e) { + return e >= 48 && e <= 55 +} +;(Ih.regexp_eatCharacterClassEscape = function (e) { + var t = e.current() + if ( + (function (e) { + return 100 === e || 68 === e || 115 === e || 83 === e || 119 === e || 87 === e + })(t) + ) + return (e.lastIntValue = -1), e.advance(), 1 + var s = !1 + if (e.switchU && this.options.ecmaVersion >= 9 && ((s = 80 === t) || 112 === t)) { + var i + if (((e.lastIntValue = -1), e.advance(), e.eat(123) && (i = this.regexp_eatUnicodePropertyValueExpression(e)) && e.eat(125))) return s && 2 === i && e.raise('Invalid property name'), i + e.raise('Invalid property name') + } + return 0 +}), + (Ih.regexp_eatUnicodePropertyValueExpression = function (e) { + var t = e.pos + if (this.regexp_eatUnicodePropertyName(e) && e.eat(61)) { + var s = e.lastStringValue + if (this.regexp_eatUnicodePropertyValue(e)) { + var i = e.lastStringValue + return this.regexp_validateUnicodePropertyNameAndValue(e, s, i), 1 + } + } + if (((e.pos = t), this.regexp_eatLoneUnicodePropertyNameOrValue(e))) { + var n = e.lastStringValue + return this.regexp_validateUnicodePropertyNameOrValue(e, n) + } + return 0 + }), + (Ih.regexp_validateUnicodePropertyNameAndValue = function (e, t, s) { + kc(e.unicodeProperties.nonBinary, t) || e.raise('Invalid property name'), e.unicodeProperties.nonBinary[t].test(s) || e.raise('Invalid property value') + }), + (Ih.regexp_validateUnicodePropertyNameOrValue = function (e, t) { + return e.unicodeProperties.binary.test(t) ? 1 : e.switchV && e.unicodeProperties.binaryOfStrings.test(t) ? 2 : void e.raise('Invalid property name') + }), + (Ih.regexp_eatUnicodePropertyName = function (e) { + var t = 0 + for (e.lastStringValue = ''; $h((t = e.current())); ) (e.lastStringValue += Pc(t)), e.advance() + return '' !== e.lastStringValue + }), + (Ih.regexp_eatUnicodePropertyValue = function (e) { + var t = 0 + for (e.lastStringValue = ''; Nh((t = e.current())); ) (e.lastStringValue += Pc(t)), e.advance() + return '' !== e.lastStringValue + }), + (Ih.regexp_eatLoneUnicodePropertyNameOrValue = function (e) { + return this.regexp_eatUnicodePropertyValue(e) + }), + (Ih.regexp_eatCharacterClass = function (e) { + if (e.eat(91)) { + var t = e.eat(94), + s = this.regexp_classContents(e) + return e.eat(93) || e.raise('Unterminated character class'), t && 2 === s && e.raise('Negated character class may contain strings'), !0 + } + return !1 + }), + (Ih.regexp_classContents = function (e) { + return 93 === e.current() ? 1 : e.switchV ? this.regexp_classSetExpression(e) : (this.regexp_nonEmptyClassRanges(e), 1) + }), + (Ih.regexp_nonEmptyClassRanges = function (e) { + for (; this.regexp_eatClassAtom(e); ) { + var t = e.lastIntValue + if (e.eat(45) && this.regexp_eatClassAtom(e)) { + var s = e.lastIntValue + !e.switchU || (-1 !== t && -1 !== s) || e.raise('Invalid character class'), -1 !== t && -1 !== s && t > s && e.raise('Range out of order in character class') + } + } + }), + (Ih.regexp_eatClassAtom = function (e) { + var t = e.pos + if (e.eat(92)) { + if (this.regexp_eatClassEscape(e)) return !0 + if (e.switchU) { + var s = e.current() + ;(99 === s || Oh(s)) && e.raise('Invalid class escape'), e.raise('Invalid escape') + } + e.pos = t + } + var i = e.current() + return 93 !== i && ((e.lastIntValue = i), e.advance(), !0) + }), + (Ih.regexp_eatClassEscape = function (e) { + var t = e.pos + if (e.eat(98)) return (e.lastIntValue = 8), !0 + if (e.switchU && e.eat(45)) return (e.lastIntValue = 45), !0 + if (!e.switchU && e.eat(99)) { + if (this.regexp_eatClassControlLetter(e)) return !0 + e.pos = t + } + return this.regexp_eatCharacterClassEscape(e) || this.regexp_eatCharacterEscape(e) + }), + (Ih.regexp_classSetExpression = function (e) { + var t, + s = 1 + if (this.regexp_eatClassSetRange(e)); + else if ((t = this.regexp_eatClassSetOperand(e))) { + 2 === t && (s = 2) + for (var i = e.pos; e.eatChars([38, 38]); ) 38 !== e.current() && (t = this.regexp_eatClassSetOperand(e)) ? 2 !== t && (s = 1) : e.raise('Invalid character in character class') + if (i !== e.pos) return s + for (; e.eatChars([45, 45]); ) this.regexp_eatClassSetOperand(e) || e.raise('Invalid character in character class') + if (i !== e.pos) return s + } else e.raise('Invalid character in character class') + for (;;) + if (!this.regexp_eatClassSetRange(e)) { + if (!(t = this.regexp_eatClassSetOperand(e))) return s + 2 === t && (s = 2) + } + }), + (Ih.regexp_eatClassSetRange = function (e) { + var t = e.pos + if (this.regexp_eatClassSetCharacter(e)) { + var s = e.lastIntValue + if (e.eat(45) && this.regexp_eatClassSetCharacter(e)) { + var i = e.lastIntValue + return -1 !== s && -1 !== i && s > i && e.raise('Range out of order in character class'), !0 + } + e.pos = t + } + return !1 + }), + (Ih.regexp_eatClassSetOperand = function (e) { + return this.regexp_eatClassSetCharacter(e) ? 1 : this.regexp_eatClassStringDisjunction(e) || this.regexp_eatNestedClass(e) + }), + (Ih.regexp_eatNestedClass = function (e) { + var t = e.pos + if (e.eat(91)) { + var s = e.eat(94), + i = this.regexp_classContents(e) + if (e.eat(93)) return s && 2 === i && e.raise('Negated character class may contain strings'), i + e.pos = t + } + if (e.eat(92)) { + var n = this.regexp_eatCharacterClassEscape(e) + if (n) return n + e.pos = t + } + return null + }), + (Ih.regexp_eatClassStringDisjunction = function (e) { + var t = e.pos + if (e.eatChars([92, 113])) { + if (e.eat(123)) { + var s = this.regexp_classStringDisjunctionContents(e) + if (e.eat(125)) return s + } else e.raise('Invalid escape') + e.pos = t + } + return null + }), + (Ih.regexp_classStringDisjunctionContents = function (e) { + for (var t = this.regexp_classString(e); e.eat(124); ) 2 === this.regexp_classString(e) && (t = 2) + return t + }), + (Ih.regexp_classString = function (e) { + for (var t = 0; this.regexp_eatClassSetCharacter(e); ) t++ + return 1 === t ? 1 : 2 + }), + (Ih.regexp_eatClassSetCharacter = function (e) { + var t = e.pos + if (e.eat(92)) return !(!this.regexp_eatCharacterEscape(e) && !this.regexp_eatClassSetReservedPunctuator(e)) || (e.eat(98) ? ((e.lastIntValue = 8), !0) : ((e.pos = t), !1)) + var s = e.current() + return ( + !( + s < 0 || + (s === e.lookahead() && + (function (e) { + return 33 === e || (e >= 35 && e <= 38) || (e >= 42 && e <= 44) || 46 === e || (e >= 58 && e <= 64) || 94 === e || 96 === e || 126 === e + })(s)) + ) && + !(function (e) { + return 40 === e || 41 === e || 45 === e || 47 === e || (e >= 91 && e <= 93) || (e >= 123 && e <= 125) + })(s) && + (e.advance(), (e.lastIntValue = s), !0) + ) + }), + (Ih.regexp_eatClassSetReservedPunctuator = function (e) { + var t = e.current() + return ( + !!(function (e) { + return 33 === e || 35 === e || 37 === e || 38 === e || 44 === e || 45 === e || (e >= 58 && e <= 62) || 64 === e || 96 === e || 126 === e + })(t) && ((e.lastIntValue = t), e.advance(), !0) + ) + }), + (Ih.regexp_eatClassControlLetter = function (e) { + var t = e.current() + return !(!_h(t) && 95 !== t) && ((e.lastIntValue = t % 32), e.advance(), !0) + }), + (Ih.regexp_eatHexEscapeSequence = function (e) { + var t = e.pos + if (e.eat(120)) { + if (this.regexp_eatFixedHexDigits(e, 2)) return !0 + e.switchU && e.raise('Invalid escape'), (e.pos = t) + } + return !1 + }), + (Ih.regexp_eatDecimalDigits = function (e) { + var t = e.pos, + s = 0 + for (e.lastIntValue = 0; _h((s = e.current())); ) (e.lastIntValue = 10 * e.lastIntValue + (s - 48)), e.advance() + return e.pos !== t + }), + (Ih.regexp_eatHexDigits = function (e) { + var t = e.pos, + s = 0 + for (e.lastIntValue = 0; Rh((s = e.current())); ) (e.lastIntValue = 16 * e.lastIntValue + Mh(s)), e.advance() + return e.pos !== t + }), + (Ih.regexp_eatLegacyOctalEscapeSequence = function (e) { + if (this.regexp_eatOctalDigit(e)) { + var t = e.lastIntValue + if (this.regexp_eatOctalDigit(e)) { + var s = e.lastIntValue + t <= 3 && this.regexp_eatOctalDigit(e) ? (e.lastIntValue = 64 * t + 8 * s + e.lastIntValue) : (e.lastIntValue = 8 * t + s) + } else e.lastIntValue = t + return !0 + } + return !1 + }), + (Ih.regexp_eatOctalDigit = function (e) { + var t = e.current() + return Oh(t) ? ((e.lastIntValue = t - 48), e.advance(), !0) : ((e.lastIntValue = 0), !1) + }), + (Ih.regexp_eatFixedHexDigits = function (e, t) { + var s = e.pos + e.lastIntValue = 0 + for (var i = 0; i < t; ++i) { + var n = e.current() + if (!Rh(n)) return (e.pos = s), !1 + ;(e.lastIntValue = 16 * e.lastIntValue + Mh(n)), e.advance() + } + return !0 + }) +var Dh = function (e) { + ;(this.type = e.type), + (this.value = e.value), + (this.start = e.start), + (this.end = e.end), + e.options.locations && (this.loc = new Nc(e, e.startLoc, e.endLoc)), + e.options.ranges && (this.range = [e.start, e.end]) + }, + Lh = Tc.prototype +function Th(e) { + return 'function' != typeof BigInt ? null : BigInt(e.replace(/_/g, '')) +} +;(Lh.next = function (e) { + !e && this.type.keyword && this.containsEsc && this.raiseRecoverable(this.start, 'Escape sequence in keyword ' + this.type.keyword), + this.options.onToken && this.options.onToken(new Dh(this)), + (this.lastTokEnd = this.end), + (this.lastTokStart = this.start), + (this.lastTokEndLoc = this.endLoc), + (this.lastTokStartLoc = this.startLoc), + this.nextToken() +}), + (Lh.getToken = function () { + return this.next(), new Dh(this) + }), + 'undefined' != typeof Symbol && + (Lh[Symbol.iterator] = function () { + var e = this + return { + next: function () { + var t = e.getToken() + return { done: t.type === fc.eof, value: t } + } + } + }), + (Lh.nextToken = function () { + var e = this.curContext() + return ( + (e && e.preserveSpace) || this.skipSpace(), + (this.start = this.pos), + this.options.locations && (this.startLoc = this.curPosition()), + this.pos >= this.input.length ? this.finishToken(fc.eof) : e.override ? e.override(this) : void this.readToken(this.fullCharCodeAtPos()) + ) + }), + (Lh.readToken = function (e) { + return oc(e, this.options.ecmaVersion >= 6) || 92 === e ? this.readWord() : this.getTokenFromCode(e) + }), + (Lh.fullCharCodeAtPos = function () { + var e = this.input.charCodeAt(this.pos) + if (e <= 55295 || e >= 56320) return e + var t = this.input.charCodeAt(this.pos + 1) + return t <= 56319 || t >= 57344 ? e : (e << 10) + t - 56613888 + }), + (Lh.skipBlockComment = function () { + var e = this.options.onComment && this.curPosition(), + t = this.pos, + s = this.input.indexOf('*/', (this.pos += 2)) + if ((-1 === s && this.raise(this.pos - 2, 'Unterminated comment'), (this.pos = s + 2), this.options.locations)) + for (var i = void 0, n = t; (i = xc(this.input, n, this.pos)) > -1; ) ++this.curLine, (n = this.lineStart = i) + this.options.onComment && this.options.onComment(!0, this.input.slice(t + 2, s), t, this.pos, e, this.curPosition()) + }), + (Lh.skipLineComment = function (e) { + for (var t = this.pos, s = this.options.onComment && this.curPosition(), i = this.input.charCodeAt((this.pos += e)); this.pos < this.input.length && !yc(i); ) i = this.input.charCodeAt(++this.pos) + this.options.onComment && this.options.onComment(!1, this.input.slice(t + e, this.pos), t, this.pos, s, this.curPosition()) + }), + (Lh.skipSpace = function () { + e: for (; this.pos < this.input.length; ) { + var e = this.input.charCodeAt(this.pos) + switch (e) { + case 32: + case 160: + ++this.pos + break + case 13: + 10 === this.input.charCodeAt(this.pos + 1) && ++this.pos + case 10: + case 8232: + case 8233: + ++this.pos, this.options.locations && (++this.curLine, (this.lineStart = this.pos)) + break + case 47: + switch (this.input.charCodeAt(this.pos + 1)) { + case 42: + this.skipBlockComment() + break + case 47: + this.skipLineComment(2) + break + default: + break e + } + break + default: + if (!((e > 8 && e < 14) || (e >= 5760 && Ec.test(String.fromCharCode(e))))) break e + ++this.pos + } + } + }), + (Lh.finishToken = function (e, t) { + ;(this.end = this.pos), this.options.locations && (this.endLoc = this.curPosition()) + var s = this.type + ;(this.type = e), (this.value = t), this.updateContext(s) + }), + (Lh.readToken_dot = function () { + var e = this.input.charCodeAt(this.pos + 1) + if (e >= 48 && e <= 57) return this.readNumber(!0) + var t = this.input.charCodeAt(this.pos + 2) + return this.options.ecmaVersion >= 6 && 46 === e && 46 === t ? ((this.pos += 3), this.finishToken(fc.ellipsis)) : (++this.pos, this.finishToken(fc.dot)) + }), + (Lh.readToken_slash = function () { + var e = this.input.charCodeAt(this.pos + 1) + return this.exprAllowed ? (++this.pos, this.readRegexp()) : 61 === e ? this.finishOp(fc.assign, 2) : this.finishOp(fc.slash, 1) + }), + (Lh.readToken_mult_modulo_exp = function (e) { + var t = this.input.charCodeAt(this.pos + 1), + s = 1, + i = 42 === e ? fc.star : fc.modulo + return ( + this.options.ecmaVersion >= 7 && 42 === e && 42 === t && (++s, (i = fc.starstar), (t = this.input.charCodeAt(this.pos + 2))), 61 === t ? this.finishOp(fc.assign, s + 1) : this.finishOp(i, s) + ) + }), + (Lh.readToken_pipe_amp = function (e) { + var t = this.input.charCodeAt(this.pos + 1) + if (t === e) { + if (this.options.ecmaVersion >= 12) if (61 === this.input.charCodeAt(this.pos + 2)) return this.finishOp(fc.assign, 3) + return this.finishOp(124 === e ? fc.logicalOR : fc.logicalAND, 2) + } + return 61 === t ? this.finishOp(fc.assign, 2) : this.finishOp(124 === e ? fc.bitwiseOR : fc.bitwiseAND, 1) + }), + (Lh.readToken_caret = function () { + return 61 === this.input.charCodeAt(this.pos + 1) ? this.finishOp(fc.assign, 2) : this.finishOp(fc.bitwiseXOR, 1) + }), + (Lh.readToken_plus_min = function (e) { + var t = this.input.charCodeAt(this.pos + 1) + return t === e + ? 45 !== t || this.inModule || 62 !== this.input.charCodeAt(this.pos + 2) || (0 !== this.lastTokEnd && !mc.test(this.input.slice(this.lastTokEnd, this.pos))) + ? this.finishOp(fc.incDec, 2) + : (this.skipLineComment(3), this.skipSpace(), this.nextToken()) + : 61 === t + ? this.finishOp(fc.assign, 2) + : this.finishOp(fc.plusMin, 1) + }), + (Lh.readToken_lt_gt = function (e) { + var t = this.input.charCodeAt(this.pos + 1), + s = 1 + return t === e + ? ((s = 62 === e && 62 === this.input.charCodeAt(this.pos + 2) ? 3 : 2), 61 === this.input.charCodeAt(this.pos + s) ? this.finishOp(fc.assign, s + 1) : this.finishOp(fc.bitShift, s)) + : 33 !== t || 60 !== e || this.inModule || 45 !== this.input.charCodeAt(this.pos + 2) || 45 !== this.input.charCodeAt(this.pos + 3) + ? (61 === t && (s = 2), this.finishOp(fc.relational, s)) + : (this.skipLineComment(4), this.skipSpace(), this.nextToken()) + }), + (Lh.readToken_eq_excl = function (e) { + var t = this.input.charCodeAt(this.pos + 1) + return 61 === t + ? this.finishOp(fc.equality, 61 === this.input.charCodeAt(this.pos + 2) ? 3 : 2) + : 61 === e && 62 === t && this.options.ecmaVersion >= 6 + ? ((this.pos += 2), this.finishToken(fc.arrow)) + : this.finishOp(61 === e ? fc.eq : fc.prefix, 1) + }), + (Lh.readToken_question = function () { + var e = this.options.ecmaVersion + if (e >= 11) { + var t = this.input.charCodeAt(this.pos + 1) + if (46 === t) { + var s = this.input.charCodeAt(this.pos + 2) + if (s < 48 || s > 57) return this.finishOp(fc.questionDot, 2) + } + if (63 === t) { + if (e >= 12) if (61 === this.input.charCodeAt(this.pos + 2)) return this.finishOp(fc.assign, 3) + return this.finishOp(fc.coalesce, 2) + } + } + return this.finishOp(fc.question, 1) + }), + (Lh.readToken_numberSign = function () { + var e = 35 + if (this.options.ecmaVersion >= 13 && (++this.pos, oc((e = this.fullCharCodeAtPos()), !0) || 92 === e)) return this.finishToken(fc.privateId, this.readWord1()) + this.raise(this.pos, "Unexpected character '" + Pc(e) + "'") + }), + (Lh.getTokenFromCode = function (e) { + switch (e) { + case 46: + return this.readToken_dot() + case 40: + return ++this.pos, this.finishToken(fc.parenL) + case 41: + return ++this.pos, this.finishToken(fc.parenR) + case 59: + return ++this.pos, this.finishToken(fc.semi) + case 44: + return ++this.pos, this.finishToken(fc.comma) + case 91: + return ++this.pos, this.finishToken(fc.bracketL) + case 93: + return ++this.pos, this.finishToken(fc.bracketR) + case 123: + return ++this.pos, this.finishToken(fc.braceL) + case 125: + return ++this.pos, this.finishToken(fc.braceR) + case 58: + return ++this.pos, this.finishToken(fc.colon) + case 96: + if (this.options.ecmaVersion < 6) break + return ++this.pos, this.finishToken(fc.backQuote) + case 48: + var t = this.input.charCodeAt(this.pos + 1) + if (120 === t || 88 === t) return this.readRadixNumber(16) + if (this.options.ecmaVersion >= 6) { + if (111 === t || 79 === t) return this.readRadixNumber(8) + if (98 === t || 66 === t) return this.readRadixNumber(2) + } + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + return this.readNumber(!1) + case 34: + case 39: + return this.readString(e) + case 47: + return this.readToken_slash() + case 37: + case 42: + return this.readToken_mult_modulo_exp(e) + case 124: + case 38: + return this.readToken_pipe_amp(e) + case 94: + return this.readToken_caret() + case 43: + case 45: + return this.readToken_plus_min(e) + case 60: + case 62: + return this.readToken_lt_gt(e) + case 61: + case 33: + return this.readToken_eq_excl(e) + case 63: + return this.readToken_question() + case 126: + return this.finishOp(fc.prefix, 1) + case 35: + return this.readToken_numberSign() + } + this.raise(this.pos, "Unexpected character '" + Pc(e) + "'") + }), + (Lh.finishOp = function (e, t) { + var s = this.input.slice(this.pos, this.pos + t) + return (this.pos += t), this.finishToken(e, s) + }), + (Lh.readRegexp = function () { + for (var e, t, s = this.pos; ; ) { + this.pos >= this.input.length && this.raise(s, 'Unterminated regular expression') + var i = this.input.charAt(this.pos) + if ((mc.test(i) && this.raise(s, 'Unterminated regular expression'), e)) e = !1 + else { + if ('[' === i) t = !0 + else if (']' === i && t) t = !1 + else if ('/' === i && !t) break + e = '\\' === i + } + ++this.pos + } + var n = this.input.slice(s, this.pos) + ++this.pos + var r = this.pos, + o = this.readWord1() + this.containsEsc && this.unexpected(r) + var a = this.regexpState || (this.regexpState = new wh(this)) + a.reset(s, n, o), this.validateRegExpFlags(a), this.validateRegExpPattern(a) + var l = null + try { + l = new RegExp(n, o) + } catch (e) {} + return this.finishToken(fc.regexp, { pattern: n, flags: o, value: l }) + }), + (Lh.readInt = function (e, t, s) { + for ( + var i = this.options.ecmaVersion >= 12 && void 0 === t, n = s && 48 === this.input.charCodeAt(this.pos), r = this.pos, o = 0, a = 0, l = 0, c = null == t ? 1 / 0 : t; + l < c; + ++l, ++this.pos + ) { + var h = this.input.charCodeAt(this.pos), + u = void 0 + if (i && 95 === h) + n && this.raiseRecoverable(this.pos, 'Numeric separator is not allowed in legacy octal numeric literals'), + 95 === a && this.raiseRecoverable(this.pos, 'Numeric separator must be exactly one underscore'), + 0 === l && this.raiseRecoverable(this.pos, 'Numeric separator is not allowed at the first of digits'), + (a = h) + else { + if ((u = h >= 97 ? h - 97 + 10 : h >= 65 ? h - 65 + 10 : h >= 48 && h <= 57 ? h - 48 : 1 / 0) >= e) break + ;(a = h), (o = o * e + u) + } + } + return i && 95 === a && this.raiseRecoverable(this.pos - 1, 'Numeric separator is not allowed at the last of digits'), this.pos === r || (null != t && this.pos - r !== t) ? null : o + }), + (Lh.readRadixNumber = function (e) { + var t = this.pos + this.pos += 2 + var s = this.readInt(e) + return ( + null == s && this.raise(this.start + 2, 'Expected number in radix ' + e), + this.options.ecmaVersion >= 11 && 110 === this.input.charCodeAt(this.pos) + ? ((s = Th(this.input.slice(t, this.pos))), ++this.pos) + : oc(this.fullCharCodeAtPos()) && this.raise(this.pos, 'Identifier directly after number'), + this.finishToken(fc.num, s) + ) + }), + (Lh.readNumber = function (e) { + var t = this.pos + e || null !== this.readInt(10, void 0, !0) || this.raise(t, 'Invalid number') + var s = this.pos - t >= 2 && 48 === this.input.charCodeAt(t) + s && this.strict && this.raise(t, 'Invalid number') + var i = this.input.charCodeAt(this.pos) + if (!s && !e && this.options.ecmaVersion >= 11 && 110 === i) { + var n = Th(this.input.slice(t, this.pos)) + return ++this.pos, oc(this.fullCharCodeAtPos()) && this.raise(this.pos, 'Identifier directly after number'), this.finishToken(fc.num, n) + } + s && /[89]/.test(this.input.slice(t, this.pos)) && (s = !1), + 46 !== i || s || (++this.pos, this.readInt(10), (i = this.input.charCodeAt(this.pos))), + (69 !== i && 101 !== i) || s || ((43 !== (i = this.input.charCodeAt(++this.pos)) && 45 !== i) || ++this.pos, null === this.readInt(10) && this.raise(t, 'Invalid number')), + oc(this.fullCharCodeAtPos()) && this.raise(this.pos, 'Identifier directly after number') + var r, + o = ((r = this.input.slice(t, this.pos)), s ? parseInt(r, 8) : parseFloat(r.replace(/_/g, ''))) + return this.finishToken(fc.num, o) + }), + (Lh.readCodePoint = function () { + var e + if (123 === this.input.charCodeAt(this.pos)) { + this.options.ecmaVersion < 6 && this.unexpected() + var t = ++this.pos + ;(e = this.readHexChar(this.input.indexOf('}', this.pos) - this.pos)), ++this.pos, e > 1114111 && this.invalidStringToken(t, 'Code point out of bounds') + } else e = this.readHexChar(4) + return e + }), + (Lh.readString = function (e) { + for (var t = '', s = ++this.pos; ; ) { + this.pos >= this.input.length && this.raise(this.start, 'Unterminated string constant') + var i = this.input.charCodeAt(this.pos) + if (i === e) break + 92 === i + ? ((t += this.input.slice(s, this.pos)), (t += this.readEscapedChar(!1)), (s = this.pos)) + : 8232 === i || 8233 === i + ? (this.options.ecmaVersion < 10 && this.raise(this.start, 'Unterminated string constant'), ++this.pos, this.options.locations && (this.curLine++, (this.lineStart = this.pos))) + : (yc(i) && this.raise(this.start, 'Unterminated string constant'), ++this.pos) + } + return (t += this.input.slice(s, this.pos++)), this.finishToken(fc.string, t) + }) +var Vh = {} +;(Lh.tryReadTemplateToken = function () { + this.inTemplateElement = !0 + try { + this.readTmplToken() + } catch (e) { + if (e !== Vh) throw e + this.readInvalidTemplateToken() + } + this.inTemplateElement = !1 +}), + (Lh.invalidStringToken = function (e, t) { + if (this.inTemplateElement && this.options.ecmaVersion >= 9) throw Vh + this.raise(e, t) + }), + (Lh.readTmplToken = function () { + for (var e = '', t = this.pos; ; ) { + this.pos >= this.input.length && this.raise(this.start, 'Unterminated template') + var s = this.input.charCodeAt(this.pos) + if (96 === s || (36 === s && 123 === this.input.charCodeAt(this.pos + 1))) + return this.pos !== this.start || (this.type !== fc.template && this.type !== fc.invalidTemplate) + ? ((e += this.input.slice(t, this.pos)), this.finishToken(fc.template, e)) + : 36 === s + ? ((this.pos += 2), this.finishToken(fc.dollarBraceL)) + : (++this.pos, this.finishToken(fc.backQuote)) + if (92 === s) (e += this.input.slice(t, this.pos)), (e += this.readEscapedChar(!0)), (t = this.pos) + else if (yc(s)) { + switch (((e += this.input.slice(t, this.pos)), ++this.pos, s)) { + case 13: + 10 === this.input.charCodeAt(this.pos) && ++this.pos + case 10: + e += '\n' + break + default: + e += String.fromCharCode(s) + } + this.options.locations && (++this.curLine, (this.lineStart = this.pos)), (t = this.pos) + } else ++this.pos + } + }), + (Lh.readInvalidTemplateToken = function () { + for (; this.pos < this.input.length; this.pos++) + switch (this.input[this.pos]) { + case '\\': + ++this.pos + break + case '$': + if ('{' !== this.input[this.pos + 1]) break + case '`': + return this.finishToken(fc.invalidTemplate, this.input.slice(this.start, this.pos)) + } + this.raise(this.start, 'Unterminated template') + }), + (Lh.readEscapedChar = function (e) { + var t = this.input.charCodeAt(++this.pos) + switch ((++this.pos, t)) { + case 110: + return '\n' + case 114: + return '\r' + case 120: + return String.fromCharCode(this.readHexChar(2)) + case 117: + return Pc(this.readCodePoint()) + case 116: + return '\t' + case 98: + return '\b' + case 118: + return '\v' + case 102: + return '\f' + case 13: + 10 === this.input.charCodeAt(this.pos) && ++this.pos + case 10: + return this.options.locations && ((this.lineStart = this.pos), ++this.curLine), '' + case 56: + case 57: + if ((this.strict && this.invalidStringToken(this.pos - 1, 'Invalid escape sequence'), e)) { + var s = this.pos - 1 + this.invalidStringToken(s, 'Invalid escape sequence in template string') + } + default: + if (t >= 48 && t <= 55) { + var i = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0], + n = parseInt(i, 8) + return ( + n > 255 && ((i = i.slice(0, -1)), (n = parseInt(i, 8))), + (this.pos += i.length - 1), + (t = this.input.charCodeAt(this.pos)), + ('0' === i && 56 !== t && 57 !== t) || (!this.strict && !e) || this.invalidStringToken(this.pos - 1 - i.length, e ? 'Octal literal in template string' : 'Octal literal in strict mode'), + String.fromCharCode(n) + ) + } + return yc(t) ? '' : String.fromCharCode(t) + } + }), + (Lh.readHexChar = function (e) { + var t = this.pos, + s = this.readInt(16, e) + return null === s && this.invalidStringToken(t, 'Bad character escape sequence'), s + }), + (Lh.readWord1 = function () { + this.containsEsc = !1 + for (var e = '', t = !0, s = this.pos, i = this.options.ecmaVersion >= 6; this.pos < this.input.length; ) { + var n = this.fullCharCodeAtPos() + if (ac(n, i)) this.pos += n <= 65535 ? 1 : 2 + else { + if (92 !== n) break + ;(this.containsEsc = !0), (e += this.input.slice(s, this.pos)) + var r = this.pos + 117 !== this.input.charCodeAt(++this.pos) && this.invalidStringToken(this.pos, 'Expecting Unicode escape sequence \\uXXXX'), ++this.pos + var o = this.readCodePoint() + ;(t ? oc : ac)(o, i) || this.invalidStringToken(r, 'Invalid Unicode escape'), (e += Pc(o)), (s = this.pos) + } + t = !1 + } + return e + this.input.slice(s, this.pos) + }), + (Lh.readWord = function () { + var e = this.readWord1(), + t = fc.name + return this.keywords.test(e) && (t = dc[e]), this.finishToken(t, e) + }) +var Bh = '8.10.0' +Tc.acorn = { + Parser: Tc, + version: Bh, + defaultOptions: Rc, + Position: $c, + SourceLocation: Nc, + getLineInfo: _c, + Node: oh, + TokenType: lc, + tokTypes: fc, + keywordTypes: dc, + TokContext: Qc, + tokContexts: Zc, + isIdentifierChar: ac, + isIdentifierStart: oc, + Token: Dh, + isNewLine: yc, + lineBreak: mc, + lineBreakG: gc, + nonASCIIwhitespace: Ec +} +var zh = Object.freeze({ + __proto__: null, + Node: oh, + Parser: Tc, + Position: $c, + SourceLocation: Nc, + TokContext: Qc, + Token: Dh, + TokenType: lc, + defaultOptions: Rc, + getLineInfo: _c, + isIdentifierChar: ac, + isIdentifierStart: oc, + isNewLine: yc, + keywordTypes: dc, + lineBreak: mc, + lineBreakG: gc, + nonASCIIwhitespace: Ec, + parse: function (e, t) { + return Tc.parse(e, t) + }, + parseExpressionAt: function (e, t, s) { + return Tc.parseExpressionAt(e, t, s) + }, + tokContexts: Zc, + tokTypes: fc, + tokenizer: function (e, t) { + return Tc.tokenizer(e, t) + }, + version: Bh +}) +const Fh = (e) => () => + Qe( + (function (e) { + return { + code: 'NO_FS_IN_BROWSER', + message: `Cannot access the file system (via "${e}") when using the browser build of Rollup. Make sure you supply a plugin with custom resolveId and load hooks to Rollup.`, + url: De('plugin-development/#a-simple-example') + } + })(e) + ), + jh = Fh('fs.mkdir'), + Uh = Fh('fs.readFile'), + Gh = Fh('fs.writeFile') +async function Wh(e, t, s, i, n, r, o, a, l) { + const c = await (function (e, t, s, i, n, r, o, a) { + let l = null, + c = null + if (n) { + l = new Set() + for (const s of n) e === s.source && t === s.importer && l.add(s.plugin) + c = (e, t) => ({ ...e, resolve: (e, s, { assertions: r, custom: o, isEntry: a, skipSelf: l } = me) => i(e, s, o, a, r || ge, l ? [...n, { importer: s, plugin: t, source: e }] : n) }) + } + return s.hookFirstAndGetPlugin('resolveId', [e, t, { assertions: a, custom: r, isEntry: o }], c, l) + })(e, t, i, n, r, o, a, l) + return null == c ? Fh('path.resolve')() : c[0] +} +const qh = 'at position ', + Hh = 'at output position ' +const Kh = { delete: () => !1, get() {}, has: () => !1, set() {} } +function Yh(e) { + return e.startsWith(qh) || e.startsWith(Hh) + ? Qe({ code: tt, message: 'A plugin is trying to use the Rollup cache but is not declaring a plugin name or cacheKey.' }) + : Qe({ + code: at, + message: `The plugin name ${e} is being used twice in the same build. Plugin names must be distinct or provide a cacheKey (please post an issue to the plugin if you are a plugin user).` + }) +} +const Xh = (e, t, s = tu) => { + const { onwarn: i, onLog: n } = e, + r = Qh(s, i) + if (n) { + const e = we[t] + return (t, s) => + n(t, Zh(s), (t, s) => { + if ('error' === t) return Qe(Jh(s)) + we[t] >= e && r(t, Jh(s)) + }) + } + return r + }, + Qh = (e, t) => + t + ? (s, i) => { + s === Ae ? t(Zh(i), (t) => e(Ae, Jh(t))) : e(s, i) + } + : e, + Zh = (e) => (Object.defineProperty(e, 'toString', { value: () => eu(e), writable: !0 }), e), + Jh = (e) => ('string' == typeof e ? { message: e } : 'function' == typeof e ? Jh(e()) : e), + eu = (e) => { + let t = '' + return e.plugin && (t += `(${e.plugin} plugin) `), e.loc && (t += `${V(e.loc.file)} (${e.loc.line}:${e.loc.column}) `), t + e.message + }, + tu = (e, t) => { + const s = eu(t) + switch (e) { + case Ae: + return console.warn(s) + case Ie: + return console.debug(s) + default: + return console.info(s) + } + } +function su(e, t, s, i, n = /$./) { + const r = new Set(t), + o = Object.keys(e).filter((e) => !(r.has(e) || n.test(e))) + o.length > 0 && + i( + Ae, + (function (e, t, s) { + return { code: $t, message: `Unknown ${e}: ${t.join(', ')}. Allowed options: ${s.join(', ')}` } + })(s, o, [...r].sort()) + ) +} +const iu = { + recommended: { + annotations: !0, + correctVarValueBeforeDeclaration: !1, + manualPureFunctions: ye, + moduleSideEffects: () => !0, + propertyReadSideEffects: !0, + tryCatchDeoptimization: !0, + unknownGlobalSideEffects: !1 + }, + safest: { + annotations: !0, + correctVarValueBeforeDeclaration: !0, + manualPureFunctions: ye, + moduleSideEffects: () => !0, + propertyReadSideEffects: !0, + tryCatchDeoptimization: !0, + unknownGlobalSideEffects: !0 + }, + smallest: { + annotations: !0, + correctVarValueBeforeDeclaration: !1, + manualPureFunctions: ye, + moduleSideEffects: () => !1, + propertyReadSideEffects: !1, + tryCatchDeoptimization: !1, + unknownGlobalSideEffects: !1 + } + }, + nu = { + es2015: { arrowFunctions: !0, constBindings: !0, objectShorthand: !0, reservedNamesAsProps: !0, symbols: !0 }, + es5: { arrowFunctions: !1, constBindings: !1, objectShorthand: !1, reservedNamesAsProps: !0, symbols: !1 } + }, + ru = (e, t, s, i, n) => { + const r = e?.preset + if (r) { + const n = t[r] + if (n) return { ...n, ...e } + Qe(jt(`${s}.preset`, i, `valid values are ${Oe(Object.keys(t))}`, r)) + } + return ((e, t, s, i) => (n) => { + if ('string' == typeof n) { + const r = e[n] + if (r) return r + Qe(jt(t, s, `valid values are ${i}${Oe(Object.keys(e))}. You can also supply an object for more fine-grained control`, n)) + } + return ((e) => (e && 'object' == typeof e ? e : {}))(n) + })( + t, + s, + i, + n + )(e) + }, + ou = async (e) => + ( + await (async function (e) { + do { + e = (await Promise.all(e)).flat(1 / 0) + } while (e.some((e) => e?.then)) + return e + })([e]) + ).filter(Boolean) +async function au(e, t, s, i) { + const n = t.id, + r = [] + let o = null === e.map ? null : Ao(e.map) + const a = e.code + let c = e.ast + const h = [], + u = [] + let d = !1 + const p = () => (d = !0) + let f = '', + m = e.code + const g = (e) => (t, s) => { + ;(t = Jh(t)), s && Ze(t, s, m, n), (t.id = n), (t.hook = 'transform'), e(t) + } + let x + try { + x = await s.hookReduceArg0( + 'transform', + [m, n], + function (e, s, n) { + let o, a + if ('string' == typeof s) o = s + else { + if (!s || 'object' != typeof s) return e + if ((t.updateOptions(s), null == s.code)) + return ( + (s.map || s.ast) && + i( + Ae, + (function (e) { + return { code: kt, message: `The plugin "${e}" returned a "map" or "ast" without returning a "code". This will be ignored.` } + })(n.name) + ), + e + ) + ;({ code: o, map: a, ast: c } = s) + } + return null !== a && r.push(Ao('string' == typeof a ? JSON.parse(a) : a) || { missing: !0, plugin: n.name }), (m = o), o + }, + (e, t) => { + return ( + (f = t.name), + { + ...e, + addWatchFile(t) { + h.push(t), e.addWatchFile(t) + }, + cache: d ? e.cache : ((c = e.cache), (x = p), { delete: (e) => (x(), c.delete(e)), get: (e) => (x(), c.get(e)), has: (e) => (x(), c.has(e)), set: (e, t) => (x(), c.set(e, t)) }), + debug: g(e.debug), + emitFile: (e) => (u.push(e), s.emitFile(e)), + error: (t, s) => ('string' == typeof t && (t = { message: t }), s && Ze(t, s, m, n), (t.id = n), (t.hook = 'transform'), e.error(t)), + getCombinedSourcemap() { + const e = (function (e, t, s, i, n) { + return 0 === i.length ? s : Ao({ version: 3, ...rl(e, t, s, i, nl(n)).traceMappings() }) + })(n, a, o, r, i) + if (!e) { + return new y(a).generateMap({ hires: !0, includeContent: !0, source: n }) + } + return o !== e && ((o = e), (r.length = 0)), new l({ ...e, file: null, sourcesContent: e.sourcesContent }) + }, + info: g(e.info), + setAssetSource() { + return this.error({ code: gt, message: 'setAssetSource cannot be called in transform for caching reasons. Use emitFile with a source, or call setAssetSource in another hook.' }) + }, + warn: g(e.warn) + } + ) + var c, x + } + ) + } catch (e) { + return Qe(qt(e, f, { hook: 'transform', id: n })) + } + return !d && u.length > 0 && (t.transformFiles = u), { ast: c, code: x, customTransformCache: d, originalCode: a, originalSourcemap: o, sourcemapChain: r, transformDependencies: h } +} +const lu = 'resolveDependencies' +class cu { + constructor(e, t, s, i) { + ;(this.graph = e), + (this.modulesById = t), + (this.options = s), + (this.pluginDriver = i), + (this.implicitEntryModules = new Set()), + (this.indexedEntryModules = []), + (this.latestLoadModulesPromise = Promise.resolve()), + (this.moduleLoadPromises = new Map()), + (this.modulesWithLoadedDependencies = new Set()), + (this.nextChunkNamePriority = 0), + (this.nextEntryModuleIndex = 0), + (this.resolveId = async (e, t, s, i, n, r = null) => + this.getResolvedIdWithDefaults( + this.getNormalizedResolvedIdWithoutDefaults( + !this.options.external(e, t, !1) && (await Wh(e, t, this.options.preserveSymlinks, this.pluginDriver, this.resolveId, r, s, 'boolean' == typeof i ? i : !t, n)), + t, + e + ), + n + )), + (this.hasModuleSideEffects = s.treeshake ? s.treeshake.moduleSideEffects : () => !0) + } + async addAdditionalModules(e, t) { + const s = this.extendLoadModulesPromise(Promise.all(e.map((e) => this.loadEntryModule(e, !1, void 0, null, t)))) + return await this.awaitLoadModulesPromise(), s + } + async addEntryModules(e, t) { + const s = this.nextEntryModuleIndex + this.nextEntryModuleIndex += e.length + const i = this.nextChunkNamePriority + this.nextChunkNamePriority += e.length + const n = await this.extendLoadModulesPromise( + Promise.all(e.map(({ id: e, importer: t }) => this.loadEntryModule(e, !0, t, null))).then((n) => { + for (const [r, o] of n.entries()) { + ;(o.isUserDefinedEntryPoint = o.isUserDefinedEntryPoint || t), uu(o, e[r], t, i + r) + const n = this.indexedEntryModules.find((e) => e.module === o) + n ? (n.index = Math.min(n.index, s + r)) : this.indexedEntryModules.push({ index: s + r, module: o }) + } + return this.indexedEntryModules.sort(({ index: e }, { index: t }) => (e > t ? 1 : -1)), n + }) + ) + return await this.awaitLoadModulesPromise(), { entryModules: this.indexedEntryModules.map(({ module: e }) => e), implicitEntryModules: [...this.implicitEntryModules], newEntryModules: n } + } + async emitChunk({ fileName: e, id: t, importer: s, name: i, implicitlyLoadedAfterOneOf: n, preserveSignature: r }) { + const o = { fileName: e || null, id: t, importer: s, name: i || null }, + a = n ? await this.addEntryWithImplicitDependants(o, n) : (await this.addEntryModules([o], !1)).newEntryModules[0] + return null != r && (a.preserveSignature = r), a + } + async preloadModule(e) { + return (await this.fetchModule(this.getResolvedIdWithDefaults(e, ge), void 0, !1, !e.resolveDependencies || lu)).info + } + addEntryWithImplicitDependants(e, t) { + const s = this.nextChunkNamePriority++ + return this.extendLoadModulesPromise( + this.loadEntryModule(e.id, !1, e.importer, null).then(async (i) => { + if ((uu(i, e, !1, s), !i.info.isEntry)) { + this.implicitEntryModules.add(i) + const s = await Promise.all(t.map((t) => this.loadEntryModule(t, !1, e.importer, i.id))) + for (const e of s) i.implicitlyLoadedAfter.add(e) + for (const e of i.implicitlyLoadedAfter) e.implicitlyLoadedBefore.add(i) + } + return i + }) + ) + } + async addModuleSource(e, t, s) { + let i + try { + i = await this.graph.fileOperationQueue.run(async () => (await this.pluginDriver.hookFirst('load', [e])) ?? (await Uh(e, 'utf8'))) + } catch (s) { + let i = `Could not load ${e}` + throw (t && (i += ` (imported by ${V(t)})`), (i += `: ${s.message}`), (s.message = i), s) + } + const n = + 'string' == typeof i + ? { code: i } + : null != i && 'object' == typeof i && 'string' == typeof i.code + ? i + : Qe( + (function (e) { + return { code: 'BAD_LOADER', message: `Error loading "${V(e)}": plugin load hook should return a string, a { code, map } object, or nothing/null.` } + })(e) + ), + r = this.graph.cachedModules.get(e) + if ( + !r || + r.customTransformCache || + r.originalCode !== n.code || + (await this.pluginDriver.hookFirst('shouldTransformCachedModule', [ + { ast: r.ast, code: r.code, id: r.id, meta: r.meta, moduleSideEffects: r.moduleSideEffects, resolvedSources: r.resolvedIds, syntheticNamedExports: r.syntheticNamedExports } + ])) + ) + s.updateOptions(n), s.setSource(await au(n, s, this.pluginDriver, this.options.onLog)) + else { + if (r.transformFiles) for (const e of r.transformFiles) this.pluginDriver.emitFile(e) + s.setSource(r) + } + } + async awaitLoadModulesPromise() { + let e + do { + ;(e = this.latestLoadModulesPromise), await e + } while (e !== this.latestLoadModulesPromise) + } + extendLoadModulesPromise(e) { + return (this.latestLoadModulesPromise = Promise.all([e, this.latestLoadModulesPromise])), this.latestLoadModulesPromise.catch(() => {}), e + } + async fetchDynamicDependencies(e, t) { + const s = await Promise.all( + t.map((t) => t.then(async ([t, s]) => (null === s ? null : 'string' == typeof s ? ((t.resolution = s), null) : (t.resolution = await this.fetchResolvedDependency(V(s.id), e.id, s))))) + ) + for (const t of s) t && (e.dynamicDependencies.add(t), t.dynamicImporters.push(e.id)) + } + async fetchModule({ assertions: e, id: t, meta: s, moduleSideEffects: i, syntheticNamedExports: n }, r, o, a) { + const l = this.modulesById.get(t) + if (l instanceof jo) return r && wo(e, l.info.assertions) && this.options.onLog(Ae, Bt(l.info.assertions, e, t, r)), await this.handleExistingModule(l, o, a), l + if (l instanceof Jt) + return Qe({ + code: 'EXTERNAL_MODULES_CANNOT_BE_TRANSFORMED_TO_MODULES', + message: `${l.id} is resolved as a module now, but it was an external module before. Please check whether there are conflicts in your Rollup options "external" and "manualChunks", manualChunks cannot include external modules.` + }) + const c = new jo(this.graph, t, this.options, o, i, n, s, e) + this.modulesById.set(t, c), (this.graph.watchFiles[t] = !0) + const h = this.addModuleSource(t, r, c).then(() => [this.getResolveStaticDependencyPromises(c), this.getResolveDynamicImportPromises(c), u]), + u = pu(h).then(() => this.pluginDriver.hookParallel('moduleParsed', [c.info])) + u.catch(() => {}), this.moduleLoadPromises.set(c, h) + const d = await h + return a ? a === lu && (await u) : await this.fetchModuleDependencies(c, ...d), c + } + async fetchModuleDependencies(e, t, s, i) { + this.modulesWithLoadedDependencies.has(e) || + (this.modulesWithLoadedDependencies.add(e), await Promise.all([this.fetchStaticDependencies(e, t), this.fetchDynamicDependencies(e, s)]), e.linkImports(), await i) + } + fetchResolvedDependency(e, t, s) { + if (s.external) { + const { assertions: i, external: n, id: r, moduleSideEffects: o, meta: a } = s + let l = this.modulesById.get(r) + if (l) { + if (!(l instanceof Jt)) + return Qe( + (function (e, t) { + return { code: 'INVALID_EXTERNAL_ID', message: `"${e}" is imported as an external by "${V(t)}", but is already an existing non-external module id.` } + })(e, t) + ) + wo(l.info.assertions, i) && this.options.onLog(Ae, Bt(l.info.assertions, i, e, t)) + } else (l = new Jt(this.options, r, o, a, 'absolute' !== n && I(r), i)), this.modulesById.set(r, l) + return Promise.resolve(l) + } + return this.fetchModule(s, t, !1, !1) + } + async fetchStaticDependencies(e, t) { + for (const s of await Promise.all(t.map((t) => t.then(([t, s]) => this.fetchResolvedDependency(t, e.id, s))))) e.dependencies.add(s), s.importers.push(e.id) + if (!this.options.treeshake || 'no-treeshake' === e.info.moduleSideEffects) for (const t of e.dependencies) t instanceof jo && (t.importedFromNotTreeshaken = !0) + } + getNormalizedResolvedIdWithoutDefaults(e, t, s) { + const { makeAbsoluteExternalsRelative: i } = this.options + if (e) { + if ('object' == typeof e) { + const n = e.external || this.options.external(e.id, t, !0) + return { ...e, external: n && ('relative' === n || !I(e.id) || (!0 === n && du(e.id, s, i)) || 'absolute') } + } + const n = this.options.external(e, t, !0) + return { external: n && (du(e, s, i) || 'absolute'), id: n && i ? hu(e, t) : e } + } + const n = i ? hu(s, t) : s + return !1 === e || this.options.external(n, t, !0) ? { external: du(n, s, i) || 'absolute', id: n } : null + } + getResolveDynamicImportPromises(e) { + return e.dynamicImports.map(async (t) => { + const s = await this.resolveDynamicImport( + e, + 'string' == typeof t.argument ? t.argument : t.argument.esTreeNode, + e.id, + (function (e) { + const t = e.arguments?.[0]?.properties.find((e) => 'assert' === Io(e))?.value + if (!t) return ge + const s = t.properties + .map((e) => { + const t = Io(e) + return 'string' == typeof t && 'string' == typeof e.value.value ? [t, e.value.value] : null + }) + .filter((e) => !!e) + return s.length > 0 ? Object.fromEntries(s) : ge + })(t.node) + ) + return s && 'object' == typeof s && (t.id = s.id), [t, s] + }) + } + getResolveStaticDependencyPromises(e) { + return Array.from(e.sourcesWithAssertions, async ([t, s]) => [t, (e.resolvedIds[t] = e.resolvedIds[t] || this.handleInvalidResolvedId(await this.resolveId(t, e.id, ge, !1, s), t, e.id, s))]) + } + getResolvedIdWithDefaults(e, t) { + if (!e) return null + const s = e.external || !1 + return { + assertions: e.assertions || t, + external: s, + id: e.id, + meta: e.meta || {}, + moduleSideEffects: e.moduleSideEffects ?? this.hasModuleSideEffects(e.id, !!s), + resolvedBy: e.resolvedBy ?? 'rollup', + syntheticNamedExports: e.syntheticNamedExports ?? !1 + } + } + async handleExistingModule(e, t, s) { + const i = this.moduleLoadPromises.get(e) + if (s) return s === lu ? pu(i) : i + if (t) { + ;(e.info.isEntry = !0), this.implicitEntryModules.delete(e) + for (const t of e.implicitlyLoadedAfter) t.implicitlyLoadedBefore.delete(e) + e.implicitlyLoadedAfter.clear() + } + return this.fetchModuleDependencies(e, ...(await i)) + } + handleInvalidResolvedId(e, t, s, i) { + return null === e + ? w(t) + ? Qe( + (function (e, t) { + return { code: _t, exporter: e, id: t, message: `Could not resolve "${e}" from "${V(t)}"` } + })(t, s) + ) + : (this.options.onLog( + Ae, + (function (e, t) { + return { + code: _t, + exporter: e, + id: t, + message: `"${e}" is imported by "${V(t)}", but could not be resolved – treating it as an external dependency.`, + url: De('troubleshooting/#warning-treating-module-as-external-dependency') + } + })(t, s) + ), + { assertions: i, external: !0, id: t, meta: {}, moduleSideEffects: this.hasModuleSideEffects(t, !0), resolvedBy: 'rollup', syntheticNamedExports: !1 }) + : (e.external && + e.syntheticNamedExports && + this.options.onLog( + Ae, + (function (e, t) { + return { code: 'EXTERNAL_SYNTHETIC_EXPORTS', exporter: e, message: `External "${e}" cannot have "syntheticNamedExports" enabled (imported by "${V(t)}").` } + })(t, s) + ), + e) + } + async loadEntryModule(e, t, s, i, n = !1) { + const r = await Wh(e, s, this.options.preserveSymlinks, this.pluginDriver, this.resolveId, null, ge, !0, ge) + if (null == r) + return Qe( + null === i + ? (function (e) { + return { code: Nt, message: `Could not resolve entry module "${V(e)}".` } + })(e) + : (function (e, t) { + return { code: Et, message: `Module "${V(e)}" that should be implicitly loaded before "${V(t)}" could not be resolved.` } + })(e, i) + ) + const o = 'object' == typeof r && r.external + return !1 === r || o + ? Qe( + null === i + ? o && n + ? { + code: 'EXTERNAL_MODULES_CANNOT_BE_INCLUDED_IN_MANUAL_CHUNKS', + message: `"${e}" cannot be included in manualChunks because it is resolved as an external module by the "external" option or plugins.` + } + : (function (e) { + return { code: Nt, message: `Entry module "${V(e)}" cannot be external.` } + })(e) + : (function (e, t) { + return { code: Et, message: `Module "${V(e)}" that should be implicitly loaded before "${V(t)}" cannot be external.` } + })(e, i) + ) + : this.fetchModule(this.getResolvedIdWithDefaults('object' == typeof r ? r : { id: r }, ge), void 0, t, !1) + } + async resolveDynamicImport(e, t, s, i) { + const n = await this.pluginDriver.hookFirst('resolveDynamicImport', [t, s, { assertions: i }]) + if ('string' != typeof t) return 'string' == typeof n ? n : n ? this.getResolvedIdWithDefaults(n, i) : null + if (null == n) { + const n = e.resolvedIds[t] + return n ? (wo(n.assertions, i) && this.options.onLog(Ae, Bt(n.assertions, i, t, s)), n) : (e.resolvedIds[t] = this.handleInvalidResolvedId(await this.resolveId(t, e.id, ge, !1, i), t, e.id, i)) + } + return this.handleInvalidResolvedId(this.getResolvedIdWithDefaults(this.getNormalizedResolvedIdWithoutDefaults(n, s, t), i), t, s, i) + } +} +function hu(e, t) { + return w(e) ? (t ? R(t, '..', e) : R(e)) : e +} +function uu(e, { fileName: t, name: s }, i, n) { + if (null !== t) e.chunkFileNames.add(t) + else if (null !== s) { + let t = 0 + for (; e.chunkNames[t]?.priority < n; ) t++ + e.chunkNames.splice(t, 0, { isUserDefined: i, name: s, priority: n }) + } +} +function du(e, t, s) { + return !0 === s || ('ifRelativeSource' === s && w(t)) || !I(e) +} +async function pu(e) { + const [t, s] = await e + return Promise.all([...t, ...s]) +} +class fu extends Ti { + constructor() { + super(), (this.parent = null), this.variables.set('undefined', new co()) + } + findVariable(e) { + let t = this.variables.get(e) + return t || ((t = new ln(e)), this.variables.set(e, t)), t + } +} +function mu(e) { + return Gl().update(e).digest('hex') +} +function gu(e, t, s, i, n) { + const r = i.sanitizeFileName(e || 'asset') + return Ma( + Ra('function' == typeof i.assetFileNames ? i.assetFileNames({ name: e, source: t, type: 'asset' }) : i.assetFileNames, 'output.assetFileNames', { + ext: () => N(r).slice(1), + extname: () => N(r), + hash: (e) => s.slice(0, Math.max(0, e || 8)), + name: () => r.slice(0, Math.max(0, r.length - N(r).length)) + }), + n + ) +} +function yu(e, { bundle: t }, s) { + t[Na].has(e.toLowerCase()) + ? s( + Ae, + (function (e) { + return { code: lt, message: `The emitted file "${e}" overwrites a previously emitted file of the same name.` } + })(e) + ) + : (t[e] = _a) +} +const xu = new Set(['chunk', 'asset', 'prebuilt-chunk']) +function Eu(e, t, s) { + if (!('string' == typeof e || e instanceof Uint8Array)) { + const e = t.fileName || t.name || s + return Qe(Xt(`Could not set source for ${'string' == typeof e ? `asset "${e}"` : 'unnamed asset'}, asset source needs to be a string, Uint8Array or Buffer.`)) + } + return e +} +function bu(e, t) { + return 'string' != typeof e.fileName + ? Qe( + ((s = e.name || t), + { + code: st, + message: `Plugin error - Unable to get file name for asset "${s}". Ensure that the source is set and that generate is called first. If you reference assets via import.meta.ROLLUP_FILE_URL_, you need to either have set their source after "renderStart" or need to provide an explicit "fileName" when emitting them.` + }) + ) + : e.fileName + var s +} +function vu(e, t) { + return e.fileName + ? e.fileName + : t + ? t.get(e.module).getFileName() + : Qe( + ((s = e.fileName || e.name), + { code: nt, message: `Plugin error - Unable to get file name for emitted chunk "${s}". You can only get file names once chunks have been generated after the "renderStart" hook.` }) + ) + var s +} +class Su { + constructor(e, t, s) { + ;(this.graph = e), + (this.options = t), + (this.facadeChunkByModule = null), + (this.nextIdBase = 1), + (this.output = null), + (this.outputFileEmitters = []), + (this.emitFile = (e) => + (function (e) { + return Boolean(e && xu.has(e.type)) + })(e) + ? 'prebuilt-chunk' === e.type + ? this.emitPrebuiltChunk(e) + : (function (e) { + const t = e.fileName || e.name + return !t || ('string' == typeof t && !B(t)) + })(e) + ? 'chunk' === e.type + ? this.emitChunk(e) + : this.emitAsset(e) + : Qe(Xt(`The "fileName" or "name" properties of emitted chunks and assets must be strings that are neither absolute nor relative paths, received "${e.fileName || e.name}".`)) + : Qe(Xt(`Emitted files must be of type "asset", "chunk" or "prebuilt-chunk", received "${e && e.type}".`))), + (this.finaliseAssets = () => { + for (const [e, t] of this.filesByReferenceId) + if ('asset' === t.type && 'string' != typeof t.fileName) return Qe({ code: 'ASSET_SOURCE_MISSING', message: `Plugin error creating asset "${t.name || e}" - no asset source set.` }) + }), + (this.getFileName = (e) => { + const t = this.filesByReferenceId.get(e) + return t + ? 'chunk' === t.type + ? vu(t, this.facadeChunkByModule) + : 'prebuilt-chunk' === t.type + ? t.fileName + : bu(t, e) + : Qe({ code: 'FILE_NOT_FOUND', message: `Plugin error - Unable to get file name for unknown file "${e}".` }) + }), + (this.setAssetSource = (e, t) => { + const s = this.filesByReferenceId.get(e) + if (!s) return Qe({ code: 'ASSET_NOT_FOUND', message: `Plugin error - Unable to set the source for unknown asset "${e}".` }) + if ('asset' !== s.type) return Qe(Xt(`Asset sources can only be set for emitted assets but "${e}" is an emitted chunk.`)) + if (void 0 !== s.source) return Qe({ code: 'ASSET_SOURCE_ALREADY_SET', message: `Unable to set the source for asset "${s.name || e}", source already set.` }) + const i = Eu(t, s, e) + if (this.output) this.finalizeAdditionalAsset(s, i, this.output) + else { + s.source = i + for (const e of this.outputFileEmitters) e.finalizeAdditionalAsset(s, i, e.output) + } + }), + (this.setChunkInformation = (e) => { + this.facadeChunkByModule = e + }), + (this.setOutputBundle = (e, t) => { + const s = (this.output = { bundle: e, fileNamesBySource: new Map(), outputOptions: t }) + for (const e of this.filesByReferenceId.values()) e.fileName && yu(e.fileName, s, this.options.onLog) + const i = new Map() + for (const e of this.filesByReferenceId.values()) + if ('asset' === e.type && void 0 !== e.source) + if (e.fileName) this.finalizeAdditionalAsset(e, e.source, s) + else { + U(i, mu(e.source), () => []).push(e) + } + else 'prebuilt-chunk' === e.type && (this.output.bundle[e.fileName] = this.createPrebuiltChunk(e)) + for (const [e, t] of i) this.finalizeAssetsWithSameSource(t, e, s) + }), + (this.filesByReferenceId = s ? new Map(s.filesByReferenceId) : new Map()), + s?.addOutputFileEmitter(this) + } + addOutputFileEmitter(e) { + this.outputFileEmitters.push(e) + } + assignReferenceId(e, t) { + let s = t + do { + s = Gl().update(s).digest('hex').slice(0, 8) + } while (this.filesByReferenceId.has(s) || this.outputFileEmitters.some(({ filesByReferenceId: e }) => e.has(s))) + ;(e.referenceId = s), this.filesByReferenceId.set(s, e) + for (const { filesByReferenceId: t } of this.outputFileEmitters) t.set(s, e) + return s + } + createPrebuiltChunk(e) { + return { + code: e.code, + dynamicImports: [], + exports: e.exports || [], + facadeModuleId: null, + fileName: e.fileName, + implicitlyLoadedBefore: [], + importedBindings: {}, + imports: [], + isDynamicEntry: !1, + isEntry: !1, + isImplicitEntry: !1, + map: e.map || null, + moduleIds: [], + modules: {}, + name: e.fileName, + preliminaryFileName: e.fileName, + referencedFiles: [], + sourcemapFileName: e.sourcemapFileName || null, + type: 'chunk' + } + } + emitAsset(e) { + const t = void 0 === e.source ? void 0 : Eu(e.source, e, null), + s = { fileName: e.fileName, name: e.name, needsCodeReference: !!e.needsCodeReference, referenceId: '', source: t, type: 'asset' }, + i = this.assignReferenceId(s, e.fileName || e.name || String(this.nextIdBase++)) + if (this.output) this.emitAssetWithReferenceId(s, this.output) + else for (const e of this.outputFileEmitters) e.emitAssetWithReferenceId(s, e.output) + return i + } + emitAssetWithReferenceId(e, t) { + const { fileName: s, source: i } = e + s && yu(s, t, this.options.onLog), void 0 !== i && this.finalizeAdditionalAsset(e, i, t) + } + emitChunk(e) { + if (this.graph.phase > bo.LOAD_AND_PARSE) return Qe({ code: mt, message: 'Cannot emit chunks after module loading has finished.' }) + if ('string' != typeof e.id) return Qe(Xt(`Emitted chunks need to have a valid string id, received "${e.id}"`)) + const t = { fileName: e.fileName, module: null, name: e.name || e.id, referenceId: '', type: 'chunk' } + return ( + this.graph.moduleLoader + .emitChunk(e) + .then((e) => (t.module = e)) + .catch(() => {}), + this.assignReferenceId(t, e.id) + ) + } + emitPrebuiltChunk(e) { + if ('string' != typeof e.code) return Qe(Xt(`Emitted prebuilt chunks need to have a valid string code, received "${e.code}".`)) + if ('string' != typeof e.fileName || B(e.fileName)) + return Qe(Xt(`The "fileName" property of emitted prebuilt chunks must be strings that are neither absolute nor relative paths, received "${e.fileName}".`)) + const t = { code: e.code, exports: e.exports, fileName: e.fileName, map: e.map, referenceId: '', type: 'prebuilt-chunk' }, + s = this.assignReferenceId(t, t.fileName) + return this.output && (this.output.bundle[t.fileName] = this.createPrebuiltChunk(t)), s + } + finalizeAdditionalAsset(e, t, { bundle: s, fileNamesBySource: i, outputOptions: n }) { + let { fileName: r, needsCodeReference: o, referenceId: a } = e + if (!r) { + const o = mu(t) + ;(r = i.get(o)), r || ((r = gu(e.name, t, o, n, s)), i.set(o, r)) + } + const l = { ...e, fileName: r, source: t } + this.filesByReferenceId.set(a, l) + const c = s[r] + 'asset' === c?.type ? c.needsCodeReference && (c.needsCodeReference = o) : (s[r] = { fileName: r, name: e.name, needsCodeReference: o, source: t, type: 'asset' }) + } + finalizeAssetsWithSameSource(e, t, { bundle: s, fileNamesBySource: i, outputOptions: n }) { + let r, + o = '', + a = !0 + for (const i of e) { + a && (a = i.needsCodeReference) + const e = gu(i.name, i.source, t, n, s) + ;(!o || e.length < o.length || (e.length === o.length && e < o)) && ((o = e), (r = i)) + } + i.set(t, o) + for (const t of e) { + const e = { ...t, fileName: o } + this.filesByReferenceId.set(t.referenceId, e) + } + s[o] = { fileName: o, name: r.name, needsCodeReference: a, source: r.source, type: 'asset' } + } +} +function Au(e, t, s, i, n) { + return we[e] < we[n] + ? Ui + : (n, r) => { + null != r && s(Ae, { code: dt, message: `Plugin "${i}" tried to add a file position to a log or warning. This is only supported in the "transform" hook at the moment and will be ignored.` }), + (n = Jh(n)).code && !n.pluginCode && (n.pluginCode = n.code), + (n.code = t), + (n.plugin = i), + s(e, n) + } +} +function ku(t, s, i, n, r, o) { + const { logLevel: a, onLog: l } = n + let c, + h = !0 + if (('string' != typeof t.cacheKey && (t.name.startsWith(qh) || t.name.startsWith(Hh) || o.has(t.name) ? (h = !1) : o.add(t.name)), s)) + if (h) { + const e = t.cacheKey || t.name + ;(d = s[e] || (s[e] = Object.create(null))), + (c = { + delete: (e) => delete d[e], + get(e) { + const t = d[e] + if (t) return (t[0] = 0), t[1] + }, + has(e) { + const t = d[e] + return !!t && ((t[0] = 0), !0) + }, + set(e, t) { + d[e] = [0, t] + } + }) + } else (u = t.name), (c = { delete: () => Yh(u), get: () => Yh(u), has: () => Yh(u), set: () => Yh(u) }) + else c = Kh + var u, d + return { + addWatchFile(e) { + if (i.phase >= bo.GENERATE) return this.error({ code: mt, message: 'Cannot call "addWatchFile" after the build has finished.' }) + i.watchFiles[e] = !0 + }, + cache: c, + debug: Au(Ie, 'PLUGIN_LOG', l, t.name, a), + emitFile: r.emitFile.bind(r), + error: (e) => Qe(qt(Jh(e), t.name)), + getFileName: r.getFileName, + getModuleIds: () => i.modulesById.keys(), + getModuleInfo: i.getModuleInfo, + getWatchFiles: () => Object.keys(i.watchFiles), + info: Au(ke, 'PLUGIN_LOG', l, t.name, a), + load: (e) => i.moduleLoader.preloadModule(e), + meta: { rollupVersion: e, watchMode: i.watchMode }, + get moduleIds() { + const e = i.modulesById.keys() + return (function* () { + Qt( + `Accessing "this.moduleIds" on the plugin context by plugin ${t.name} is deprecated. The "this.getModuleIds" plugin context function should be used instead.`, + 'plugin-development/#this-getmoduleids', + !0, + n, + t.name + ), + yield* e + })() + }, + parse: i.contextParse.bind(i), + resolve: (e, s, { assertions: n, custom: r, isEntry: o, skipSelf: a } = me) => i.moduleLoader.resolveId(e, s, r, o, n || ge, a ? [{ importer: s, plugin: t, source: e }] : null), + setAssetSource: r.setAssetSource, + warn: Au(Ae, 'PLUGIN_WARNING', l, t.name, a) + } +} +const Iu = Object.keys({ + buildEnd: 1, + buildStart: 1, + closeBundle: 1, + closeWatcher: 1, + load: 1, + moduleParsed: 1, + onLog: 1, + options: 1, + resolveDynamicImport: 1, + resolveId: 1, + shouldTransformCachedModule: 1, + transform: 1, + watchChange: 1 +}) +class wu { + constructor(e, t, s, i, n) { + ;(this.graph = e), + (this.options = t), + (this.pluginCache = i), + (this.sortedPlugins = new Map()), + (this.unfulfilledActions = new Set()), + (this.fileEmitter = new Su(e, t, n && n.fileEmitter)), + (this.emitFile = this.fileEmitter.emitFile.bind(this.fileEmitter)), + (this.getFileName = this.fileEmitter.getFileName.bind(this.fileEmitter)), + (this.finaliseAssets = this.fileEmitter.finaliseAssets.bind(this.fileEmitter)), + (this.setChunkInformation = this.fileEmitter.setChunkInformation.bind(this.fileEmitter)), + (this.setOutputBundle = this.fileEmitter.setOutputBundle.bind(this.fileEmitter)), + (this.plugins = [...(n ? n.plugins : []), ...s]) + const r = new Set() + if (((this.pluginContexts = new Map(this.plugins.map((s) => [s, ku(s, i, e, t, this.fileEmitter, r)]))), n)) + for (const e of s) + for (const s of Iu) + s in e && + t.onLog( + Ae, + ((o = e.name), + { + code: 'INPUT_HOOK_IN_OUTPUT_PLUGIN', + message: `The "${s}" hook used by the output plugin ${o} is a build time hook and will not be run for that plugin. Either this plugin cannot be used as an output plugin, or it should have an option to configure it as an output plugin.` + }) + ) + var o + } + createOutputPluginDriver(e) { + return new wu(this.graph, this.options, e, this.pluginCache, this) + } + getUnfulfilledHookActions() { + return this.unfulfilledActions + } + hookFirst(e, t, s, i) { + return this.hookFirstAndGetPlugin(e, t, s, i).then((e) => e && e[0]) + } + async hookFirstAndGetPlugin(e, t, s, i) { + for (const n of this.getSortedPlugins(e)) { + if (i?.has(n)) continue + const r = await this.runHook(e, t, n, s) + if (null != r) return [r, n] + } + return null + } + hookFirstSync(e, t, s) { + for (const i of this.getSortedPlugins(e)) { + const n = this.runHookSync(e, t, i, s) + if (null != n) return n + } + return null + } + async hookParallel(e, t, s) { + const i = [] + for (const n of this.getSortedPlugins(e)) n[e].sequential ? (await Promise.all(i), (i.length = 0), await this.runHook(e, t, n, s)) : i.push(this.runHook(e, t, n, s)) + await Promise.all(i) + } + hookReduceArg0(e, [t, ...s], i, n) { + let r = Promise.resolve(t) + for (const t of this.getSortedPlugins(e)) r = r.then((r) => this.runHook(e, [r, ...s], t, n).then((e) => i.call(this.pluginContexts.get(t), r, e, t))) + return r + } + hookReduceArg0Sync(e, [t, ...s], i, n) { + for (const r of this.getSortedPlugins(e)) { + const o = [t, ...s], + a = this.runHookSync(e, o, r, n) + t = i.call(this.pluginContexts.get(r), t, a, r) + } + return t + } + async hookReduceValue(e, t, s, i) { + const n = [], + r = [] + for (const t of this.getSortedPlugins(e, $u)) t[e].sequential ? (n.push(...(await Promise.all(r))), (r.length = 0), n.push(await this.runHook(e, s, t))) : r.push(this.runHook(e, s, t)) + return n.push(...(await Promise.all(r))), n.reduce(i, await t) + } + hookReduceValueSync(e, t, s, i, n) { + let r = t + for (const t of this.getSortedPlugins(e)) { + const o = this.runHookSync(e, s, t, n) + r = i.call(this.pluginContexts.get(t), r, o, t) + } + return r + } + hookSeq(e, t, s) { + let i = Promise.resolve() + for (const n of this.getSortedPlugins(e)) i = i.then(() => this.runHook(e, t, n, s)) + return i.then(Nu) + } + getSortedPlugins(e, t) { + return U(this.sortedPlugins, e, () => Pu(e, this.plugins, t)) + } + runHook(e, t, s, i) { + const n = s[e], + r = 'object' == typeof n ? n.handler : n + let o = this.pluginContexts.get(s) + i && (o = i(o, s)) + let a = null + return Promise.resolve() + .then(() => { + if ('function' != typeof r) return r + const i = r.apply(o, t) + return i?.then ? ((a = [s.name, e, t]), this.unfulfilledActions.add(a), Promise.resolve(i).then((e) => (this.unfulfilledActions.delete(a), e))) : i + }) + .catch((t) => (null !== a && this.unfulfilledActions.delete(a), Qe(qt(t, s.name, { hook: e })))) + } + runHookSync(e, t, s, i) { + const n = s[e], + r = 'object' == typeof n ? n.handler : n + let o = this.pluginContexts.get(s) + i && (o = i(o, s)) + try { + return r.apply(o, t) + } catch (t) { + return Qe(qt(t, s.name, { hook: e })) + } + } +} +function Pu(e, t, s = Cu) { + const i = [], + n = [], + r = [] + for (const o of t) { + const t = o[e] + if (t) { + if ('object' == typeof t) { + if ((s(t.handler, e, o), 'pre' === t.order)) { + i.push(o) + continue + } + if ('post' === t.order) { + r.push(o) + continue + } + } else s(t, e, o) + n.push(o) + } + } + return [...i, ...n, ...r] +} +function Cu(e, t, s) { + 'function' != typeof e && + Qe( + (function (e, t) { + return { code: ft, hook: e, message: `Error running plugin hook "${e}" for plugin "${t}", expected a function hook or an object with a "handler" function.`, plugin: t } + })(t, s.name) + ) +} +function $u(e, t, s) { + if ('string' != typeof e && 'function' != typeof e) + return Qe( + (function (e, t) { + return { code: ft, hook: e, message: `Error running plugin hook "${e}" for plugin "${t}", expected a string, a function hook or an object with a "handler" string or function.`, plugin: t } + })(t, s.name) + ) +} +function Nu() {} +class _u { + constructor(e) { + ;(this.maxParallel = e), (this.queue = []), (this.workerCount = 0) + } + run(e) { + return new Promise((t, s) => { + this.queue.push({ reject: s, resolve: t, task: e }), this.work() + }) + } + async work() { + if (this.workerCount >= this.maxParallel) return + let e + for (this.workerCount++; (e = this.queue.shift()); ) { + const { reject: t, resolve: s, task: i } = e + try { + s(await i()) + } catch (e) { + t(e) + } + } + this.workerCount-- + } +} +class Ru { + constructor(e, t) { + if ( + ((this.options = e), + (this.astLru = (function (e) { + var t, + s, + i, + n = e || 1 + function r(e, r) { + ++t > n && ((i = s), o(1), ++t), (s[e] = r) + } + function o(e) { + ;(t = 0), (s = Object.create(null)), e || (i = Object.create(null)) + } + return ( + o(), + { + clear: o, + has: function (e) { + return void 0 !== s[e] || void 0 !== i[e] + }, + get: function (e) { + var t = s[e] + return void 0 !== t ? t : void 0 !== (t = i[e]) ? (r(e, t), t) : void 0 + }, + set: function (e, t) { + void 0 !== s[e] ? (s[e] = t) : r(e, t) + } + } + ) + })(5)), + (this.cachedModules = new Map()), + (this.deoptimizationTracker = new te()), + (this.entryModules = []), + (this.modulesById = new Map()), + (this.needsTreeshakingPass = !1), + (this.phase = bo.LOAD_AND_PARSE), + (this.scope = new fu()), + (this.watchFiles = Object.create(null)), + (this.watchMode = !1), + (this.externalModules = []), + (this.implicitEntryModules = []), + (this.modules = []), + (this.getModuleInfo = (e) => { + const t = this.modulesById.get(e) + return t ? t.info : null + }), + !1 !== e.cache) + ) { + if (e.cache?.modules) for (const t of e.cache.modules) this.cachedModules.set(t.id, t) + this.pluginCache = e.cache?.plugins || Object.create(null) + for (const e in this.pluginCache) { + const t = this.pluginCache[e] + for (const e of Object.values(t)) e[0]++ + } + } + if (t) { + this.watchMode = !0 + const e = (...e) => this.pluginDriver.hookParallel('watchChange', e), + s = () => this.pluginDriver.hookParallel('closeWatcher', []) + t.onCurrentRun('change', e), t.onCurrentRun('close', s) + } + ;(this.pluginDriver = new wu(this, e, e.plugins, this.pluginCache)), + (this.acornParser = Tc.extend(...e.acornInjectPlugins)), + (this.moduleLoader = new cu(this, this.modulesById, this.options, this.pluginDriver)), + (this.fileOperationQueue = new _u(e.maxParallelFileOps)), + (this.pureFunctions = (({ treeshake: e }) => { + const t = Object.create(null) + for (const s of e ? e.manualPureFunctions : []) { + let e = t + for (const t of s.split('.')) e = e[t] || (e[t] = Object.create(null)) + e[ji] = !0 + } + return t + })(e)) + } + async build() { + Oo('generate module graph', 2), + await this.generateModuleGraph(), + Do('generate module graph', 2), + Oo('sort and bind modules', 2), + (this.phase = bo.ANALYSE), + this.sortModules(), + Do('sort and bind modules', 2), + Oo('mark included statements', 2), + this.includeStatements(), + Do('mark included statements', 2), + (this.phase = bo.GENERATE) + } + contextParse(e, t = {}) { + const s = t.onComment, + i = [] + t.onComment = s && 'function' == typeof s ? (e, n, r, o, ...a) => (i.push({ end: o, start: r, type: e ? 'Block' : 'Line', value: n }), s.call(t, e, n, r, o, ...a)) : i + const n = this.acornParser.parse(e, { ...this.options.acorn, ...t }) + return ( + 'object' == typeof s && s.push(...i), + (t.onComment = s), + (function (e, t, s) { + const i = [], + n = [] + for (const t of e) { + for (const [e, s] of Xs) s.test(t.value) && i.push({ ...t, annotationType: e }) + js.test(t.value) && n.push(t) + } + for (const e of n) Qs(t, e, !1) + Ws(t, { annotationIndex: 0, annotations: i, code: s }) + })(i, n, e), + n + ) + } + getCache() { + for (const e in this.pluginCache) { + const t = this.pluginCache[e] + let s = !0 + for (const [e, i] of Object.entries(t)) i[0] >= this.options.experimentalCacheExpiry ? delete t[e] : (s = !1) + s && delete this.pluginCache[e] + } + return { modules: this.modules.map((e) => e.toJSON()), plugins: this.pluginCache } + } + async generateModuleGraph() { + var e + if ( + (({ entryModules: this.entryModules, implicitEntryModules: this.implicitEntryModules } = await this.moduleLoader.addEntryModules( + ((e = this.options.input), + Array.isArray(e) + ? e.map((e) => ({ fileName: null, id: e, implicitlyLoadedAfter: [], importer: void 0, name: null })) + : Object.entries(e).map(([e, t]) => ({ fileName: null, id: t, implicitlyLoadedAfter: [], importer: void 0, name: e }))), + !0 + )), + 0 === this.entryModules.length) + ) + throw new Error('You must supply options.input to rollup') + for (const e of this.modulesById.values()) e instanceof jo ? this.modules.push(e) : this.externalModules.push(e) + } + includeStatements() { + const e = [...this.entryModules, ...this.implicitEntryModules] + for (const t of e) Vo(t) + if (this.options.treeshake) { + let t = 1 + do { + Oo(`treeshaking pass ${t}`, 3), (this.needsTreeshakingPass = !1) + for (const e of this.modules) e.isExecuted && ('no-treeshake' === e.info.moduleSideEffects ? e.includeAllInBundle() : e.include()) + if (1 === t) for (const t of e) !1 !== t.preserveSignature && (t.includeAllExports(!1), (this.needsTreeshakingPass = !0)) + Do('treeshaking pass ' + t++, 3) + } while (this.needsTreeshakingPass) + } else for (const e of this.modules) e.includeAllInBundle() + for (const e of this.externalModules) e.warnUnusedImports() + for (const e of this.implicitEntryModules) for (const t of e.implicitlyLoadedAfter) t.info.isEntry || t.isIncluded() || Qe(Gt(t)) + } + sortModules() { + const { orderedModules: e, cyclePaths: t } = (function (e) { + let t = 0 + const s = [], + i = new Set(), + n = new Set(), + r = new Map(), + o = [], + a = (e) => { + if (e instanceof jo) { + for (const t of e.dependencies) r.has(t) ? i.has(t) || s.push(Ja(t, e, r)) : (r.set(t, e), a(t)) + for (const t of e.implicitlyLoadedBefore) n.add(t) + for (const { resolution: t } of e.dynamicImports) t instanceof jo && n.add(t) + o.push(e) + } + ;(e.execIndex = t++), i.add(e) + } + for (const t of e) r.has(t) || (r.set(t, null), a(t)) + for (const e of n) r.has(e) || (r.set(e, null), a(e)) + return { cyclePaths: s, orderedModules: o } + })(this.entryModules) + for (const e of t) this.options.onLog(Ae, Lt(e)) + this.modules = e + for (const e of this.modules) e.bindReferences() + this.warnForMissingExports() + } + warnForMissingExports() { + for (const e of this.modules) for (const t of e.importDescriptions.values()) '*' === t.name || t.module.getVariableForExportName(t.name)[0] || e.log(Ae, Ut(t.name, e.id, t.module.id), t.start) + } +} +function Mu(e, t) { + return t() +} +function Ou(t, s, i, n) { + t = Pu('onLog', t) + const r = we[n], + o = (n, a, l = xe) => { + if (!(we[n] < r)) { + for (const s of t) { + if (l.has(s)) continue + const { onLog: t } = s, + c = (e) => (we[e] < r ? Ui : (t) => o(e, Jh(t), new Set(l).add(s))) + if (!1 === ('handler' in t ? t.handler : t).call({ debug: c(Ie), error: (e) => Qe(Jh(e)), info: c(ke), meta: { rollupVersion: e, watchMode: i }, warn: c(Ae) }, n, a)) return + } + s(n, a) + } + } + return o +} +const Du = '{'.charCodeAt(0), + Lu = ' '.charCodeAt(0), + Tu = 'assert' +function Vu(e) { + const t = e.acorn || zh, + { tokTypes: s, TokenType: i } = t + return class extends e { + constructor(...e) { + super(...e), (this.assertToken = new i(Tu)) + } + _codeAt(e) { + return this.input.charCodeAt(e) + } + _eat(e) { + this.type !== e && this.unexpected(), this.next() + } + readToken(e) { + let t = 0 + for (; t < 6; t++) if (this._codeAt(this.pos + t) !== Tu.charCodeAt(t)) return super.readToken(e) + for (; this._codeAt(this.pos + t) !== Du; t++) if (this._codeAt(this.pos + t) !== Lu) return super.readToken(e) + return '{' === this.type.label ? super.readToken(e) : ((this.pos += 6), this.finishToken(this.assertToken)) + } + parseDynamicImport(e) { + if ((this.next(), (e.source = this.parseMaybeAssign()), this.eat(s.comma))) { + const t = this.parseObj(!1) + e.arguments = [t] + } + return this._eat(s.parenR), this.finishNode(e, 'ImportExpression') + } + parseExport(e, t) { + if ((this.next(), this.eat(s.star))) { + if ( + (this.options.ecmaVersion >= 11 && (this.eatContextual('as') ? ((e.exported = this.parseIdent(!0)), this.checkExport(t, e.exported.name, this.lastTokStart)) : (e.exported = null)), + this.expectContextual('from'), + this.type !== s.string && this.unexpected(), + (e.source = this.parseExprAtom()), + this.type === this.assertToken || this.type === s._with) + ) { + this.next() + const t = this.parseImportAssertions() + t && (e.assertions = t) + } + return this.semicolon(), this.finishNode(e, 'ExportAllDeclaration') + } + if (this.eat(s._default)) { + var i + if ((this.checkExport(t, 'default', this.lastTokStart), this.type === s._function || (i = this.isAsyncFunction()))) { + var n = this.startNode() + this.next(), i && this.next(), (e.declaration = this.parseFunction(n, 5, !1, i)) + } else if (this.type === s._class) { + var r = this.startNode() + e.declaration = this.parseClass(r, 'nullableID') + } else (e.declaration = this.parseMaybeAssign()), this.semicolon() + return this.finishNode(e, 'ExportDefaultDeclaration') + } + if (this.shouldParseExportStatement()) + (e.declaration = this.parseStatement(null)), + 'VariableDeclaration' === e.declaration.type ? this.checkVariableExport(t, e.declaration.declarations) : this.checkExport(t, e.declaration.id.name, e.declaration.id.start), + (e.specifiers = []), + (e.source = null) + else { + if (((e.declaration = null), (e.specifiers = this.parseExportSpecifiers(t)), this.eatContextual('from'))) { + if ((this.type !== s.string && this.unexpected(), (e.source = this.parseExprAtom()), this.type === this.assertToken || this.type === s._with)) { + this.next() + const t = this.parseImportAssertions() + t && (e.assertions = t) + } + } else { + for (var o = 0, a = e.specifiers; o < a.length; o += 1) { + var l = a[o] + this.checkUnreserved(l.local), this.checkLocalExport(l.local) + } + e.source = null + } + this.semicolon() + } + return this.finishNode(e, 'ExportNamedDeclaration') + } + parseImport(e) { + if ( + (this.next(), + this.type === s.string + ? ((e.specifiers = []), (e.source = this.parseExprAtom())) + : ((e.specifiers = this.parseImportSpecifiers()), this.expectContextual('from'), (e.source = this.type === s.string ? this.parseExprAtom() : this.unexpected())), + this.type === this.assertToken || this.type == s._with) + ) { + this.next() + const t = this.parseImportAssertions() + t && (e.assertions = t) + } + return this.semicolon(), this.finishNode(e, 'ImportDeclaration') + } + parseImportAssertions() { + this._eat(s.braceL) + const e = this.parseAssertEntries() + return this._eat(s.braceR), e + } + parseAssertEntries() { + const e = [], + t = new Set() + do { + if (this.type === s.braceR) break + const i = this.startNode() + let n + ;(n = this.type === s.string ? this.parseLiteral(this.value) : this.parseIdent(!0)), + this.next(), + (i.key = n), + t.has(i.key.name) && this.raise(this.pos, 'Duplicated key in assertions'), + t.add(i.key.name), + this.type !== s.string && this.raise(this.pos, 'Only string is supported as an assertion value'), + (i.value = this.parseLiteral(this.value)), + e.push(this.finishNode(i, 'ImportAttribute')) + } while (this.eat(s.comma)) + return e + } + } +} +function Bu(e) { + return Array.isArray(e) ? e.filter(Boolean) : e ? [e] : [] +} +const zu = (e) => ({ ecmaVersion: 'latest', sourceType: 'module', ...e.acorn }), + Fu = (e) => [Vu, ...Bu(e.acornInjectPlugins)], + ju = (e) => (!0 === e.cache ? void 0 : e.cache?.cache || e.cache), + Uu = (e) => { + if (!0 === e) return () => !0 + if ('function' == typeof e) return (t, ...s) => (!t.startsWith('\0') && e(t, ...s)) || !1 + if (e) { + const t = new Set(), + s = [] + for (const i of Bu(e)) i instanceof RegExp ? s.push(i) : t.add(i) + return (e, ...i) => t.has(e) || s.some((t) => t.test(e)) + } + return () => !1 + }, + Gu = (e, t, s) => { + const i = e.inlineDynamicImports + return i && Zt('The "inlineDynamicImports" option is deprecated. Use the "output.inlineDynamicImports" option instead.', We, !0, t, s), i + }, + Wu = (e) => { + const t = e.input + return null == t ? [] : 'string' == typeof t ? [t] : t + }, + qu = (e, t, s) => { + const i = e.manualChunks + return i && Zt('The "manualChunks" option is deprecated. Use the "output.manualChunks" option instead.', He, !0, t, s), i + }, + Hu = (e, t, s) => { + const i = e.maxParallelFileReads + 'number' == typeof i && Zt('The "maxParallelFileReads" option is deprecated. Use the "maxParallelFileOps" option instead.', 'configuration-options/#maxparallelfileops', !0, t, s) + const n = e.maxParallelFileOps ?? i + return 'number' == typeof n ? (n <= 0 ? 1 / 0 : n) : 20 + }, + Ku = (e, t) => { + const s = e.moduleContext + if ('function' == typeof s) return (e) => s(e) ?? t + if (s) { + const e = Object.create(null) + for (const [t, i] of Object.entries(s)) e[R(t)] = i + return (s) => e[s] ?? t + } + return () => t + }, + Yu = (e, t, s) => { + const i = e.preserveModules + return i && Zt('The "preserveModules" option is deprecated. Use the "output.preserveModules" option instead.', 'configuration-options/#output-preservemodules', !0, t, s), i + }, + Xu = (e) => { + if (!1 === e.treeshake) return !1 + const t = ru(e.treeshake, iu, 'treeshake', 'configuration-options/#treeshake', 'false, true, ') + return { + annotations: !1 !== t.annotations, + correctVarValueBeforeDeclaration: !0 === t.correctVarValueBeforeDeclaration, + manualPureFunctions: t.manualPureFunctions ?? ye, + moduleSideEffects: Qu(t.moduleSideEffects), + propertyReadSideEffects: 'always' === t.propertyReadSideEffects ? 'always' : !1 !== t.propertyReadSideEffects, + tryCatchDeoptimization: !1 !== t.tryCatchDeoptimization, + unknownGlobalSideEffects: !1 !== t.unknownGlobalSideEffects + } + }, + Qu = (e) => { + if ('boolean' == typeof e) return () => e + if ('no-external' === e) return (e, t) => !t + if ('function' == typeof e) return (t, s) => !!t.startsWith('\0') || !1 !== e(t, s) + if (Array.isArray(e)) { + const t = new Set(e) + return (e) => t.has(e) + } + return e && Qe(jt('treeshake.moduleSideEffects', 'configuration-options/#treeshake-modulesideeffects', 'please use one of false, "no-external", a function or an array')), () => !0 + }, + Zu = /[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g, + Ju = /^[a-z]:/i +function ed(e) { + const t = Ju.exec(e), + s = t ? t[0] : '' + return s + e.slice(s.length).replace(Zu, '_') +} +const td = (e, t, s) => { + const { file: i } = e + if ('string' == typeof i) { + if (t) return Qe(jt('output.file', Be, 'you must set "output.dir" instead of "output.file" when using the "output.preserveModules" option')) + if (!Array.isArray(s.input)) return Qe(jt('output.file', Be, 'you must set "output.dir" instead of "output.file" when providing named inputs')) + } + return i + }, + sd = (e) => { + const t = e.format + switch (t) { + case void 0: + case 'es': + case 'esm': + case 'module': + return 'es' + case 'cjs': + case 'commonjs': + return 'cjs' + case 'system': + case 'systemjs': + return 'system' + case 'amd': + case 'iife': + case 'umd': + return t + default: + return Qe(jt('output.format', je, 'Valid values are "amd", "cjs", "system", "es", "iife" or "umd"', t)) + } + }, + id = (e, t) => { + const s = (e.inlineDynamicImports ?? t.inlineDynamicImports) || !1, + { input: i } = t + return s && (Array.isArray(i) ? i : Object.keys(i)).length > 1 ? Qe(jt('output.inlineDynamicImports', We, 'multiple inputs are not supported when "output.inlineDynamicImports" is true')) : s + }, + nd = (e, t, s) => { + const i = (e.preserveModules ?? s.preserveModules) || !1 + if (i) { + if (t) return Qe(jt('output.inlineDynamicImports', We, 'this option is not supported for "output.preserveModules"')) + if (!1 === s.preserveEntrySignatures) + return Qe(jt('preserveEntrySignatures', 'configuration-options/#preserveentrysignatures', 'setting this option to false is not supported for "output.preserveModules"')) + } + return i + }, + rd = (e, t) => { + const s = e.preferConst + return ( + null != s && + Qt('The "output.preferConst" option is deprecated. Use the "output.generatedCode.constBindings" option instead.', 'configuration-options/#output-generatedcode-constbindings', !0, t), + !!s + ) + }, + od = (e) => { + const { preserveModulesRoot: t } = e + if (null != t) return R(t) + }, + ad = (e) => { + const t = { autoId: !1, basePath: '', define: 'define', forceJsExtensionForImports: !1, ...e.amd } + return (t.autoId || t.basePath) && t.id + ? Qe(jt('output.amd.id', Ve, 'this option cannot be used together with "output.amd.autoId"/"output.amd.basePath"')) + : t.basePath && !t.autoId + ? Qe(jt('output.amd.basePath', 'configuration-options/#output-amd-basepath', 'this option only works with "output.amd.autoId"')) + : t.autoId + ? { autoId: !0, basePath: t.basePath, define: t.define, forceJsExtensionForImports: t.forceJsExtensionForImports } + : { autoId: !1, define: t.define, forceJsExtensionForImports: t.forceJsExtensionForImports, id: t.id } + }, + ld = (e, t) => { + const s = e[t] + return 'function' == typeof s ? s : () => s || '' + }, + cd = (e, t) => { + const { dir: s } = e + return 'string' == typeof s && 'string' == typeof t ? Qe(jt('output.dir', Be, 'you must set either "output.file" for a single-file build or "output.dir" when generating multiple chunks')) : s + }, + hd = (e, t, s) => { + const i = e.dynamicImportFunction + return ( + i && + (Qt('The "output.dynamicImportFunction" option is deprecated. Use the "renderDynamicImport" plugin hook instead.', 'plugin-development/#renderdynamicimport', !0, t), + 'es' !== s && t.onLog(Ae, jt('output.dynamicImportFunction', 'configuration-options/#output-dynamicimportfunction', 'this option is ignored for formats other than "es"'))), + i + ) + }, + ud = (e, t) => { + const s = e.entryFileNames + return null == s && t.add('entryFileNames'), s ?? '[name].js' + } +function dd(e, t) { + const s = e.experimentalDeepDynamicChunkOptimization + return ( + null != s && Qt('The "output.experimentalDeepDynamicChunkOptimization" option is deprecated as Rollup always runs the full chunking algorithm now. The option should be removed.', Ue, !0, t), + s || !1 + ) +} +function pd(e, t) { + const s = e.exports + if (null == s) t.add('exports') + else if (!['default', 'named', 'none', 'auto'].includes(s)) + return Qe({ code: ut, message: `"output.exports" must be "default", "named", "none", "auto", or left unspecified (defaults to "auto"), received "${s}".`, url: De(ze) }) + return s || 'auto' +} +const fd = (e, t) => { + const s = ru(e.generatedCode, nu, 'output.generatedCode', 'configuration-options/#output-generatedcode', '') + return { + arrowFunctions: !0 === s.arrowFunctions, + constBindings: !0 === s.constBindings || t, + objectShorthand: !0 === s.objectShorthand, + reservedNamesAsProps: !1 !== s.reservedNamesAsProps, + symbols: !0 === s.symbols + } + }, + md = (e, t) => { + if (t) return '' + const s = e.indent + return !1 === s ? '' : s ?? !0 + }, + gd = new Set(['compat', 'auto', 'esModule', 'default', 'defaultOnly']), + yd = (e) => { + const t = e.interop + if ('function' == typeof t) { + const e = Object.create(null) + let s = null + return (i) => (null === i ? s || xd((s = t(i))) : i in e ? e[i] : xd((e[i] = t(i)))) + } + return void 0 === t ? () => 'default' : () => xd(t) + }, + xd = (e) => (gd.has(e) ? e : Qe(jt('output.interop', qe, `use one of ${Array.from(gd, (e) => JSON.stringify(e)).join(', ')}`, e))), + Ed = (e, t, s, i) => { + const n = e.manualChunks || i.manualChunks + if (n) { + if (t) return Qe(jt('output.manualChunks', He, 'this option is not supported for "output.inlineDynamicImports"')) + if (s) return Qe(jt('output.manualChunks', He, 'this option is not supported for "output.preserveModules"')) + } + return n || {} + }, + bd = (e, t, s) => e.minifyInternalExports ?? (s || 'es' === t || 'system' === t), + vd = (e, t, s) => { + const i = e.namespaceToStringTag + return null != i + ? (Qt('The "output.namespaceToStringTag" option is deprecated. Use the "output.generatedCode.symbols" option instead.', 'configuration-options/#output-generatedcode-symbols', !0, s), i) + : t.symbols || !1 + }, + Sd = (e, t) => { + const s = e.sourcemapFileNames + return null == s && t.add('sourcemapFileNames'), s + }, + Ad = (e) => { + const { sourcemapBaseUrl: t } = e + if (t) + return (function (e) { + try { + new URL(e) + } catch { + return !1 + } + return !0 + })(t) + ? (s = t).endsWith('/') + ? s + : s + '/' + : Qe(jt('output.sourcemapBaseUrl', 'configuration-options/#output-sourcemapbaseurl', `must be a valid URL, received ${JSON.stringify(t)}`)) + var s + } +function kd(t) { + return (async function (t, s) { + const { options: i, unsetOptions: n } = await (async function (t, s) { + if (!t) throw new Error('You must supply an options object to rollup') + const i = await (async function (t, s) { + const i = Pu('options', await ou(t.plugins)), + n = t.logLevel || ke, + r = Ou(i, Xh(t, n), s, n) + for (const o of i) { + const { name: i, options: a } = o, + l = 'handler' in a ? a.handler : a, + c = await l.call( + { + debug: Au(Ie, 'PLUGIN_LOG', r, i, n), + error: (e) => Qe(qt(Jh(e), i, { hook: 'onLog' })), + info: Au(ke, 'PLUGIN_LOG', r, i, n), + meta: { rollupVersion: e, watchMode: s }, + warn: Au(Ae, 'PLUGIN_WARNING', r, i, n) + }, + t + ) + c && (t = c) + } + return t + })(t, s), + { options: n, unsetOptions: r } = await (async function (e, t) { + const s = new Set(), + i = e.context ?? 'undefined', + n = await ou(e.plugins), + r = e.logLevel || ke, + o = Ou(n, Xh(e, r), t, r), + a = e.strictDeprecations || !1, + l = Hu(e, o, a), + c = { + acorn: zu(e), + acornInjectPlugins: Fu(e), + cache: ju(e), + context: i, + experimentalCacheExpiry: e.experimentalCacheExpiry ?? 10, + experimentalLogSideEffects: e.experimentalLogSideEffects || !1, + external: Uu(e.external), + inlineDynamicImports: Gu(e, o, a), + input: Wu(e), + logLevel: r, + makeAbsoluteExternalsRelative: e.makeAbsoluteExternalsRelative ?? 'ifRelativeSource', + manualChunks: qu(e, o, a), + maxParallelFileOps: l, + maxParallelFileReads: l, + moduleContext: Ku(e, i), + onLog: o, + onwarn: (e) => o(Ae, e), + perf: e.perf || !1, + plugins: n, + preserveEntrySignatures: e.preserveEntrySignatures ?? 'exports-only', + preserveModules: Yu(e, o, a), + preserveSymlinks: e.preserveSymlinks || !1, + shimMissingExports: e.shimMissingExports || !1, + strictDeprecations: a, + treeshake: Xu(e) + } + return su(e, [...Object.keys(c), 'watch'], 'input options', o, /^(output)$/), { options: c, unsetOptions: s } + })(i, s) + return Id(n.plugins, qh), { options: n, unsetOptions: r } + })(t, null !== s) + !(function (e) { + e.perf ? (($o = new Map()), (Oo = _o), (Do = Ro), (e.plugins = e.plugins.map(To))) : ((Oo = Ui), (Do = Ui)) + })(i) + const r = new Ru(i, s), + o = !1 !== t.cache + t.cache && ((i.cache = void 0), (t.cache = void 0)) + Oo('BUILD', 1), + await Mu(r.pluginDriver, async () => { + try { + Oo('initialize', 2), await r.pluginDriver.hookParallel('buildStart', [i]), Do('initialize', 2), await r.build() + } catch (e) { + const t = Object.keys(r.watchFiles) + throw (t.length > 0 && (e.watchFiles = t), await r.pluginDriver.hookParallel('buildEnd', [e]), await r.pluginDriver.hookParallel('closeBundle', []), e) + } + await r.pluginDriver.hookParallel('buildEnd', []) + }), + Do('BUILD', 1) + const a = { + cache: o ? r.getCache() : void 0, + async close() { + a.closed || ((a.closed = !0), await r.pluginDriver.hookParallel('closeBundle', [])) + }, + closed: !1, + generate: async (e) => (a.closed ? Qe(Mt()) : wd(!1, i, n, e, r)), + watchFiles: Object.keys(r.watchFiles), + write: async (e) => (a.closed ? Qe(Mt()) : wd(!0, i, n, e, r)) + } + i.perf && (a.getTimings = Mo) + return a + })(t, null) +} +function Id(e, t) { + for (const [s, i] of e.entries()) i.name || (i.name = `${t}${s + 1}`) +} +async function wd(e, t, s, i, n) { + const { + options: r, + outputPluginDriver: o, + unsetOptions: a + } = await (async function (e, t, s, i) { + if (!e) throw new Error('You must supply an options object') + const n = await ou(e.plugins) + Id(n, Hh) + const r = t.createOutputPluginDriver(n) + return { ...(await Pd(s, i, e, r)), outputPluginDriver: r } + })(i, n.pluginDriver, t, s) + return Mu(0, async () => { + const s = new Kl(r, a, t, o, n), + i = await s.generate(e) + if (e) { + if ((Oo('WRITE', 1), !r.dir && !r.file)) return Qe({ code: St, message: 'You must specify "output.file" or "output.dir" for the build.', url: De(Be) }) + await Promise.all( + Object.values(i).map((e) => + n.fileOperationQueue.run(() => + (async function (e, t) { + const s = R(t.dir || $(t.file), e.fileName) + return await jh($(s), { recursive: !0 }), Gh(s, 'asset' === e.type ? e.source : e.code) + })(e, r) + ) + ) + ), + await o.hookParallel('writeBundle', [r, i]), + Do('WRITE', 1) + } + return ( + (l = i), + { + output: Object.values(l) + .filter((e) => Object.keys(e).length > 0) + .sort((e, t) => $d(e) - $d(t)) + } + ) + var l + }) +} +function Pd(e, t, s, i) { + return (async function (e, t, s) { + const i = new Set(s), + n = e.compact || !1, + r = sd(e), + o = id(e, t), + a = nd(e, o, t), + l = td(e, a, t), + c = rd(e, t), + h = fd(e, c), + u = { + amd: ad(e), + assetFileNames: e.assetFileNames ?? 'assets/[name]-[hash][extname]', + banner: ld(e, 'banner'), + chunkFileNames: e.chunkFileNames ?? '[name]-[hash].js', + compact: n, + dir: cd(e, l), + dynamicImportFunction: hd(e, t, r), + dynamicImportInCjs: e.dynamicImportInCjs ?? !0, + entryFileNames: ud(e, i), + esModule: e.esModule ?? 'if-default-prop', + experimentalDeepDynamicChunkOptimization: dd(e, t), + experimentalMinChunkSize: e.experimentalMinChunkSize ?? 1, + exports: pd(e, i), + extend: e.extend || !1, + externalImportAssertions: e.externalImportAssertions ?? !0, + externalLiveBindings: e.externalLiveBindings ?? !0, + file: l, + footer: ld(e, 'footer'), + format: r, + freeze: e.freeze ?? !0, + generatedCode: h, + globals: e.globals || {}, + hoistTransitiveImports: e.hoistTransitiveImports ?? !0, + indent: md(e, n), + inlineDynamicImports: o, + interop: yd(e), + intro: ld(e, 'intro'), + manualChunks: Ed(e, o, a, t), + minifyInternalExports: bd(e, r, n), + name: e.name, + namespaceToStringTag: vd(e, h, t), + noConflict: e.noConflict || !1, + outro: ld(e, 'outro'), + paths: e.paths || {}, + plugins: await ou(e.plugins), + preferConst: c, + preserveModules: a, + preserveModulesRoot: od(e), + sanitizeFileName: 'function' == typeof e.sanitizeFileName ? e.sanitizeFileName : !1 === e.sanitizeFileName ? (e) => e : ed, + sourcemap: e.sourcemap || !1, + sourcemapBaseUrl: Ad(e), + sourcemapExcludeSources: e.sourcemapExcludeSources || !1, + sourcemapFile: e.sourcemapFile, + sourcemapFileNames: Sd(e, i), + sourcemapIgnoreList: 'function' == typeof e.sourcemapIgnoreList ? e.sourcemapIgnoreList : !1 === e.sourcemapIgnoreList ? () => !1 : (e) => e.includes('node_modules'), + sourcemapPathTransform: e.sourcemapPathTransform, + strict: e.strict ?? !0, + systemNullSetters: e.systemNullSetters ?? !0, + validate: e.validate || !1 + } + return su(e, Object.keys(u), 'output options', t.onLog), { options: u, unsetOptions: i } + })( + i.hookReduceArg0Sync( + 'outputOptions', + [s], + (e, t) => t || e, + (e) => { + const t = () => e.error({ code: it, message: 'Cannot emit files or set asset sources in the "outputOptions" hook, use the "renderStart" hook instead.' }) + return { ...e, emitFile: t, setAssetSource: t } + } + ), + e, + t + ) +} +var Cd +function $d(e) { + return 'asset' === e.type ? Cd.ASSET : e.isEntry ? Cd.ENTRY_CHUNK : Cd.SECONDARY_CHUNK +} +function Nd(e) { + return e +} +!(function (e) { + ;(e[(e.ENTRY_CHUNK = 0)] = 'ENTRY_CHUNK'), (e[(e.SECONDARY_CHUNK = 1)] = 'SECONDARY_CHUNK'), (e[(e.ASSET = 2)] = 'ASSET') +})(Cd || (Cd = {})) +export { e as VERSION, Nd as defineConfig, kd as rollup } diff --git a/src/compiler/processors.js b/src/compiler/processors.js index f45c12590..04f8d60a8 100644 --- a/src/compiler/processors.js +++ b/src/compiler/processors.js @@ -1,136 +1,136 @@ -import _ from 'lodash-es'; -import PromiseWorker from 'promise-worker'; -import { get } from 'svelte/store'; -import { site } from '@primocms/builder'; -import { locale } from '@primocms/builder'; -import rollupWorker from './workers/rollup.worker.js?worker'; -import postCSSWorker from './workers/postcss.worker.js?worker'; +import _ from 'lodash-es' +import PromiseWorker from 'promise-worker' +import { get } from 'svelte/store' +// import { render } from 'svelte/server' +// import { render } from './lib/svelte-5/server/index.js' +import { site } from '$lib/builder/stores/data' +import { locale } from '$lib/builder/stores/app' +import rollupWorker from './workers/rollup.worker.js?worker' +import postCSSWorker from './workers/postcss.worker.js?worker' -const postcss_worker = new PromiseWorker(new postCSSWorker()); -const rollup_worker = new PromiseWorker(new rollupWorker()); +const postcss_worker = new PromiseWorker(new postCSSWorker()) +const rollup_worker = new PromiseWorker(new rollupWorker()) -const COMPILED_COMPONENTS_CACHE = new Map(); +const COMPILED_COMPONENTS_CACHE = new Map() /** * Compiles and renders a given component or page, caching the result. * @async * @param {Object} options - The options for rendering. * @param {Object|Object[]} options.component - The component(s) to be rendered. Can be a single component or an array of components for a page. + * @param {{ code: string, data: Object }} options.head * @param {boolean} [options.buildStatic=true] - Indicates whether to build the component statically or not. * @param {string} [options.format='esm'] - The module format to use, such as 'esm' for ES Modules. + * @param {boolean} [options.dev_mode=false] - Whether Svelte should be compiled in dev mode (i.e. attaches LOC for inspecting) or not * @returns {Promise} Returns a payload containing the rendered HTML, CSS, JS, and other relevant data. * @throws {Error} Throws an error if the compilation or rendering fails. */ -export async function html({ component, buildStatic = true, format = 'esm' }) { - let cache_key; +export async function html({ component, head, buildStatic = true, format = 'esm', dev_mode = false }) { + let cache_key if (!buildStatic) { cache_key = JSON.stringify({ component, format - }); + }) if (COMPILED_COMPONENTS_CACHE.has(cache_key)) { - return COMPILED_COMPONENTS_CACHE.get(cache_key); + return COMPILED_COMPONENTS_CACHE.get(cache_key) } } - const compile_page = Array.isArray(component); + const compile_page = Array.isArray(component) - let res; + let res try { - const has_js = compile_page ? component.some((s) => s.js) : !!component.js; + const has_js = compile_page ? component.some((s) => s.js) : !!component.js res = await rollup_worker.postMessage({ - component, + component: _.cloneDeep(component), + head, hydrated: buildStatic && has_js, buildStatic, format, - site: get(site), - locale: get(locale) - }); + dev_mode + }) } catch (e) { - console.log('error', e); + console.log('error', e) res = { error: e.toString() - }; + } } - let payload; + let payload if (!res) { payload = { html: '

could not render

' - }; - res = {}; + } + res = {} } else if (res.error) { - console.error(res.error); payload = { error: escapeHtml(res.error) - }; + } function escapeHtml(unsafe) { - return unsafe - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, '''); + return unsafe.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''') } } else if (buildStatic) { - const blob = new Blob([res.ssr], { type: 'text/javascript' }); - const url = URL.createObjectURL(blob); - const { default: App } = await import(url /* @vite-ignore */); - URL.revokeObjectURL(url); + const blob = new Blob([res.ssr], { type: 'text/javascript' }) + const url = URL.createObjectURL(blob) + const { default: App } = await import(/* @vite-ignore */ url) + URL.revokeObjectURL(url) - let component_data; + let component_data if (compile_page) { // get the component data for the page component_data = component.reduce((accumulator, item, i) => { if (!_.isEmpty(item.data)) { - accumulator[`component_${i}_props`] = item.data; + accumulator[`component_${i}_props`] = item.data } - return accumulator; - }, {}); + return accumulator + }, {}) + component_data.head_props = head.data } else { - component_data = component.data; + component_data = component.data } - const rendered = App.render(component_data); + const rendered = App.render(component_data) + // const rendered = render(App, { props: component_data }) payload = { head: rendered.head, html: rendered.html, css: rendered.css.code, js: res.dom - }; + } } else { payload = { js: res.dom - }; + } } if (!buildStatic) { - COMPILED_COMPONENTS_CACHE.set(cache_key, payload); + COMPILED_COMPONENTS_CACHE.set(cache_key, payload) } - return payload; + return payload } -const cssMap = new Map(); +const cssMap = new Map() export async function css(raw) { // return { // css: '' // } if (cssMap.has(raw)) { - return { css: cssMap.get(raw) }; + return { css: cssMap.get(raw) } } const processed = await postcss_worker.postMessage({ css: raw - }); + }) if (processed.message) { return { error: processed.message - }; + } } - cssMap.set(raw, processed); + cssMap.set(raw, processed) return { css: processed - }; + } } diff --git a/src/compiler/workers/rollup.worker.js b/src/compiler/workers/rollup.worker.js index da6c9148b..1b3eadcff 100644 --- a/src/compiler/workers/rollup.worker.js +++ b/src/compiler/workers/rollup.worker.js @@ -1,4 +1,4 @@ -import { rollup } from '@rollup/browser' +import { rollup } from '../lib/rollup-browser.min.js' import svelteWorker from './svelte.worker?worker' import PromiseWorker from 'promise-worker' import registerPromiseWorker from 'promise-worker/register' @@ -14,7 +14,7 @@ const sveltePromiseWorker = new PromiseWorker(new svelteWorker()) const CDN_URL = 'https://cdn.jsdelivr.net/npm' // or 'https://unpkg.com' registerPromiseWorker(rollup_worker) -async function rollup_worker({ component, hydrated, buildStatic = true, format = 'esm' }) { +async function rollup_worker({ component, head, hydrated, buildStatic = true, format = 'esm', dev_mode = false }) { const final = { ssr: '', dom: '', @@ -23,17 +23,27 @@ async function rollup_worker({ component, hydrated, buildStatic = true, format = const component_lookup = new Map() - const Svelte_Component_Code = (component, is_single = true) => { + const App_Wrapper = (components, head) => { + const field_keys = Object.entries(head.data).filter((field) => field[0]) + return ` + + ${head.code} + + + ${components + .map((component, i) => ` \n`) + .join('')} + ` + } + + const Component = (component) => { let { html, css, js, data } = component - const data_as_variables = is_single - ? Object.entries(data) - .filter((field) => field[0]) - .map((field) => `export let ${field[0]};`) - .join(`\n`) - : Object.entries(data) - .filter((field) => field[0]) - .map((field) => `let ${field[0]} = props['${field[0]}'];`) - .join(`\n`) // Move outside the encompassing
to prevent 'can't nest' error if (html.includes(' field[0]) + + // html must come first for LoC (inspector) to work return `\ + ${html} - ${css ? `` : ``} - ${html}` + ${css ? `` : ``}` } - function generate_lookup(component) { + function generate_lookup(component, head) { if (Array.isArray(component)) { // build page (sections as components) component.forEach((section, i) => { - const code = Svelte_Component_Code(section, false) + const code = Component(section) component_lookup.set(`./Component_${i}.svelte`, code) }) component_lookup.set( `./App.svelte`, - ` - - ${component - .map((section, i) => { - return ` \n` - }) - .join('')} - ` + App_Wrapper(component, head) ) } else { // build individual component - const code = Svelte_Component_Code(component) - component_lookup.set(`./App.svelte`, code) + const app_code = Component(component) + component_lookup.set(`./App.svelte`, app_code) } } - generate_lookup(component) + generate_lookup(component, head) if (buildStatic) { const bundle = await compile({ @@ -92,7 +93,8 @@ async function rollup_worker({ component, hydrated, buildStatic = true, format = const output = (await bundle.generate({ format })).output[0].code final.ssr = output } else { - const bundle = await compile() + const bundle = await compile({ dev: dev_mode }) + const output = (await bundle.generate({ format })).output[0].code final.dom = output } @@ -200,18 +202,21 @@ async function rollup_worker({ component, hydrated, buildStatic = true, format = code, svelteOptions }) + return res.code + + // TODO: reinstate warnings, pass along to UI instead of throwing - const warnings = res.warnings - .filter((w) => !w.message.startsWith(`Component has unused export`)) - .filter((w) => !w.message.startsWith(`A11y: element should have an alt attribute`)) - .filter((w) => w.code !== `a11y-missing-content`) - .filter((w) => !w.message.startsWith(`Unused CSS selector`)) // TODO: reinstate - if (warnings[0]) { - final.error = warnings[0].message - return '' - } else { - return res.code - } + // const warnings = res.warnings + // .filter((w) => !w.message.startsWith(`Component has unused export`)) + // .filter((w) => !w.message.startsWith(`A11y: element should have an alt attribute`)) + // .filter((w) => w.code !== `a11y-missing-content`) + // .filter((w) => !w.message.startsWith(`Unused CSS selector`)) // TODO: reinstate + // if (warnings[0]) { + // final.error = warnings[0].message + // return '' + // } else { + // return res.code + // } } catch (e) { final.error = e.toString() return '' diff --git a/src/compiler/workers/svelte.worker.js b/src/compiler/workers/svelte.worker.js index 2ef0b7ea9..a64c37b41 100644 --- a/src/compiler/workers/svelte.worker.js +++ b/src/compiler/workers/svelte.worker.js @@ -1,10 +1,12 @@ import registerPromiseWorker from 'promise-worker/register' +// import { compile as svelte_compile } from '../lib/svelte-5/compiler/index.js' +// import { compile as svelte_compile } from 'svelte/compiler' import { compile as svelte_compile } from '../lib/svelte-compiler.min.js' registerPromiseWorker(async function ({ code, svelteOptions }) { - const res = svelte_compile(code, svelteOptions) - return { - code: res?.js?.code, - warnings: res.warnings.map((w) => ({ message: w.message, code: w.code })), - } + const res = svelte_compile(code, svelteOptions) + return { + code: res?.js?.code, + warnings: res.warnings.map((w) => ({ message: w.message, code: w.code })) + } }) diff --git a/src/hooks.server.js b/src/hooks.server.js index a987a7c7f..4f86f3794 100644 --- a/src/hooks.server.js +++ b/src/hooks.server.js @@ -1,62 +1,52 @@ import '$lib/supabase' -import supabase_admin from '$lib/supabase/admin' -import { createSupabaseServerClient } from '@supabase/auth-helpers-sveltekit' import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_PUBLIC_KEY } from '$env/static/public' +import { createSupabaseServerClient } from '@supabase/auth-helpers-sveltekit' +import { redirect } from '@sveltejs/kit' /** @type {import('@sveltejs/kit').Handle} */ export async function handle({ resolve, event }) { - event.locals.supabase = createSupabaseServerClient({ - supabaseUrl: PUBLIC_SUPABASE_URL, - supabaseKey: PUBLIC_SUPABASE_PUBLIC_KEY, - event, - }) - - event.locals.getSession = async () => { - const { - data: { session }, - } = await event.locals.supabase.auth.getSession() - return session - } - - const response = await resolve(event, { - filterSerializedResponseHeaders(name) { - return name === 'content-range' - }, - }) - - const is_preview = event.url.searchParams.has('preview') - if (is_preview) { - // retrieve site and page from db - const [{data:site}, {data:page}] = await Promise.all([ - supabase_admin.from('sites').select('id, url').eq('url', event.params.site).single(), - supabase_admin.from('pages').select('id, url, site!inner(*)').match({ - url: event.params.page || 'index', - 'site.url': event.params.site - }).single() - ]) - - if (!site || !page) return new Response('no page found') - - const {data:file} = await supabase_admin.storage.from('sites').download(`${site.id}/${page.id}/index.html`) - - return new Response(file || 'no preview found', { - headers: { - 'Content-Type': 'text/html;charset=UTF-8', - 'Access-Control-Allow-Origin': '*', - }, - }) - } - - if(event.request.method === 'OPTIONS') { - return new Response(null, { - headers: { - 'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, DELETE', - 'Access-Control-Allow-Origin': '*', - } - }); - } - - response.headers.set('Access-Control-Allow-Origin', '*'); - - return response; -}; \ No newline at end of file + if (event.url.pathname.startsWith('/_symbols')) { + return new Response('', { + headers: { 'Content-Type': 'text/javascript' } + }) + } + + event.locals.supabase = createSupabaseServerClient({ + supabaseUrl: PUBLIC_SUPABASE_URL, + supabaseKey: PUBLIC_SUPABASE_PUBLIC_KEY, + event + }) + + event.locals.getSession = async () => { + const { + data: { session } + } = await event.locals.supabase.auth.getSession() + return session + } + + const session = await event.locals.getSession() + if (!session && !event.url.pathname.includes('/auth')) { + redirect(303, '/auth') + } else if (session && event.url.pathname === '/') { + redirect(303, '/dashboard') + } + + const response = await resolve(event, { + filterSerializedResponseHeaders(name) { + return name === 'content-range' + } + }) + + // console.log(event.request.method) + if (event.request.method === 'OPTIONS') { + return new Response(null, { + headers: { + 'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, DELETE', + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Headers': 'Content-Type, Accept' // Specify allowed headers + } + }) + } + + return response +} diff --git a/src/lib/actions.js b/src/lib/actions.js index 9f10a5dd0..03d4559d4 100644 --- a/src/lib/actions.js +++ b/src/lib/actions.js @@ -1,110 +1,846 @@ -import supabase from '$lib/supabase' -import { getFiles } from '$lib/supabase/storage' +import supabase from './supabase/core' +import { page } from '$app/stores' +import { get } from 'svelte/store' +import * as actions from '$lib/builder/actions/active_site' +import * as factories from '$lib/builder/factories' +import _ from 'lodash-es' import axios from 'axios' -import { invalidate } from '$app/navigation' +import scramble_ids from '../scramble_ids' +import * as helpers from '$lib/builder/actions/_helpers' +import * as db_utils from '$lib/builder/actions/_db_utils' +import * as code_generators from '$lib/builder/code_generators' +import { processCode } from '$lib/builder/utils' +import { get_content_with_synced_values } from '$lib/builder/stores/helpers' +import { v4 as uuidv4 } from 'uuid' +import {remap_entry_and_field_items} from '$lib/builder/actions/_db_utils' + +/** + * Deletes a site group from the database + * @param {string} group_id - The ID of the site group to delete + * @returns {Promise} + */ +export async function delete_site_group(group_id) { + await supabase.from('site_groups').delete().eq('id', group_id) +} + +/** + * Adds a site to a site group + * @param {string} site_id - The ID of the site to add + * @param {string} group_id - The ID of the group to add the site to + * @returns {Promise} + */ +export async function add_site_to_group(site_id, group_id) { + await supabase.from('sites').update({ group: group_id }).eq('id', site_id) +} + +/** + * Removes a site from a site group + * @param {string} site_id - The ID of the site to remove from its group + * @returns {Promise} + */ +export async function remove_site_from_group(site_id) { + await supabase.from('sites').update({ group: null }).eq('id', site_id) +} + +/** + * Renames a site group + * @param {string} group_id - The ID of the site group to rename + * @param {string} new_name - The new name for the site group + * @returns {Promise} + */ +export async function rename_site_group(group_id, new_name) { + await supabase.from('site_groups').update({ name: new_name }).eq('id', group_id) +} + +/** + * Creates a new site group + * @param {string} name - The name of the site group to create + * @returns {Promise} + */ +export async function create_site_group(name) { + await supabase.from('site_groups').insert({ name, owner: get(page).data.user.id }) +} + +/** + * Moves a library symbol to a different group + * @param {string} symbol_id - The ID of the library symbol to move + * @param {string} new_group_id - The ID of the group to move the symbol to + * @returns {Promise} + */ +export async function move_library_symbol(symbol_id, new_group_id) { + await supabase.from('library_symbols').update({ group: new_group_id }).eq('id', symbol_id) +} + + +/** + * Deletes a library symbol group + * @param {string} group_id - The ID of the library symbol group to delete + * @returns {Promise} + */ +export async function delete_library_symbol_group(group_id) { + await supabase.from('library_symbol_groups').delete().eq('id', group_id) +} + +/** + * Renames a library symbol group + * @param {string} group_id - The ID of the library symbol group to rename + * @param {string} new_name - The new name for the library symbol group + * @returns {Promise} + */ +export async function rename_library_symbol_group(group_id, new_name) { + await supabase.from('library_symbol_groups').update({ name: new_name }).eq('id', group_id) +} + + +/** + * Creates a new library symbol group + * @param {string} name - The name of the library symbol group to create + * @returns {Promise} + */ +export async function create_library_symbol_group(name) { + await supabase.from('library_symbol_groups').insert({ name, owner: get(page).data.user.id }) +} + +/** + * Adds a marketplace starter to the user's library + * @param {Object} starter - The starter object containing name, code, entries, and fields + * @param {string} starter.name - The name of the starter + * @param {string} starter.code - The code for the starter + * @param {Array} starter.entries - The entries data for the starter + * @param {Array} starter.fields - The fields data for the starter + * @param {string} preview - The HTML preview content for the starter + * @returns {Promise} + */ +export async function add_marketplace_starter_to_library(starter, preview) { + const new_starter_id = uuidv4() + remap_entry_and_field_items({ entries: starter.entries, fields: starter.fields }) + + const symbol_res = await supabase.from('library_symbols').insert({ id: new_starter_id, name: starter.name, code: starter.code, index: 0, owner: get(page).data.user.id }) + if (symbol_res.error) { + console.log('Failed to insert site', { symbol_res, starter }) + throw new Error('Failed to insert site') + } + + const fields_res = await supabase.from('fields').insert(starter.fields.map(f => ({ ...f, library_symbol: new_starter_id }))) + if (fields_res.error) { + console.log('Failed to insert fields', { fields_res, fields: starter.fields }) + throw new Error('Failed to insert fields') + } + + const entries_res = await supabase.from('entries').insert(starter.entries.map(f => ({ ...f, library_symbol: new_starter_id }))) + if (entries_res.error) { + console.log('Failed to insert entries', { entries_res, entries: starter.entries }) + throw new Error('Failed to insert entries') + } + + const storage_res = await supabase.storage.from('sites').upload(`${new_starter_id}/preview.html`, preview) + console.log({storage_res}) +} + +/** + * Adds a marketplace symbol to the user's library + * @param {Object} options - The options object + * @param {Object} options.symbol - The symbol object containing name, code, entries, and fields + * @param {string} options.symbol.name - The name of the symbol + * @param {string} options.symbol.code - The code for the symbol + * @param {Array} options.symbol.entries - The entries data for the symbol + * @param {Array} options.symbol.fields - The fields data for the symbol + * @param {string} options.preview - The HTML preview content for the symbol + * @param {string} options.group_id - The ID of the library group to add the symbol to + * @returns {Promise} + */ +export async function add_marketplace_symbol_to_library({symbol, preview, group_id}) { + const new_symbol_id = uuidv4() + remap_entry_and_field_items({ entries: symbol.entries, fields: symbol.fields }) + + const symbol_res = await supabase.from('library_symbols').insert({ id: new_symbol_id, name: symbol.name, code: symbol.code, index: 0, group: group_id, owner: get(page).data.user.id }) + if (symbol_res.error) { + console.log('Failed to insert site', { symbol_res, symbol }) + throw new Error('Failed to insert site') + } + + const fields_res = await supabase.from('fields').insert(symbol.fields.map(f => ({ ...f, library_symbol: new_symbol_id }))) + if (fields_res.error) { + console.log('Failed to insert fields', { fields_res, fields: symbol.fields }) + throw new Error('Failed to insert fields') + } + + const entries_res = await supabase.from('entries').insert(symbol.entries.map(f => ({ ...f, library_symbol: new_symbol_id }))) + if (entries_res.error) { + console.log('Failed to insert entries', { entries_res, entries: symbol.entries }) + throw new Error('Failed to insert entries') + } + + const storage_res = await supabase.storage.from('symbols').upload(`${new_symbol_id}/preview.html`, preview) + console.log({storage_res}) +} + +/** + * Renames a library symbol + * @param {string} id - The ID of the symbol to rename + * @param {string} new_name - The new name for the symbol + * @returns {Promise} + */ +export async function rename_library_symbol(id, new_name) { + await supabase.from('library_symbols').update({ name: new_name }).eq('id', id) +} + +/** + * Creates a new library symbol + * @param {Object} options - The symbol creation options + * @param {string} [options.name=''] - The name of the symbol + * @param {Object} options.code - The symbol code (html, css, js) + * @param {Object} options.content - The symbol's content + * @param {Array} options.content.entries - Array of entry objects + * @param {Array} options.content.fields - Array of field objects + * @param {string} options.preview - The preview HTML + * @param {string} options.group - The group ID this symbol belongs to + * @returns {Promise} + */ +export async function create_library_symbol({ name = '', code, content, preview, group }) { + const symbol_id = uuidv4() + const changes = { + entries: db_utils.generate_entry_changes([], content.entries), + fields: db_utils.generate_field_changes([], content.fields) + } + await Promise.all([ + (async() => { + let library_symbols_res = await supabase.from('library_symbols').insert({ id: symbol_id, code, name: name, index: 0, group, owner: get(page).data.user.id }).select().single() + if (library_symbols_res.error) { + console.log('Failed to insert symbols', library_symbols_res) + throw new Error('Failed to insert symbols') + } + + // DB: save Symbol fields + await helpers.handle_field_changes_new(changes.fields, { + library_symbol: symbol_id + }) + + // DB: save Symbol entries + await helpers.handle_content_changes_new(changes.entries, { + library_symbol: symbol_id + }) + })(), + supabase.storage.from('symbols').upload(`${symbol_id}/preview.html`, preview) + ]) +} + +/** + * Saves changes to an existing library symbol + * @param {string} id - The ID of the symbol to update + * @param {Object} options - The update options + * @param {Object} options.code - The symbol code (html, css, js) + * @param {Object} options.content - The symbol data with original and updated values + * @param {Object} options.content.original - The original symbol content + * @param {Array} options.content.original.entries - Array of original entry objects + * @param {Array} options.content.original.fields - Array of original field objects + * @param {Object} options.content.updated - The updated symbol content + * @param {Array} options.content.updated.entries - Array of updated entry objects + * @param {Array} options.content.updated.fields - Array of updated field objects + * @param {string} options.preview - The preview HTML + * @returns {Promise} + */ +export async function save_library_symbol(id, { code, content, preview }) { + + const content_changes = db_utils.generate_entry_changes(content.original.entries, content.updated.entries) + const field_changes = db_utils.generate_field_changes(content.original.fields, content.updated.fields) + + // DB: save block code if changed + await supabase.from('library_symbols').update({ code }).eq('id', id) + + // DB: save Symbol fields + await helpers.handle_field_changes_new(field_changes, { + library_symbol: id + }) + + // DB: save Symbol entries + await helpers.handle_content_changes_new(content_changes, { + library_symbol: id + }) + + await supabase.storage.from('symbols').upload(`${id}/preview.html`, preview, { upsert: true }) +} + +/** + * Deletes a library symbol from the database + * @param {string} symbol_id - The ID of the symbol to delete + * @returns {Promise} + * @throws {Error} If deletion fails + */ +export async function delete_library_symbol(symbol_id) { + const res = await supabase.from('library_symbols').delete().eq('id', symbol_id) + if (res.error) { + console.log('Failed to delete library symbol', res) + throw new Error('Failed to delete library symbol') + } +} + +/** + * Creates a new starter site + * @param {Object} options - The starter options + * @param {Object} options.details - Basic site details + * @param {string} options.details.name - Name of the site + * @param {string} options.details.description - Description of the site + * @param {string} options.preview - Preview HTML content + * @param {Object} [options.site_data] - Optional existing site data to use as template + * @returns {Promise} + */ +export async function create_starter({ details, preview, site_data = null }) { + + let starter_data + if (site_data) { + site_data.site.name = details.name + site_data.site.description = details.description + const scrambled = scramble_ids(site_data) + starter_data = prepare_data(scrambled) + } else { + const site_id = uuidv4() + const page_type_id = uuidv4() + const home_page_id = uuidv4() + const master_palette_id = uuidv4() + const empty_starter = { + site: { + id: site_id, + name: details.name, + code: { + head: '', + foot: '' + }, + design: { + heading_font: 'Open Sans', + body_font: 'Open Sans', + primary_color: '#864040', + radius: '0px', + shadow: "0.3px 0.5px 0.7px hsl(0deg 36% 56% / 0.34),0.4px 0.8px 1px -1.2px hsl(0deg 36% 56% / 0.34), 1px 2px 2.5px -2.5px hsl(0deg 36% 56% / 0.34)", + }, + entries: [], + fields: [] + }, + pages: [ + factories.Page({ + id: home_page_id, + index: 0, + name: "Home Page", + page_type: page_type_id, + owner_site: site_id + }) + ], + page_types: [ + factories.Page_Type({ + id: page_type_id, + name: "Default", + owner_site: site_id + }) + ], + sections: [ + factories.Section({ + id: master_palette_id, + page_type: page_type_id, + owner_site: site_id + }), + factories.Section({ + page: home_page_id, + master: master_palette_id, + owner_site: site_id + }) + ], + symbols: [] + } + starter_data = prepare_data(empty_starter) + } + + const { site, page_types, pages, symbols, sections, entries, fields } = starter_data + + site.is_starter = true + + try { + // Step 1: Insert starter + let res = await supabase.from('sites').insert({ ...site, owner: get(page).data.user.id }) + if (res.error) { + console.log('Failed to insert site', { res, site }) + throw new Error('Failed to insert site') + } + + // Step 2: Insert page_types and symbols + res = await Promise.all([ + supabase.from('page_types').insert(page_types), + supabase.from('symbols').insert(symbols) + ]) + if (res.some(r => r.error)) { + console.log('Failed to insert page_types or symbols', { res, page_types, symbols }) + throw new Error('Failed to insert page_types or symbols') + } + + // Step 3: Insert pages + res = await supabase.from('pages').insert(pages) + if (res.error) { + console.log('Failed to insert pages', { res, pages }) + throw new Error('Failed to insert pages') + } + + // Step 4: Insert sections + res = await supabase.from('sections').insert(sections) + if (res.error) { + console.log('Failed to insert sections', { res, sections }) + throw new Error('Failed to insert sections') + } + + // Step 5: Insert fields + res = await supabase.from('fields').insert(fields) + if (res.error) { + console.log('Failed to insert fields', { res, fields }) + throw new Error('Failed to insert fields') + } + + // Step 6: Insert entries + res = await supabase.from('entries').insert(entries) + if (res.error) { + console.log('Failed to insert entries', { res, entries }) + throw new Error('Failed to insert entries') + } + + // Handle preview upload + await supabase.storage.from('sites').upload(`${site.id}/preview.html`, preview) + + console.log('Site created successfully') + } catch (e) { + console.error('SOMETHING WENT WRONG', e) + // TODO: Implement rollback logic to delete inserted items if an error occurs + } +} export const sites = { - create: async (data, preview = null) => { - await supabase.from('sites').insert(data.site) - - // create symbols and root pages - const { pages, symbols, sections } = data - const home_page = pages.find((page) => page.url === 'index') - const root_pages = pages.filter( - (page) => page.parent === null && page.id !== home_page.id - ) - const child_pages = pages.filter((page) => page.parent !== null) - - // create home page first (to ensure it appears first) - await supabase.from('pages').insert(home_page) - - await Promise.all([ - supabase.from('symbols').insert(symbols), - supabase.from('pages').insert(root_pages), - ]) - - // upload preview to supabase storage - if (preview) { - await supabase.storage - .from('sites') - .upload(`${data.site.id}/preview.html`, preview) - } - - // create child pages (dependant on parent page IDs) - await supabase.from('pages').insert(child_pages) - - // create sections (dependant on page IDs) - await supabase.from('sections').insert(sections) - }, - update: async (id, props) => { - await supabase.from('sites').update(props).eq('id', id) - }, - delete: async (site, { delete_repo, delete_files }) => { - const [{ data: pages }, { data: sections }, { data: symbols }] = - await Promise.all([ - supabase - .from('pages') - .select('id, url, name, code, fields, content, site, parent') - .filter('site', 'eq', site.id), - supabase - .from('sections') - .select('id, content, page!inner(id, site), symbol, index') - .filter('page.site', 'eq', site.id), - supabase - .from('symbols') - .select('id, name, code, fields, content, site') - .filter('site', 'eq', site.id), - ]) - - // Backup site - const backup_json = JSON.stringify({ - site, - pages, - sections: sections.map((section) => ({ - ...section, - page: section.page.id, - })), - symbols, - version: 2, - }) - - await supabase.storage - .from('sites') - .upload(`backups/${site.url}-${site.id}.json`, backup_json) - - if (sections) { - await Promise.all( - sections.map((section) => - supabase.from('sections').delete().eq('id', section.id) - ) - ) - } - - await Promise.all([ - supabase.from('pages').delete().eq('site', site.id), - supabase.from('symbols').delete().eq('site', site.id), - supabase.from('invitations').delete().eq('site', site.id), - supabase.from('collaborators').delete().eq('site', site.id), - ]) - - if (delete_files) { - let siteFiles = await getFiles('sites', site.id) - if (siteFiles.length) - await supabase.storage.from('sites').remove(siteFiles) - - let imageFiles = await getFiles('images', site.id) - if (imageFiles.length) - await supabase.storage.from('images').remove(imageFiles) - } - if (delete_repo) { - const repo_deleted = await axios.post('/api/deploy/delete', { site }) - if (!repo_deleted) { - alert( - `Could not delete repo. Ensure Personal Access Token has the 'delete_repo' permission` - ) - } - } - await supabase.from('sites').delete().eq('id', site.id) - invalidate('app:data') - }, + create: async ({ starter_id, starter_data, details, preview, group }) => { + + + const uploaded_data = starter_id ? await fetch_site_data(starter_id) : starter_data + uploaded_data.site.name = details.name + uploaded_data.site.design = _.cloneDeep(details.design) + + const scrambled = scramble_ids(uploaded_data) + const files = await build_site_bundle(scrambled) + const prepared_data = prepare_data(scrambled) + + const { site, page_types, pages, symbols, sections, entries, fields } = prepared_data + + try { + // Step 1: Insert site + let res = await supabase.from('sites').insert({ ...site, group, owner: get(page).data.user.id }) + if (res.error) { + console.log('Failed to insert site', { res, site }) + throw new Error('Failed to insert site') + } + + // Step 2: Insert page_types and symbols + res = await Promise.all([ + supabase.from('page_types').insert(page_types), + supabase.from('symbols').insert(symbols) + ]) + if (res.some(r => r.error)) { + console.log('Failed to insert page_types or symbols', { res, page_types, symbols }) + throw new Error('Failed to insert page_types or symbols') + } + + // Step 3: Insert pages + res = await supabase.from('pages').insert(pages) + if (res.error) { + console.log('Failed to insert pages', { res, pages }) + throw new Error('Failed to insert pages') + } + + // Step 4: Insert sections + res = await supabase.from('sections').insert(sections) + if (res.error) { + console.log('Failed to insert sections', { res, sections }) + throw new Error('Failed to insert sections') + } + + // Step 5: Insert fields + res = await supabase.from('fields').insert(fields) + if (res.error) { + console.log('Failed to insert fields', { res, fields }) + throw new Error('Failed to insert fields') + } + + // Step 6: Insert entries + res = await supabase.from('entries').insert(entries) + if (res.error) { + console.log('Failed to insert entries', { res, entries }) + throw new Error('Failed to insert entries') + } + + // Handle preview upload + if (preview) { + await supabase.storage.from('sites').upload(`${site.id}/preview.html`, preview) + } + + // create distribution + const dist_res = await axios.post('/api/deploy/initial-deployment', {files, site_id: site.id, domain_name: site.domain_name}) + console.log({dist_res}) + + console.log('Site created successfully') + } catch (e) { + console.error('SOMETHING WENT WRONG', e) + // TODO: Implement rollback logic to delete inserted items if an error occurs + } + }, + update: async (site_id, props) => { + await supabase.from('sites').update(props).eq('id', site_id) + }, + move: async (site_id, new_group_id) => { + await supabase.from('sites').update({ group: new_group_id }).eq('id', site_id) + }, + delete: async (site_id, delete_deployment = false) => { + await supabase.from('sites').delete().eq('id', site_id) + if (delete_deployment) { + await axios.delete(`/api/deploy/delete-deployment?site_id=${site_id}`) + } + }, + deploy: async (site_id, custom_domain = null) => { + + const site_data = await fetch_site_data(site_id) + + // const scrambled = scramble_ids(site_data) + const files = await build_site_bundle(site_data) + const prepared_data = prepare_data(site_data) + + const { site } = prepared_data + + try { + // create distribution + const dist_res = await axios.post('/api/deploy/initial-deployment', {files, site_id: site.id, domain_name: site.domain_name}) + console.log({dist_res}) + + console.log('Site created successfully') + } catch (e) { + console.error('SOMETHING WENT WRONG', e) + // TODO: Implement rollback logic to delete inserted items if an error occurs + } + } } + +export async function fetch_site_data(site_id) { + const { data, error } = await supabase + .from('sites') + .select(` + id, + name, + code, + design, + fields!fields_site_fkey(*), + entries!entries_site_fkey(*), + page_types( + *, + fields(*), + entries(*), + sections(*, entries(*)), + pages( + *, + entries(*), + sections(*, entries(*)) + ) + ), + symbols( + *, + fields(*), + entries(*) + ) + `) + .eq('id', site_id) + .single() + + console.log({error, data}) + + if (!data) { + throw new Error('Could not find site') + } + + const site_data = { + site: _.omit(data, ['pages', 'page_types', 'symbols', 'sections']), + pages: data.page_types.flatMap(pt => pt.pages.map(p => _.omit(p, ['sections']))), + page_types: data.page_types.map(pt => _.omit(pt, ['pages', 'sections'])), + symbols: data.symbols, + sections: data.page_types.flatMap(pt => [ ...pt.sections, ...pt.pages.flatMap(p => p.sections)]) + } + + return site_data +} + +function prepare_data(data) { + + // Prepare data while maintaining relationships + const site = _.omit(data.site, ['entries', 'fields']) + const page_types = data.page_types.map((pt) => _.omit(pt, ['sections', 'entries', 'fields'])) + const pages = data.pages.map((page) => _.omit(page, ['entries'])) + const sections = data.sections.map((section) => _.omit(section, ['entries'])) + const symbols = data.symbols.map((symbol) => _.omit(symbol, ['entries', 'fields'])) + const sorted_fields = sort_fields_by_hierarchy([...data.site.fields, ...data.page_types.flatMap((pt) => pt.fields), ...data.symbols.flatMap((s) => s.fields)]) + const sorted_entries = sort_entries_by_hierarchy([ + ...data.site.entries, + ...data.page_types.flatMap((pt) => pt.entries), + ...data.pages.flatMap((p) => p.entries), + ...data.sections.flatMap((s) => s.entries), + ...data.symbols.flatMap((s) => s.entries) + ]) + + return { + site, + page_types: page_types.map(pt => ({ ...pt, owner_site: site.id })), + pages: sort_pages_by_hierarchy(pages).map(page => ({ ...page, owner_site: site.id })), + sections: sort_sections_by_hierarchy(sections).map(s => ({ ...s, owner_site: site.id })), + symbols: symbols.map(s => ({ ...s, owner_site: site.id })), + fields: sorted_fields.map(f => ({ ...f, owner_site: site.id })), + entries: sorted_entries.map(e => ({ ...e, owner_site: site.id })) + } + + function sort_pages_by_hierarchy(pages) { + const page_map = new Map(pages.map(page => [page.id, page])) + const sorted = [] + const visited = new Set() + const temp_visited = new Set() + + function dfs(page_id) { + if (temp_visited.has(page_id)) { + throw new Error('Circular dependency detected in pages') + } + if (visited.has(page_id)) return + + temp_visited.add(page_id) + const page = page_map.get(page_id) + + if (page.parent && page_map.has(page.parent)) { + dfs(page.parent) + } + + temp_visited.delete(page_id) + visited.add(page_id) + sorted.push(page) + } + + for (const page of pages) { + if (!visited.has(page.id)) { + dfs(page.id) + } + } + + return sorted + } + + function sort_sections_by_hierarchy(sections) { + const section_map = new Map(sections.map(section => [section.id, section])) + const sorted = [] + const visited = new Set() + const temp_visited = new Set() + + function dfs(section_id) { + if (temp_visited.has(section_id)) { + throw new Error('Circular dependency detected in sections') + } + if (visited.has(section_id)) return + + temp_visited.add(section_id) + const section = section_map.get(section_id) + + if (section.master && section_map.has(section.master)) { + dfs(section.master) + } + if (section.palette && section_map.has(section.palette)) { + dfs(section.palette) + } + + temp_visited.delete(section_id) + visited.add(section_id) + sorted.push(section) + } + + for (const section of sections) { + if (!visited.has(section.id)) { + dfs(section.id) + } + } + + return sorted + } + + function sort_fields_by_hierarchy(fields) { + const field_map = new Map(fields.map(field => [field.id, field])) + const sorted = [] + const visited = new Set() + const temp_visited = new Set() + + function dfs(field_id) { + if (temp_visited.has(field_id)) { + throw new Error('Circular dependency detected in fields') + } + if (visited.has(field_id)) return + + temp_visited.add(field_id) + const field = field_map.get(field_id) + + if (field.parent && field_map.has(field.parent)) { + dfs(field.parent) + } + if (field.options?.source && field_map.has(field.options.source)) { + dfs(field.options.source) + } + // Note: options.page_type is not a field ID, so we don't need to sort based on it + + temp_visited.delete(field_id) + visited.add(field_id) + sorted.push(field) + } + + for (const field of fields) { + if (!visited.has(field.id)) { + dfs(field.id) + } + } + + return sorted + } + + function sort_entries_by_hierarchy(entries) { + const entry_map = new Map(entries.map(entry => [entry.id, entry])) + const sorted = [] + const visited = new Set() + const temp_visited = new Set() + + function dfs(entry_id) { + if (temp_visited.has(entry_id)) { + throw new Error('Circular dependency detected in entries') + } + if (visited.has(entry_id)) return + + temp_visited.add(entry_id) + const entry = entry_map.get(entry_id) + + if (entry.parent && entry_map.has(entry.parent)) { + dfs(entry.parent) + } + + temp_visited.delete(entry_id) + visited.add(entry_id) + sorted.push(entry) + } + + for (const entry of entries) { + if (!visited.has(entry.id)) { + dfs(entry.id) + } + } + + return sorted + } + +} + +async function build_site_bundle({ pages, symbols, site, page_types, sections }) { + + const page_files = await Promise.all( + pages.map((page) => build_page_tree(page)) + ) + + const symbol_files = await Promise.all(symbols.filter((s) => s.code.js).map((symbol) => build_symbol_tree(symbol))) + + return _.flattenDeep([...symbol_files, ...page_files.flat()]) + + async function build_symbol_tree(symbol) { + const data = get_content_with_synced_values({ + entries: symbol.entries, + fields: symbol.fields, + site, + // page, + pages, + page_types + }) + const res = await processCode({ + component: { + html: symbol.code.html, + css: symbol.code.css, + js: symbol.code.js, + data: data['en'] + } + }) + + if (res.error) { + throw Error(`Error processing symbol: ${symbol.name}`) + } + const date = new Intl.DateTimeFormat('en-US', { + year: 'numeric', + month: 'long', + day: 'numeric' + }).format(new Date()) + return { + path: '_symbols/' + symbol.id + '.js', + content: `// ${symbol.name} - Updated ${date}\n\n` + res.js + } + } + + async function build_page_tree(page) { + const page_type = page_types.find((pt) => pt.id === page.page_type) + const page_sections = sections.filter((s) => s.page === page.id) + + function get_full_path(page, path = page?.slug || '') { + const parent = pages.find(p => p.id === page.parent) + if (!parent) return path + + return get_full_path(parent, parent.slug + '/' + path) + } + + // order sections + let ordered_sections = [] + + // get mastered sections + const mastered_sections = page_sections.filter((s) => s.master).map(section => { + const section_master = sections.find(s => s.id === section.master) + return { + ...section, + master: section_master + } + }) + + // @ts-ignore + for (const section of mastered_sections.sort((a, b) => a.master.index - b.master.index)) { + // if has symbol, add like normal + if (section.master?.symbol) { + ordered_sections.push({ + ...section, + index: section.master.index + }) + } + + // if is master palette, insert palette sections, ordered by index + if (!section.master?.symbol) { + const palette_sections = page_sections.filter((s) => s.palette).sort((a, b) => a.index - b.index) + ordered_sections.push(...palette_sections) + } + } + + // then sort by index and flatten + const { html } = await code_generators.page_html({ + site, + page: { + ...page, + page_type + }, + page_sections: ordered_sections, + page_symbols: symbols, + page_list: pages, + page_types + }) + + let path + if (page.slug === '') { + path = `index.html` + } else { + path = `${get_full_path(page)}/index.html` + } + + return { + path, + content: html + } + } + +} + diff --git a/src/lib/assets/logodark.svg b/src/lib/assets/logodark.svg index e3db11b13..4ad20807e 100644 --- a/src/lib/assets/logodark.svg +++ b/src/lib/assets/logodark.svg @@ -1,26 +1,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/src/lib/assets/reset.css b/src/lib/assets/reset.css deleted file mode 100644 index d181bf753..000000000 --- a/src/lib/assets/reset.css +++ /dev/null @@ -1,69 +0,0 @@ -.primo-reset { - @tailwind base; - direction: ltr; - color-scheme: dark; -} - -button, -a { - cursor: pointer; -} - -body { - margin: 0; -} - -.primo-input { -appearance: none; -border: 0; -background-color: transparent; -font-size: inherit; -background: var(--color-white); -padding: 0.5rem 0.75rem; -width: 100%; - -/* &:focus { - box-shadow: 0 0 0 1px var(--color-primored); - border: 0; -} - -&:placeholder { - color: var(--color-gray-5); -} */ -} - -.primo-modal { - color: var(--color-gray-1); - /* background: var(--color-gray-9); */ - padding: 1rem; - border-radius: var(--primo-border-radius); - margin: 0 auto; - width: 100vw; -} - -.primo-heading-xl { -margin-bottom: 0.5rem; -font-size: 1.25rem; -line-height: 1.75rem; -font-weight: 700; -} - -.primo-heading-lg { -margin-bottom: 0.25rem; -font-size: 1.1rem; -line-height: 1.5rem; -font-weight: 700; -} - -.sr-only { -position: absolute; -width: 1px; -height: 1px; -padding: 0; -margin: -1px; -overflow: hidden; -clip: rect(0, 0, 0, 0); -white-space: nowrap; -border-width: 0; -} - diff --git a/src/lib/assets/server-logo.svg b/src/lib/assets/server-logo.svg index a519bfb50..4491aa3ef 100644 --- a/src/lib/assets/server-logo.svg +++ b/src/lib/assets/server-logo.svg @@ -1,26 +1,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + diff --git a/src/lib/builder/Primo.svelte b/src/lib/builder/Primo.svelte new file mode 100644 index 000000000..0cfe6d5a8 --- /dev/null +++ b/src/lib/builder/Primo.svelte @@ -0,0 +1,252 @@ + tag code + let previous + $effect.pre(() => { + if (_.isEqual(previous, { head: $siteCode.head, design: $siteDesign })) return + compile_component_head(`${site_design_css($siteDesign) + $siteCode.head}`).then((generated_code) => { + $site_html = generated_code + previous = _.cloneDeep({ head: $siteCode.head, design: $siteDesign }) + }) + }) + + // reset site html to avoid issues when navigating to new site + onDestroy(() => { + $site_html = null + }) + + async function compile_component_head(html) { + const compiled = await processCode({ + component: { + html, + css: '', + js: '', + data: get_site_data({}) + } + }) + if (!compiled.error) { + return compiled.head + } else return '' + } + + +
+ + {@render toolbar?.()} + + + { + if (size < 10) { + showing_sidebar = false + sidebar_pane.resize(2) + } else { + showing_sidebar = true + } + }} + > + {#if showing_sidebar} + {#if data.page_type} + + {:else} + + {/if} + {:else if !$onMobile} +
+ +
+ {/if} +
+ + {#if showing_sidebar} + + + + {/if} + + + {@render children?.()} + +
+
+ + + {@const SvelteComponent = activeModal} + + + + + + diff --git a/src/lib/builder/actions/_db_helpers.js b/src/lib/builder/actions/_db_helpers.js new file mode 100644 index 000000000..f571bf9a5 --- /dev/null +++ b/src/lib/builder/actions/_db_helpers.js @@ -0,0 +1,37 @@ +import { supabase } from '$lib/supabase' +import {get_on_page_symbol_sections} from '../stores/helpers' + +export async function get_off_page_sibling_sections(section_id, symbol_id) { + const on_page_sibling_ids = get_on_page_symbol_sections(symbol_id).map(s => s.id) + const excluded_section_ids = [...on_page_sibling_ids, section_id] + let [{ data: direct_block_instances}, { data: indirect_block_instances}] = await Promise.all([ + supabase + .from('sections') + .select('*, entries(*)') + .eq('symbol', symbol_id) + .not('id', 'in', `(${excluded_section_ids.join(',')})`), + supabase.from('sections').select('*, entries(*), master!inner(symbol)').eq('master.symbol', symbol_id) + ]) + + return [ ...(direct_block_instances || []), ...(indirect_block_instances || [])].map(section => ({ + ...section, + entries: section.entries || [] + })) +} + +export async function get_symbol_sections(symbol_id) { + const on_page_sibling_ids = get_on_page_symbol_sections(symbol_id).map(s => s.id) + let [{ data: direct_block_instances }, { data: indirect_block_instances }] = await Promise.all([ + supabase + .from('sections') + .select('*, entries(*), symbol') + .eq('symbol', symbol_id) + .not('id', 'in', `(${Object.keys(on_page_sibling_ids).join(',')})`), + supabase.from('sections').select('*, entries(*), master!inner(symbol)').eq('master.symbol', symbol_id) + ]) + + return [...(direct_block_instances || []), ...(indirect_block_instances || [])].map(section => ({ + ...section, + entries: section.entries || [] + })) +} \ No newline at end of file diff --git a/src/lib/builder/actions/_db_utils.js b/src/lib/builder/actions/_db_utils.js new file mode 100644 index 000000000..0328d66dc --- /dev/null +++ b/src/lib/builder/actions/_db_utils.js @@ -0,0 +1,705 @@ +import { v4 as uuidv4 } from 'uuid' +import _ from 'lodash-es' +import * as helpers from './_helpers' + +export function sort_by_hierarchy(items, dependency = 'parent') { + const item_map = new Map(items.map(entry => [entry.id, entry])) + const sorted = [] + const visited = new Set() + const temp_visited = new Set() + + function dfs(item_id) { + if (temp_visited.has(item_id)) { + throw new Error('Circular dependency detected') + } + if (visited.has(item_id)) return + + temp_visited.add(item_id) + const item = item_map.get(item_id) + + if (item[dependency] && item_map.has(item[dependency])) { + dfs(item[dependency]) + } + + temp_visited.delete(item_id) + visited.add(item_id) + sorted.push(item) + } + + for (const item of items) { + if (!visited.has(item.id)) { + dfs(item.id) + } + } + + return sorted +} + +export function remap_entry_ids(entries, return_map = false) { + const id_map = {} + + function generate_new_id(item) { + id_map[item.id] = uuidv4() + } + + function get_id(old_id) { + return id_map[old_id] || old_id + } + + // First pass: generate new IDs for all items + entries.forEach(generate_new_id) + + function remap_entry(entry) { + const new_entry = _.cloneDeep(entry) + new_entry.id = get_id(entry.id) + new_entry.parent = get_id(entry.parent) + return new_entry + } + + // Second pass: update all references + const new_entries = entries.map(remap_entry) + + return return_map ? [ new_entries, id_map ] : new_entries +} + +export function remap_ids({ pages, sections }) { + const id_map = new Map() + + function generate_new_id(old_id) { + if (!old_id) return null + if (!id_map.has(old_id)) { + id_map.set(old_id, uuidv4()) + } + return id_map.get(old_id) + } + + function get_id(old_id) { + return id_map.get(old_id) || old_id + } + + // First pass: generate new IDs for all items + function generate_ids(item) { + generate_new_id(item.id) + if (item.fields) { + item.fields.forEach(field => generate_new_id(field.id)) + } + if (item.entries) { + item.entries.forEach(entry => generate_new_id(entry.id)) + } + } + + // [site, ...page_types, ...symbols, ...pages, ...sections].forEach(generate_ids) + [...pages, ...sections].forEach(generate_ids) + + // Second pass: update all references + function scramble_item(item) { + const new_item = _.cloneDeep(item) + new_item.id = get_id(item.id) + + // if (new_item.fields) { + // new_item.fields = new_item.fields.map(field => scramble_field(field)) + // } + + if (new_item.entries) { + new_item.entries = new_item.entries.map(entry => scramble_entry(entry)) + } + + return new_item + } + + function scramble_page_type(page_type) { + const new_page_type = scramble_item(page_type) + new_page_type.site = get_id(page_type.site) + return new_page_type + } + + function scramble_page(page) { + const new_page = scramble_item(page) + new_page.page_type = get_id(page.page_type) + new_page.parent = get_id(page.parent) + return new_page + } + + function scramble_section(section) { + const new_section = scramble_item(section) + new_section.symbol = get_id(section.symbol) + new_section.palette = get_id(section.palette) + new_section.master = get_id(section.master) + new_section.page = get_id(section.page) + new_section.page_type = get_id(section.page_type) + return new_section + } + + // function scramble_field(field) { + // const new_field = _.cloneDeep(field) + // new_field.id = get_id(field.id) + + // if (new_field.parent) { + // new_field.parent = get_id(new_field.parent) + // } + // if (new_field.options?.source) { + // new_field.options.source = get_id(new_field.options.source) + // } + // if (new_field.options?.page_type) { + // new_field.options.page_type = get_id(new_field.options.page_type) + // } + // if (new_field.source) { + // new_field.source = get_id(new_field.source) + // } + + // // Add these new references + // new_field.symbol = get_id(field.symbol) + // new_field.page_type = get_id(field.page_type) + // new_field.site = get_id(field.site) + + // return new_field + // } + + function scramble_entry(entry) { + const new_entry = _.cloneDeep(entry) + new_entry.id = get_id(entry.id) + // new_entry.field = get_id(entry.field) + new_entry.parent = get_id(entry.parent) + + if (new_entry.metadata?.page) { + new_entry.metadata.page = get_id(new_entry.metadata.page) + } + + // Add these new references + new_entry.page = get_id(entry.page) + new_entry.page_type = get_id(entry.page_type) + new_entry.symbol = get_id(entry.symbol) + new_entry.section = get_id(entry.section) + new_entry.site = get_id(entry.site) + + return new_entry + } + + function scramble_symbol(symbol) { + const new_symbol = scramble_item(symbol) + new_symbol.site = get_id(symbol.site) + new_symbol.page_types = symbol.page_types.map(get_id) + return new_symbol + } + + // const new_site = scramble_item(site) + // const new_page_types = page_types.map(scramble_page_type) + // const new_symbols = symbols.map(scramble_symbol) + const new_pages = pages.map(scramble_page) + const new_sections = sections.map(scramble_section) + + return { + // site: new_site, + // page_types: new_page_types, + // symbols: new_symbols, + pages: new_pages, + sections: new_sections, + _map: id_map + } +} + +export function generate_inverted_content([ field_changes, original_fields ], entry_list) { + const restored_fields = _.cloneDeep(original_fields) + + const insertions = [] + const updates = [] + const deletions = [] + + for (const change of field_changes) { + if (change.action === 'insert') { + deletions.push({ + id: change.id + }) + } else if (change.action === 'update') { + const original_field = original_fields.find((f) => f.id === change.id) + const original_field_properties = _.pick(original_field, _.keys(change.data)) + updates.push({ + id: change.id, + data: original_field_properties + }) + } else if (change.action === 'delete') { + const original_field = original_fields.find((f) => f.id === change.id) + insertions.push({ ...original_field }) + } + } + + // remap insertion IDs + const [remapped_insertions, field_id_map] = remap_entry_ids(insertions, true) + + // remap ID on restored field + for (const insertion of insertions) { + const new_id = field_id_map[insertion.id] + const parent = field_id_map[insertion.parent] || insertion.parent + + const field = _.find(restored_fields, ['id', insertion.id]) + field.id = new_id + field.parent = parent + } + + const inverted_field_changes = [ + ...sort_by_hierarchy(remapped_insertions).map(item => ({ + action: 'insert', + data: item + })), + ...updates.map(item => ({ + action: 'update', + id: item.id, + data: item.data + })), + ...deletions.map(item => ({ + action: 'delete', + id: item.id + })) + ] + + // handle entries + const inverted_entry_changes = [] + const restored_entries = [] + for (const [ changes, entries ] of entry_list) { + const original_entries = _.cloneDeep(entries) + + const insertions = [] + const updates = [] + const deletions = [] + + for (const change of changes) { + if (change.action === 'insert') { + deletions.push({ + id: change.id + }) + } else if (change.action === 'update') { + const original_entry = entries.find((f) => f.id === change.id) + const original_entry_properties = _.pick(original_entry, _.keys(change.data)) + updates.push({ + id: change.id, + data: original_entry_properties + }) + } else if (change.action === 'delete') { + const original_entry = entries.find((f) => f.id === change.id) + insertions.push({ ...original_entry }) + } + } + + // remap insertion IDs + const [remapped_insertions, id_map] = remap_entry_ids(insertions, true) + + // remap ID on restored field + for (const insertion of insertions) { + const new_id = id_map[insertion.id] + const parent = id_map[insertion.parent] || insertion.parent + const field = field_id_map[insertion.field] || insertion.field + + const entry = _.find(original_entries, ['id', insertion.id]) + entry.id = new_id + entry.parent = parent + entry.field = field + } + + inverted_entry_changes.push([ + ...sort_by_hierarchy(remapped_insertions).map(item => ({ + action: 'insert', + data: item + })), + ...updates.map(item => ({ + action: 'update', + id: item.id, + data: item.data + })), + ...deletions.map(item => ({ + action: 'delete', + id: item.id + })) + ]) + + restored_entries.push(original_entries) + } + + return { + changes: { + fields: inverted_field_changes, + entries: inverted_entry_changes + }, + items: { + fields: restored_fields, + entries: restored_entries + } + } + + // return [ inverted_changes, restored_fields ] +} + +export function generate_inverted_field_changes(changes, original_fields) { + const restored_fields = _.cloneDeep(original_fields) + + let insertions = [] + const updates = [] + const deletions = [] + + for (const change of changes) { + if (change.action === 'insert') { + deletions.push({ + id: change.id + }) + } else if (change.action === 'update') { + const original_field = original_fields.find((f) => f.id === change.id) + const original_field_properties = _.pick(original_field, _.keys(change.data)) + updates.push({ + id: change.id, + data: original_field_properties + }) + } else if (change.action === 'delete') { + const original_field = original_fields.find((f) => f.id === change.id) + insertions.push(original_field) + } + } + + // remap insertion IDs + const [remapped_insertions, id_map] = remap_entry_ids(insertions, true) + + // remap ID on restored field + for (const insertion of insertions) { + const new_id = id_map[insertion.id] + _.find(restored_fields, ['id', insertion.id]).id = new_id + } + + const inverted_changes = [ + ...sort_by_hierarchy(remapped_insertions).map(item => ({ + action: 'insert', + data: item + })), + ...updates.map(item => ({ + action: 'update', + id: item.id, + data: item.data + })), + ...deletions.map(item => ({ + action: 'delete', + id: item.id + })) + ] + + return { + changes: inverted_changes, + fields: restored_fields, + map: id_map + } +} + +export function generate_inverted_entry_changes(changes, original_entries, field_map) { + const restored_entries = _.cloneDeep(original_entries) + + let insertions = [] + const updates = [] + const deletions = [] + + for (const change of changes) { + if (change.action === 'insert') { + deletions.push({ + id: change.id + }) + } else if (change.action === 'update') { + const original_entry = original_entries.find((f) => f.id === change.id) + const original_entry_properties = _.pick(original_entry, _.keys(change.data)) + updates.push({ + id: change.id, + data: original_entry_properties + }) + } else if (change.action === 'delete') { + const original_entry = original_entries.find((f) => f.id === change.id) + insertions.push(original_entry) + } + } + + // remap insertion IDs + const [remapped_insertions, id_map] = remap_entry_ids(insertions, true) + + // remap ID on restored field + for (const insertion of insertions) { + const new_id = id_map[insertion.id] + _.find(restored_entries, ['id', insertion.id]).id = new_id + } + + const inverted_changes = [ + ...sort_by_hierarchy(remapped_insertions).map(item => ({ + action: 'insert', + data: item + })), + ...updates.map(item => ({ + action: 'update', + id: item.id, + data: item.data + })), + ...deletions.map(item => ({ + action: 'delete', + id: item.id + })) + ] + + + + return { + changes: helpers.update_entry_changes_with_new_field_ids(inverted_changes, field_map), + entries: helpers.update_entries_with_new_field_ids(restored_entries, field_map) + } +} + +export function generate_inverted_changes(changes, original_items) { + const restored_fields = _.cloneDeep(original_items) + + let insertions = [] + const updates = [] + const deletions = [] + + for (const change of changes) { + if (change.action === 'insert') { + deletions.push({ + id: change.id + }) + } else if (change.action === 'update') { + const original_field = original_items.find((f) => f.id === change.id) + const original_field_properties = _.pick(original_field, _.keys(change.data)) + updates.push({ + id: change.id, + data: original_field_properties + }) + } else if (change.action === 'delete') { + const original_field = original_items.find((f) => f.id === change.id) + insertions.push(original_field) + } + } + + // remap insertion IDs + const [remapped_insertions, id_map] = remap_entry_ids(insertions, true) + + // remap ID on restored field + for (const insertion of insertions) { + const new_id = id_map[insertion.id] + _.find(restored_fields, ['id', insertion.id]).id = new_id + } + + const inverted_changes = [ + ...sort_by_hierarchy(remapped_insertions).map(item => ({ + action: 'insert', + data: item + })), + ...updates.map(item => ({ + action: 'update', + id: item.id, + data: item.data + })), + ...deletions.map(item => ({ + action: 'delete', + id: item.id + })) + ] + + return [ inverted_changes, restored_fields ] +} + +export function remap_entries_and_fields({changes, items}) { + // loop through changes + // for inserted items, remap ID and remap ID on matching entry + + const fields_to_remap = _.cloneDeep(changes.fields.filter(c => c.action === 'insert').map(c => c.data)) + const field_map = remap_entry_ids(fields_to_remap, true)[1] + + for (const unmapped_field of fields_to_remap) { + const new_id = field_map[unmapped_field.id] + const new_parent_id = field_map[unmapped_field.parent] || unmapped_field.parent + const new_conditional_field_id = field_map[unmapped_field.options?.condition?.field] || unmapped_field.options?.condition?.field + + const change = _.find(changes.fields, ['id', unmapped_field.id]) + change.id = new_id + change.data.id = new_id + change.data.parent = new_parent_id + change.data.options = change.data.options?.condition ? { + ...change.data.options, + condition: { + ...change.data.options.condition, + field: new_conditional_field_id + } + } : change.data.options + + changes.entries + .filter(change => change.data?.field === unmapped_field.id) + .forEach(change => change.data.field = new_id) + + const field = _.find(items.fields, ['id', unmapped_field.id]) + field.id = new_id + field.parent = new_parent_id + field.options.condition = { + ...field.options.condition, + field: new_conditional_field_id + } + + items.entries + .filter(entry => entry.field === unmapped_field.id) + .forEach(entry => entry.field = new_id) + } + + const entries_to_remap = _.cloneDeep(changes.entries.filter(c => c.action === 'insert').map(c => c.data)) + const entry_map = remap_entry_ids(entries_to_remap, true)[1] + + for (const unmapped_entry of entries_to_remap) { + const new_id = entry_map[unmapped_entry.id] + const new_parent_id = entry_map[unmapped_entry.parent] || unmapped_entry.parent + + const change = _.find(changes.entries, ['id', unmapped_entry.id]) + change.id = new_id + change.data.id = new_id + change.data.parent = new_parent_id + + const entry = _.find(items.entries, ['id', unmapped_entry.id]) + entry.id = new_id + entry.parent = new_parent_id + } +} + +export function remap_entry_and_field_items({ fields, entries }) { + // loop through changes + // for inserted items, remap ID and remap ID on matching entry + + const fields_to_remap = _.cloneDeep(fields) + const field_map = remap_entry_ids(fields, true)[1] + + for (const unmapped_field of fields_to_remap) { + const new_id = field_map[unmapped_field.id] + const new_parent_id = field_map[unmapped_field.parent] || unmapped_field.parent + + const field = _.find(fields, ['id', unmapped_field.id]) + field.id = new_id + field.parent = new_parent_id + entries + .filter(entry => entry.field === unmapped_field.id) + .forEach(entry => entry.field = new_id) + } + + const entries_to_remap = _.cloneDeep(entries) + const entry_map = remap_entry_ids(entries_to_remap, true)[1] + + for (const unmapped_entry of entries_to_remap) { + const new_id = entry_map[unmapped_entry.id] + const new_parent_id = entry_map[unmapped_entry.parent] || unmapped_entry.parent + + const entry = _.find(entries, ['id', unmapped_entry.id]) + entry.id = new_id + entry.parent = new_parent_id + } +} + + +/** + * Generates a list of entry changes by comparing original and updated entries + * + * @param {import('$lib').Entry[]} original_entries - The original array of entries + * @param {import('$lib').Entry[]} updated_entries - The updated array of entries + * @returns {{ action: string, id: string, data?: object }[]} Array of change objects + */ +export function generate_entry_changes(original_entries, updated_entries) { + + const inserts = [] + const updates = [] + const deletions = [] + + // Handle deletions + original_entries.forEach(original => { + if (!updated_entries.find(updated => updated.id === original.id)) { + deletions.push({ action: 'delete', id: original.id }) + } + }) + + // Handle inserts and updates + updated_entries.forEach(updated => { + const original = original_entries.find(o => o.id === updated.id) + if (!original) { + inserts.push({ action: 'insert', id: updated.id, data: _.cloneDeep(updated) }) + } else if (!_.isEqual(original, updated)) { + updates.push({ + action: 'update', + id: updated.id, + data: _.cloneDeep(_.omitBy(updated, (v, k) => _.isEqual(original[k], v))) + }) + } + }) + + // Sort inserts by hierarchy so parents come before children + const sorted_inserts = sort_by_hierarchy( + inserts.map(insert => insert.data) + ).map(data => ({ + action: 'insert', + id: data.id, + data + })) + + // Combine all changes in the correct order: deletions, updates, sorted inserts + return [ + ...deletions, // deletions + ...updates, + ...sorted_inserts + ] +} + + +/** + * Generates a list of entry changes by comparing original and updated entries + * + * @param {import('$lib').Field[]} original_fields - The original array of entries + * @param {import('$lib').Field[]} updated_fields - The updated array of entries + * @returns {{ action: string, id: string, data?: object }[]} Array of change objects + */ +export function generate_field_changes(original_fields, updated_fields) { + + // Collect inserts and updates + const inserts = [] + const updates = [] + const deletions = [] + + // Handle deletions - keep as is since we want to delete children before parents + original_fields.forEach(original => { + if (!updated_fields.find(updated => updated.id === original.id)) { + deletions.push({ + action: 'delete', + id: original.id + }) + } + }) + + updated_fields.forEach(updated => { + const original = original_fields.find(o => o.id === updated.id) + + if (!original) { + inserts.push({ + action: 'insert', + id: updated.id, + data: _.cloneDeep(updated) + }) + } else { + const comparable_original = _.omit(original, ['id']) + const comparable_updated = _.omit(updated, ['id']) + + if (!_.isEqual(comparable_original, comparable_updated)) { + updates.push({ + action: 'update', + id: updated.id, + data: _.cloneDeep(_.omitBy(comparable_updated, (v, k) => _.isEqual(comparable_original[k], v))) + }) + } + } + }) + + // Sort inserts by hierarchy so parents come before children + const sorted_inserts = sort_by_hierarchy( + inserts.map(insert => insert.data) + ).map(data => ({ + action: 'insert', + id: data.id, + data + })) + + // Combine all changes in the correct order: deletions, updates, sorted inserts + return [ + ...deletions, // deletions + ...updates, + ...sorted_inserts + ] +} \ No newline at end of file diff --git a/src/lib/builder/actions/_helpers.js b/src/lib/builder/actions/_helpers.js new file mode 100644 index 000000000..1699c20d9 --- /dev/null +++ b/src/lib/builder/actions/_helpers.js @@ -0,0 +1,927 @@ +import { dataChanged } from '$lib/builder/database' +import {get} from 'svelte/store' +import _ from 'lodash-es' +import { createUniqueID, get_empty_value } from '$lib/builder/utils' +import { sort_by_hierarchy, remap_entry_ids } from './_db_utils' +import { Content_Row } from '$lib/builder/factories' +import {get_on_page_symbol_sections} from '$lib/builder/stores/helpers' +import {page} from '$app/stores' + +// TODO: put DB HELPERS in a separate file + +// DB HELPERS +export async function handle_inverse_field_changes(inverse_field_changes, args = {}) { + const field_db_ids = await handle_field_changes(inverse_field_changes, args) + + // Create an object that connects the original DBID to the new DBID, using original_to_temp_content_ids as the bridge + const original_to_new_field_db_ids = {} + + // Map field IDs from temporary ID to DBID + Object.entries(inverse_field_changes.original_to_temp_field_ids).forEach(([original_id, temp_id]) => { + const db_id = field_db_ids[temp_id] + if (db_id) { + original_to_new_field_db_ids[original_id] = db_id + } + }) + + return original_to_new_field_db_ids +} + +export async function reverse_field_changes(field_changes, original_fields, args = {}) { + // recreated deleted fields, then return an object which maps the original field's DBID to the recreated field's DBID + const original_to_temp_field_ids = {} + const original_to_new_field_db_ids = {} + + const inverse_field_changes = generate_inverse_field_changes() + const field_db_ids = await handle_field_changes(inverse_field_changes, args) + + // Map field IDs + Object.entries(original_to_temp_field_ids).forEach(([original_id, temp_id]) => { + const db_id = field_db_ids[temp_id] + if (db_id) { + original_to_new_field_db_ids[original_id] = db_id + } + }) + + return original_to_new_field_db_ids + + function generate_inverse_field_changes() { + const new_field_ids = field_changes + .filter((change) => change.action === 'delete') + .reduce((acc, change) => { + acc[change.id] = createUniqueID() + return acc + }, {}) + return field_changes.map((change) => { + if (change.action === 'insert') { + return { + action: 'delete', + id: change.id + } + } else if (change.action === 'update') { + const original_field = original_fields.find((f) => f.id === change.id) + const original_field_properties = _.pick(original_field, _.keys(change.data)) + return { + action: 'update', + id: change.id, + data: original_field_properties + } + } else if (change.action === 'delete') { + const original_field = original_fields.find((f) => f.id === change.id) + const new_id = new_field_ids[original_field.id] + const new_parent_id = new_field_ids[original_field.parent] + original_to_temp_field_ids[change.id] = new_id + return { + action: 'insert', + id: new_id, + data: { + ...original_field, + ...(new_parent_id ? { parent: new_parent_id } : {}) + } + } + } + }) + } +} + +export async function reverse_content_changes(content_changes, original_entries, inverse_field_db_ids = {}, args = {}) { + // recreated deleted fields, then return an object which maps the original field's DBID to the recreated field's DBID + const original_to_temp_content_ids = {} + const original_to_new_content_db_ids = {} + + const inverse_content_changes = generate_inverse_content_changes() + const content_db_ids = await handle_content_changes(inverse_content_changes, inverse_field_db_ids, args) + + // Map field IDs + Object.entries(original_to_temp_content_ids).forEach(([original_id, temp_id]) => { + const db_id = content_db_ids[temp_id] + if (db_id) { + original_to_new_content_db_ids[original_id] = db_id + } + }) + + return original_to_new_content_db_ids + + function generate_inverse_content_changes() { + const new_content_ids = content_changes + .filter((change) => change.action === 'delete') + .reduce((acc, change) => { + acc[change.id] = createUniqueID() + return acc + }, {}) + return content_changes.map((change) => { + if (change.action === 'insert') { + return { + action: 'delete', + id: change.id + } + } else if (change.action === 'update') { + const original_entry = original_entries.find((f) => f.id === change.id) + const original_entry_properties = _.pick(original_entry, _.keys(change.data)) + return { + action: 'update', + id: change.id, + data: original_entry_properties + } + } else if (change.action === 'delete') { + const original_entry = original_entries.find((f) => f.id === change.id) + const new_id = new_content_ids[original_entry.id] + const new_parent_id = new_content_ids[original_entry.parent] + const new_field_id = inverse_field_db_ids[original_entry.field] + original_to_temp_content_ids[change.id] = new_id + return { + action: 'insert', + id: new_id, + data: { + ...original_entry, + ...(new_parent_id ? { parent: new_parent_id } : {}), + ...(new_field_id ? { field: new_field_id } : {}) + } + } + } + }) + } +} + +export async function handle_field_changes_new(changes, args = {}) { + + const insertions = changes.filter((c) => c.action === 'insert').reduce((acc, change) => [ ...acc, { ...change.data, ...args } ], []) + const updates_and_deletions = changes.filter((c) => c.action === 'update' || c.action === 'delete') + + if (insertions.length > 0) { + await dataChanged({ + table: 'fields', + action: 'insert', + data: sort_by_hierarchy(insertions) + }) + } + + await Promise.all( + updates_and_deletions.map(async change => { + if (change.action === 'update') { + await dataChanged({ + table: 'fields', + action: 'update', + data: { + ...change.data, + ...args + }, + id: change.id + }) + } else if (change.action === 'delete') { + await dataChanged({ + table: 'fields', + action: 'delete', + id: change.id + }) + } + }) + ) +} + +export async function handle_content_changes_new(changes, args = {}) { + // do all insertions first, send in one insert batch + const insertions = changes.filter((c) => c.action === 'insert').reduce((acc, change) => [ ...acc, { ...change.data, ...args } ], []) + const updates_and_deletions = changes.filter((c) => c.action === 'update' || c.action === 'delete') + + if (insertions.length > 0) { + // first, insert new entries + await dataChanged({ + table: 'entries', + action: 'insert', + data: sort_by_hierarchy(insertions) + }) + } + + // then do everything else, referencing new ids and existing ids + await Promise.all( + updates_and_deletions.map(async change => { + if (change.action === 'update') { + await dataChanged({ + table: 'entries', + action: 'update', + data: { + ...change.data, + ...args + }, + }) + } else if (change.action === 'delete') { + await dataChanged({ + table: 'entries', + action: 'delete', + id: change.id + }) + } + }) + ) +} + +export async function handle_field_changes(changes, args = {}) { + // do all insertions first, send in one insert batch + const insertions = changes.filter((c) => c.action === 'insert').map((c) => ({ ...c, data: { ...c.data, ...args } })) + const updates = changes.filter((c) => c.action === 'update') + const deletions = changes.filter((c) => c.action === 'delete') + + const field_db_ids = _.chain(insertions).keyBy('id').value() + + if (insertions.length > 0) { + // first, insert new fields + + await dataChanged({ + table: 'fields', + action: 'insert', + data: insertions.map((change) => _.omit(change.data, ['id', 'parent', 'options'])) + }).then((res) => { + res.forEach(({ id: db_id }, i) => { + const og_id = insertions[i].id + field_db_ids[og_id] = db_id + }) + }) + + // then, update the field parents + await Promise.all( + insertions + // .filter((c) => c.data.parent) + .filter((c) => c.data.parent || c.data.options.condition?.field) + .map(async ({ id, data }) => { + const updated_data = { options: data.options } + // const parent_db_id = field_db_ids[data.parent] || data.parent + if (data.parent) { + updated_data.parent = field_db_ids[data.parent] || data.parent + } + if (data.options?.condition?.field) { + updated_data.options.condition.field = field_db_ids[data.options.condition.field] || data.options.condition.field + } + await dataChanged({ + table: 'fields', + action: 'update', + id: field_db_ids[id], + data: updated_data + }) + }) + ) + } + + // then do everything else, referencing new ids and existing ids + await Promise.all([ + ...updates.map(async ({ id, data }) => { + const updated_data = _.cloneDeep(data) + if (data.parent) { + updated_data.parent = field_db_ids[data.parent] || data.parent + } + if (data.options?.condition?.field) { + updated_data.options.condition.field = field_db_ids[data.condition?.field] || data.options.condition.field + } + await dataChanged({ + table: 'fields', + action: 'update', + id, + data: updated_data + }) + }), + ...deletions.map(async ({ id }) => + dataChanged({ + table: 'fields', + action: 'delete', + id + }) + ) + ]) + + return field_db_ids +} + +export async function handle_content_changes(changes, field_db_ids = {}, args = {}) { + // do all insertions first, send in one insert batch + const insertions = changes.filter((c) => c.action === 'insert').map((c) => ({ ...c, data: { ...c.data, ...args } })) + const updates = changes.filter((c) => c.action === 'update') + const deletions = changes.filter((c) => c.action === 'delete') + + const content_db_ids = _.chain(insertions).keyBy('id').value() + + if (insertions.length > 0) { + // first, insert new entries + + await dataChanged({ + table: 'entries', + action: 'insert', + data: insertions.map((change) => { + const omitted_props = ['id'] + const has_field_db_id_to_update = field_db_ids[change.data.field] + if (has_field_db_id_to_update) omitted_props.push('field') + const has_parent_db_id_to_update = content_db_ids[change.data.parent] + if (has_parent_db_id_to_update) omitted_props.push('parent') + return _.omit(change.data, omitted_props) + }) + }).then((res) => { + res.forEach(({ id: db_id }, i) => { + const og_id = insertions[i].id + content_db_ids[og_id] = db_id + }) + }) + + // then, update the entries' field & parent + await Promise.all( + insertions + .filter(({ data }) => { + const has_db_id_to_update = content_db_ids[data.parent] || field_db_ids[data.field] + return has_db_id_to_update + }) + .map(async ({ id, data }) => { + const parent_db_id = content_db_ids[data.parent] + const field_db_id = field_db_ids[data.field] + await dataChanged({ + table: 'entries', + action: 'update', + id: content_db_ids[id], + data: { + ...(parent_db_id ? { parent: parent_db_id } : {}), + ...(field_db_id ? { field: field_db_id } : {}) + } + }) + }) + ) + } + + // then do everything else, referencing new ids and existing ids + await Promise.all([ + ...updates.map(async ({ action, id, data }) => { + const parent_db_id = content_db_ids[data.parent] || data.parent + const field_db_id = field_db_ids[data.field] || data.field + await dataChanged({ + table: 'entries', + action, + id, + data: { + ...data, + ...(parent_db_id ? { parent: parent_db_id } : {}), + ...(field_db_id ? { field: field_db_id } : {}) + } + }) + }), + ...deletions.map(async ({ id }) => + dataChanged({ + table: 'entries', + action: 'delete', + id + }) + ) + ]) + + return content_db_ids +} + +// HELPERS +/** + * Gets all ancestor items for a given item by recursively traversing parent relationships + * + * @param {Object} item - The item to find ancestors for + * @param {Array} all_items - Array of all possible items to search through + * @param {string} item.parent - ID of the item's parent + * @param {string} item.id - ID of the item + * @returns {Array} Array of ancestor items, ordered from immediate parent to most distant ancestor + */ +export function get_ancestors(item, all_items) { + const parent = all_items.find((e) => e.id === item.parent) + return parent ? [parent, ...get_ancestors(parent, all_items)] : [] +} + +export function get_entry_field({ entry, entries, fields }) { + return fields.find((field) => { + if (entry.field) { + return field.id === entry.field + } else { + const parent_entry = entries.find((e) => e.id === entry.parent) + return field.id === parent_entry?.field + } + }) +} + + +/** + * Generates pages entry changes based on page type field changes. + * + * @param {Object} params - The parameters for generating changes. + * @param {Array} params.page_entries - The current entries of the page. + * @param {Array} params.field_changes - The changes made to the fields. + * @param {Array} params.original_fields - The original fields before changes. + * @param {Array} params.updated_fields - The updated fields after changes. + * @returns {Object} An object containing the generated changes and updated entries. + * @property {Array} changes - The generated changes to be applied to the section entries. + * @property {Array} entries - The updated section entries after applying the changes. + */ +export function sync_page_content_with_field_changes({ page_entries, field_changes, original_fields, updated_fields }) { + const new_fields = field_changes.filter((c) => c.action === 'insert').map((c) => c.data) + + function get_entry_field({ entry, entries, fields }) { + return fields.find((field) => { + if (entry.field) { + return field.id === entry.field + } else { + const parent_entry = entries.find((e) => e.id === entry.parent) + return field.id === parent_entry?.field + } + }) + } + + const deleted_page_entries = [] + const modified_page_entries = [] + const unmodified_page_entries = [] + for (const section_entry of page_entries) { + const entry_field = get_entry_field({ entry: section_entry, entries: page_entries, fields: updated_fields }) + + // if entry belongs to a field that no longer exists, delete it + if (!entry_field) { + deleted_page_entries.push(section_entry) + continue + } + + // TEST: delete container entries when their field type has changed + // if entry field type has changed, modify and clear its value + const original_field = get_entry_field({ entry: section_entry, entries: page_entries, fields: original_fields }) + if (original_field && original_field.type !== entry_field.type) { + const modified_entry = { + ...section_entry, + value: get_empty_value(entry_field) + } + modified_page_entries.push(modified_entry) + continue + } + + // keep all other entries + unmodified_page_entries.push(section_entry) + } + + // create new symbol entries based on new fields + // we do this instead of looping through updated symbol entries because: + // - we don't want to add new repeater container entries, or their children (i.e. empty entries) + // - we don't want to add orphaned entries, in the case where we're adding a new child field to an existing repeater field and the section doesn't have any repeater container entries + const new_page_entries = [] + for (const new_field of new_fields) { + // if new field is the descendent of a new repeater field, don't add any entries + const has_ancestor_repeater = get_ancestors(new_field, new_fields).some((f) => f.type === 'repeater') + if (has_ancestor_repeater) { + continue + } + + // handle new root-level field (including groups) + if (!new_field.parent) { + const new_entry = Content_Row({ value: get_empty_value(new_field), field: new_field.id }) + new_page_entries.push(new_entry) + } + + // handle repeater child + // if new field's parent matches the field of one or more existing section repeater containers, create and add an entry for each container + const existing_section_entry_parent_containers = unmodified_page_entries.filter((section_entry) => { + const is_container = section_entry.index !== null + const parent_entry = unmodified_page_entries.find((e) => e.id === section_entry.parent) + return is_container && parent_entry.field === new_field.parent + }) + if (existing_section_entry_parent_containers.length > 0) { + const new_entries = existing_section_entry_parent_containers.map((container) => { + return Content_Row({ value: get_empty_value(new_field), parent: container.id, field: new_field.id }) + }) + new_page_entries.push(...new_entries) + continue + } + + // handle group child - check both existing and newly created group entries + const parent_group_entry = [...unmodified_page_entries, ...new_page_entries].find((section_entry) => { + return section_entry.field && section_entry.field === new_field.parent + }) + if (parent_group_entry) { + const new_entry = Content_Row({ value: get_empty_value(new_field), parent: parent_group_entry.id, field: new_field.id }) + new_page_entries.push(new_entry) + continue + } + } + + const page_entry_insertions = new_page_entries.map((entry) => ({ + action: 'insert', + id: entry.id, + data: _.cloneDeep(entry) + })) + + const page_entry_updates = modified_page_entries.map((entry) => ({ + action: 'update', + id: entry.id, + data: { value: entry.value } + })) + + const page_entry_deletions = deleted_page_entries.map((entry) => ({ + action: 'delete', + id: entry.id + })) + + const all_changes = [...page_entry_deletions, ...page_entry_updates, ...page_entry_insertions] + + const updated_entries = [...unmodified_page_entries, ...modified_page_entries, ...new_page_entries] + + return { + changes: all_changes, + entries: updated_entries + } +} + +/** + * Generates section entries changes based on symbol changes. + * + * @param {Object} params - The parameters for generating changes. + * @param {Array} params.section_entries - The current entries of the section. + * @param {Array} params.field_changes - The changes made to the fields. + * @param {Array} params.original_fields - The original fields before changes. + * @param {Array} params.updated_fields - The updated fields after changes. + * @returns {Object} An object containing the generated changes and updated entries. + * @property {Array} changes - The generated changes to be applied to the section entries. + * @property {Array} entries - The updated section entries after applying the changes. + */ +export function sync_section_content_with_field_changes({ section_entries, field_changes, original_fields, updated_fields }) { + const new_fields = field_changes.filter((c) => c.action === 'insert').map((c) => c.data) + + function get_entry_field({ entry, entries, fields }) { + return fields.find((field) => { + if (entry.field) { + return field.id === entry.field + } else { + const parent_entry = entries.find((e) => e.id === entry.parent) + return field.id === parent_entry?.field + } + }) + } + + const deleted_section_entries = [] + const modified_section_entries = [] + const unmodified_section_entries = [] + for (const section_entry of section_entries) { + const entry_field = get_entry_field({ entry: section_entry, entries: section_entries, fields: updated_fields }) + + // if entry belongs to a field that no longer exists, delete it + if (!entry_field) { + deleted_section_entries.push(section_entry) + continue + } + + // TEST: delete container entries when their field type has changed + // if entry field type has changed, modify and clear its value + const original_field = get_entry_field({ entry: section_entry, entries: section_entries, fields: original_fields }) + if (original_field && original_field.type !== entry_field.type) { + const modified_entry = { + ...section_entry, + value: get_empty_value(entry_field) + } + modified_section_entries.push(modified_entry) + continue + } + + // keep all other entries + unmodified_section_entries.push(section_entry) + } + + // create new symbol entries based on new fields + // we do this instead of looping through updated symbol entries because: + // - we don't want to add new repeater container entries, or their children (i.e. empty entries) + // - we don't want to add orphaned entries, in the case where we're adding a new child field to an existing repeater field and the section doesn't have any repeater container entries + const new_section_entries = [] + for (const new_field of new_fields) { + // if new field is the descendent of a new repeater field, don't add any entries + const has_ancestor_repeater = get_ancestors(new_field, new_fields).some((f) => f.type === 'repeater') + if (has_ancestor_repeater) { + continue + } + + // handle new root-level field (including groups) + if (!new_field.parent) { + const new_entry = Content_Row({ value: get_empty_value(new_field), field: new_field.id }) + new_section_entries.push(new_entry) + } + + // handle repeater child + // if new field's parent matches the field of one or more existing section repeater containers, create and add an entry for each container + const existing_section_entry_parent_containers = unmodified_section_entries.filter((section_entry) => { + const is_container = section_entry.index !== null + const parent_entry = unmodified_section_entries.find((e) => e.id === section_entry.parent) + return is_container && parent_entry.field === new_field.parent + }) + if (existing_section_entry_parent_containers.length > 0) { + const new_entries = existing_section_entry_parent_containers.map((container) => { + return Content_Row({ value: get_empty_value(new_field), parent: container.id, field: new_field.id }) + }) + new_section_entries.push(...new_entries) + continue + } + + // handle group child - check both existing and newly created group entries + const parent_group_entry = [...unmodified_section_entries, ...new_section_entries].find((section_entry) => { + return section_entry.field && section_entry.field === new_field.parent + }) + if (parent_group_entry) { + const new_entry = Content_Row({ value: get_empty_value(new_field), parent: parent_group_entry.id, field: new_field.id }) + new_section_entries.push(new_entry) + continue + } + } + + const section_content_insertions = new_section_entries.map((entry) => ({ + action: 'insert', + id: entry.id, + data: _.cloneDeep(entry) + })) + + const section_content_updates = modified_section_entries.map((entry) => ({ + action: 'update', + id: entry.id, + data: { value: entry.value } + })) + + const section_content_deletions = deleted_section_entries.map((entry) => ({ + action: 'delete', + id: entry.id + })) + + const all_changes = [...section_content_deletions, ...section_content_updates, ...section_content_insertions] + + const updated_entries = [...unmodified_section_entries, ...modified_section_entries, ...new_section_entries] + + return { + changes: all_changes, + entries: updated_entries + } +} + +/** + * Generates changes for symbol entries based on updates to section entries and fields. + * + * @param {Object} params - The parameters for generating symbol entries changes. + * @param {Array} params.original_symbol_entries - The original entries of the symbol. + * @param {Array} params.original_symbol_fields - The original fields of the symbol. + * @param {Array} params.updated_section_entries - The updated entries of the section. + * @param {Array} params.section_content_changes - The changes made to the section entries. + * @param {Array} params.updated_symbol_fields - The updated fields of the symbol. + * @param {Array} params.field_changes - The changes made to the fields. + * @returns {Object} An object containing the changes to be applied to the symbol entries. + */ +export function sync_symbol_content_with_section_changes({ original_symbol_entries, original_symbol_fields, updated_section_entries, section_content_changes, updated_symbol_fields, field_changes }) { + const new_section_entries = section_content_changes.filter((c) => c.action === 'insert').map((c) => c.data) + const new_fields = field_changes.filter((c) => c.action === 'insert').map((c) => c.data) + + const unmodified_symbol_entries = [] + const deleted_symbol_entries = [] + const modified_symbol_entries = [] + + for (const symbol_entry of original_symbol_entries) { + const updated_field = get_entry_field({ entry: symbol_entry, entries: original_symbol_entries, fields: updated_symbol_fields }) + + // if entry belongs to a field that no longer exists, delete it + if (!updated_field) { + deleted_symbol_entries.push(symbol_entry) + continue + } + + // if entry field type has changed, modify and clear its value + const original_field = get_entry_field({ entry: symbol_entry, entries: original_symbol_entries, fields: original_symbol_fields }) + if (original_field.type !== updated_field.type) { + // delete container entries when their field type has changed + if (original_field.type === 'repeater' && symbol_entry.index !== null) { + deleted_symbol_entries.push(symbol_entry) + continue + } + const modified_entry = { + ...symbol_entry, + value: get_empty_value(updated_field) + } + modified_symbol_entries.push(modified_entry) + continue + } + + // keep all other entries + unmodified_symbol_entries.push(symbol_entry) + } + + const remaining_symbol_entries = [...unmodified_symbol_entries, ...modified_symbol_entries] + + let new_symbol_entries = [] + for (const section_entry of new_section_entries) { + const new_field = get_entry_field({ entry: section_entry, entries: new_section_entries, fields: new_fields }) + + // don't include entries belonging to an existing field + if (!new_field) continue + + // include all root-level entries and descendents of new root-level entries + const root_ancestor_is_new = get_ancestors(new_field, new_fields).some((field) => !field.parent) + if (!new_field.parent || root_ancestor_is_new) { + new_symbol_entries.push(_.cloneDeep(section_entry)) + continue + } + + // handle existing repeater children + const section_entry_parent = updated_section_entries.find((e) => e.id === section_entry.parent) + const section_entry_parent_field = get_entry_field({ entry: section_entry_parent, entries: updated_section_entries, fields: updated_symbol_fields }) + const existing_symbol_entry_parent_container = remaining_symbol_entries.find((symbol_entry) => { + const field = get_entry_field({ entry: symbol_entry, entries: remaining_symbol_entries, fields: updated_symbol_fields }) + const fields_match = field.id === section_entry_parent_field.id + const indeces_match = section_entry_parent.index === symbol_entry.index + return fields_match && indeces_match + }) + if (existing_symbol_entry_parent_container) { + new_symbol_entries.push({ ...section_entry, parent: existing_symbol_entry_parent_container.id }) + continue + } + + // handle existing group child + const existing_symbol_entry_parent_group_entry = remaining_symbol_entries.find((symbol_entry) => { + return symbol_entry.field && symbol_entry.field === new_field.parent + }) + if (existing_symbol_entry_parent_group_entry) { + const new_entry = Content_Row({ value: get_empty_value(new_field), parent: existing_symbol_entry_parent_group_entry.id, field: new_field.id }) + new_symbol_entries.push(new_entry) + continue + } + } + + // Ensure no symbol containers are missing children + const existing_symbol_repeater_entries = remaining_symbol_entries.filter((entry) => entry.index !== null) + for (const container_entry of existing_symbol_repeater_entries) { + const field = get_entry_field({ entry: container_entry, entries: remaining_symbol_entries, fields: updated_symbol_fields }) + + // Skip to the next container entry if it already has the new child entries + const has_existing_child_entries = new_symbol_entries.some((entry) => entry.parent === container_entry.id) + if (has_existing_child_entries) { + continue + } + + // Create a new entry for each missing child + const child_fields = new_fields.filter((f) => f.parent === field.id) + for (const child_field of child_fields) { + const new_symbol_container_child_entry = Content_Row({ + field: child_field.id, + parent: container_entry.id, + value: get_empty_value(child_field) + }) + new_symbol_entries.push(new_symbol_container_child_entry) + } + } + + // remap IDs to avoid conflicts with original section entries + new_symbol_entries = remap_entry_ids(new_symbol_entries) + + const symbol_content_insertions = new_symbol_entries.map((entry) => ({ + action: 'insert', + id: entry.id, + data: _.cloneDeep(entry) + })) + + const symbol_content_updates = modified_symbol_entries.map((entry) => ({ + action: 'update', + id: entry.id, + data: { value: entry.value } + })) + + const symbol_content_deletions = deleted_symbol_entries.map((entry) => ({ + action: 'delete', + id: entry.id + })) + + return { + changes: [...symbol_content_deletions, ...symbol_content_updates, ...symbol_content_insertions], + entries: [...remaining_symbol_entries, ...new_symbol_entries] + } +} + + +export function generate_sibling_section_changes({section_id = '', symbol_id, field_changes, original_fields, updated_fields}, sibling_sections = get_on_page_symbol_sections(symbol_id)) { + + const all_original_siblings = sibling_sections + .filter((s) => s.id !== section_id) + .map((s) => ({ id: s.id, entries: s.entries })) + + return all_original_siblings.map(({ id, entries }) => { + const { changes, entries:updated_entries } = sync_section_content_with_field_changes({ + section_entries: entries, + field_changes, + original_fields, + updated_fields + }) + + return { + id, + changes, + entries: updated_entries + } + }) +} + +/** + * Updates field changes with new IDs. + * + * @param {Array} changes - The array of field changes. + * @param {Object} field_db_ids - An object mapping original field IDs to database IDs. + * @returns {Array} The updated array of field changes with new IDs. + */ +export function update_field_changes_with_new_ids(changes, field_db_ids) { + return changes.map(({ action, id, data }) => { + // if (action !== 'insert') return { action, id, data } + // keep this for inverted changes (which need to update for deleting recreated rows) + const db_id = field_db_ids[id] || id + const parent_db_id = field_db_ids[data?.parent] || data?.parent + return { + action, + id: db_id, + data: { + ...data, + ...(parent_db_id ? { parent: parent_db_id } : {}), + id: db_id + } + } + }) +} + +/** + * Updates entries changes with new IDs. + * + * @param {Array} changes - The array of entries changes. + * @param {Object} content_db_ids - An object mapping original entries IDs to database IDs. + * @param {Object} field_db_ids - An object mapping original field IDs to database IDs. + * @returns {Array} The updated array of entries changes with new IDs. + */ +export function update_content_changes_with_new_ids(changes, content_db_ids, field_db_ids = {}) { + return changes.map(({ action, id, data }) => { + // if (action !== 'insert') return { action, id, data } + // keep this for inverted changes (which need to update for deleting recreated rows) + const db_id = content_db_ids[id] || id + const parent_db_id = content_db_ids[data?.parent] || data?.parent + const field_db_id = field_db_ids[data?.field] || data?.field + return { + action, + id: db_id, + data: { + ...data, + ...(parent_db_id ? { parent: parent_db_id } : {}), + ...(field_db_id ? { field: field_db_id } : {}), + id: db_id + } + } + }) +} + +/** + * Updates entries with new IDs. + * + * This function takes an array of entries entries and updates their IDs, parent IDs, and field IDs + * based on the provided mapping objects. It's useful for synchronizing entries data with database IDs + * after operations that may have changed these IDs. + * + * @param {Array} entries - The array of entries entries to update. + * @param {Object | {}} content_db_ids - An object mapping original entries IDs to database IDs. + * @param {Object | {}} field_db_ids - An object mapping original field IDs to database IDs. + * @returns {Array} The updated array of entries entries with new IDs. + */ +export function update_content_with_new_ids(entries, content_db_ids, field_db_ids = {}) { + return entries.map((entry) => ({ + ...entry, + id: content_db_ids[entry.id] || entry.id, + parent: content_db_ids[entry.parent] || entry.parent, + field: field_db_ids[entry.field] || entry.field + })) +} + + + +export function update_entry_changes_with_new_field_ids(changes, field_id_map) { + return changes.map(({ action, id, data }) => { + const field_id = field_id_map[data?.field] || data?.field + return { + action, + id, + data: { + ...data, + ...(field_id ? { field: field_id } : {}), + } + } + }) +} + +export function update_entries_with_new_field_ids(entries, field_id_map) { + return entries.map((entry) => ({ + ...entry, + field: field_id_map[entry.field] || entry.field + })) +} + +/** + * Updates fields with new IDs. + * + * This function takes an array of field objects and updates their IDs and parent IDs + * based on the provided mapping object. It's useful for synchronizing field data with database IDs + * after operations that may have changed these IDs. + * + * @param {Array} fields - The array of field objects to update. + * @param {Object | Object} field_db_ids - An object mapping original field IDs to database IDs. + * @returns {Array} The updated array of field objects with new IDs. + */ +export function update_fields_with_new_ids(fields, field_db_ids) { + return fields.map((field) => ({ + ...field, + id: field_db_ids[field.id] || field.id, + parent: field_db_ids[field.parent] || field.parent + })) +} diff --git a/src/lib/builder/actions/_storage_helpers.js b/src/lib/builder/actions/_storage_helpers.js new file mode 100644 index 000000000..50ce1ffc9 --- /dev/null +++ b/src/lib/builder/actions/_storage_helpers.js @@ -0,0 +1,220 @@ +import { get } from 'svelte/store' +import { storageChanged } from '$lib/builder/database' +import site from '$lib/builder/stores/data/site' +import pages from '$lib/builder/stores/data/pages' +import sections from '$lib/builder/stores/data/sections' +// import symbols from '$lib/builder/stores/data/symbols' +import active_page from '$lib/builder/stores/data/page' +import * as code_generators from '$lib/builder/code_generators' +import { processCode } from '$lib/builder/utils' +import { get_content_with_synced_values } from '$lib/builder/stores/helpers' +import _ from 'lodash-es' +import {supabase} from '$lib/supabase' + +export async function update_page_file(update_all = false) { + const all_pages = get(pages) + if (update_all) { + await Promise.all( + all_pages.map(async (page) => { + const { data = [] } = await supabase.from('sections').select('*, page, entries(*), master(id, symbol, index)').match({ page: page.id }).order('index', { ascending: true }) + await generate_and_upload_page(page, data) + }) + ) + } else { + const page = get(active_page) + await generate_and_upload_page(page, get(sections)) + } + + // let json_path + // if (page.slug === '') { + // json_path = `page.json` + // } else { + // json_path = `${get_full_path(page, all_pages)}/page.json` + // } + + // const page_data = { + // id: page.id, + // data: transform_content({ fields: page.page_type.fields, entries: page.entries }).en, + // sections: ordered_sections.map(section => { + // const symbol = get(symbols).find(symbol => symbol.id === section.symbol) + // console.log({symbol, symbols: get(symbols)}) + // const data = transform_content({ fields: symbol.fields, entries: section.entries }).en + // return { id: section.id, data, _meta: { symbol: symbol.id} } + // }) + // } + + // const page_json = JSON.stringify(page_data) + // const json_file = new File([page_json], 'page.json', { type: 'application/json' }); + // await storageChanged({ + // action: 'upload', + // key: json_path, + // file: json_file + // }) + +} + +export async function update_symbol_file(symbol) { + await Promise.all([ + (async () => { + const data = get_content_with_synced_values({ + entries: symbol.entries, + fields: symbol.fields + }) + const res = await processCode({ + component: { + html: symbol.code.html, + css: symbol.code.css, + js: symbol.code.js, + data: data['en'] + } + }) + + if (res.error) { + console.warn('Error processing symbol', symbol.name) + } + const date = new Intl.DateTimeFormat('en-US', { + year: 'numeric', + month: 'long', + day: 'numeric' + }).format(new Date()) + + const path = '_symbols/' + symbol.id + '.js' + const content = `// ${symbol.name} - Updated ${date}\n\n` + res.js + + const blob = new Blob([content], { type: 'application/javascript' }); + const file = new File([blob], 'index.html', { type: 'application/javascript' }); + + await storageChanged({ + action: 'upload', + key: path, + file + }) + })(), + (async () => { + const { data: direct_sections } = await supabase + .from('sections') + .select('page(id)') + .eq('symbol', symbol.id) + .not('page', 'is', null) + + // Get sections that use the symbol via master + const { data: master_sections } = await supabase + .from('sections') + .select('page(id), master!inner(symbol)') + .eq('master.symbol', symbol.id) + .not('page', 'is', null) + + const sections_using_symbol = [...(direct_sections || []), ...(master_sections || [])] + const pages_to_rebuild = _.uniqBy(sections_using_symbol.map(s => s.page), 'id').filter(p => p.id !== get(active_page).id).map(page => { + const page_data = get(pages).find(p => p.id === page.id) + return page_data + }) + await Promise.all( + pages_to_rebuild.map(async (page) => { + const { data = [] } = await supabase.from('sections').select('*, page, entries(*), master(id, symbol, index)').match({ page: page.id }).order('index', { ascending: true }) + await generate_and_upload_page(page, data) + }) + ) + })() + ]) +} + +export async function update_sitemap() { + const {custom_domain} = get(site) + if (!custom_domain) return + + const all_pages = get(pages) + const base_url = `https://${custom_domain}` + + const sitemap_entries = all_pages.map(page => { + let url = base_url + const page_path = get_full_path(page, all_pages) + if (page.slug !== '') { + url += `/${page_path}` + } + return ` + + ${url} + ` + }).join('') + + const sitemap_content = ` + +${sitemap_entries} +` + + const file = new File([sitemap_content], 'sitemap.xml', { type: 'application/xml; charset=utf-8' }) + + await storageChanged({ + action: 'upload', + key: 'sitemap.xml', + file + }) +} + + +function get_full_path(page, pages, path = page?.slug || '') { + const parent = pages.find(p => p.id === page.parent) + if (!parent) return path + + return get_full_path(parent, pages, parent.slug + '/' + path) +} + + + + +async function generate_and_upload_page(page, page_sections) { + const all_pages = get(pages) + + // order sections + let ordered_sections = [] + + // get mastered sections + const mastered_sections = page_sections.filter((s) => s.master) + + // @ts-ignore + for (const section of mastered_sections.sort((a, b) => a.master.index - b.master.index)) { + // if has symbol, add like normal + if (section.master?.symbol) { + ordered_sections.push({ + ...section, + index: section.master.index + }) + } + + // if is master palette, insert palette sections, ordered by index + if (!section.master?.symbol) { + const palette_sections = page_sections.filter((s) => s.palette).sort((a, b) => a.index - b.index) + // palette_sections.index = page_sections.master.index + ordered_sections.push(...palette_sections) + } + } + + // then sort by index and flatten + + const { html } = await code_generators.page_html({ + page, + page_sections: ordered_sections + }) + + let path + if (page.slug === '') { + path = `index.html` + } else { + path = `${get_full_path(page, all_pages)}/index.html` + } + + const file = new File([html], 'index.html', { type: 'text/html; charset=utf-8' }); + + await storageChanged({ + action: 'upload', + key: path, + file + }) + + // save site preview + if (page.slug === '') { + const { data, error } = await supabase.storage.from('sites').upload(`${get(site).id}/preview.html`, file, { upsert: true }) + } + +} \ No newline at end of file diff --git a/src/lib/builder/actions/active_site.js b/src/lib/builder/actions/active_site.js new file mode 100644 index 000000000..5cb0e6267 --- /dev/null +++ b/src/lib/builder/actions/active_site.js @@ -0,0 +1,78 @@ +import _ from 'lodash-es' +import { dataChanged } from '$lib/builder/database' +import { site, update as update_site } from '$lib/builder/stores/data/site' +import { get } from 'svelte/store' +import { page } from '$app/stores' +import stores, { update_timeline } from '$lib/builder/stores/data' +import { handle_content_changes, handle_field_changes } from './_helpers' +import {update_page_file} from '$lib/builder/actions/_storage_helpers' +import * as db_utils from './_db_utils' + +export async function update_site_code_and_content({ code, entries, fields }) { + const original_site = _.cloneDeep(get(stores.site)) + + const code_changed = !_.isEqual(original_site.code, code) + let content_changes = db_utils.generate_entry_changes(original_site.entries, entries) + let fields_changes = db_utils.generate_field_changes(original_site.fields, fields) + + // ensure each entry has site property to prevent bugs in SectionEditor when working w/ site entries + const updated_entries = entries.map(e => ({ ...e, site: get(site).id })) + + update_site({ code, entries: updated_entries, fields }) + + const field_db_ids = await handle_field_changes(fields_changes, { site: get(site).id }) + const content_db_ids = await handle_content_changes(content_changes, field_db_ids, { + site: get(site).id + }) + + // STORE: update local felds w/ field_db_ids & local entries w/ content_db_ids + update_site({ + fields: get(site).fields.map((f) => ({ + ...f, + id: field_db_ids[f.id] || f.id, + parent: field_db_ids[f.parent] || f.parent + })), + entries: get(site).entries.map((e) => ({ + ...e, + id: content_db_ids[e.id] || e.id, + parent: content_db_ids[e.parent] || e.parent, + field: field_db_ids[e.field] || e.field + })) + }) + + if (code_changed) { + await dataChanged({ + table: 'sites', + action: 'update', + id: get(site).id, + data: { code } + }) + } + + // STORE: update sections to trigger on-page update for any data fields in use + stores.sections.update((s) => s) + + if (content_changes.length > 0 || code_changed) { + update_page_file(true) + } + + // TODO: handle undo + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // } + // }) +} + +export default { + update: async (props) => { + update_site(props) + await dataChanged({ + table: 'sites', + action: 'update', + data: props, + id: get(page).data.site.id + }) + } +} diff --git a/src/lib/builder/actions/languages.js b/src/lib/builder/actions/languages.js new file mode 100644 index 000000000..84dca69c4 --- /dev/null +++ b/src/lib/builder/actions/languages.js @@ -0,0 +1,296 @@ +import _ from 'lodash-es' +import { get } from 'svelte/store' +import { locale } from '$lib/builder/stores/app/misc' +import stores, { update_timeline } from '$lib/builder/stores/data' +import { content as site_content, site } from '$lib/builder/stores/data/site' +import { dataChanged } from '$lib/builder/database' + +export async function add_language(key) { + await update_timeline({ + doing: async () => { + site_content.update((s) => ({ + ...s, + [key]: s['en'] + })) + + stores.pages.update((store) => + store.map((page) => ({ + ...page, + content: { + ...page.content, + [key]: page.content['en'] + } + })) + ) + + stores.symbols.update((store) => + store.map((symbol) => ({ + ...symbol, + content: { + ...symbol.content, + [key]: symbol.content['en'] + } + })) + ) + + stores.sections.update((store) => + store.map((section) => ({ + ...section, + content: { + ...section.content, + [key]: section.content['en'] + } + })) + ) + + // add language to page, site, and sections content + await Promise.all([ + await dataChanged({ + table: 'sites', + action: 'update', + id: get(site)['id'], + data: { + content: { + ...get(site).content, + [key]: get(site).content['en'] + } + } + }), + ...get(stores.symbols).map(async (symbol) => { + await dataChanged({ + table: 'symbols', + action: 'update', + id: symbol.id, + data: { + content: { + ...symbol.content, + [key]: symbol.content['en'] + } + } + }) + }), + ...get(stores.pages).map(async (page) => { + await dataChanged({ + table: 'sections', + action: 'select', + match: { page: page.id }, + order: ['index', { ascending: true }] + }).then(async (all_sections) => { + all_sections.map(async (section) => { + await dataChanged({ + table: 'sections', + action: 'update', + id: section.id, + data: { + content: { + ...section.content, + [key]: section.content['en'] + } + } + }) + }) + }), + await dataChanged({ + table: 'pages', + action: 'update', + id: page.id, + data: { + content: { + ...page.content, + [key]: page.content['en'] + } + } + }) + }) + ]) + }, + undoing: async () => { + locale.set('en') + + site_content.update((s) => { + delete s[key] + return s + }) + + stores.pages.update((store) => + store.map((page) => { + delete page.content[key] + return page + }) + ) + + stores.sections.update((store) => + store.map((section) => { + delete section.content[key] + return section + }) + ) + + stores.symbols.update((store) => + store.map((symbol) => { + delete symbol.content[key] + return symbol + }) + ) + + await Promise.all([ + await dataChanged({ + table: 'sites', + action: 'update', + id: get(site)['id'], + data: { + content: get(site_content) + } + }), + ...get(stores.sections).map(async (section) => { + await dataChanged({ + table: 'sections', + action: 'update', + id: section.id, + data: { + content: section.content + } + }) + }), + ...get(stores.pages).map(async (page) => { + await dataChanged({ + table: 'sections', + action: 'select', + match: { page: page.id }, + order: ['index', { ascending: true }] + }).then(async (all_sections) => { + all_sections.map(async (section) => { + delete section.content[key] + await dataChanged({ + table: 'sections', + action: 'update', + id: section.id, + data: { + content: section.content + } + }) + }) + }) + + await dataChanged({ + table: 'pages', + action: 'update', + id: page.id, + data: { + content: page.content + } + }) + }) + ]) + } + }) +} + +export async function delete_language(key) { + locale.set('en') + + const original = { + site_content: _.cloneDeep(get(site_content)), + pages: _.cloneDeep(get(stores.pages)), + sections: _.cloneDeep(get(stores.sections)), + symbols: _.cloneDeep(get(stores.symbols)) + } + + update_timeline({ + doing: async () => { + site_content.update((s) => { + delete s[key] + return s + }) + + stores.pages.update((store) => + store.map((page) => { + delete page.content[key] + return page + }) + ) + + stores.sections.update((store) => + store.map((section) => { + delete section.content[key] + return section + }) + ) + + stores.symbols.update((store) => + store.map((symbol) => { + delete symbol.content[key] + return symbol + }) + ) + + await Promise.all([ + await dataChanged({ + table: 'sites', + action: 'update', + id: get(site)['id'], + data: { + content: get(site_content) + } + }), + ...get(stores.sections).map(async (section) => { + await dataChanged({ + table: 'sections', + action: 'update', + id: section.id, + data: { + content: section.content + } + }) + }), + ...get(stores.pages).map(async (page) => { + await dataChanged({ + table: 'pages', + action: 'update', + id: page.id, + data: { + content: page.content + } + }) + }) + ]) + }, + undoing: async () => { + site_content.set(original.site_content) + stores.pages.set(original.pages) + stores.sections.set(original.sections) + stores.symbols.set(original.symbols) + + await Promise.all([ + await dataChanged({ + table: 'sites', + action: 'update', + id: get(site)['id'], + data: { + content: get(site_content) + } + }), + await dataChanged({ + table: 'sections', + action: 'upsert', + data: get(stores.sections).map((section) => ({ + id: section.id, + content: section.content + })) + }), + await dataChanged({ + table: 'pages', + action: 'upsert', + data: get(stores.pages).map((page) => ({ + id: page.id, + content: page.content + })) + }) + ]) + } + }) +} + +export async function set_language(loc) { + locale.set(loc) +} diff --git a/src/lib/builder/actions/misc.js b/src/lib/builder/actions/misc.js new file mode 100644 index 000000000..f25fff13a --- /dev/null +++ b/src/lib/builder/actions/misc.js @@ -0,0 +1,19 @@ +import { get } from 'svelte/store' +import { timeline } from '$lib/builder/stores/data' +import _ from 'lodash-es' + + +// TIMELINE + +/** @returns {void} */ +export function undo_change() { + const { current } = get(timeline) + current?.undoing(current.data) + timeline.undo() +} + +/** @returns {void} */ +export function redo_change() { + const { data, doing } = timeline.redo() + doing(data) +} diff --git a/src/lib/builder/actions/page_types.js b/src/lib/builder/actions/page_types.js new file mode 100644 index 000000000..62488eea6 --- /dev/null +++ b/src/lib/builder/actions/page_types.js @@ -0,0 +1,348 @@ +import { cloneDeep } from 'lodash-es' +import _ from 'lodash-es' +import { get } from 'svelte/store' +import { goto } from '$app/navigation' +import active_page_store from '$lib/builder/stores/data/page' +import stores, { update_timeline } from '$lib/builder/stores/data' +import { site } from '$lib/builder/stores/data/site' +import { dataChanged } from '$lib/builder/database' +import { Section, Page_Type } from '$lib/builder/factories' +import { handle_field_changes, handle_content_changes } from './_helpers' +import * as db_utils from './_db_utils' +import * as helpers from '$lib/builder/actions/_helpers' + +export default { + /** @param {{ id: string, name: string, color: string, icon: string }} pt_options */ + create: async (pt_options) => { + // const original_pages = cloneDeep(get(stores.pages)) + + const new_page_type = Page_Type({ + ...pt_options, + owner_site: get(site)['id'] + }) + + await dataChanged({ + table: 'page_types', + action: 'insert', + data: _.omit(new_page_type, ['entries', 'fields']) + }) + + stores.page_types.update((store) => [...store, new_page_type]) + + // insert block-drop-zone section (i.e. section w/o symbol) + await dataChanged({ + table: 'sections', + action: 'insert', + data: { + page_type: new_page_type.id, + index: 0 + } + }) + + // TODO: reinstate undo/redo + + // let db_id + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // // TODO: test + // stores.pages.set(original_pages) + // await dataChanged({ table: 'page_types', action: 'delete', id: db_id }) + // } + // }) + // return db_id + }, + delete: async (page_type_id) => { + const original_page_types = cloneDeep(get(stores.page_types)) + const updated_page_types = original_page_types.filter((page_type) => page_type.id !== page_type_id) + stores.page_types.set(updated_page_types) + await dataChanged({ table: 'page_types', action: 'delete', id: page_type_id }) + + // Go to home page if active page is deleted + if (get(active_page_store).id === page_type_id) { + await goto(`/${get(site)['url']}`) + } + + // TODO: reinstate undo/redo + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // stores.page_types.set(original_page_types) + // await dataChanged({ table: 'page_types', action: 'insert', data: deleted_page_types }) + // await dataChanged({ table: 'sections', action: 'insert', data: deleted_sections }) + // } + // }) + }, + update: async (page_id, obj) => { + const current_page_types = cloneDeep(get(stores.page_types)) + const updated_page_types = current_page_types.map((page) => (page.id === page_id ? { ...page, ...obj } : page)) + stores.page_types.set(updated_page_types) + stores.page_type.update((store) => ({ ...store, ...obj })) + await dataChanged({ table: 'page_types', action: 'update', id: page_id, data: obj }) + + // TODO: reinstate undo/redo + + // const original_page = cloneDeep(get(stores.page_types).find((page) => page.id === page_id)) + // const current_page_types = cloneDeep(get(stores.page_types)) + // const updated_page_types = current_page_types.map((page) => (page.id === page_id ? { ...page, ...obj } : page)) + // stores.page_types.set(updated_page_types) + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // stores.page_types.set(current_page_types) + // await dataChanged({ + // table: 'page_types', + // action: 'update', + // id: page_id, + // data: original_page + // }) + // } + // }) + } +} + + +export const update_page_type_entries = { + store: async function (updated_entries) { + stores.page_type.update((store) => ({ ...store, entries: updated_entries })) + + // refresh sections on page to fetch updated page entries from source + stores.sections.update((store) => store) + }, + db: async function (original_entries, updated_entries) { + const changes = db_utils.generate_entry_changes(original_entries, updated_entries) + const page_type_id = get(stores.page_type).id + + await helpers.handle_content_changes_new(changes, { + page_type: page_type_id + }) + } +} + +export async function update_page_type({ entries, fields }) { + const original_page_type = _.cloneDeep(get(stores.page_type)) + const page_type_id = get(stores.page_type).id + + const changes = { + entries: db_utils.generate_entry_changes(original_page_type.entries, entries), + fields: db_utils.generate_field_changes(original_page_type.fields, fields), + } + + db_utils.remap_entries_and_fields({ + changes: { + fields: changes.fields, + entries: changes.entries + }, + items: { + fields, + entries + } + }) + + stores.page_type.update((store) => ({ ...store, entries, fields })) + + await helpers.handle_field_changes_new(changes.fields, { page_type: page_type_id }) + await helpers.handle_content_changes_new(changes.entries, { + page_type: page_type_id + }) + + // DB: update page type instances + const pages_of_type = await dataChanged({ + table: 'pages', + action: 'select', + data: 'id, entries(*)', + match: { page_type: page_type_id } + }) + + // modify entries for pages instances + await Promise.all(pages_of_type.map(async ({ id: page_id, entries }) => { + const synced = helpers.sync_page_content_with_field_changes({ + page_entries: entries, + field_changes: changes.fields, + original_fields: original_page_type.fields, + updated_fields: fields + }) + await helpers.handle_content_changes_new(synced.changes, { page: page_id }) + })) + +} + +// toggle symbol in page type +export async function toggle_symbol({ symbol_id, page_type_id, toggled }) { + const existing_symbol = get(stores.symbols).find((s) => s.id === symbol_id) + const existing_symbol_page_types = existing_symbol.page_types || [] + const with_page_type = [...existing_symbol_page_types, page_type_id] + const without_page_type = existing_symbol_page_types.filter((pt) => pt !== page_type_id) + await dataChanged({ + table: 'symbols', + action: 'update', + id: symbol_id, + data: { + page_types: toggled ? with_page_type : without_page_type + } + }) + + // const existing_symbol = get(stores.symbols).find((s) => s.id === symbol_id) + // const existing_symbol_page_types = existing_symbol.page_types || [] + // const with_page_type = [...existing_symbol_page_types, page_type_id] + // const without_page_type = existing_symbol_page_types.filter((pt) => pt !== page_type_id) + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // await dataChanged({ + // table: 'symbols', + // action: 'update', + // id: symbol_id, + // data: { + // page_types: toggled ? null : page_type_id + // } + // }) + // } + // }) +} + +export async function delete_page_type_section(section_id) { + const updated_sections = get(stores.sections) + .filter((s) => s.id !== section_id) + .map((s, i) => ({ ...s, index: i })) + stores.sections.set(updated_sections) + + await dataChanged({ + table: 'sections', + action: 'delete', + id: section_id + }) + + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // // TODO + // } + // }) +} + +export async function add_page_type_section(symbol, position) { + const page_type_id = get(stores.page_type).id + const original_sections = _.cloneDeep(get(stores.sections)).sort((a, b) => a.index - b.index) + + // DB: insert section tied to page type + const new_section_db_id = await dataChanged({ + table: 'sections', + action: 'insert', + data: { + index: position, + symbol: symbol.id, + page_type: page_type_id + } + }) + + let new_section = Section({ + index: position, + page_type: page_type_id, + symbol: symbol.id, + entries: symbol.entries.map((entry) => ({ + ...entry, + symbol: null, + section: new_section_db_id + })) + }) + + const updated_sections = [...original_sections.slice(0, position), new_section, ...original_sections.slice(position)].map((section, i) => ({ ...section, index: i })) + + // set DB ID on new section + // _.find(updated_sections, { id: new_section.id }).id = new_section_db_id + + // STORE: add new section with update indeces + stores.sections.set(updated_sections) + + // DB: insert entries tied to new section + const new_section_content_db_ids = await handle_content_changes( + symbol.entries.map((e) => ({ action: 'insert', id: e.id, data: _.omit(e, ['symbol']) })), + [], + { section: new_section_db_id } + ) + + // STORE: update section entries ids + stores.sections.update((store) => + store.map((section) => + section.id === new_section.id + ? { + ...section, + id: new_section_db_id, + entries: section.entries.map((entry, i) => ({ + ...entry, + id: new_section_content_db_ids[entry.id], + parent: new_section_content_db_ids[entry.parent] + })) + } + : section + ) + ) + + // DB: fetch page type instances + const page_instances = await dataChanged({ + table: 'pages', + action: 'select', + data: 'id', + match: { page_type: page_type_id } + }) + + // DB: add new section to each page type instance + const instance_section_ids = await dataChanged({ + table: 'sections', + action: 'insert', + data: page_instances.map((page) => ({ + master: new_section_db_id, + page: page.id + })) + }).then((rows) => rows.map((r) => r.id)) + + // DB: add entries entries for each page type instance section + // note we can't pass all changes to handle_content_changes because of duplicate entries IDs + await Promise.all( + instance_section_ids.map((instance_section_id) => + handle_content_changes( + symbol.entries.map((entry) => ({ + action: 'insert', + id: entry.id, + data: { + ..._.omit(entry, ['symbol']), + section: instance_section_id + } + })) + ) + ) + ) + + // update indeces of sibling sections + await Promise.all( + get(stores.sections).map((s) => + dataChanged({ + table: 'sections', + action: 'update', + id: s.id, + data: { index: s.index } + }) + ) + ) + + // TODO: undo + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // // stores.sections.set(original_sections) + // // await dataChanged({ table: 'sections', action: 'delete', id: new_section.id }) + // // await dataChanged({ + // // table: 'sections', + // // action: 'upsert', + // // data: original_sections + // // }) + // } + // }) +} diff --git a/src/lib/builder/actions/pages.js b/src/lib/builder/actions/pages.js new file mode 100644 index 000000000..820833705 --- /dev/null +++ b/src/lib/builder/actions/pages.js @@ -0,0 +1,223 @@ +import _, { cloneDeep } from 'lodash-es' +import { get } from 'svelte/store' +import { goto } from '$app/navigation' +import {Page, Content_Row, Section} from '$lib/builder/factories' +import active_page_store from '$lib/builder/stores/data/page' +import stores, { update_timeline } from '$lib/builder/stores/data' +import { site } from '$lib/builder/stores/data/site' +import { dataChanged } from '$lib/builder/database' +import { get_ancestors } from './_helpers' +import {update_sitemap} from './_storage_helpers' +import * as db_utils from './_db_utils' +import {remap_entry_ids, remap_ids, sort_by_hierarchy} from './_db_utils' + +export const update_page_entries = { + store: async function (entries) { + active_page_store.update(store => ({ + ...store, + entries + })) + + // refresh sections on page to fetch updated page entries from source + stores.sections.update((store) => store) + }, + db: async function (original_entries, updated_entries) { + const changes = db_utils.generate_entry_changes(original_entries, updated_entries) + // TODO: use handle_content_changes to handle repeater item creation? + for (const { action, id, data } of changes) { + await dataChanged({ + table: 'entries', + action, + id, + data: { ...data, page: get(active_page_store).id } + }) + } + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // // TODO: do the inverse + // } + // }) + } +} + +export default { + /** @param {import('$lib').Page} page_args */ + create: async (page_args) => { + + let new_page_id + const original_pages = get(stores.pages) + + await update_timeline({ + doing: async () => { + const new_page = Page(page_args) + new_page_id = new_page.id + + // STORE: create new page + stores.pages.update((store) => [...store, new_page]) + + // Get page type entries & sections to add to page + const [ page_type_entries, page_type_sections ] = await Promise.all([ + dataChanged({ + table: 'entries', + action: 'select', + data: '*', + match: { page_type: new_page.page_type } + }), + dataChanged({ + table: 'sections', + action: 'select', + data: '*, entries(*)', + match: { page_type: new_page.page_type } + }) + ]) + + const new_page_entries = remap_entry_ids(page_type_entries).map(e => ({ ...e, page_type: null, page: new_page.id })) + const new_page_sections = page_type_sections.map(s => { + const new_section = Section({ page_type: null, page: new_page.id, master: s.id, index: s.index }) + new_section.entries = remap_entry_ids(s.entries).map(e => ({ ...e, section: new_section.id })) + return new_section + }) + + // DB: save page, mastered sections, and entries + await dataChanged({ + table: 'pages', + action: 'insert', + data: _.omit(new_page, ['entries']) + }) + await dataChanged({ + table: 'sections', + action: 'insert', + data: new_page_sections?.map(s => _.omit(s, ['entries'])) + }) + await dataChanged({ + table: 'entries', + action: 'insert', + data: [ ...sort_by_hierarchy(new_page_entries), ...sort_by_hierarchy(new_page_sections.flatMap(s => s.entries)) ] + }) + + update_sitemap() + }, + undoing: async () => { + stores.pages.set(original_pages) + await dataChanged({ table: 'pages', action: 'delete', id: new_page_id }) + update_sitemap() + } + }) + }, + delete: async (page) => { + let deleted_page_id = page.id + let deleted_pages + let deleted_sections + + await update_timeline({ + doing: async () => { + const original_pages = cloneDeep(get(stores.pages)) + + // keep deleted pages + deleted_pages = original_pages.filter((p) => p.id === deleted_page_id || get_ancestors(p, original_pages).find(i => i.id === deleted_page_id)) + + // STORE: delete page & children + const updated_pages = original_pages.filter((p) => !deleted_pages.find(dp => dp.id === p.id)) + stores.pages.set(updated_pages) + + // keep deleted sections + deleted_sections = await Promise.all( + deleted_pages.map(page => dataChanged({ + table: 'sections', + action: 'select', + data: '*, entries(*)', + match: { page: page.id } + })) + ).then(arr => arr.flat()) + + // DB: delete pages + await dataChanged({ table: 'pages', action: 'delete', id: deleted_page_id }) // will cascade-delete children, section, and entries + + // Go to home page if active page is deleted + if (deleted_pages.some(p => p.id === get(active_page_store).id)) { + await goto(`/${get(site)['id']}`) + } + update_sitemap() + }, + undoing: async () => { + const recreated = remap_ids({ pages: deleted_pages, sections: deleted_sections }) + deleted_page_id = recreated._map.get(deleted_page_id) + const recreated_pages = recreated.pages.map(s => _.omit(s, ['entries'])) + const recreated_sections = recreated.sections.map(s => _.omit(s, ['entries'])) + const recreated_entries = [ + ...recreated.pages.flatMap(p => p.entries), + ...recreated.sections.flatMap(s => s.entries) + ] + + // STORE: restore page and children + stores.pages.update(store => [...store, ...recreated.pages]) + + // DB: insert deleted page and children + await dataChanged({ table: 'pages', action: 'insert', data: sort_by_hierarchy(recreated_pages) }) + await dataChanged({ table: 'sections', action: 'insert', data: sort_by_hierarchy(recreated_sections, 'palette') }) + await dataChanged({ table: 'entries', action: 'insert', data: sort_by_hierarchy(recreated_entries) }) + + update_sitemap() + } + }) + }, + update: async (page_id, obj) => { + const original_page = cloneDeep(get(stores.pages).find((page) => page.id === page_id)) + const current_pages = cloneDeep(get(stores.pages)) + const updated_pages = current_pages.map((page) => (page.id === page_id ? { ...page, ...obj } : page)) + stores.pages.set(updated_pages) + + stores.pages.set(updated_pages) + await dataChanged({ table: 'pages', action: 'update', id: page_id, data: obj }) + + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // stores.pages.set(current_pages) + // await dataChanged({ table: 'pages', action: 'update', id: page_id, data: original_page }) + // } + // }) + }, + rearrange: async (page, new_position) => { + const original_pages = _.cloneDeep(get(stores.pages)) + + const updated_pages = _.cloneDeep(get(stores.pages)) + + // select siblings (could be root level) + const siblings = original_pages.filter((p) => p.parent === page.parent && p.id !== page.id).sort((a, b) => a.index - b.index) + + // update siblings & self w/ new indeces + const updated_children = [...siblings.slice(0, new_position), page, ...siblings.slice(new_position)].map((p, i) => ({ ...p, index: i })) + + // set updated pages w/ updated indeces + for (const child of updated_children) { + updated_pages.find((p) => p.id === child.id)['index'] = child.index + } + + stores.pages.set(updated_pages) + + // update sibling page indeces + await Promise.all( + updated_children.map((page) => + dataChanged({ + table: 'pages', + action: 'update', + id: page.id, + data: { index: page.index } + }) + ) + ) + + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // stores.pages.set(current_pages) + // await dataChanged({ table: 'pages', action: 'update', id: page_id, data: original_page }) + // } + // }) + } +} diff --git a/src/lib/builder/actions/sections.js b/src/lib/builder/actions/sections.js new file mode 100644 index 000000000..c2fab8984 --- /dev/null +++ b/src/lib/builder/actions/sections.js @@ -0,0 +1,661 @@ +import _ from 'lodash-es' +import { get } from 'svelte/store' +import stores, { update_timeline } from '$lib/builder/stores/data' +import { update as update_site } from '$lib/builder/stores/data/site' +import { dataChanged } from '$lib/builder/database' +import { swap_array_item_index } from '$lib/builder/utilities' +import { get_symbol, get_section } from '$lib/builder/stores/helpers' +import * as helpers from '$lib/builder/actions/_helpers' +import * as db_helpers from '$lib/builder/actions/_db_helpers' +import * as db_utils from '$lib/builder/actions/_db_utils' +import { update_page_file, update_symbol_file } from './_storage_helpers' +import { Section } from '$lib/builder/factories' +import active_page_store from '$lib/builder/stores/data/page' + +export async function add_section_to_palette({ palette_id, symbol, position }) { + let new_section_db_id + await update_timeline({ + doing: async () => { + // const new_section = await create_section({ + // index: position, + // symbol_id: symbol.id, + // palette_id, + // page_id: get(active_page_store).id, + // entries: symbol.entries + // }) + // await insert_palette_section(new_section) + // new_section_db_id = new_section.id + new_section_db_id = await create_and_insert_section({ + index: position, + symbol_id: symbol.id, + palette_id, + page_id: get(active_page_store).id, + entries: symbol.entries + }) + update_page_file() + }, + undoing: async () => { + await delete_palette_section(new_section_db_id) + update_page_file() + } + }) + return new_section_db_id +} + +export async function delete_section_from_palette(section_id) { + let section_to_delete = section_id + const original_section = get_section(section_id) + + await update_timeline({ + doing: async () => { + await delete_palette_section(section_to_delete) + update_page_file() + }, + undoing: async () => { + section_to_delete = await create_and_insert_section({ + index: original_section.index, + symbol_id: original_section.symbol, + palette_id: original_section.palette, + page_id: original_section.page, + entries: original_section.entries + }) + update_page_file() + } + }) +} + +export async function move_section(block_being_moved, to) { + const block_being_replaced = _.find(get(stores.sections), ['index', to]) + const original_sections = _.cloneDeep(get(stores.sections)) + const updated_sections = swap_array_item_index(original_sections, block_being_moved.index, to).map((section) => { + if (section.id === block_being_moved.id) { + return { + ...section, + index: to + } + } else if (section.id === block_being_replaced?.id) { + return { + ...section, + index: block_being_moved.index + } + } else return section + }) + + await update_timeline({ + doing: async () => { + stores.sections.set(updated_sections) + if (!block_being_replaced) return + await Promise.all([ + dataChanged({ + table: 'sections', + action: 'update', + id: block_being_replaced.id, + data: { index: block_being_moved.index } + }), + dataChanged({ + table: 'sections', + action: 'update', + id: block_being_moved.id, + data: { index: to } + }) + ]) + update_page_file() + }, + undoing: async () => { + stores.sections.set(original_sections) + await Promise.all([ + dataChanged({ + table: 'sections', + action: 'update', + id: block_being_replaced.id, + data: { index: block_being_replaced.index } + }), + dataChanged({ + table: 'sections', + action: 'update', + id: block_being_moved.id, + data: { index: block_being_moved.index } + }) + ]) + update_page_file() + } + }) +} + +/** + * Updates a section with new data, syncronizes symbol updates, and applies changes + * + * @async + * @param {string} section_id - The ID of the section to update. + * @param {Object} options - The options for updating the section. + * @param {Object} options.updated_data - The updated data for the section. + * @param {Object} options.changes - The changes to apply to the section. + * @returns {Promise} + */ +export async function update_section(section_id, { updated_data, build_page = true }) { + const original_section = get_section(section_id) + let original_section_entries = _.cloneDeep(original_section.entries) + + const updated_section_entries = _.cloneDeep(updated_data.entries.filter(e => !e.page && !e.site && !e.page_type)) + + const original_symbol = get_symbol(original_section.symbol || original_section.master?.symbol) + + // Page entries + let original_page_entries = _.cloneDeep(get(active_page_store).entries) + let updated_page_entries = _.cloneDeep(updated_data.entries.filter(e => e.page)) + + // Site entries + let original_site_entries = _.cloneDeep(get(stores.site).entries) + let updated_site_entries = _.cloneDeep(updated_data.entries.filter(e => e.site)) + + + const changes = _.cloneDeep({ + section_entries: db_utils.generate_entry_changes(original_section.entries, updated_section_entries), + symbol_fields: db_utils.generate_field_changes(original_symbol.fields, updated_data.fields), + page_entries: db_utils.generate_entry_changes(original_page_entries, updated_page_entries), + site_entries: db_utils.generate_entry_changes(original_site_entries, updated_site_entries) + }) + + let { entries: updated_symbol_entries } = helpers.sync_symbol_content_with_section_changes({ + original_symbol_entries: original_symbol.entries, + original_symbol_fields: original_symbol.fields, + updated_section_entries, + updated_symbol_fields: updated_data.fields, + section_content_changes: changes.section_entries, + field_changes: changes.symbol_fields + }) + + let symbol_content_changes = db_utils.generate_entry_changes(original_symbol.entries, updated_symbol_entries) + + let section_content_changes = changes.section_entries + let symbol_field_changes = _.cloneDeep(changes.symbol_fields) + let updated_symbol_fields = _.cloneDeep(updated_data.fields) + + let page_content_changes = _.cloneDeep(changes.page_entries) + let site_content_changes = _.cloneDeep(changes.site_entries) + + // TODO: Page Type entries changes + let original_page_type_entries = _.cloneDeep(get(active_page_store).entries) + let updated_page_type_entries = _.cloneDeep(updated_data.entries.filter(e => e.page)) + // let page_type_content_changes = _.cloneDeep(changes.entries.filter(c => c.dynamic === 'page-type')) + + // Symbol + const symbol_id = original_section.symbol || original_section.master?.symbol + const updated_symbol_code = updated_data.code + + let local_sibling_sections = helpers.generate_sibling_section_changes({ + section_id, + symbol_id, + field_changes: symbol_field_changes, + original_fields: original_symbol.fields, + updated_fields: updated_symbol_fields + }) + let foreign_sibling_sections = [] // fetch and assign below to avoid delay + + + await update_timeline({ + doing: async () => { + + // remap IDs for new items (necessary to refresh IDs when doing() after undoing()) + db_utils.remap_entries_and_fields({ + changes: { + fields: symbol_field_changes, + entries: [...section_content_changes, ...symbol_content_changes, ...local_sibling_sections.flatMap(s => s.changes)] + }, + items: { + fields: updated_symbol_fields, + entries: [...updated_section_entries, ...updated_symbol_entries, ...local_sibling_sections.flatMap(s => s.entries)] + } + }) + + if (page_content_changes.length > 0) { + db_utils.remap_entries_and_fields({ + changes: { + fields: [], + entries: page_content_changes + }, + items: { + fields: [], + entries: updated_page_entries + } + }) + } + if (site_content_changes.length > 0) { + db_utils.remap_entries_and_fields({ + changes: { + fields: [], + entries: site_content_changes + }, + items: { + fields: [], + entries: updated_site_entries + } + }) + } + + // STORE: update Section entries + store_actions.update_section(section_id, { entries: updated_section_entries }) + + // STORE: update sibling Sections entries + local_sibling_sections.forEach(({ id, entries }) => { + store_actions.update_section(id, { entries }) + }) + + // STORE: update Site entries + if (site_content_changes.length > 0) { + update_site({ entries: updated_site_entries }) + } + + // STORE: update Page entries + if (page_content_changes.length > 0) { + active_page_store.update(store => ({ + ...store, + entries: updated_page_entries + })) + } + + // STORE: update Symbol code, fields & entries + store_actions.update_symbol(symbol_id, { + fields: updated_symbol_fields, + entries: updated_symbol_entries, + code: updated_symbol_code + }) + + // DB: save Symbol code if changed + if (!_.isEqual(original_symbol.code, updated_symbol_code)) { + await db_actions.update_symbol(symbol_id, { code: updated_symbol_code }) + update_symbol_file(get(stores.symbols).find(s => s.id === symbol_id)) + } + + // DB: save Symbol fields + await helpers.handle_field_changes_new(symbol_field_changes, { + symbol: symbol_id + }) + + // DB: save Section, Symbol, Site, and Page entries + await Promise.all([ + helpers.handle_content_changes_new(section_content_changes, { + section: section_id + }), + helpers.handle_content_changes_new(symbol_content_changes, { + symbol: symbol_id + }), + helpers.handle_content_changes_new(site_content_changes, { site: get(stores.site).id}), + helpers.handle_content_changes_new(page_content_changes, { page: get(active_page_store).id}) + ]) + + + // DB: Update sibling Sections (only relevant is symbol entries have changes) + if (symbol_content_changes.length > 0) { + await Promise.all( + local_sibling_sections.map(({ id, changes }) => + helpers.handle_content_changes_new(changes, { + section: id + }) + ) + ) + + const fetched_foreign_sibling_sections = await db_helpers.get_off_page_sibling_sections(section_id, symbol_id) + foreign_sibling_sections = helpers.generate_sibling_section_changes({ + section_id, + symbol_id, + field_changes: symbol_field_changes, + original_fields: original_symbol.fields, + updated_fields: updated_symbol_fields + }, fetched_foreign_sibling_sections) + + await Promise.all( + foreign_sibling_sections.map(({ id, changes }) => + helpers.handle_content_changes_new(changes, { + section: id + }) + ) + ) + } + + if (build_page) { + update_page_file(site_content_changes.length > 0) + } + }, + undoing: async () => { + // Generate inverted changes + const [ inverted_section_entry_changes, restored_section_entries ] = db_utils.generate_inverted_changes(section_content_changes, original_section_entries) + + const inverted_siblings = local_sibling_sections.map(sibling => { + const [inverted_sibling_entry_changes, restored_sibling_entries] = db_utils.generate_inverted_changes(sibling.changes, sibling.entries) + return { id: sibling.id, changes: inverted_sibling_entry_changes, entries: restored_sibling_entries} + }) + + const [ inverted_field_changes, restored_fields ] = db_utils.generate_inverted_changes(symbol_field_changes, original_symbol.fields) + const [ inverted_symbol_entry_changes, restored_symbol_entries ] = db_utils.generate_inverted_changes(symbol_content_changes, original_symbol.entries) + const [ inverted_site_entry_changes, restored_site_entries ] = db_utils.generate_inverted_changes(site_content_changes, original_site_entries) + const [ inverted_page_entry_changes, restored_page_entries ] = db_utils.generate_inverted_changes(page_content_changes, original_page_entries) + + // STORE: restore section entries + store_actions.update_section(section_id, { entries: original_section_entries }) + + // STORE: restore on-page section entries + inverted_siblings.forEach(sibling => + store_actions.update_section(sibling.id, { entries: sibling.entries }) + ) + + // STORE: restore symbol fields, entries, and code + store_actions.update_symbol(symbol_id, { + fields: restored_fields, + entries: restored_symbol_entries, + code: original_symbol.code + }) + + // STORE: restore Site entries + update_site({ entries: restored_site_entries }) + + // STORE: restore Page entries + active_page_store.update(store => ({ + ...store, + entries: restored_page_entries + })) + + // DB: restore symbol code if changed + if (!_.isEqual(original_symbol.code, updated_data.code)) { + update_symbol_file(get(stores.symbols).find(s => s.id === symbol_id)) + db_actions.update_symbol(original_symbol.id, { code: original_symbol.code }) + } + + // DB: restore symbol fields + await helpers.handle_field_changes_new(inverted_field_changes, { symbol: symbol_id }) + + // DB: revert section, sibling, symbol, page, and site entry changes + await Promise.all([ + helpers.handle_content_changes_new(inverted_section_entry_changes, { section: section_id }), + ...inverted_siblings.map(sibling => + helpers.handle_content_changes_new(sibling.changes, { section: sibling.id }), + ), + helpers.handle_content_changes_new(inverted_symbol_entry_changes, { symbol: symbol_id }), + helpers.handle_content_changes_new(inverted_site_entry_changes, { site: get(stores.site).id }), + helpers.handle_content_changes_new(inverted_page_entry_changes, { page: get(active_page_store).id }) + ]) + + // DB: Reverse foreign sibling section changes + if (inverted_symbol_entry_changes.length > 0) { + await Promise.all( + foreign_sibling_sections.map(async ({ id, changes, entries }) => { + const [ inverted_sibling_entry_changes ] = db_utils.generate_inverted_changes(changes, entries) + await helpers.handle_content_changes_new(inverted_sibling_entry_changes, { + section: id + }) + }) + ) + } + + // restore original fields and entries (necessary for doing() w/ recreated items w/ new IDs) + original_symbol.fields = restored_fields + original_symbol.entries = restored_symbol_entries + original_section_entries = restored_section_entries + original_site_entries = restored_site_entries + original_page_entries = restored_page_entries + + if (build_page) { + update_page_file(site_content_changes.length > 0) + } + } + }) +} + +// extract symbol/instance entries from updated section entries +export async function update_section_entries({ id, value }) { + const original_sections = _.cloneDeep(get(stores.sections)) + const updated_sections = _.cloneDeep( + original_sections.map((section) => { + const relevant_entry = section.entries.find((e) => e.id === id) + if (relevant_entry) { + const updated_entry = { ...relevant_entry, value } + const updated_entries = section.entries.map((e) => (e.id === id ? updated_entry : e)) + return { ...section, entries: updated_entries } + } else return section + }) + ) + stores.sections.set(updated_sections) + + // DB + await dataChanged({ + table: 'entries', + action: 'update', + id, + data: { value } + }) + update_page_file() +} + +////////////////////////////////// +// HELPERS /////////////////////// +////////////////////////////////// + +/** + * Inserts a new section into the database and returns its ID. + * + * @param {Object} params + * @param {number} params.index - The index of the new section. + * @param {string} params.symbol_id - The ID of the symbol associated with the section. + * @param {string} params.palette_id - The ID of the palette the section belongs to. + * @param {Array} params.entries - The entries of the section. + * @param {string} params.page_id - The ID of the page the section belongs to. + * @returns {Promise} The newly inserted section's ID. + */ +async function create_and_insert_section({ index, symbol_id, palette_id, entries, page_id }) { + // create new section object + const new_section = Section({ + index, + page: page_id, + palette: palette_id, + symbol: symbol_id, + entries: db_utils.remap_entry_ids(entries) + }) + + // STORE: set updated sections + const original_sections = _.cloneDeep(get(stores.sections)) + const original_palette_sections = original_sections.filter((s) => s.palette === new_section.palette).sort((a, b) => a.index - b.index) + const updated_palette_sections = [...original_palette_sections.slice(0, new_section.index), new_section, ...original_palette_sections.slice(new_section.index)].map((s, i) => ({ ...s, index: i })) + const updated_sections = original_sections.flatMap((section) => { + if (section.palette) { + const updated_palette_section = updated_palette_sections.find((s) => s.id === section.id) + return updated_palette_section + } else return section + }) + updated_sections.push(new_section) + stores.sections.set(updated_sections) + + // DB: insert new section + await dataChanged({ + table: 'sections', + action: 'insert', + data: _.omit(new_section, ['entries']) + }) + + // DB: insert section entries + await dataChanged({ + table: 'entries', + action: 'insert', + data: new_section.entries.map(e => ({ ...e, symbol: null, section: new_section.id })) + }) + + // DB: update palette section indeces + await Promise.all( + updated_palette_sections.map((s) => + dataChanged({ + table: 'sections', + action: 'update', + id: s.id, + data: { index: s.index } + }) + ) + ) + + return new_section.id +} + + + +/** + * Inserts a new section into the database and returns its ID. + * + * @param {Object} params + * @param {number} params.index - The index of the new section. + * @param {string} params.symbol_id - The ID of the symbol associated with the section. + * @param {string} params.palette_id - The ID of the palette the section belongs to. + * @param {Array} params.entries - The entries of the section. + * @param {string} params.page_id - The ID of the page the section belongs to. + * @returns {Promise} The newly inserted section. + */ +async function create_section({ index, symbol_id, palette_id, entries, page_id }) { + // create new section object + const new_section = Section({ + index, + page: page_id, + palette: palette_id, + symbol: symbol_id, + entries // will update w/ DBIDs + }) + + // DB: insert new section + const new_section_db_id = await dataChanged({ + table: 'sections', + action: 'insert', + data: _.pick(new_section, ['index', 'symbol', 'palette', 'page']) + }) + new_section.id = new_section_db_id + + // DB: insert entries entries + const content_db_ids = await helpers.handle_content_changes( + entries.map((data) => ({ + action: 'insert', + id: data.id, + data: { + ..._.omit(data, ['symbol']), + section: new_section_db_id + } + })), + [] + ) + new_section.entries = new_section.entries.map((row) => ({ + ...row, + id: content_db_ids[row.id], + parent: content_db_ids[row.parent] + })) + + return new_section +} + +/** + * Inserts a new section into the palette and updates the indices of existing sections. + * + * @param {Object} section - The new section to be inserted. + * @param {string} section.id - The ID of the new section. + * @param {number} section.index - The index where the new section should be inserted. + * @param {string} section.palette - The ID of the palette where the section should be inserted. + * @returns {Promise} + */ +async function insert_palette_section(section) { + // insert new_section to page sections at given index, set other indeces accordingly + const original_sections = _.cloneDeep(get(stores.sections)) + const original_palette_sections = original_sections.filter((s) => s.palette === section.palette).sort((a, b) => a.index - b.index) + + const updated_palette_sections = [...original_palette_sections.slice(0, section.index), section, ...original_palette_sections.slice(section.index)].map((s, i) => ({ ...s, index: i })) + const updated_sections = original_sections.flatMap((section) => { + if (section.palette) { + const updated_palette_section = updated_palette_sections.find((s) => s.id === section.id) + return updated_palette_section + } else return section + }) + updated_sections.push(section) + + // STORE: set updated sections + stores.sections.set(updated_sections) + + // DB: update palette section indeces + await Promise.all( + updated_palette_sections.map((s) => + dataChanged({ + table: 'sections', + action: 'update', + id: s.id, + data: { index: s.index } + }) + ) + ) +} + +async function delete_palette_section(section_id) { + const original_sections = _.cloneDeep(get(stores.sections)) + + const new_palette_sections = original_sections + .filter((s) => s.palette) + .filter((s) => s.id !== section_id) + .map((s, i) => ({ ...s, index: i })) + + const new_sections = original_sections + .map((section) => { + const updated_palette_section = new_palette_sections.find((s) => s.id === section.id) + return updated_palette_section || section + }) + .filter((section) => section.id !== section_id) + + stores.sections.set(new_sections) + await dataChanged({ table: 'sections', action: 'delete', id: section_id }) + await Promise.all( + new_palette_sections.map((s) => + dataChanged({ + table: 'sections', + action: 'update', + id: s.id, + data: { index: s.index } + }) + ) + ) +} + +// DB ACTIONS +const db_actions = { + update_symbol: async (symbol_id, updated_symbol_props) => { + await dataChanged({ + table: 'symbols', + action: 'update', + id: symbol_id, + data: updated_symbol_props + }) + } +} + +// STORE ACTIONS +const store_actions = { + /** + * Updates a section in the sections store. + * + * @param {string} section_id - The ID of the section to update. + * @param {Object} updated_section_props - An object containing the properties to update. + * @returns {void} + */ + update_section: (section_id, updated_section_props) => { + stores.sections.update((store) => + store.map((section) => { + if (section.id === section_id) { + return { + ...section, + ...updated_section_props + } + } else return section + }) + ) + }, + update_symbol: (symbol_id, updated_symbol_props) => { + stores.symbols.update((store) => + store.map((symbol) => { + if (symbol.id === symbol_id) { + return { + ...symbol, + ...updated_symbol_props + } + } else return symbol + }) + ) + } +} diff --git a/src/lib/builder/actions/symbols.js b/src/lib/builder/actions/symbols.js new file mode 100644 index 000000000..18ad40ec6 --- /dev/null +++ b/src/lib/builder/actions/symbols.js @@ -0,0 +1,457 @@ +import { cloneDeep } from 'lodash-es' +import _ from 'lodash-es' +import {v4 as uuid} from 'uuid' +import { get } from 'svelte/store' +import stores, { update_timeline } from '$lib/builder/stores/data' +import { site } from '$lib/builder/stores/data/site' +import { dataChanged } from '$lib/builder/database' +import * as helpers from './_helpers' +import * as db_helpers from '$lib/builder/actions/_db_helpers' +import * as db_utils from './_db_utils' +import { Symbol } from '$lib/builder/factories' +import { update_page_file, update_symbol_file } from './_storage_helpers' +import { get_on_page_symbol_sections } from '$lib/builder/stores/helpers' +import { remap_entries_and_fields } from './_db_utils' + +/** + * Adds a block to the site. + * + * @param {Object} options + * @param {Object} options.symbol - The symbol object representing the block to be added. + * @param {number} options.index - The index at which to insert the block. + * @returns {Promise} + */ +export async function add_block_to_site({ symbol, index }) { + let created_symbol_db_id + + await update_timeline({ + doing: async () => { + const new_block = await create_block({ + name: symbol.name, + code: symbol.code, + entries: symbol.entries.filter(e => !e.page && !e.site), + fields: symbol.fields, + index + }) + created_symbol_db_id = new_block.id + + await insert_block(new_block) + }, + undoing: async () => { + await delete_block(created_symbol_db_id) + } + }) +} + +export async function delete_block_from_site(block) { + let active_block_id = block.id + await update_timeline({ + doing: async () => { + await delete_block(active_block_id) + update_page_file() + }, + undoing: async () => { + const new_block = await create_block({ + name: block.name, + code: block.code, + index: block.index, + entries: block.entries, + fields: block.fields + }) + active_block_id = new_block.id + + await insert_block(new_block) + update_page_file() + } + }) +} + + +export async function add_multiple_symbols(symbols) { + let created_symbol_db_id + + await update_timeline({ + doing: async () => { + + const remapped_symbols = symbols.map(symbol => { + const new_id = uuid() + const remapped_symbol = _.cloneDeep({ + ...symbol, + id: new_id + }) + db_utils.remap_entry_and_field_items({ + fields: remapped_symbol.fields, + entries: remapped_symbol.entries + }) + return { + ...remapped_symbol, + index: 0, + id: new_id, + } + }) + + stores.symbols.update(store => [...store, ...remapped_symbols]) + + await dataChanged({ + table: 'symbols', + action: 'insert', + data: remapped_symbols.map(s => _.omit(s, ['entries', 'fields'])) + }) + + + const fields = remapped_symbols.flatMap(s => s.fields.map(f => ({ ...f, symbol: s.id, library_symbol: null }))) + const entries = remapped_symbols.flatMap(s => s.entries.map(e => ({ ...e, symbol: s.id, library_symbol: null }))) + + await dataChanged({ + table: 'fields', + action: 'insert', + data:fields + }) + await dataChanged({ + table: 'entries', + action: 'insert', + data:entries + }) + }, + undoing: async () => { + await delete_block(created_symbol_db_id) + } + }) +} + + + +/** + * Updates a block with new data and handles changes to its fields and entries. + * This function also synchronizes entries changes across all instances of the block (section siblings), + * and updates the data with database IDs in both the doing() and undoing() methods. + * + * @async + * @param {Object} params - The parameters for updating the block. + * @param {Object} params.block - The original block object to be updated. + * @param {Object} params.updated_data - The new data to update the block with. + * @param {string} params.updated_data.code - The updated code for the block. + * @param {Array} params.updated_data.fields - The updated fields for the block. + * @param {Array} params.updated_data.entries - The updated entries for the block. + * @returns {Promise} + * + * @description + * In the doing() method: + * - Updates the block's code in the database if changed. + * - Handles field and entries changes, updating the database and obtaining new database IDs. + * - Updates `updated_fields`, `updated_entries`, and changes with the new database IDs. + * - Synchronizes changes across all instances of the block (i.e. section siblings). + * + * In the undoing() method: + * - Reverts changes made in the doing() method. + * - Recreates deleted fields and entries, obtaining new database IDs. + * - Updates the reverted data and intial changes with the new database IDs so. + * + * This ensures that all data is consistent with the database state in both forward and backward operations. + * Especially when deleting entries/fields, since they're recreated in undoing() and need to be refereced correctly in doing() + */ +export async function update_block({ block, updated_data }) { + + const original_code = block.code + let original_fields = _.cloneDeep(block.fields) + let original_entries = _.cloneDeep(block.entries) + + const updated_code = updated_data.code + let updated_fields = _.cloneDeep(updated_data.fields) + let updated_entries = _.cloneDeep(updated_data.entries.filter(e => !e.site && !e.page && !e.page_type)) + + let content_changes = db_utils.generate_entry_changes(original_entries, updated_entries) + let field_changes = db_utils.generate_field_changes(original_fields, updated_fields) + + const local_sections = helpers.generate_sibling_section_changes({ symbol_id: block.id, field_changes, original_fields, updated_fields }) + let foreign_sections = [] // fetch and assign below to avoid delay + + await update_timeline({ + doing: async () => { + + // remap IDs for new items (necessary to refresh IDs when doing() after undoing()) + db_utils.remap_entries_and_fields({ + changes: { + fields: field_changes, + entries: [...content_changes, ...local_sections.flatMap(s => s.changes)] + }, + items: { + fields: updated_fields, + entries: [...updated_entries, ...local_sections.flatMap(s => s.entries)] + } + }) + + // STORE: update code, symbol fields & entries locally w/ DB IDs + store_actions.update_symbol(block.id, { + fields: updated_fields, + entries: updated_entries, + code: updated_code + }) + + // STORE: update on-page sections' entries + for (const { id, entries } of local_sections) { + store_actions.update_section(id, { entries }) + } + + // DB: save block code if changed + if (!_.isEqual(original_code, updated_code)) { + await db_actions.update_block(block.id, { code: updated_code }) + } + + // DB: save Symbol fields + await helpers.handle_field_changes_new(field_changes, { + symbol: block.id + }) + + // DB: save Symbol entries + await helpers.handle_content_changes_new(content_changes, { + symbol: block.id + }) + + // DB: update Symbol Sections + if (content_changes.length > 0) { + await Promise.all( + local_sections.map(({ id, changes }) => + helpers.handle_content_changes_new(changes, { + section: id + }) + ) + ) + + const fetched_foreign_sections = await db_helpers.get_symbol_sections(block.id) + foreign_sections = helpers.generate_sibling_section_changes({ + symbol_id: block.id, + field_changes: field_changes, + original_fields, + updated_fields + }, fetched_foreign_sections) + + await Promise.all( + foreign_sections.map(({ id, changes }) => + helpers.handle_content_changes_new(changes, { + section: id + }) + ) + ) + } + + update_symbol_file(get(stores.symbols).find(s => s.id === block.id)) + }, + undoing: async () => { + + // DOING: this is too complicated, just replace it with what I was doing before: + // use generate_inverse_changes, return the id_map for the fields, and pass it to subsequent generate_inverse_changes/content + + + const { changes:inverted_field_changes, fields:restored_fields, map } = db_utils.generate_inverted_field_changes(field_changes, original_fields) + + const { changes:inverted_entry_changes, entries:restored_entries } = db_utils.generate_inverted_entry_changes(content_changes, original_entries, map) + const all_inverted_local_section_entries = local_sections.map(({ changes, entries }) => db_utils.generate_inverted_entry_changes(changes, entries, map)) + const all_inverted_foreign_section_entries = foreign_sections.map(({ changes, entries }) => db_utils.generate_inverted_entry_changes(changes, entries, map)) + + // STORE: update the local sections w/ the original and recreated items + all_inverted_local_section_entries.forEach((entries, i) => { + const section_id = local_sections[i].id + store_actions.update_section(section_id, { entries }) + }) + + + // STORE: update symbol code, fields, and entries + store_actions.update_symbol(block.id, { + fields: restored_fields, + entries: restored_entries, + code: original_code + }) + + + // DB: restore symbol code + if (!_.isEqual(original_code, updated_code)) { + db_actions.update_block(block.id, { code: original_code }) + } + + // DB: restore symbol fields + await helpers.handle_field_changes_new(inverted_field_changes, { symbol: block.id }) + + + // DB: revert Symbol and Sections entry changes + await Promise.all([ + helpers.handle_content_changes_new(inverted_entry_changes, { symbol: block.id }), + ...all_inverted_local_section_entries.map((section, i) => { + const section_id = local_sections[i].id + return helpers.handle_content_changes_new(section.changes, { section: section_id }) + }), + ]) + + + // DB: Reverse foreign sibling section changes + if (inverted_entry_changes.length > 0) { + await Promise.all( + all_inverted_foreign_section_entries.map(async ({ changes, entries }, i) => { + const section_id = foreign_sections[i].id + const [ inverted_sibling_entry_changes ] = db_utils.generate_inverted_changes(changes, entries) + await helpers.handle_content_changes_new(inverted_sibling_entry_changes, { + section: section_id + }) + }) + ) + } + + original_fields = restored_fields + original_entries = restored_entries + + update_symbol_file(get(stores.symbols).find(s => s.id === block.id)) + } + }) +} + +export async function rename_block({ block, name }) { + await update_timeline({ + doing: async () => { + store_actions.update_symbol(block.id, { name }) + db_actions.update_block(block.id, { name }) + }, + undoing: async () => { + store_actions.update_symbol(block.id, { name }) + db_actions.update_block(block.id, { name: block.name }) + } + }) +} + +export async function move_block(block_being_moved, new_position) { + const original_symbols = cloneDeep(get(stores.symbols)) + const blocks_without_block_being_moved = cloneDeep(get(stores.symbols)).filter((s) => s.id !== block_being_moved.id) + const updated_blocks = [...blocks_without_block_being_moved.slice(0, new_position), block_being_moved, ...blocks_without_block_being_moved.slice(new_position)].map((s, i) => ({ ...s, index: i })) + + await update_timeline({ + doing: async () => { + stores.symbols.set(updated_blocks) + await Promise.all([updated_blocks.map((block) => db_actions.update_block(block.id, { index: block.index }))]) + }, + undoing: async () => { + stores.symbols.set(original_symbols) + await Promise.all([original_symbols.map((block) => db_actions.update_block(block.id, { index: block.index }))]) + } + }) +} + +// HELPERS +async function create_block({ name = '', code, entries, fields, index }) { + const insertions = { + entries: entries.map((e) => ({ action: 'insert', id: e.id, data: e })), + fields: fields.map((e) => ({ action: 'insert', id: e.id, data: e })) + } + + // DB: insert symbol with entries & fields + const created_symbol_db_id = await dataChanged({ + table: 'symbols', + action: 'insert', + data: { + name, + code, + index, + owner_site: get(site).id + } + }) + + const field_db_ids = await helpers.handle_field_changes(insertions.fields, { symbol: created_symbol_db_id }) + const content_db_ids = await helpers.handle_content_changes(insertions.entries, field_db_ids, { symbol: created_symbol_db_id }) + + const new_block = Symbol({ + id: created_symbol_db_id, + name, + code, + index, + entries: entries.map((entry) => ({ + ...entry, + id: content_db_ids[entry.id], + parent: content_db_ids[entry.parent], + field: field_db_ids[entry.field] + })), + fields: fields.map((field) => ({ + ...field, + id: field_db_ids[field.id], + parent: field_db_ids[field.parent] + })) + }) + + return new_block +} + +async function insert_block(block) { + const original_blocks = _.cloneDeep(get(stores.symbols)) + const updated_blocks = [...original_blocks.slice(0, block.index), block, ...original_blocks.slice(block.index)].map((s, i) => ({ ...s, index: i })) + + // STORE: set updated blocks + stores.symbols.set(updated_blocks) + + // DB: update palette section indeces + await Promise.all(updated_blocks.map((s) => db_actions.update_block(s.id, { index: s.index }))) +} + +async function delete_block(block_id) { + const original_blocks = _.cloneDeep(get(stores.symbols)) + const new_blocks = original_blocks + .filter((block) => block.id !== block_id) + .map((block, i) => ({ + ...block, + index: i + })) + + stores.symbols.set(new_blocks) + await dataChanged({ table: 'symbols', action: 'delete', id: block_id }) + await Promise.all(new_blocks.map((s) => db_actions.update_block(s.id, { index: s.index }))) +} + +// DB ACTIONS +const db_actions = { + update_block: async (block_id, updated_block_props) => { + await dataChanged({ + table: 'symbols', + action: 'update', + id: block_id, + data: updated_block_props + }) + } +} + +// STORE ACTIONS +const store_actions = { + /** + * Updates a section in the sections store. + * + * @param {string} section_id - The ID of the section to update. + * @param {Object} updated_section_props - An object containing the properties to update. + * @returns {void} + */ + update_section: (section_id, updated_section_props) => { + stores.sections.update((store) => + store.map((section) => { + if (section.id === section_id) { + return { + ...section, + ...updated_section_props + } + } else return section + }) + ) + }, + /** + * Updates a symbol in the symbols store. + * + * @param {string} symbol_id - The ID of the symbol to update. + * @param {Object} updated_symbol_props - An object containing the properties to update. + * @returns {void} + */ + update_symbol: (symbol_id, updated_symbol_props) => { + stores.symbols.update((store) => + store.map((symbol) => { + if (symbol.id === symbol_id) { + return { + ...symbol, + ...updated_symbol_props + } + } else return symbol + }) + ) + } +} diff --git a/src/lib/builder/code_generators.js b/src/lib/builder/code_generators.js new file mode 100644 index 000000000..5cefe5948 --- /dev/null +++ b/src/lib/builder/code_generators.js @@ -0,0 +1,186 @@ +import { find as _find, chain as _chain, flattenDeep as _flattenDeep } from 'lodash-es' +import _ from 'lodash-es' +import { get } from 'svelte/store' +import { processors } from './component.js' +import stores from './stores/data' +import { site as activeSite } from './stores/data/site.js' +import sections from './stores/data/sections.js' +import symbols from './stores/data/symbols.js' +import pages from './stores/data/pages.js' +import active_page from './stores/data/page.js' +import { get_content_with_synced_values, get_page_data, get_site_data } from './stores/helpers.js' +import { design_tokens } from './constants.js' + +export async function block_html({ code, data }) { + const { html, css: postcss, js } = code + // @ts-ignore + const { css, error } = await processors.css(postcss || '') + const res = await processors.html({ + component: { html, css, js, data } + }) + return res +} + +/** + * @param {{ + * page?: import('$lib').Page + * site?: import('$lib').Site + * page_sections?: import('$lib').Section[] + * page_symbols?: import('$lib').Symbol[] + * page_list?: import('$lib').Page[] + * page_types?: import('$lib').Page_Type[] + * locale?: string + * no_js?: boolean + * }} details + * @returns {Promise<{ html: string, js: string}>} + * */ +export async function page_html({ page = get(active_page), site = get(activeSite), page_sections = get(sections), page_symbols = get(symbols), page_list = get(pages), page_types = get(stores.page_types), locale = 'en', no_js = false }) { + const page_type = _.isObject(page.page_type) ? page.page_type : page_types.find(pt => pt.id === page.page_type) + const hydratable_symbols_on_page = page_symbols.filter((s) => s.code.js && page_sections.some((section) => section.symbol === s.id || section.master?.symbol === s.id)) + const head = { + code: site_design_css(site.design) + site.code.head + page_type?.code.head, + data: get_page_data({ page, page_type, site, loc: locale }) + } + const component = await Promise.all([ + ...page_sections + .filter((s) => s.symbol || s.master?.symbol) + .sort((a, b) => { + const a_palette_index = a.palette ? page_sections.find(s => s.id === a.palette)?.index : null + const b_palette_index = b.palette ? page_sections.find(s => s.id === b.palette)?.index : null + + const a_master_index = a.master?.index || null + const b_master_index = b.master?.index || null + + if (a_palette_index !== null && b_palette_index !== null) { + // @ts-ignore + return a.index - b.index + } else if (a_palette_index !== null && b_master_index !== null) { + // @ts-ignore + return a_palette_index - b_master_index + } else if (a_master_index !== null && b_palette_index !== null) { + // @ts-ignore + return a_master_index - b_palette_index + } else if (a_master_index !== null && b_master_index !== null) { + return a_master_index - b_master_index + } + + // Otherwise compare regular indices + return a.index - b.index; + }) + .map(async (section) => { + // @ts-ignore + const symbol = page_symbols.find((symbol) => symbol.id === (section.symbol || section.master.symbol)) + // @ts-ignore + const { html, css: postcss, js } = symbol.code + + const data = get_content_with_synced_values({ + entries: section.entries, + // @ts-ignore + fields: symbol.fields, + page, + site, + pages: page_list, + page_types + })[locale] + + // @ts-ignore + const { css, error } = await processors.css(postcss || '') + return { + html: ` +
+ ${html} +
`, + js, + css, + data + } + }), + (async () => { + const data = get_site_data({ site, loc: locale }) + return { + html: site.code.foot, + css: ``, + js: ``, + data + } + })() + ]) + + + const res = await processors.html({ + component, + head, + locale + }) + + const final = `\ + + + + + ${res.head} + + + + ${res.html} + ${no_js ? `` : ``} + + + ` + + return { + html: final, + js: res.js + } + + // fetch module to hydrate component, include hydration data + function fetch_modules(symbols) { + return symbols + .map( + (symbol) => ` + import('/_symbols/${symbol.id}.js') + .then(({default:App}) => { + ${page_sections + .filter((section) => section.symbol === symbol.id || section.master?.symbol === symbol.id) + .map((section) => { + const instance_content = get_content_with_synced_values({ + entries: section.entries, + fields: symbol.fields, + page, + site, + pages: page_list, + page_types + })[locale] + return ` + new App({ + target: document.querySelector('#section-${section.id}'), + hydrate: true, + props: ${JSON.stringify(instance_content)} + }) + ` + }) + .join('\n')} + }) + .catch(e => console.error(e)); + ` + ) + .join('\n') + } +} + +export function site_design_css(values) { + return ` + + + + ` +} diff --git a/src/lib/builder/component.js b/src/lib/builder/component.js new file mode 100644 index 000000000..c8cb6d273 --- /dev/null +++ b/src/lib/builder/component.js @@ -0,0 +1,53 @@ +const compilers = {} + +let checked = 0 + +export const processors = { + html: async (raw, data) => { + return await new Promise((resolve) => { + checkIfRegistered() + async function checkIfRegistered() { + const compiler = compilers['html'] + if (compiler) { + const res = await compiler(raw) + resolve(res) + } else { + checked++ + if (checked < 100) { + setTimeout(checkIfRegistered, 100) + } + } + } + }) + }, + css: async (raw, data) => { + return await new Promise((resolve) => { + checkIfRegistered() + async function checkIfRegistered() { + const compiler = compilers['css'] + + if (compiler) { + const res = await compiler(raw) + + resolve(res) + } else { + checked++ + if (checked < 100) { + setTimeout(checkIfRegistered, 100) + } + } + } + }) + }, + js: async (raw, options) => { + const final = raw + return final + } +} + +export function registerProcessors(fns) { + for (const [lang, processor] of Object.entries(fns)) { + compilers[lang] = processor + // processors[lang] = processor + } +} diff --git a/src/lib/builder/components/CodeEditor/CodeMirror.svelte b/src/lib/builder/components/CodeEditor/CodeMirror.svelte new file mode 100644 index 000000000..f8b6d3017 --- /dev/null +++ b/src/lib/builder/components/CodeEditor/CodeMirror.svelte @@ -0,0 +1,349 @@ + + + + + { + // Editor.setSize(null, editorNode.clientHeight) + }} +/> + +
+
+
+ + diff --git a/src/lib/builder/components/CodeEditor/extensions.ts b/src/lib/builder/components/CodeEditor/extensions.ts new file mode 100644 index 000000000..f4251d756 --- /dev/null +++ b/src/lib/builder/components/CodeEditor/extensions.ts @@ -0,0 +1,11 @@ +import { css } from "@codemirror/lang-css" +import { javascript } from "@codemirror/lang-javascript" +import { svelte } from "@replit/codemirror-lang-svelte"; + +export function getLanguage(mode) { + return { + 'html': svelte(), + 'css': css(), + 'javascript': javascript() + }[mode] +} \ No newline at end of file diff --git a/src/lib/builder/components/CodeEditor/extensions/autocomplete.js b/src/lib/builder/components/CodeEditor/extensions/autocomplete.js new file mode 100644 index 000000000..5d24ac8e7 --- /dev/null +++ b/src/lib/builder/components/CodeEditor/extensions/autocomplete.js @@ -0,0 +1,147 @@ +import {svelteLanguage} from '@replit/codemirror-lang-svelte' +import { cssLanguage } from "@codemirror/lang-css" +import { snippetCompletion } from '@codemirror/autocomplete' +import _ from 'lodash-es'; + +const Completion_Label = (value) => { + if (Array.isArray(value)) { + return `[ ${typeof(value[0])} ]` + } else if (_.isObject(value)) { + return '{ ' + Object.entries(value).map(([ key, value ]) => `${key}:${typeof(value)}`).join(', ') + ' }' + } else { + return typeof(value) + } +} + +function svelteCompletions(data) { + const completions = [ + snippetCompletion('{#if ${true}}\n\t${Shown if true}\n{:else}\n\t${Shown if false}\n{/if', { + label: "{#if}", + type: "text", + detail: "Conditionally render a block of content", + }), + snippetCompletion('{#each ${["one", "two"]} as ${item}}\n\t${\{item\\}}\n{/each', { + label: "{#each}", + type: "text", + detail: "Loop over array or Repeater items" + }), + snippetCompletion('{#await ${promise}}\n\t${promise is pending}\n{:then ${value}}\n\t${promise was fullfilled}\n{:catch ${error}}\n\t${promise was rejected}\n{/await', { + label: "{#await}", + type: "text", + detail: "Show content depending on the states of a Promise" + }), + snippetCompletion('{#key ${"value"}}\n\tthis will re-render when "value" changes\n{/key', { + label: "{#key}", + type: "text", + detail: "Re-render a block when a value changes" + }), + snippetCompletion('{@html ${"

content

"}', { + label: "{@html}", type: "text", detail: "Render HTML from a Markdown field" + }), + snippetCompletion('{@debug ${variable}', { + label: "{@debug}", + type: "text", + detail: "Log a variable's value" + }), + snippetCompletion('{@const ${variable = "foo"}', { + label: "{@const}", + type: "text", + detail: "Define a local constant" + }), + ] + return svelteLanguage.data.of({ + autocomplete: (context) => { + const word = context.matchBefore(/\S*/) + + // Svelte blocks + if ((word.text.includes('{#') || word.text.includes('{@'))) { + const position = (word.text.indexOf('{#') !== - 1 ? word.text.indexOf('{#') : word.text.indexOf('{@')) + return { + from: word.from + position, + options: completions + } + } + + // Field values + if (word.text.includes('{')) { + // matches child field values + const position = word.text.indexOf('{') + + if (word.text.includes('.')) { + const options = Object.entries(data).filter(([key, value]) => (_.isObject(value) && !Array.isArray(value))).map(([key, value]) => { + const child_options = Object.entries(value).map(([child_key, child_value]) => ({ + label: `${key}.${child_key}`, + type: 'variable', + detail: Completion_Label(child_value) + })) + return child_options + }) + return { + from: word.from + position + 1, + options: _.flattenDeep(options) + } + } + + // matches root-level fields + return { + from: word.from + position + 1, // offset for bracket + options: [ + ...Object.entries(data).map(([key, value]) => ({ + label: key, + type: 'variable', + detail: Completion_Label(value) + })), + { + label: '{#block}', + apply: '#', + type: 'text', + detail: 'each, if, key, await', + boost: -1 + }, + { + label: '{@tag}', + apply: '@', + type: 'text', + detail: 'html, const, debug', + boost: -2 + } + ] + } + } + } + }) +} + + +function cssCompletions(list = []) { + const variables = list.map(item => item.substring(0, item.length)) + return cssLanguage.data.of({ + autocomplete: (context) => { + const word = context.matchBefore(/\S*/) + if (!word.text.startsWith('var(')) return null + return { + from: word.from, + options: variables.map(item => ({ + label: `var(${item})`, + type: "text", + apply: `var(${item}` + })) + } + } + }) +} + +export function updateCompletions(Editor, variables, compartment) { + Editor.dispatch({ + effects: compartment.reconfigure(cssCompletions(variables)) + }) +} + +export function extract_css_variables(css) { + return css.match(/--\S*:/gm) || [] +} + +export { + cssCompletions, + svelteCompletions +} \ No newline at end of file diff --git a/src/lib/builder/components/CodeEditor/extensions/inspector.ts b/src/lib/builder/components/CodeEditor/extensions/inspector.ts new file mode 100644 index 000000000..fdd54007a --- /dev/null +++ b/src/lib/builder/components/CodeEditor/extensions/inspector.ts @@ -0,0 +1,61 @@ +import { EditorView, Decoration } from '@codemirror/view'; +import type { DecorationSet } from '@codemirror/view' +import { StateEffect, StateField } from '@codemirror/state'; + +const addUnderline = StateEffect.define<{ from: number, to: number }>() + +const underlineField = StateField.define({ + create() { + return Decoration.none + }, + update(underlines, tr) { + underlines = underlines.map(tr.changes) + for (let e of tr.effects) if (e.is(addUnderline)) { + underlines = underlines.update({ + add: [underlineMark.range(e.value.from, e.value.from)], + filter: (f, t, value) => { + if (value.spec.class === 'cm-highlight') return false + else return true + }, + }) + } + return underlines + }, + provide: f => EditorView.decorations.from(f) +}) + +const underlineMark = Decoration.line({ class: "cm-highlight" }) + +const underlineTheme = EditorView.baseTheme({ + ".cm-highlight": { background: "#333" } +}) + +export default function highlight_active_line(Editor, loc) { + if (!loc) return + let activeLine + for (let { from, to } of Editor.visibleRanges) { + for (let pos = from; pos <= to;) { + let line = Editor.state.doc.lineAt(pos) + if (line.number === (loc.line) && line.from !== line.to) { + activeLine = line + break; + } else { + pos = line.to + 1 + } + } + } + + if (activeLine) { + highlightLine(Editor, activeLine); + } + + function highlightLine(view: EditorView, line) { + let effects: StateEffect[] = [addUnderline.of({ from: line.from, to: line.to })] + if (!effects.length) return false + + if (!view.state.field(underlineField, false)) + effects.push(StateEffect.appendConfig.of([underlineField, underlineTheme])) + view.dispatch({ effects }) + return true + } +} diff --git a/src/lib/builder/components/CodeEditor/theme.ts b/src/lib/builder/components/CodeEditor/theme.ts new file mode 100644 index 000000000..9f53c0aa2 --- /dev/null +++ b/src/lib/builder/components/CodeEditor/theme.ts @@ -0,0 +1,182 @@ +import { EditorView } from "@codemirror/view" +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language" +import { tags as t } from "@lezer/highlight" + +// Using https://github.com/one-dark/vscode-one-dark-theme/ as reference for the colors + +const chalky = "#e5c07b", + coral = "#e06c75", + cyan = "#56b6c2", + invalid = "#ffffff", + ivory = "#abb2bf", + stone = "#7d8799", // Brightened compared to original to increase contrast + malibu = "#61afef", + sage = "#98c379", + whiskey = "#d19a66", + violet = "#c678dd", + darkBackground = "#21252b", + highlightBackground = "#2c313a", + background = "rgb(30,30,30)", + tooltipBackground = "#353a42", + selection = "#333", + cursor = "white" + +/// The editor theme styles for One Dark. +export const oneDarkTheme = EditorView.theme({ + "&": { + color: ivory, + backgroundColor: background + }, + + '.cm-line': { + fontFamily: `'Fira Code'`, + }, + + ".cm-content": { + caretColor: cursor + }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: cursor }, + // ".cm-activeLine": { backgroundColor: highlightBackground }, + + "&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": { + backgroundColor: selection, + }, + + ".cm-panels": { backgroundColor: darkBackground, color: ivory }, + ".cm-panels.cm-panels-top": { borderBottom: "2px solid black" }, + ".cm-panels.cm-panels-bottom": { borderTop: "2px solid black" }, + + ".cm-searchMatch": { + backgroundColor: "#72a1ff59", + outline: "1px solid #457dff" + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: "#6199ff2f" + }, + + ".cm-selectionMatch": { backgroundColor: "#aafe661a" }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: "#bad0f847", + outline: "1px solid #515a6b" + }, + + ".cm-gutters": { + backgroundColor: background, + color: stone, + border: "none" + }, + + ".cm-activeLineGutter": { + backgroundColor: highlightBackground + }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: "#ddd" + }, + + ".cm-tooltip": { + border: "none", + backgroundColor: tooltipBackground + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent" + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: tooltipBackground, + borderBottomColor: tooltipBackground + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + backgroundColor: highlightBackground, + color: ivory + } + } +}, { dark: true }) + +/// The highlighting style for code in the One Dark theme. +export const oneDarkHighlightStyle = HighlightStyle.define([ + { + tag: t.keyword, + color: violet + }, + { + tag: [t.name, t.deleted, t.character, t.propertyName, t.macroName], + color: coral + }, + { + tag: [t.function(t.variableName), t.labelName], + color: malibu + }, + { + tag: [t.color, t.constant(t.name), t.standard(t.name)], + color: whiskey + }, + { + tag: [t.definition(t.name), t.separator], + color: ivory + }, + { + tag: [t.typeName, t.className, t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], + color: chalky + }, + { + tag: [t.operator, t.operatorKeyword, t.url, t.escape, t.regexp, t.link, t.special(t.string)], + color: cyan + }, + { + tag: [t.meta, t.comment], + color: stone + }, + { + tag: t.strong, + fontWeight: "bold" + }, + { + tag: t.emphasis, + fontStyle: "italic" + }, + { + tag: t.strikethrough, + textDecoration: "line-through" + }, + { + tag: t.link, + color: stone, + textDecoration: "underline" + }, + { + tag: t.heading, + fontWeight: "bold", + color: coral + }, + { + tag: [t.atom, t.bool, t.special(t.variableName)], + color: whiskey + }, + { + tag: [t.processingInstruction, t.string, t.inserted], + color: sage + }, + { + tag: t.invalid, + color: invalid + }, +]) + +// workaround for introduced bug +// https://discuss.codemirror.net/t/highlighting-that-seems-ignored-in-cm6/4320/17 +const fn0 = oneDarkHighlightStyle.style; +// noinspection JSConstantReassignment +oneDarkHighlightStyle.style = tags => fn0(tags || []) + +export const ThemeHighlighting = syntaxHighlighting(oneDarkHighlightStyle) + +/// Extension to enable the One Dark theme (both the editor theme and +/// the highlight style). +const oneDark: Extension = [oneDarkTheme, syntaxHighlighting(oneDarkHighlightStyle)] +export default oneDark \ No newline at end of file diff --git a/src/lib/builder/components/ComponentPreview.svelte b/src/lib/builder/components/ComponentPreview.svelte new file mode 100644 index 000000000..2d9a188f9 --- /dev/null +++ b/src/lib/builder/components/ComponentPreview.svelte @@ -0,0 +1,495 @@ + + + + +
+ {#if compilation_error} +
+      {@html compilation_error}
+    
+ {/if} + + {#if consoleLog} +
+ +
+ {/if} +
+ {#if componentApp} + + {:else} + + {/if} +
+ {#if !hideControls} + + {/if} +
+ + + + diff --git a/src/lib/builder/components/Content.svelte b/src/lib/builder/components/Content.svelte new file mode 100644 index 000000000..cb17a18d2 --- /dev/null +++ b/src/lib/builder/components/Content.svelte @@ -0,0 +1,267 @@ + + +
+ {#each fields.filter((f) => !f.parent).sort((a, b) => a.index - b.index) as field} + {@const content_entry = entries.find((r) => r.field === field.id)} + + {@const Field_Component = get_component(field)} + {@const is_visible = check_condition(field) && belongs_to_current_page_type(field)} + {@const is_valid = (field.key || field.type === 'info') && Field_Component} + {@const has_child_fields = field.type === 'repeater' || field.type === 'group'} + {#if field.source && is_valid && is_visible} + {#await get_source_content(field)} + ft.id === field.type)?.icon}> +
+ +
+
+ {:then fetched_entry} + ft.id === field.type)?.icon}> +
+ { + // TODO: handle edit for linked field entries + + // attach entry id for nested 'input' dispatches + const row_id = detail.id || fetched_entry.id + const data = detail.data || detail + + const updated_content = entries.map((row) => (row.id === row_id ? { ...row, ...data } : row)) + + dispatch_update({ + entries: updated_content + }) + }} + /> +
+
+ {/await} + {:else if is_valid && is_visible} + ft.id === field.type)?.icon} pill={field.is_static ? 'Static' : null} {minimal}> +
+ add_repeater_item(detail)} + on:remove={({ detail }) => remove_repeater_item(detail)} + on:move={({ detail }) => move_repeater_item(detail)} + oninput={(detail) => { + // attach entry id for nested 'input' dispatches + const row_id = detail.id || content_entry.id + const data = detail.data || detail + + const updated_content = entries.map((row) => (row.id === row_id ? { ...row, ...data } : row)) + + dispatch_update({ + entries: updated_content + }) + }} + /> +
+
+ {:else if is_visible} +

Field requires a key

+ {/if} + {:else} +

+ {#if $userRole === 'DEV'} + When you create fields, they'll be editable from here + {:else} + When the site developer creates fields, they'll be editable from here + {/if} +

+ {/each} +
+ + diff --git a/src/lib/builder/components/Fields/Condition.svelte b/src/lib/builder/components/Fields/Condition.svelte new file mode 100644 index 000000000..536fa7878 --- /dev/null +++ b/src/lib/builder/components/Fields/Condition.svelte @@ -0,0 +1,100 @@ + + +
+ Show if +
+ + { + let default_value = '' + const selected_field = comparable_fields.find((f) => f.id === field_id) + if (selected_field.type === 'select') { + default_value = selected_field.options.options[0]?.value + } else { + default_value = selected_field.value + } + dispatch_update({ field: field_id, value: default_value }) + }} + value={condition.field} + options={comparable_fields.map((f) => ({ + icon: $fieldTypes.find((t) => t.id === f.type).icon, + label: f.label, + value: f.id, + disabled: f.options.condition + }))} + /> + + dispatch_update({ comparison })} value={condition.comparison} options={comparisons} /> + + {#if field_to_compare?.type === 'select'} + dispatch_update({ value })} options={field_to_compare.options?.options || []} /> + {:else if field_to_compare?.type === 'switch'} + { + dispatch_update({ value: detail }) + }} + /> + {:else} + dispatch_update({ value })} /> + {/if} + + +
+
+ + diff --git a/src/lib/builder/components/Fields/FieldItem.svelte b/src/lib/builder/components/Fields/FieldItem.svelte new file mode 100644 index 000000000..50340f59e --- /dev/null +++ b/src/lib/builder/components/Fields/FieldItem.svelte @@ -0,0 +1,552 @@ + + +
+
+
+ ({ + icon: ft.icon, + value: ft.id, + label: ft.label + }))} + dividers={[1, 8, 10, 12]} + on:input={({ detail: field_type_id }) => { + console.log({ field_type_id }) + field_type_changed = true + selected_field_type_id = field_type_id + dispatch_update({ + type: field_type_id + }) + }} + placement="bottom-start" + /> + {#if collapsed} +
+ {#if $mod_key_held} + + + + {:else} + dispatch('move', { direction: 'up', field }) + }, + { + label: 'Move down', + icon: 'material-symbols:arrow-circle-down-outline', + on_click: () => dispatch('move', { direction: 'down', field }) + }, + ...(has_condition + ? [] + : [ + { + label: 'Set condition', + icon: 'mdi:hide', + disabled: !condition_enabled, + on_click: () => { + add_condition() + } + } + ]), + { + label: 'Duplicate', + icon: 'bxs:duplicate', + on_click: () => dispatch('duplicate', field) + }, + { + label: 'Delete', + icon: 'ic:outline-delete', + is_danger: true, + on_click: () => dispatch('delete', field) + } + ]} + placement="bottom-end" + /> + {/if} +
+ {/if} +
+ {#if minimal} + +
+ { + dispatch_update({ + options: { + ...field.options, + info: text + } + }) + }} + /> + {#if !collapsed} +
+ {#if $mod_key_held} + + + + {:else} + dispatch('move', { direction: 'up', field }) + }, + { + label: 'Move down', + icon: 'material-symbols:arrow-circle-down-outline', + on_click: () => dispatch('move', { direction: 'down', field }) + }, + ...(has_condition + ? [] + : [ + { + label: 'Add Condition', + icon: 'mdi:show', + on_click: () => { + add_condition() + } + } + ]), + { + label: 'Duplicate', + icon: 'bxs:duplicate', + on_click: () => dispatch('duplicate', field) + }, + { + label: 'Delete', + icon: 'ic:outline-delete', + is_danger: true, + on_click: () => dispatch('delete', field) + } + ]} + placement="bottom-end" + /> + {/if} +
+ {/if} +
+ {:else} + +
+ { + // only auto-set key and type on new fields + dispatch_update({ + label: text, + key: key_edited || !is_new_field ? field.key : validate_field_key(text), + type: field_type_changed || !is_new_field ? field.type : update_field_type(text) + }) + }} + on:blur={() => (is_new_field = false)} + /> +
+ +
+ { + key_edited = true + dispatch_update({ + key: validate_field_key(text) + }) + }} + /> + {#if !collapsed} +
+ {#if $mod_key_held} + + + + {:else} + dispatch('move', { direction: 'up', field }) + }, + { + label: 'Move down', + icon: 'material-symbols:arrow-circle-down-outline', + on_click: () => dispatch('move', { direction: 'down', field }) + }, + ...(has_condition + ? [] + : [ + { + label: 'Add Condition', + icon: 'mdi:show', + on_click: () => { + add_condition() + } + } + ]), + { + label: 'Duplicate', + icon: 'bxs:duplicate', + on_click: () => dispatch('duplicate', field) + }, + { + label: 'Delete', + icon: 'ic:outline-delete', + is_danger: true, + on_click: () => dispatch('delete', field) + } + ]} + placement="bottom-end" + /> + {/if} +
+ {/if} +
+ {/if} +
+ + + {#if has_subfields} +
+ {#each child_fields.sort((a, b) => a.index - b.index) as subfield (subfield.id)} + + {/each} + {#if field.type === 'repeater' || field.type === 'group'} + + {/if} +
+ {/if} +
+ + diff --git a/src/lib/builder/components/Fields/FieldsContent.svelte b/src/lib/builder/components/Fields/FieldsContent.svelte new file mode 100644 index 000000000..f998c8e36 --- /dev/null +++ b/src/lib/builder/components/Fields/FieldsContent.svelte @@ -0,0 +1,740 @@ + + +
+ {#each parent_fields.sort((a, b) => a.index - b.index) as field (field.id)} + {@const Field_Component = get_component(field)} + + {@const active_tab = $userRole === 'DEV' ? selected_tabs[field.id] : 'entry'} + {@const is_visible = check_condition(field)} +
+ + {#if $userRole === 'DEV'} +
+ + +
+ {/if} +
+ {#if active_tab === 'field'} +
+ duplicate_field(field)} + on:delete={({ detail: field }) => delete_field(field)} + on:createsubfield={({ detail: field }) => create_subfield(field)} + on:move={({ detail }) => move_field(detail)} + on:input={({ detail }) => update_field(detail)} + on:keydown + /> +
+ {:else if active_tab === 'entry'} + {#if is_visible} + {@const content_entry = get_content_entry(field)} + {@const is_dynamic_field_type = ['site-field', 'page-field'].includes(field.type)} + {@const source_entry = entries.find((e) => e.field === field.source)} + {@const source_field = [...$site.fields, ...$active_page.page_type.fields, ...$page_type.fields].find((f) => f.id === field.source)} + {#if is_dynamic_field_type && source_entry && source_field} + {@const dynamic_field_type = { 'page-field': 'page', 'site-field': 'site' }[field.type]} + {@const title = ['repeater', 'group'].includes(source_field.type) ? field.label : null} + {@const icon = title ? $fieldTypes.find((ft) => ft.id === source_field.type)?.icon : null} +
+ {#if dynamic_field_type === 'site'} + + Site Content + {:else if dynamic_field_type === 'page'} + + Page Content + {/if} +
+ + add_repeater_item({ ...detail, dynamic: dynamic_field_type })} + on:remove={({ detail }) => remove_repeater_item(detail, dynamic_field_type)} + on:move={({ detail }) => move_repeater_item(detail)} + oninput={(value) => { + dispatch_update({ + entries: value.entries, + content_changes: [{ action: 'update', id: value.id, data: value.data, dynamic: dynamic_field_type }] + }) + }} + /> + + {:else if content_entry} + {@const title = ['repeater', 'group'].includes(field.type) ? field.label : null} + {@const icon = title ? $fieldTypes.find((ft) => ft.id === field.type)?.icon : null} + + add_repeater_item(detail)} + on:remove={({ detail }) => remove_repeater_item(detail)} + on:move={({ detail }) => move_repeater_item(detail)} + oninput={(value) => { + // attach entry id for nested 'input' dispatches + const row_id = value.id || content_entry.id + const data = value.data || value + + const updated_entries = entries.map((row) => (row.id === row_id ? { ...row, ...data } : row)) + dispatch_update({ + entries: updated_entries, + content_changes: [{ action: 'update', id: row_id, data }] + }) + }} + /> + + {:else} + Field {field.id} is corrupted, should be deleted. + {/if} + {:else if !is_visible && $userRole === 'DEV'} +
+ + This field will be hidden from content editors +
+ {/if} + {/if} +
+
+ {/each} + {#if $userRole === 'DEV'} + + {/if} +
+ + diff --git a/src/lib/builder/components/Fields/PageField.svelte b/src/lib/builder/components/Fields/PageField.svelte new file mode 100644 index 000000000..ad1c06179 --- /dev/null +++ b/src/lib/builder/components/Fields/PageField.svelte @@ -0,0 +1,54 @@ + + +
+ {#if field_synced_with_other_page_type} +
+

+ Synced with {'{page_type}'}. Is hidden. Will fall back to other field. +

+
+ {:else} +
+ + { + selected_page_type = detail + dispatch('input', { ...field.options, page_type: detail }) + }} + label="Page Type" + value={selected_page_type} + fullwidth={true} + options={$page_types.map((page_type) => ({ + label: page_type.name, + value: page_type.id, + icon: page_type.icon + }))} + /> +
+ {/if} +
+ + diff --git a/src/lib/builder/components/Fields/PageFieldField.svelte b/src/lib/builder/components/Fields/PageFieldField.svelte new file mode 100644 index 000000000..130579051 --- /dev/null +++ b/src/lib/builder/components/Fields/PageFieldField.svelte @@ -0,0 +1,49 @@ + + +
+ {#if field_synced_with_other_page_type} +
+

+ Synced with {'{page_type}'}. Is hidden. Will fall back to other field. Delete. +

+
+ {:else} +
+ + { + dispatch('input', detail) + }} + label="Page Content" + value={field.source} + options={field_list.map((f) => ({ + label: f.label, + value: f.id, + icon: $fieldTypes.find((ft) => ft.id === f.type).icon + }))} + /> +
+ {/if} +
+ + diff --git a/src/lib/builder/components/Fields/PageListField.svelte b/src/lib/builder/components/Fields/PageListField.svelte new file mode 100644 index 000000000..6ee8dce04 --- /dev/null +++ b/src/lib/builder/components/Fields/PageListField.svelte @@ -0,0 +1,51 @@ + + +
+ {#if field_synced_with_other_page_type} +
+

+ Synced with {'{page_type}'}. Is hidden. Will fall back to other field. Delete. +

+
+ {:else} +
+ + { + selected_page_type = detail + oninput({ ...field.options, page_type: detail }) + }} + label="Page Type" + value={selected_page_type} + fullwidth={true} + options={$page_types.map((page_type) => ({ + label: page_type.name, + value: page_type.id, + icon: page_type.icon + }))} + /> +
+ {/if} +
+ + diff --git a/src/lib/builder/components/Fields/SelectField.svelte b/src/lib/builder/components/Fields/SelectField.svelte new file mode 100644 index 000000000..2490145e3 --- /dev/null +++ b/src/lib/builder/components/Fields/SelectField.svelte @@ -0,0 +1,188 @@ + + + +
+ {#if options} + {#each options as option, i} +
+
+ Icon + update_option({ ...option, icon }, i)} /> +
+ { + update_option( + { + ...option, + value: clicked_value_inputs.has(i) ? option.value : validateFieldKey(text), + label: text + }, + i + ) + }} + /> + clicked_value_inputs.add(i)} + oninput={(text) => { + update_option( + { + ...option, + value: text + }, + i + ) + }} + /> +
+ {#if i !== 0} + + {/if} + {#if i !== options.length - 1} + + {/if} + +
+
+ {/each} + {/if} + +
+ + diff --git a/src/lib/builder/components/Fields/SiteFieldField.svelte b/src/lib/builder/components/Fields/SiteFieldField.svelte new file mode 100644 index 000000000..27d693727 --- /dev/null +++ b/src/lib/builder/components/Fields/SiteFieldField.svelte @@ -0,0 +1,33 @@ + + +
+
+ + oninput(detail)} + label="Site Field" + value={field.source} + options={field_list.map((f) => ({ + label: f.label, + value: f.id, + icon: $fieldTypes.find((ft) => ft.id === f.type).icon + }))} + /> +
+
+ + diff --git a/src/lib/builder/components/IFrame.svelte b/src/lib/builder/components/IFrame.svelte new file mode 100644 index 000000000..ced2e9a05 --- /dev/null +++ b/src/lib/builder/components/IFrame.svelte @@ -0,0 +1,192 @@ + + + + +
+ {#if !iframeLoaded} +
+ +
+ {/if} +
+ {#if generated_srcdoc || srcdoc} + + {/if} +
+
+ + diff --git a/src/lib/builder/components/IconPicker.svelte b/src/lib/builder/components/IconPicker.svelte new file mode 100644 index 000000000..00a0d6210 --- /dev/null +++ b/src/lib/builder/components/IconPicker.svelte @@ -0,0 +1,244 @@ + + +
+
+ {#if variant === 'large'} + {#if svg_preview || icon} +
+ + {#if svg_preview} + {@html svg_preview} + {:else} + + {/if} +
+ {/if} +
{ + e.preventDefault() + search() + }} + > + + + {:else if variant === 'small'} + + {/if} +
+ {#if showing_popover} + + {/if} + {#if searched && variant === 'large'} +
+ + {#each icons as item} + + {:else} + + No icons found + + {/each} +
+ {/if} +
+ + diff --git a/src/lib/builder/components/Sidebar/PageType_Sidebar.svelte b/src/lib/builder/components/Sidebar/PageType_Sidebar.svelte new file mode 100644 index 000000000..d0b91d032 --- /dev/null +++ b/src/lib/builder/components/Sidebar/PageType_Sidebar.svelte @@ -0,0 +1,443 @@ + + + + + diff --git a/src/lib/builder/components/Sidebar/Page_Sidebar.svelte b/src/lib/builder/components/Sidebar/Page_Sidebar.svelte new file mode 100644 index 000000000..ebd705f74 --- /dev/null +++ b/src/lib/builder/components/Sidebar/Page_Sidebar.svelte @@ -0,0 +1,170 @@ + + + + + diff --git a/src/lib/builder/components/Sidebar/Sidebar_Symbol.svelte b/src/lib/builder/components/Sidebar/Sidebar_Symbol.svelte new file mode 100644 index 000000000..7a12e2b4c --- /dev/null +++ b/src/lib/builder/components/Sidebar/Sidebar_Symbol.svelte @@ -0,0 +1,313 @@ + + + + +

Rename Block

+

Enter a new name for your Block

+
{ + e.preventDefault() + save_rename() + }} + > + + + + + +
+
+
+ + + {:else} +
+ + Pages +
+ {/if} + {/snippet} + + +
+ {#if current_step === 'pages'} + + {:else} + + {/if} +
+ + diff --git a/src/lib/builder/views/modal/index.js b/src/lib/builder/views/modal/index.js new file mode 100644 index 000000000..215bb8dd7 --- /dev/null +++ b/src/lib/builder/views/modal/index.js @@ -0,0 +1,9 @@ +import SectionEditor from './SectionEditor/SectionEditor.svelte' +import BlockEditor from './BlockEditor.svelte' +import PageEditor from './PageEditor.svelte' +import SiteEditor from './SiteEditor/SiteEditor.svelte' +import SitePages from './SitePages/SitePages.svelte' +import Dialog from './Dialog.svelte' +import BlockPicker from './BlockPicker.svelte' + +export { SectionEditor, BlockEditor, PageEditor, SiteEditor, SitePages, Dialog, BlockPicker } diff --git a/src/lib/components/BlockPicker.svelte b/src/lib/components/BlockPicker.svelte new file mode 100644 index 000000000..78e8f3b85 --- /dev/null +++ b/src/lib/components/BlockPicker.svelte @@ -0,0 +1,119 @@ + + +
+ {#if !selected_group} +
+ {#each symbol_groups as group} + + {/each} +
+ {:else} + +
    + {#await fetch_symbols(selected_group) then symbols} + {#each symbols as symbol} +
  • + include_symbol(symbol)} {symbol} {site} {append} controls_enabled={false} /> +
  • + {/each} + {/await} +
+ {/if} +
+ + diff --git a/src/lib/components/CreateSite.svelte b/src/lib/components/CreateSite.svelte new file mode 100644 index 000000000..250fdca8a --- /dev/null +++ b/src/lib/components/CreateSite.svelte @@ -0,0 +1,218 @@ + + + + + + + + + Identity + + + + Design + + + + Starter + + + +
+ +
+ + +
+
+ + +
+
+ update_design_value(token, val)} /> +
+
+ {@html design_variables_css} +

{site_name || 'Welcome to Primo'}

+

We're happy you're here

+ +
+
+
+ + +
+
+

Choose a Starter

+ +
+ {#if $page.data.starters.length > 0} +
+
+ select_theme(detail)} append={design_variables_css} /> +
+
+ {#if preview} + + {/if} +
+
+ {:else} + + {/if} +
+
+
+
+ + + + diff --git a/src/lib/components/DashboardToolbar.svelte b/src/lib/components/DashboardToolbar.svelte index df04211fa..fbade9236 100644 --- a/src/lib/components/DashboardToolbar.svelte +++ b/src/lib/components/DashboardToolbar.svelte @@ -1,25 +1,39 @@
+
@@ -50,7 +64,7 @@ font-size: 14px; &:hover { - border-color: var(--primo-color-brand); + border-color: var(--weave-primary-color); } &.with-icon { diff --git a/src/lib/components/DropZone.svelte b/src/lib/components/DropZone.svelte new file mode 100644 index 000000000..4cbca286d --- /dev/null +++ b/src/lib/components/DropZone.svelte @@ -0,0 +1,83 @@ + + +
+ handleFiles(e.currentTarget.files)} accept=".json" /> + + {#if invalid} +
+ + File invalid. Click or drop to try again. +
+ {:else if file} +
+ + {file.name} + Click or drop to replace +
+ {:else} +
+ + Drop your site file here or click to browse + Accepts .json, .yaml files +
+ {/if} +
diff --git a/src/lib/components/EmptyState.svelte b/src/lib/components/EmptyState.svelte new file mode 100644 index 000000000..d85bf31fa --- /dev/null +++ b/src/lib/components/EmptyState.svelte @@ -0,0 +1,25 @@ + + +
+
+ +
+
+

{title}

+

+ {description} +

+
+ {#if link} + + {/if} +
diff --git a/src/lib/components/IconButton.svelte b/src/lib/components/IconButton.svelte index d8fef3f7f..b58af2db8 100644 --- a/src/lib/components/IconButton.svelte +++ b/src/lib/components/IconButton.svelte @@ -1,31 +1,36 @@ - diff --git a/src/lib/components/LibrarySymbolButton.svelte b/src/lib/components/LibrarySymbolButton.svelte new file mode 100644 index 000000000..61f256027 --- /dev/null +++ b/src/lib/components/LibrarySymbolButton.svelte @@ -0,0 +1,176 @@ + + +
+
+ + + diff --git a/src/lib/components/SiteThumbnail.svelte b/src/lib/components/SiteThumbnail.svelte index b89805e0a..942ec5d36 100644 --- a/src/lib/components/SiteThumbnail.svelte +++ b/src/lib/components/SiteThumbnail.svelte @@ -1,102 +1,201 @@ - - -
-
- {#if browser} -