From 9f55cf26fc656c342e887b0b20ec1d1a5fec5905 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sun, 31 Mar 2024 09:16:31 +0100 Subject: [PATCH] Switch to SvelteKit (#3077) * Update to latest Node LTS * Add sveltekit * Split tslib into separate @generated and @tslib components SvelteKit's path aliases don't support multiple locations, so our old approach of using @tslib to refer to both ts/lib and out/ts/lib will no longer work. Instead, all generated sources and their includes are placed in a separate out/ts/generated folder, and imported via @generated instead. This also allows us to generate .ts files, instead of needing to output separate .d.ts and .js files. * Switch package.json to module type * Avoid usage of baseUrl Incompatible with SvelteKit * Move sass into ts; use relative links SvelteKit's default sass support doesn't allow overriding loadPaths * jest->vitest, graphs example working with yarn dev * most pages working in dev mode * Some fixes after rebasing * Fix/silence some svelte-check errors * Get image-occlusion working with Fabric types * Post-rebase lock changes * Editor is now checked * SvelteKit build integrated into ninja * Use the new SvelteKit entrypoint for pages like congrats/deck options/etc * Run eslint once for ts/**; fix some tests * Fix a bunch of issues introduced when rebasing over latest main * Run eslint fix * Fix remaining eslint+pylint issues; tests now all pass * Fix some issues with a clean build * Latest bufbuild no longer requires @__PURE__ hack * Add a few missed dependencies * Add yarn.bat to fix Windows build * Fix pages failing to show when ANKI_API_PORT not defined * Fix svelte-check and vitest on Windows * Set node path in ./yarn * Move svelte-kit output to ts/.svelte-kit Sadly, I couldn't figure out a way to store it in out/ if out/ is a symlink, as it breaks module resolution when SvelteKit is run. * Allow HMR inside Anki * Skip SvelteKit build when HMR is defined * Fix some post-rebase issues I should have done a normal merge instead. --- .cargo/config.toml | 3 +- .dprint.json | 3 +- .eslintrc.js => .eslintrc.cjs | 4 +- .gitignore | 1 + build/configure/src/aqt.rs | 16 +- build/configure/src/rust.rs | 8 +- build/configure/src/web.rs | 318 +- build/ninja_gen/src/node.rs | 82 +- build/runner/src/build.rs | 6 +- ninja | 2 +- package.json | 25 +- pylib/anki/utils.py | 1 + qt/aqt/browser/card_info.py | 9 +- qt/aqt/changenotetype.py | 5 +- qt/aqt/data/web/css/deckbrowser.scss | 8 +- qt/aqt/data/web/css/overview.scss | 8 +- qt/aqt/data/web/css/reviewer-bottom.scss | 6 +- qt/aqt/data/web/css/toolbar.scss | 8 +- qt/aqt/data/web/css/webview.scss | 6 +- qt/aqt/data/web/js/tsconfig.json | 2 +- qt/aqt/deckoptions.py | 6 +- qt/aqt/import_export/import_dialog.py | 17 +- qt/aqt/import_export/importing.py | 10 +- qt/aqt/main.py | 1 + qt/aqt/mediasrv.py | 33 +- qt/aqt/overview.py | 2 +- qt/aqt/stats.py | 2 +- qt/aqt/webview.py | 22 +- rslib/i18n/src/lib.rs | 13 +- rslib/i18n/typescript.rs | 63 +- rslib/linkchecker/tests/links.rs | 2 +- rslib/proto/typescript.rs | 53 +- tools/minilints/src/main.rs | 8 +- ts/bundle_svelte.mjs | 4 +- ts/card-info/CardInfo.svelte | 59 - ts/card-info/card-info-base.scss | 1 - ts/card-info/tsconfig.json | 5 - ts/change-notetype/icons.ts | 10 - ts/change-notetype/tsconfig.json | 12 - ts/components/icons.ts | 15 - ts/components/tsconfig.json | 5 - ts/congrats/tsconfig.json | 8 - ts/deck-options/icons.ts | 7 - ts/deck-options/tsconfig.json | 12 - ts/domlib/tsconfig.json | 15 - ts/editable/ContentEditable.svelte | 9 +- ts/editable/Mathjax.svelte | 3 +- ts/editable/content-editable.ts | 8 +- ts/editable/editable-base.scss | 2 +- ts/editable/frame-element.ts | 5 +- ts/editable/frame-handle.ts | 7 +- ts/editable/icons.ts | 2 - ts/editable/mathjax-element.ts | 3 +- ts/editable/tsconfig.json | 11 - ts/editor/BrowserEditor.svelte | 3 +- ts/editor/ClozeButtons.svelte | 9 +- ts/editor/CodeMirror.svelte | 3 +- ts/editor/CollapseBadge.svelte | 3 +- ts/editor/DuplicateLink.svelte | 2 +- ts/editor/EditingArea.svelte | 2 +- ts/editor/EditorField.svelte | 9 +- ts/editor/Fields.svelte | 2 +- ts/editor/HandleControl.svelte | 2 +- ts/editor/LabelContainer.svelte | 2 +- ts/editor/NoteEditor.svelte | 44 +- ts/editor/PlainTextBadge.svelte | 5 +- ts/editor/PreviewButton.svelte | 6 +- ts/editor/RichTextBadge.svelte | 5 +- ts/editor/StickyBadge.svelte | 5 +- ts/editor/base.ts | 13 +- ts/editor/change-timer.ts | 2 +- ts/editor/code-mirror.ts | 2 +- ts/editor/editor-base.scss | 4 +- ts/editor/editor-toolbar/AddonButtons.svelte | 2 +- ts/editor/editor-toolbar/BlockButtons.svelte | 19 +- ts/editor/editor-toolbar/BoldButton.svelte | 5 +- ts/editor/editor-toolbar/ColorPicker.svelte | 2 +- .../editor-toolbar/CommandIconButton.svelte | 11 +- ts/editor/editor-toolbar/EditorToolbar.svelte | 13 +- .../HighlightColorButton.svelte | 7 +- .../ImageOcclusionButton.svelte | 16 +- ts/editor/editor-toolbar/InlineButtons.svelte | 7 +- ts/editor/editor-toolbar/ItalicButton.svelte | 5 +- ts/editor/editor-toolbar/LatexButton.svelte | 13 +- .../editor-toolbar/NotetypeButtons.svelte | 12 +- ts/editor/editor-toolbar/OptionsButton.svelte | 13 +- .../editor-toolbar/OptionsButtons.svelte | 7 +- .../editor-toolbar/RemoveFormatButton.svelte | 17 +- .../editor-toolbar/SubscriptButton.svelte | 5 +- .../editor-toolbar/SuperscriptButton.svelte | 5 +- .../editor-toolbar/TemplateButtons.svelte | 13 +- .../editor-toolbar/TextAttributeButton.svelte | 9 +- .../editor-toolbar/TextColorButton.svelte | 9 +- .../editor-toolbar/UnderlineButton.svelte | 5 +- ts/editor/editor-toolbar/icons.ts | 2 - ts/editor/icons.ts | 2 - ts/editor/image-overlay/FloatButtons.svelte | 7 +- ts/editor/image-overlay/ImageOverlay.svelte | 11 +- ts/editor/image-overlay/SizeSelect.svelte | 7 +- ts/editor/legacy.scss | 2 +- .../mathjax-overlay/MathjaxButtons.svelte | 9 +- .../mathjax-overlay/MathjaxEditor.svelte | 5 +- .../mathjax-overlay/MathjaxOverlay.svelte | 13 +- ts/editor/old-editor-adapter.ts | 5 +- .../plain-text-input/PlainTextInput.svelte | 6 +- .../plain-text-input/remove-prohibited.ts | 2 +- .../rich-text-input/RichTextInput.svelte | 17 +- .../rich-text-input/normalizing-node-store.ts | 5 +- .../rich-text-input/rich-text-resolve.ts | 6 +- ts/editor/rich-text-input/transform.ts | 5 +- ts/editor/surround.ts | 12 +- ts/editor/tsconfig.json | 21 - ts/esbuild_jest.mjs | 23 - ts/fields/FieldsPage.svelte | 8 - ts/fields/fields-base.scss | 28 - ts/fields/index.ts | 23 - ts/fields/tsconfig.json | 10 - ts/graphs/tsconfig.json | 9 - ts/html-filter/index.test.ts | 3 + ts/html-filter/tsconfig.json | 8 - ts/image-occlusion/icons.ts | 39 - ts/image-occlusion/tsconfig.json | 18 - ts/import-anki-package/tsconfig.json | 12 - ts/import-csv/tsconfig.json | 12 - ts/import-page/icons.ts | 10 - ts/import-page/tsconfig.json | 19 - ts/jest.config.js | 16 - ts/{ => lib}/components/Absolute.svelte | 0 .../BackendProgressIndicator.svelte | 4 +- ts/{ => lib}/components/Badge.svelte | 0 ts/{ => lib}/components/ButtonGroup.svelte | 0 .../components/ButtonGroupItem.svelte | 4 +- ts/{ => lib}/components/ButtonToolbar.svelte | 2 +- ts/{ => lib}/components/CheckBox.svelte | 0 ts/{ => lib}/components/Col.svelte | 2 +- ts/{ => lib}/components/Collapsible.svelte | 0 ts/{ => lib}/components/ConfigInput.svelte | 0 ts/{ => lib}/components/Container.svelte | 2 +- .../components/DropdownDivider.svelte | 0 ts/{ => lib}/components/DropdownItem.svelte | 0 .../components/DynamicallySlottable.svelte | 4 +- ts/{ => lib}/components/EnumSelector.svelte | 0 .../components/EnumSelectorRow.svelte | 0 ts/{ => lib}/components/ErrorPage.svelte | 0 ts/{ => lib}/components/FloatingArrow.svelte | 2 +- ts/{ => lib}/components/HelpModal.svelte | 7 +- ts/{ => lib}/components/HelpSection.svelte | 2 +- ts/{ => lib}/components/IconButton.svelte | 2 +- ts/{ => lib}/components/IconConstrain.svelte | 0 ts/{ => lib}/components/Item.svelte | 4 +- ts/{ => lib}/components/Label.svelte | 0 ts/{ => lib}/components/LabelButton.svelte | 2 +- ts/{ => lib}/components/Popover.svelte | 2 +- ts/{ => lib}/components/RevertButton.svelte | 2 +- ts/{ => lib}/components/Row.svelte | 0 ts/{ => lib}/components/ScrollArea.svelte | 0 ts/{ => lib}/components/Select.svelte | 2 +- ts/{ => lib}/components/SelectOption.svelte | 0 ts/{ => lib}/components/SettingTitle.svelte | 0 ts/{ => lib}/components/Shortcut.svelte | 0 ts/{ => lib}/components/Spacer.svelte | 0 ts/{ => lib}/components/SpinBox.svelte | 2 +- .../components/StickyContainer.svelte | 0 ts/{ => lib}/components/StickyHeader.svelte | 2 +- ts/{ => lib}/components/Switch.svelte | 2 +- ts/{ => lib}/components/SwitchRow.svelte | 0 .../components/TitledContainer.svelte | 4 +- ts/{ => lib}/components/VirtualTable.svelte | 0 ts/{ => lib}/components/WithContext.svelte | 0 ts/{ => lib}/components/WithFloating.svelte | 23 +- ts/{ => lib}/components/WithOverlay.svelte | 19 +- ts/{ => lib}/components/WithState.svelte | 0 ts/{ => lib}/components/WithTooltip.svelte | 0 ts/{ => lib}/components/context-keys.ts | 2 +- ts/{ => lib}/components/helpers.ts | 0 ts/lib/components/icons.ts | 61 + ts/{ => lib}/components/resizable.ts | 0 ts/{ => lib}/components/types.ts | 0 ts/{ => lib}/domlib/content-editable.ts | 0 ts/{ => lib}/domlib/find-above.ts | 0 ts/{ => lib}/domlib/index.ts | 0 ts/{ => lib}/domlib/location/document.ts | 3 +- ts/{ => lib}/domlib/location/index.ts | 3 +- ts/{ => lib}/domlib/location/location.ts | 0 ts/{ => lib}/domlib/location/node.ts | 0 ts/{ => lib}/domlib/location/range.ts | 0 ts/{ => lib}/domlib/location/selection.ts | 3 +- ts/{ => lib}/domlib/move-nodes.ts | 0 ts/{ => lib}/domlib/place-caret.ts | 0 ts/{ => lib}/domlib/surround/apply/format.ts | 0 ts/{ => lib}/domlib/surround/apply/index.ts | 0 .../domlib/surround/build/add-merge.ts | 0 .../domlib/surround/build/build-tree.ts | 3 +- .../domlib/surround/build/extend-merge.ts | 0 ts/{ => lib}/domlib/surround/build/format.ts | 3 +- ts/{ => lib}/domlib/surround/build/index.ts | 0 ts/{ => lib}/domlib/surround/flat-range.ts | 4 +- ts/{ => lib}/domlib/surround/index.ts | 0 ts/{ => lib}/domlib/surround/match-type.ts | 0 ts/{ => lib}/domlib/surround/split-text.ts | 2 +- .../domlib/surround/surround-format.ts | 0 ts/{ => lib}/domlib/surround/surround.test.ts | 3 + ts/{ => lib}/domlib/surround/surround.ts | 0 ts/{ => lib}/domlib/surround/test-utils.ts | 0 .../domlib/surround/tree/block-node.ts | 0 .../domlib/surround/tree/element-node.ts | 0 .../domlib/surround/tree/formatting-node.ts | 3 +- ts/{ => lib}/domlib/surround/tree/index.ts | 0 .../domlib/surround/tree/tree-node.ts | 0 .../domlib/surround/unsurround.test.ts | 3 + ts/lib/generated/README.md | 1 + .../bundles.ts => generated/ftl-helpers.ts} | 16 +- ts/lib/{ => generated}/post.ts | 4 +- ts/lib/i18n/index.ts | 11 - {sass => ts/lib/sass}/_button-mixins.scss | 2 +- {sass => ts/lib/sass}/_color-palette.scss | 0 {sass => ts/lib/sass}/_functions.scss | 0 {sass => ts/lib/sass}/_root-vars.scss | 0 {sass => ts/lib/sass}/_vars.scss | 0 {sass => ts/lib/sass}/base.scss | 2 +- {sass => ts/lib/sass}/bootstrap-dark.scss | 0 {sass => ts/lib/sass}/bootstrap-forms.scss | 0 {sass => ts/lib/sass}/bootstrap-tooltip.scss | 0 {sass => ts/lib/sass}/breakpoints.scss | 0 {sass => ts/lib/sass}/buttons.scss | 0 {sass => ts/lib/sass}/card-counts.scss | 0 {sass => ts/lib/sass}/core.scss | 0 {sass => ts/lib/sass}/elevation.scss | 0 {sass => ts/lib/sass}/night-mode.scss | 0 {sass => ts/lib/sass}/panes.scss | 0 {sass => ts/lib/sass}/scrollbar.scss | 0 ts/{ => lib}/sveltelib/action-list.ts | 0 ts/{ => lib}/sveltelib/closing-click.ts | 0 ts/{ => lib}/sveltelib/closing-keyup.ts | 0 ts/{ => lib}/sveltelib/composition.ts | 0 ts/{ => lib}/sveltelib/context-property.ts | 0 ts/{ => lib}/sveltelib/dom-mirror.ts | 0 ts/{ => lib}/sveltelib/dynamic-slotting.ts | 0 ts/{ => lib}/sveltelib/dynamicComponent.ts | 0 ts/{ => lib}/sveltelib/event-predicate.d.ts | 0 ts/{ => lib}/sveltelib/event-store.ts | 0 ts/{ => lib}/sveltelib/export-runtime.ts | 2 - ts/{ => lib}/sveltelib/handler-list.ts | 0 ts/{ => lib}/sveltelib/input-handler.ts | 0 ts/{ => lib}/sveltelib/lifecycle-hooks.ts | 0 ts/{ => lib}/sveltelib/modal-closing.ts | 0 ts/{ => lib}/sveltelib/node-store.ts | 0 ts/{ => lib}/sveltelib/portal.ts | 0 .../sveltelib/position/auto-update.ts | 3 +- .../position/position-algorithm.d.ts | 0 .../sveltelib/position/position-floating.ts | 0 .../sveltelib/position/position-overlay.ts | 0 ts/{ => lib}/sveltelib/preferences.ts | 0 ts/{ => lib}/sveltelib/resize-store.ts | 0 ts/{ => lib}/sveltelib/shortcut.ts | 0 ts/{ => lib}/sveltelib/store-subscribe.ts | 0 ts/{ => lib}/sveltelib/subscribe-updates.ts | 0 ts/{ => lib}/sveltelib/theme.ts | 0 ts/{ => lib}/sveltelib/toggleable.ts | 0 .../tag-editor/AutocompleteItem.svelte | 2 +- ts/{ => lib}/tag-editor/Tag.svelte | 2 +- ts/{ => lib}/tag-editor/TagDeleteBadge.svelte | 3 +- ts/{ => lib}/tag-editor/TagEditMode.svelte | 0 ts/{ => lib}/tag-editor/TagEditor.svelte | 12 +- ts/{ => lib}/tag-editor/TagInput.svelte | 0 ts/{ => lib}/tag-editor/TagSpacer.svelte | 0 ts/{ => lib}/tag-editor/TagWithTooltip.svelte | 5 +- .../tag-editor}/TagsRow.svelte | 13 +- .../tag-editor/WithAutocomplete.svelte | 5 +- ts/{ => lib}/tag-editor/icons.ts | 2 - ts/{ => lib}/tag-editor/index.ts | 0 .../tag-options-button/TagAddButton.svelte | 9 +- .../TagOptionsButton.svelte | 0 .../TagsSelectedButton.svelte | 18 +- .../tag-editor/tag-options-button/index.ts | 0 ts/{ => lib}/tag-editor/tags.ts | 0 ts/lib/tsconfig.json | 7 - ts/lib/{ => tslib}/bridgecommand.ts | 0 ts/lib/{ => tslib}/cards.ts | 0 ts/lib/{ => tslib}/children-access.ts | 0 ts/lib/{ => tslib}/context-keys.ts | 0 ts/lib/{ => tslib}/cross-browser.ts | 0 ts/lib/{ => tslib}/dom.ts | 0 ts/lib/{ => tslib}/events.ts | 1 - ts/lib/{ => tslib}/functional.ts | 0 ts/lib/{ => tslib}/globals.ts | 0 ts/lib/{ => tslib}/help-page.ts | 0 ts/lib/{ => tslib}/helpers.ts | 0 ts/lib/tslib/i18n/index.ts | 6 + ts/lib/{ => tslib}/i18n/utils.ts | 20 +- ts/lib/{ => tslib}/image-import.d.ts | 0 ts/lib/{ => tslib}/keys.ts | 2 +- ts/lib/{ => tslib}/nightmode.ts | 0 ts/lib/{ => tslib}/node.ts | 0 ts/lib/{ => tslib}/parsing.ts | 0 ts/lib/{ => tslib}/platform.ts | 0 ts/lib/{ => tslib}/progress.ts | 4 +- ts/lib/{ => tslib}/promise.ts | 0 ts/lib/{ => tslib}/runtime-require.ts | 2 +- ts/lib/{ => tslib}/shadow-dom.d.ts | 0 ts/lib/{ => tslib}/shortcuts.ts | 0 ts/lib/{ => tslib}/styling.ts | 0 ts/lib/{ => tslib}/time.test.ts | 2 + ts/lib/{ => tslib}/time.ts | 2 +- ts/lib/{ => tslib}/typing.ts | 0 ts/lib/{ => tslib}/ui.ts | 0 ts/lib/{ => tslib}/uuid.ts | 0 ts/lib/{ => tslib}/wrap.ts | 0 ts/licenses.json | 56 +- ts/mathjax/tsconfig.json | 8 - ts/reviewer/answering.ts | 8 +- ts/reviewer/index.ts | 2 +- ts/reviewer/lib.test.ts | 5 +- ts/reviewer/reviewer.scss | 4 +- ts/reviewer/reviewer_extras.scss | 2 +- ts/reviewer/reviewer_extras.ts | 3 +- ts/reviewer/tsconfig.json | 10 - ts/routes/+layout.svelte | 16 + ts/routes/+layout.ts | 15 + ts/routes/base.scss | 34 + ts/routes/card-info/CardInfo.svelte | 33 + .../card-info/CardInfoPlaceholder.svelte | 2 +- ts/{ => routes}/card-info/CardStats.svelte | 4 +- ts/{ => routes}/card-info/Revlog.svelte | 6 +- ts/routes/card-info/[cardId]/+page.svelte | 16 + ts/routes/card-info/[cardId]/+page.ts | 10 + ts/routes/card-info/card-info-base.scss | 1 + ts/{ => routes}/card-info/index.ts | 0 ts/{ => routes}/change-notetype/Alert.svelte | 7 +- .../change-notetype/ChangeNotetypePage.svelte | 13 +- ts/{ => routes}/change-notetype/Mapper.svelte | 5 +- .../change-notetype/MapperRow.svelte | 7 +- .../change-notetype/NotetypeSelector.svelte | 11 +- .../change-notetype/SaveButton.svelte | 9 +- .../change-notetype/StickyHeader.svelte | 15 +- .../[...notetypeIds]/+page.svelte | 12 + .../change-notetype/[...notetypeIds]/+page.ts | 22 + .../change-notetype/change-notetype-base.scss | 6 +- ts/{ => routes}/change-notetype/index.ts | 2 +- ts/{ => routes}/change-notetype/lib.test.ts | 5 +- ts/{ => routes}/change-notetype/lib.ts | 6 +- ts/routes/congrats/+page.svelte | 12 + ts/routes/congrats/+page.ts | 10 + ts/{ => routes}/congrats/CongratsPage.svelte | 9 +- ts/{ => routes}/congrats/congrats-base.scss | 4 +- ts/{ => routes}/congrats/index.ts | 2 +- ts/{ => routes}/congrats/lib.ts | 4 +- ts/{ => routes}/deck-options/Addons.svelte | 3 +- .../deck-options/AdvancedOptions.svelte | 15 +- .../deck-options/AudioOptions.svelte | 17 +- .../deck-options/AutoAdvance.svelte | 19 +- .../deck-options/BuryOptions.svelte | 17 +- .../deck-options/CardStateCustomizer.svelte | 5 +- .../deck-options/ConfigSelector.svelte | 11 +- .../deck-options/DailyLimits.svelte | 17 +- ts/{ => routes}/deck-options/DateInput.svelte | 6 +- .../deck-options/DeckOptionsPage.svelte | 9 +- .../deck-options/DisplayOrder.svelte | 19 +- .../deck-options/FsrsOptions.svelte | 13 +- .../deck-options/FsrsOptionsOuter.svelte | 17 +- .../deck-options/GlobalLabel.svelte | 0 ts/{ => routes}/deck-options/HtmlAddon.svelte | 0 .../deck-options/LapseOptions.svelte | 17 +- .../deck-options/NewOptions.svelte | 19 +- .../deck-options/SaveButton.svelte | 21 +- .../deck-options/SpinBoxFloatRow.svelte | 10 +- .../deck-options/SpinBoxRow.svelte | 10 +- .../deck-options/StepsInput.svelte | 0 .../deck-options/StepsInputRow.svelte | 9 +- .../deck-options/TabbedValue.svelte | 0 .../deck-options/TextInputModal.svelte | 8 +- .../deck-options/TimerOptions.svelte | 17 +- ts/{ => routes}/deck-options/Warning.svelte | 2 +- .../deck-options/WeightsInput.svelte | 0 .../deck-options/WeightsInputRow.svelte | 5 +- ts/routes/deck-options/[deckId]/+page.svelte | 12 + ts/routes/deck-options/[deckId]/+page.ts | 16 + ts/{ => routes}/deck-options/choices.ts | 7 +- .../deck-options/deck-options-base.scss | 6 +- ts/{ => routes}/deck-options/index.ts | 25 +- ts/{ => routes}/deck-options/lib.test.ts | 7 +- ts/{ => routes}/deck-options/lib.ts | 8 +- ts/{ => routes}/deck-options/steps.test.ts | 2 + ts/{ => routes}/deck-options/steps.ts | 0 ts/routes/graphs/+page.svelte | 44 + ts/{ => routes}/graphs/AddedGraph.svelte | 4 +- ts/{ => routes}/graphs/AxisTicks.svelte | 0 ts/{ => routes}/graphs/ButtonsGraph.svelte | 4 +- ts/{ => routes}/graphs/CalendarGraph.svelte | 4 +- ts/{ => routes}/graphs/CardCounts.svelte | 4 +- .../graphs/CumulativeOverlay.svelte | 0 ts/{ => routes}/graphs/DifficultyGraph.svelte | 4 +- ts/{ => routes}/graphs/EaseGraph.svelte | 4 +- ts/{ => routes}/graphs/FutureDue.svelte | 4 +- ts/{ => routes}/graphs/Graph.svelte | 4 +- .../graphs/GraphRangeRadios.svelte | 2 +- ts/{ => routes}/graphs/GraphsPage.svelte | 6 +- ts/{ => routes}/graphs/HistogramGraph.svelte | 0 ts/{ => routes}/graphs/HourGraph.svelte | 4 +- ts/{ => routes}/graphs/HoverColumns.svelte | 0 ts/{ => routes}/graphs/InputBox.svelte | 0 ts/{ => routes}/graphs/IntervalsGraph.svelte | 4 +- ts/{ => routes}/graphs/NoDataOverlay.svelte | 2 +- ts/{ => routes}/graphs/RangeBox.svelte | 2 +- .../graphs/RetrievabilityGraph.svelte | 4 +- ts/{ => routes}/graphs/ReviewsGraph.svelte | 4 +- ts/{ => routes}/graphs/StabilityGraph.svelte | 4 +- ts/{ => routes}/graphs/TableData.svelte | 0 ts/{ => routes}/graphs/TodayStats.svelte | 2 +- ts/{ => routes}/graphs/Tooltip.svelte | 0 ts/{ => routes}/graphs/WithGraphData.svelte | 11 +- ts/{ => routes}/graphs/added.ts | 4 +- ts/{ => routes}/graphs/buttons.ts | 4 +- ts/{ => routes}/graphs/calendar.ts | 8 +- ts/{ => routes}/graphs/card-counts.ts | 4 +- ts/{ => routes}/graphs/difficulty.ts | 4 +- ts/{ => routes}/graphs/ease.ts | 4 +- ts/{ => routes}/graphs/future-due.ts | 4 +- ts/{ => routes}/graphs/graph-helpers.ts | 5 +- ts/{ => routes}/graphs/graph-styles.ts | 0 ts/{ => routes}/graphs/graphs-base.scss | 4 +- ts/{ => routes}/graphs/histogram-graph.ts | 0 ts/{ => routes}/graphs/hours.ts | 6 +- ts/{ => routes}/graphs/index.ts | 21 - ts/{ => routes}/graphs/intervals.ts | 4 +- ts/{ => routes}/graphs/retrievability.ts | 4 +- ts/{ => routes}/graphs/reviews.ts | 4 +- ts/{ => routes}/graphs/today.ts | 4 +- ts/{ => routes}/graphs/tooltip.ts | 0 .../image-occlusion/ImageOcclusionPage.svelte | 5 +- .../ImageOcclusionPicker.svelte | 6 +- .../image-occlusion/MaskEditor.svelte | 5 +- ts/{ => routes}/image-occlusion/Notes.svelte | 7 +- .../image-occlusion/StickyFooter.svelte | 7 +- ts/{ => routes}/image-occlusion/Tags.svelte | 4 +- ts/{ => routes}/image-occlusion/Toast.svelte | 3 +- .../image-occlusion/Toolbar.svelte | 13 +- .../[...imagePathOrNoteId]/+page.svelte | 12 + .../[...imagePathOrNoteId]/+page.ts | 16 + .../image-occlusion/add-or-update-note.ts | 6 +- .../image-occlusion/canvas-scale.ts | 0 ts/routes/image-occlusion/icons.ts | 74 + .../image-occlusion/image-occlusion-base.scss | 8 +- ts/{ => routes}/image-occlusion/index.ts | 2 +- ts/{ => routes}/image-occlusion/lib.ts | 0 .../image-occlusion/mask-editor.ts | 8 +- .../notes-toolbar/MoreTools.svelte | 3 +- .../notes-toolbar/NotesToolbar.svelte | 0 .../notes-toolbar/TextFormatting.svelte | 7 +- .../image-occlusion/notes-toolbar/index.ts | 0 .../image-occlusion/notes-toolbar/lib.ts | 0 ts/{ => routes}/image-occlusion/review.scss | 0 ts/{ => routes}/image-occlusion/review.ts | 2 +- .../image-occlusion/shapes/base.ts | 2 +- .../image-occlusion/shapes/ellipse.ts | 0 .../image-occlusion/shapes/floats.ts | 0 .../image-occlusion/shapes/from-cloze.ts | 2 +- .../image-occlusion/shapes/index.ts | 0 .../image-occlusion/shapes/polygon.ts | 1 + .../image-occlusion/shapes/position.ts | 0 .../image-occlusion/shapes/rectangle.ts | 0 .../image-occlusion/shapes/text.ts | 0 .../image-occlusion/shapes/to-cloze.ts | 31 +- ts/{ => routes}/image-occlusion/store.ts | 0 .../image-occlusion/tools/add-from-cloze.ts | 4 +- ts/{ => routes}/image-occlusion/tools/api.ts | 2 +- .../image-occlusion/tools/from-shapes.ts | 6 +- .../image-occlusion/tools/index.ts | 0 ts/{ => routes}/image-occlusion/tools/lib.ts | 71 +- .../image-occlusion/tools/more-tools.ts | 2 +- .../image-occlusion/tools/shortcuts.ts | 0 .../image-occlusion/tools/tool-aligns.ts | 104 +- .../image-occlusion/tools/tool-buttons.ts | 2 +- .../image-occlusion/tools/tool-cursor.ts | 0 .../image-occlusion/tools/tool-ellipse.ts | 5 +- .../image-occlusion/tools/tool-polygon.ts | 20 +- .../image-occlusion/tools/tool-rect.ts | 5 +- .../image-occlusion/tools/tool-text.ts | 5 +- .../image-occlusion/tools/tool-undo-redo.ts | 16 +- .../image-occlusion/tools/tool-zoom.ts | 47 +- ts/{ => routes}/image-occlusion/types.ts | 0 .../import-anki-package/Header.svelte | 0 .../ImportAnkiPackagePage.svelte | 21 +- .../[...path]/+page.svelte | 12 + .../import-anki-package/[...path]/+page.ts | 10 + .../import-anki-package/choices.ts | 7 +- .../import-anki-package-base.scss | 8 +- ts/{ => routes}/import-anki-package/index.ts | 5 +- ts/{ => routes}/import-csv/FieldMapper.svelte | 5 +- ts/{ => routes}/import-csv/FileOptions.svelte | 15 +- .../import-csv/ImportCsvPage.svelte | 3 +- .../import-csv/ImportOptions.svelte | 15 +- ts/{ => routes}/import-csv/MapperRow.svelte | 7 +- ts/{ => routes}/import-csv/Preview.svelte | 0 ts/routes/import-csv/[...path]/+page.svelte | 12 + ts/routes/import-csv/[...path]/+page.ts | 19 + ts/{ => routes}/import-csv/choices.ts | 7 +- .../import-csv/import-csv-base.scss | 8 +- ts/{ => routes}/import-csv/index.ts | 7 +- ts/{ => routes}/import-csv/lib.ts | 12 +- .../import-page/CloseButton.svelte | 6 +- .../import-page/DetailsTable.svelte | 9 +- .../import-page/ImportLogPage.svelte | 7 +- ts/{ => routes}/import-page/ImportPage.svelte | 13 +- .../import-page/QueueSummary.svelte | 5 +- ts/{ => routes}/import-page/TableCell.svelte | 0 .../import-page/TableCellWithTooltip.svelte | 2 +- ts/routes/import-page/[...path]/+page.svelte | 18 + ts/routes/import-page/[...path]/+page.ts | 7 + .../import-page/import-page-base.scss | 6 +- ts/{ => routes}/import-page/index.ts | 2 +- ts/{ => routes}/import-page/lib.ts | 11 +- ts/{ => routes}/import-page/types.ts | 2 +- ts/routes/tmp/+page.ts | 6 + ts/src/app.d.ts | 13 + ts/src/app.html | 12 + ts/svelte.config.js | 37 + ts/sveltelib/tsconfig.json | 9 - ts/tag-editor/tag-options-button/icons.ts | 8 - ts/tag-editor/tsconfig.json | 11 - ts/tools/markpure.ts | 8 +- ts/tsconfig.json | 64 +- ts/tsconfig_legacy.json | 62 + ts/vite.config.ts | 50 + yarn | 7 + yarn.bat | 1 + yarn.lock | 2582 ++++++----------- 527 files changed, 2933 insertions(+), 3676 deletions(-) rename .eslintrc.js => .eslintrc.cjs (92%) delete mode 100644 ts/card-info/CardInfo.svelte delete mode 100644 ts/card-info/card-info-base.scss delete mode 100644 ts/card-info/tsconfig.json delete mode 100644 ts/change-notetype/icons.ts delete mode 100644 ts/change-notetype/tsconfig.json delete mode 100644 ts/components/icons.ts delete mode 100644 ts/components/tsconfig.json delete mode 100644 ts/congrats/tsconfig.json delete mode 100644 ts/deck-options/icons.ts delete mode 100644 ts/deck-options/tsconfig.json delete mode 100644 ts/domlib/tsconfig.json delete mode 100644 ts/editable/tsconfig.json delete mode 100644 ts/editor/tsconfig.json delete mode 100644 ts/esbuild_jest.mjs delete mode 100644 ts/fields/FieldsPage.svelte delete mode 100644 ts/fields/fields-base.scss delete mode 100644 ts/fields/index.ts delete mode 100644 ts/fields/tsconfig.json delete mode 100644 ts/graphs/tsconfig.json delete mode 100644 ts/html-filter/tsconfig.json delete mode 100644 ts/image-occlusion/tsconfig.json delete mode 100644 ts/import-anki-package/tsconfig.json delete mode 100644 ts/import-csv/tsconfig.json delete mode 100644 ts/import-page/icons.ts delete mode 100644 ts/import-page/tsconfig.json delete mode 100644 ts/jest.config.js rename ts/{ => lib}/components/Absolute.svelte (100%) rename ts/{ => lib}/components/BackendProgressIndicator.svelte (95%) rename ts/{ => lib}/components/Badge.svelte (100%) rename ts/{ => lib}/components/ButtonGroup.svelte (100%) rename ts/{ => lib}/components/ButtonGroupItem.svelte (96%) rename ts/{ => lib}/components/ButtonToolbar.svelte (95%) rename ts/{ => lib}/components/CheckBox.svelte (100%) rename ts/{ => lib}/components/Col.svelte (97%) rename ts/{ => lib}/components/Collapsible.svelte (100%) rename ts/{ => lib}/components/ConfigInput.svelte (100%) rename ts/{ => lib}/components/Container.svelte (97%) rename ts/{ => lib}/components/DropdownDivider.svelte (100%) rename ts/{ => lib}/components/DropdownItem.svelte (100%) rename ts/{ => lib}/components/DynamicallySlottable.svelte (93%) rename ts/{ => lib}/components/EnumSelector.svelte (100%) rename ts/{ => lib}/components/EnumSelectorRow.svelte (100%) rename ts/{ => lib}/components/ErrorPage.svelte (100%) rename ts/{ => lib}/components/FloatingArrow.svelte (92%) rename ts/{ => lib}/components/HelpModal.svelte (97%) rename ts/{ => lib}/components/HelpSection.svelte (96%) rename ts/{ => lib}/components/IconButton.svelte (96%) rename ts/{ => lib}/components/IconConstrain.svelte (100%) rename ts/{ => lib}/components/Item.svelte (81%) rename ts/{ => lib}/components/Label.svelte (100%) rename ts/{ => lib}/components/LabelButton.svelte (97%) rename ts/{ => lib}/components/Popover.svelte (98%) rename ts/{ => lib}/components/RevertButton.svelte (98%) rename ts/{ => lib}/components/Row.svelte (100%) rename ts/{ => lib}/components/ScrollArea.svelte (100%) rename ts/{ => lib}/components/Select.svelte (99%) rename ts/{ => lib}/components/SelectOption.svelte (100%) rename ts/{ => lib}/components/SettingTitle.svelte (100%) rename ts/{ => lib}/components/Shortcut.svelte (100%) rename ts/{ => lib}/components/Spacer.svelte (100%) rename ts/{ => lib}/components/SpinBox.svelte (99%) rename ts/{ => lib}/components/StickyContainer.svelte (100%) rename ts/{ => lib}/components/StickyHeader.svelte (97%) rename ts/{ => lib}/components/Switch.svelte (96%) rename ts/{ => lib}/components/SwitchRow.svelte (100%) rename ts/{ => lib}/components/TitledContainer.svelte (94%) rename ts/{ => lib}/components/VirtualTable.svelte (100%) rename ts/{ => lib}/components/WithContext.svelte (100%) rename ts/{ => lib}/components/WithFloating.svelte (87%) rename ts/{ => lib}/components/WithOverlay.svelte (86%) rename ts/{ => lib}/components/WithState.svelte (100%) rename ts/{ => lib}/components/WithTooltip.svelte (100%) rename ts/{ => lib}/components/context-keys.ts (100%) rename ts/{ => lib}/components/helpers.ts (100%) create mode 100644 ts/lib/components/icons.ts rename ts/{ => lib}/components/resizable.ts (100%) rename ts/{ => lib}/components/types.ts (100%) rename ts/{ => lib}/domlib/content-editable.ts (100%) rename ts/{ => lib}/domlib/find-above.ts (100%) rename ts/{ => lib}/domlib/index.ts (100%) rename ts/{ => lib}/domlib/location/document.ts (96%) rename ts/{ => lib}/domlib/location/index.ts (91%) rename ts/{ => lib}/domlib/location/location.ts (100%) rename ts/{ => lib}/domlib/location/node.ts (100%) rename ts/{ => lib}/domlib/location/range.ts (100%) rename ts/{ => lib}/domlib/location/selection.ts (95%) rename ts/{ => lib}/domlib/move-nodes.ts (100%) rename ts/{ => lib}/domlib/place-caret.ts (100%) rename ts/{ => lib}/domlib/surround/apply/format.ts (100%) rename ts/{ => lib}/domlib/surround/apply/index.ts (100%) rename ts/{ => lib}/domlib/surround/build/add-merge.ts (100%) rename ts/{ => lib}/domlib/surround/build/build-tree.ts (97%) rename ts/{ => lib}/domlib/surround/build/extend-merge.ts (100%) rename ts/{ => lib}/domlib/surround/build/format.ts (98%) rename ts/{ => lib}/domlib/surround/build/index.ts (100%) rename ts/{ => lib}/domlib/surround/flat-range.ts (96%) rename ts/{ => lib}/domlib/surround/index.ts (100%) rename ts/{ => lib}/domlib/surround/match-type.ts (100%) rename ts/{ => lib}/domlib/surround/split-text.ts (98%) rename ts/{ => lib}/domlib/surround/surround-format.ts (100%) rename ts/{ => lib}/domlib/surround/surround.test.ts (99%) rename ts/{ => lib}/domlib/surround/surround.ts (100%) rename ts/{ => lib}/domlib/surround/test-utils.ts (100%) rename ts/{ => lib}/domlib/surround/tree/block-node.ts (100%) rename ts/{ => lib}/domlib/surround/tree/element-node.ts (100%) rename ts/{ => lib}/domlib/surround/tree/formatting-node.ts (99%) rename ts/{ => lib}/domlib/surround/tree/index.ts (100%) rename ts/{ => lib}/domlib/surround/tree/tree-node.ts (100%) rename ts/{ => lib}/domlib/surround/unsurround.test.ts (98%) create mode 100644 ts/lib/generated/README.md rename ts/lib/{i18n/bundles.ts => generated/ftl-helpers.ts} (78%) rename ts/lib/{ => generated}/post.ts (90%) delete mode 100644 ts/lib/i18n/index.ts rename {sass => ts/lib/sass}/_button-mixins.scss (99%) rename {sass => ts/lib/sass}/_color-palette.scss (100%) rename {sass => ts/lib/sass}/_functions.scss (100%) rename {sass => ts/lib/sass}/_root-vars.scss (100%) rename {sass => ts/lib/sass}/_vars.scss (100%) rename {sass => ts/lib/sass}/base.scss (98%) rename {sass => ts/lib/sass}/bootstrap-dark.scss (100%) rename {sass => ts/lib/sass}/bootstrap-forms.scss (100%) rename {sass => ts/lib/sass}/bootstrap-tooltip.scss (100%) rename {sass => ts/lib/sass}/breakpoints.scss (100%) rename {sass => ts/lib/sass}/buttons.scss (100%) rename {sass => ts/lib/sass}/card-counts.scss (100%) rename {sass => ts/lib/sass}/core.scss (100%) rename {sass => ts/lib/sass}/elevation.scss (100%) rename {sass => ts/lib/sass}/night-mode.scss (100%) rename {sass => ts/lib/sass}/panes.scss (100%) rename {sass => ts/lib/sass}/scrollbar.scss (100%) rename ts/{ => lib}/sveltelib/action-list.ts (100%) rename ts/{ => lib}/sveltelib/closing-click.ts (100%) rename ts/{ => lib}/sveltelib/closing-keyup.ts (100%) rename ts/{ => lib}/sveltelib/composition.ts (100%) rename ts/{ => lib}/sveltelib/context-property.ts (100%) rename ts/{ => lib}/sveltelib/dom-mirror.ts (100%) rename ts/{ => lib}/sveltelib/dynamic-slotting.ts (100%) rename ts/{ => lib}/sveltelib/dynamicComponent.ts (100%) rename ts/{ => lib}/sveltelib/event-predicate.d.ts (100%) rename ts/{ => lib}/sveltelib/event-store.ts (100%) rename ts/{ => lib}/sveltelib/export-runtime.ts (91%) rename ts/{ => lib}/sveltelib/handler-list.ts (100%) rename ts/{ => lib}/sveltelib/input-handler.ts (100%) rename ts/{ => lib}/sveltelib/lifecycle-hooks.ts (100%) rename ts/{ => lib}/sveltelib/modal-closing.ts (100%) rename ts/{ => lib}/sveltelib/node-store.ts (100%) rename ts/{ => lib}/sveltelib/portal.ts (100%) rename ts/{ => lib}/sveltelib/position/auto-update.ts (96%) rename ts/{ => lib}/sveltelib/position/position-algorithm.d.ts (100%) rename ts/{ => lib}/sveltelib/position/position-floating.ts (100%) rename ts/{ => lib}/sveltelib/position/position-overlay.ts (100%) rename ts/{ => lib}/sveltelib/preferences.ts (100%) rename ts/{ => lib}/sveltelib/resize-store.ts (100%) rename ts/{ => lib}/sveltelib/shortcut.ts (100%) rename ts/{ => lib}/sveltelib/store-subscribe.ts (100%) rename ts/{ => lib}/sveltelib/subscribe-updates.ts (100%) rename ts/{ => lib}/sveltelib/theme.ts (100%) rename ts/{ => lib}/sveltelib/toggleable.ts (100%) rename ts/{ => lib}/tag-editor/AutocompleteItem.svelte (97%) rename ts/{ => lib}/tag-editor/Tag.svelte (97%) rename ts/{ => lib}/tag-editor/TagDeleteBadge.svelte (87%) rename ts/{ => lib}/tag-editor/TagEditMode.svelte (100%) rename ts/{ => lib}/tag-editor/TagEditor.svelte (99%) rename ts/{ => lib}/tag-editor/TagInput.svelte (100%) rename ts/{ => lib}/tag-editor/TagSpacer.svelte (100%) rename ts/{ => lib}/tag-editor/TagWithTooltip.svelte (96%) rename ts/{components => lib/tag-editor}/TagsRow.svelte (71%) rename ts/{ => lib}/tag-editor/WithAutocomplete.svelte (97%) rename ts/{ => lib}/tag-editor/icons.ts (80%) rename ts/{ => lib}/tag-editor/index.ts (100%) rename ts/{ => lib}/tag-editor/tag-options-button/TagAddButton.svelte (89%) rename ts/{ => lib}/tag-editor/tag-options-button/TagOptionsButton.svelte (100%) rename ts/{ => lib}/tag-editor/tag-options-button/TagsSelectedButton.svelte (83%) rename ts/{ => lib}/tag-editor/tag-options-button/index.ts (100%) rename ts/{ => lib}/tag-editor/tags.ts (100%) delete mode 100644 ts/lib/tsconfig.json rename ts/lib/{ => tslib}/bridgecommand.ts (100%) rename ts/lib/{ => tslib}/cards.ts (100%) rename ts/lib/{ => tslib}/children-access.ts (100%) rename ts/lib/{ => tslib}/context-keys.ts (100%) rename ts/lib/{ => tslib}/cross-browser.ts (100%) rename ts/lib/{ => tslib}/dom.ts (100%) rename ts/lib/{ => tslib}/events.ts (96%) rename ts/lib/{ => tslib}/functional.ts (100%) rename ts/lib/{ => tslib}/globals.ts (100%) rename ts/lib/{ => tslib}/help-page.ts (100%) rename ts/lib/{ => tslib}/helpers.ts (100%) create mode 100644 ts/lib/tslib/i18n/index.ts rename ts/lib/{ => tslib}/i18n/utils.ts (84%) rename ts/lib/{ => tslib}/image-import.d.ts (100%) rename ts/lib/{ => tslib}/keys.ts (99%) rename ts/lib/{ => tslib}/nightmode.ts (100%) rename ts/lib/{ => tslib}/node.ts (100%) rename ts/lib/{ => tslib}/parsing.ts (100%) rename ts/lib/{ => tslib}/platform.ts (100%) rename ts/lib/{ => tslib}/progress.ts (81%) rename ts/lib/{ => tslib}/promise.ts (100%) rename ts/lib/{ => tslib}/runtime-require.ts (98%) rename ts/lib/{ => tslib}/shadow-dom.d.ts (100%) rename ts/lib/{ => tslib}/shortcuts.ts (100%) rename ts/lib/{ => tslib}/styling.ts (100%) rename ts/lib/{ => tslib}/time.test.ts (97%) rename ts/lib/{ => tslib}/time.ts (99%) rename ts/lib/{ => tslib}/typing.ts (100%) rename ts/lib/{ => tslib}/ui.ts (100%) rename ts/lib/{ => tslib}/uuid.ts (100%) rename ts/lib/{ => tslib}/wrap.ts (100%) delete mode 100644 ts/mathjax/tsconfig.json delete mode 100644 ts/reviewer/tsconfig.json create mode 100644 ts/routes/+layout.svelte create mode 100644 ts/routes/+layout.ts create mode 100644 ts/routes/base.scss create mode 100644 ts/routes/card-info/CardInfo.svelte rename ts/{ => routes}/card-info/CardInfoPlaceholder.svelte (90%) rename ts/{ => routes}/card-info/CardStats.svelte (97%) rename ts/{ => routes}/card-info/Revlog.svelte (97%) create mode 100644 ts/routes/card-info/[cardId]/+page.svelte create mode 100644 ts/routes/card-info/[cardId]/+page.ts create mode 100644 ts/routes/card-info/card-info-base.scss rename ts/{ => routes}/card-info/index.ts (100%) rename ts/{ => routes}/change-notetype/Alert.svelte (91%) rename ts/{ => routes}/change-notetype/ChangeNotetypePage.svelte (84%) rename ts/{ => routes}/change-notetype/Mapper.svelte (83%) rename ts/{ => routes}/change-notetype/MapperRow.svelte (84%) rename ts/{ => routes}/change-notetype/NotetypeSelector.svelte (76%) rename ts/{ => routes}/change-notetype/SaveButton.svelte (80%) rename ts/{ => routes}/change-notetype/StickyHeader.svelte (78%) create mode 100644 ts/routes/change-notetype/[...notetypeIds]/+page.svelte create mode 100644 ts/routes/change-notetype/[...notetypeIds]/+page.ts rename ts/{ => routes}/change-notetype/change-notetype-base.scss (79%) rename ts/{ => routes}/change-notetype/index.ts (94%) rename ts/{ => routes}/change-notetype/lib.test.ts (96%) rename ts/{ => routes}/change-notetype/lib.ts (97%) create mode 100644 ts/routes/congrats/+page.svelte create mode 100644 ts/routes/congrats/+page.ts rename ts/{ => routes}/congrats/CongratsPage.svelte (90%) rename ts/{ => routes}/congrats/congrats-base.scss (62%) rename ts/{ => routes}/congrats/index.ts (95%) rename ts/{ => routes}/congrats/lib.ts (87%) rename ts/{ => routes}/deck-options/Addons.svelte (88%) rename ts/{ => routes}/deck-options/AdvancedOptions.svelte (94%) rename ts/{ => routes}/deck-options/AudioOptions.svelte (83%) rename ts/{ => routes}/deck-options/AutoAdvance.svelte (87%) rename ts/{ => routes}/deck-options/BuryOptions.svelte (86%) rename ts/{ => routes}/deck-options/CardStateCustomizer.svelte (90%) rename ts/{ => routes}/deck-options/ConfigSelector.svelte (91%) rename ts/{ => routes}/deck-options/DailyLimits.svelte (93%) rename ts/{ => routes}/deck-options/DateInput.svelte (78%) rename ts/{ => routes}/deck-options/DeckOptionsPage.svelte (94%) rename ts/{ => routes}/deck-options/DisplayOrder.svelte (92%) rename ts/{ => routes}/deck-options/FsrsOptions.svelte (97%) rename ts/{ => routes}/deck-options/FsrsOptionsOuter.svelte (86%) rename ts/{ => routes}/deck-options/GlobalLabel.svelte (100%) rename ts/{ => routes}/deck-options/HtmlAddon.svelte (100%) rename ts/{ => routes}/deck-options/LapseOptions.svelte (90%) rename ts/{ => routes}/deck-options/NewOptions.svelte (90%) rename ts/{ => routes}/deck-options/SaveButton.svelte (86%) rename ts/{ => routes}/deck-options/SpinBoxFloatRow.svelte (68%) rename ts/{ => routes}/deck-options/SpinBoxRow.svelte (70%) rename ts/{ => routes}/deck-options/StepsInput.svelte (100%) rename ts/{ => routes}/deck-options/StepsInputRow.svelte (71%) rename ts/{ => routes}/deck-options/TabbedValue.svelte (100%) rename ts/{ => routes}/deck-options/TextInputModal.svelte (93%) rename ts/{ => routes}/deck-options/TimerOptions.svelte (88%) rename ts/{ => routes}/deck-options/Warning.svelte (91%) rename ts/{ => routes}/deck-options/WeightsInput.svelte (100%) rename ts/{ => routes}/deck-options/WeightsInputRow.svelte (78%) create mode 100644 ts/routes/deck-options/[deckId]/+page.svelte create mode 100644 ts/routes/deck-options/[deckId]/+page.ts rename ts/{ => routes}/deck-options/choices.ts (97%) rename ts/{ => routes}/deck-options/deck-options-base.scss (87%) rename ts/{ => routes}/deck-options/index.ts (75%) rename ts/{ => routes}/deck-options/lib.test.ts (98%) rename ts/{ => routes}/deck-options/lib.ts (98%) rename ts/{ => routes}/deck-options/steps.test.ts (95%) rename ts/{ => routes}/deck-options/steps.ts (100%) create mode 100644 ts/routes/graphs/+page.svelte rename ts/{ => routes}/graphs/AddedGraph.svelte (94%) rename ts/{ => routes}/graphs/AxisTicks.svelte (100%) rename ts/{ => routes}/graphs/ButtonsGraph.svelte (92%) rename ts/{ => routes}/graphs/CalendarGraph.svelte (95%) rename ts/{ => routes}/graphs/CardCounts.svelte (97%) rename ts/{ => routes}/graphs/CumulativeOverlay.svelte (100%) rename ts/{ => routes}/graphs/DifficultyGraph.svelte (92%) rename ts/{ => routes}/graphs/EaseGraph.svelte (92%) rename ts/{ => routes}/graphs/FutureDue.svelte (95%) rename ts/{ => routes}/graphs/Graph.svelte (93%) rename ts/{ => routes}/graphs/GraphRangeRadios.svelte (97%) rename ts/{ => routes}/graphs/GraphsPage.svelte (93%) rename ts/{ => routes}/graphs/HistogramGraph.svelte (100%) rename ts/{ => routes}/graphs/HourGraph.svelte (93%) rename ts/{ => routes}/graphs/HoverColumns.svelte (100%) rename ts/{ => routes}/graphs/InputBox.svelte (100%) rename ts/{ => routes}/graphs/IntervalsGraph.svelte (95%) rename ts/{ => routes}/graphs/NoDataOverlay.svelte (94%) rename ts/{ => routes}/graphs/RangeBox.svelte (98%) rename ts/{ => routes}/graphs/RetrievabilityGraph.svelte (92%) rename ts/{ => routes}/graphs/ReviewsGraph.svelte (95%) rename ts/{ => routes}/graphs/StabilityGraph.svelte (96%) rename ts/{ => routes}/graphs/TableData.svelte (100%) rename ts/{ => routes}/graphs/TodayStats.svelte (91%) rename ts/{ => routes}/graphs/Tooltip.svelte (100%) rename ts/{ => routes}/graphs/WithGraphData.svelte (84%) rename ts/{ => routes}/graphs/added.ts (97%) rename ts/{ => routes}/graphs/buttons.ts (98%) rename ts/{ => routes}/graphs/calendar.ts (96%) rename ts/{ => routes}/graphs/card-counts.ts (98%) rename ts/{ => routes}/graphs/difficulty.ts (97%) rename ts/{ => routes}/graphs/ease.ts (97%) rename ts/{ => routes}/graphs/future-due.ts (97%) rename ts/{ => routes}/graphs/graph-helpers.ts (95%) rename ts/{ => routes}/graphs/graph-styles.ts (100%) rename ts/{ => routes}/graphs/graphs-base.scss (55%) rename ts/{ => routes}/graphs/histogram-graph.ts (100%) rename ts/{ => routes}/graphs/hours.ts (97%) rename ts/{ => routes}/graphs/index.ts (84%) rename ts/{ => routes}/graphs/intervals.ts (98%) rename ts/{ => routes}/graphs/retrievability.ts (97%) rename ts/{ => routes}/graphs/reviews.ts (99%) rename ts/{ => routes}/graphs/today.ts (94%) rename ts/{ => routes}/graphs/tooltip.ts (100%) rename ts/{ => routes}/image-occlusion/ImageOcclusionPage.svelte (95%) rename ts/{ => routes}/image-occlusion/ImageOcclusionPicker.svelte (87%) rename ts/{ => routes}/image-occlusion/MaskEditor.svelte (96%) rename ts/{ => routes}/image-occlusion/Notes.svelte (94%) rename ts/{ => routes}/image-occlusion/StickyFooter.svelte (87%) rename ts/{ => routes}/image-occlusion/Tags.svelte (83%) rename ts/{ => routes}/image-occlusion/Toast.svelte (95%) rename ts/{ => routes}/image-occlusion/Toolbar.svelte (97%) create mode 100644 ts/routes/image-occlusion/[...imagePathOrNoteId]/+page.svelte create mode 100644 ts/routes/image-occlusion/[...imagePathOrNoteId]/+page.ts rename ts/{ => routes}/image-occlusion/add-or-update-note.ts (94%) rename ts/{ => routes}/image-occlusion/canvas-scale.ts (100%) create mode 100644 ts/routes/image-occlusion/icons.ts rename ts/{ => routes}/image-occlusion/image-occlusion-base.scss (73%) rename ts/{ => routes}/image-occlusion/index.ts (96%) rename ts/{ => routes}/image-occlusion/lib.ts (100%) rename ts/{ => routes}/image-occlusion/mask-editor.ts (97%) rename ts/{ => routes}/image-occlusion/notes-toolbar/MoreTools.svelte (91%) rename ts/{ => routes}/image-occlusion/notes-toolbar/NotesToolbar.svelte (100%) rename ts/{ => routes}/image-occlusion/notes-toolbar/TextFormatting.svelte (91%) rename ts/{ => routes}/image-occlusion/notes-toolbar/index.ts (100%) rename ts/{ => routes}/image-occlusion/notes-toolbar/lib.ts (100%) rename ts/{ => routes}/image-occlusion/review.scss (100%) rename ts/{ => routes}/image-occlusion/review.ts (99%) rename ts/{ => routes}/image-occlusion/shapes/base.ts (98%) rename ts/{ => routes}/image-occlusion/shapes/ellipse.ts (100%) rename ts/{ => routes}/image-occlusion/shapes/floats.ts (100%) rename ts/{ => routes}/image-occlusion/shapes/from-cloze.ts (98%) rename ts/{ => routes}/image-occlusion/shapes/index.ts (100%) rename ts/{ => routes}/image-occlusion/shapes/polygon.ts (96%) rename ts/{ => routes}/image-occlusion/shapes/position.ts (100%) rename ts/{ => routes}/image-occlusion/shapes/rectangle.ts (100%) rename ts/{ => routes}/image-occlusion/shapes/text.ts (100%) rename ts/{ => routes}/image-occlusion/shapes/to-cloze.ts (87%) rename ts/{ => routes}/image-occlusion/store.ts (100%) rename ts/{ => routes}/image-occlusion/tools/add-from-cloze.ts (87%) rename ts/{ => routes}/image-occlusion/tools/api.ts (97%) rename ts/{ => routes}/image-occlusion/tools/from-shapes.ts (80%) rename ts/{ => routes}/image-occlusion/tools/index.ts (100%) rename ts/{ => routes}/image-occlusion/tools/lib.ts (78%) rename ts/{ => routes}/image-occlusion/tools/more-tools.ts (99%) rename ts/{ => routes}/image-occlusion/tools/shortcuts.ts (100%) rename ts/{ => routes}/image-occlusion/tools/tool-aligns.ts (57%) rename ts/{ => routes}/image-occlusion/tools/tool-buttons.ts (97%) rename ts/{ => routes}/image-occlusion/tools/tool-cursor.ts (100%) rename ts/{ => routes}/image-occlusion/tools/tool-ellipse.ts (96%) rename ts/{ => routes}/image-occlusion/tools/tool-polygon.ts (93%) rename ts/{ => routes}/image-occlusion/tools/tool-rect.ts (96%) rename ts/{ => routes}/image-occlusion/tools/tool-text.ts (93%) rename ts/{ => routes}/image-occlusion/tools/tool-undo-redo.ts (87%) rename ts/{ => routes}/image-occlusion/tools/tool-zoom.ts (85%) rename ts/{ => routes}/image-occlusion/types.ts (100%) rename ts/{ => routes}/import-anki-package/Header.svelte (100%) rename ts/{ => routes}/import-anki-package/ImportAnkiPackagePage.svelte (88%) create mode 100644 ts/routes/import-anki-package/[...path]/+page.svelte create mode 100644 ts/routes/import-anki-package/[...path]/+page.ts rename ts/{ => routes}/import-anki-package/choices.ts (76%) rename ts/{ => routes}/import-anki-package/import-anki-package-base.scss (73%) rename ts/{ => routes}/import-anki-package/index.ts (91%) rename ts/{ => routes}/import-csv/FieldMapper.svelte (91%) rename ts/{ => routes}/import-csv/FileOptions.svelte (83%) rename ts/{ => routes}/import-csv/ImportCsvPage.svelte (92%) rename ts/{ => routes}/import-csv/ImportOptions.svelte (91%) rename ts/{ => routes}/import-csv/MapperRow.svelte (83%) rename ts/{ => routes}/import-csv/Preview.svelte (100%) create mode 100644 ts/routes/import-csv/[...path]/+page.svelte create mode 100644 ts/routes/import-csv/[...path]/+page.ts rename ts/{ => routes}/import-csv/choices.ts (91%) rename ts/{ => routes}/import-csv/import-csv-base.scss (73%) rename ts/{ => routes}/import-csv/index.ts (92%) rename ts/{ => routes}/import-csv/lib.ts (94%) rename ts/{ => routes}/import-page/CloseButton.svelte (87%) rename ts/{ => routes}/import-page/DetailsTable.svelte (91%) rename ts/{ => routes}/import-page/ImportLogPage.svelte (88%) rename ts/{ => routes}/import-page/ImportPage.svelte (79%) rename ts/{ => routes}/import-page/QueueSummary.svelte (88%) rename ts/{ => routes}/import-page/TableCell.svelte (100%) rename ts/{ => routes}/import-page/TableCellWithTooltip.svelte (88%) create mode 100644 ts/routes/import-page/[...path]/+page.svelte create mode 100644 ts/routes/import-page/[...path]/+page.ts rename ts/{ => routes}/import-page/import-page-base.scss (60%) rename ts/{ => routes}/import-page/index.ts (95%) rename ts/{ => routes}/import-page/lib.ts (91%) rename ts/{ => routes}/import-page/types.ts (90%) create mode 100644 ts/routes/tmp/+page.ts create mode 100644 ts/src/app.d.ts create mode 100644 ts/src/app.html create mode 100644 ts/svelte.config.js delete mode 100644 ts/sveltelib/tsconfig.json delete mode 100644 ts/tag-editor/tag-options-button/icons.ts delete mode 100644 ts/tag-editor/tsconfig.json create mode 100644 ts/tsconfig_legacy.json create mode 100644 ts/vite.config.ts create mode 100755 yarn create mode 100755 yarn.bat diff --git a/.cargo/config.toml b/.cargo/config.toml index ed1dcf7e6..67f0dea34 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,7 +1,6 @@ [env] STRINGS_PY = { value = "out/pylib/anki/_fluent.py", relative = true } -STRINGS_JS = { value = "out/ts/lib/ftl.js", relative = true } -STRINGS_DTS = { value = "out/ts/lib/ftl.d.ts", relative = true } +STRINGS_TS = { value = "out/ts/lib/generated/ftl.ts", relative = true } DESCRIPTORS_BIN = { value = "out/rslib/proto/descriptors.bin", relative = true } # build script will append .exe if necessary PROTOC = { value = "out/extracted/protoc/bin/protoc", relative = true } diff --git a/.dprint.json b/.dprint.json index a7b7580af..65f451981 100644 --- a/.dprint.json +++ b/.dprint.json @@ -30,7 +30,8 @@ "qt/bundle/PyOxidizer", "target", ".mypy_cache", - "extra" + "extra", + "ts/.svelte-kit" ], "plugins": [ "https://plugins.dprint.dev/typescript-0.85.1.wasm", diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 92% rename from .eslintrc.js rename to .eslintrc.cjs index e672beadd..e4044de30 100644 --- a/.eslintrc.js +++ b/.eslintrc.cjs @@ -36,6 +36,7 @@ module.exports = { ], rules: { "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-explicit-any": "off", }, }, { @@ -47,11 +48,12 @@ module.exports = { rules: { "svelte/no-at-html-tags": "off", "svelte/valid-compile": ["error", { "ignoreWarnings": true }], + "@typescript-eslint/no-explicit-any": "off", }, }, ], env: { browser: true, es2020: true }, - ignorePatterns: ["backend_proto.d.ts", "*.svelte.d.ts", "vendor", "extra/*"], + ignorePatterns: ["backend_proto.d.ts", "*.svelte.d.ts", "vendor", "extra/*", "vite.config.ts"], globals: { globalThis: false, NodeListOf: false, diff --git a/.gitignore b/.gitignore index 4c43afd06..9fa8dab62 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ node_modules .ninja_deps /extra yarn-error.log +ts/.svelte-kit diff --git a/build/configure/src/aqt.rs b/build/configure/src/aqt.rs index 1b5c03844..c8d396ae1 100644 --- a/build/configure/src/aqt.rs +++ b/build/configure/src/aqt.rs @@ -14,6 +14,7 @@ use ninja_gen::node::EsbuildScript; use ninja_gen::node::TypescriptCheck; use ninja_gen::python::python_format; use ninja_gen::python::PythonTest; +use ninja_gen::rsync::RsyncFiles; use ninja_gen::Build; use ninja_gen::Utf8Path; use ninja_gen::Utf8PathBuf; @@ -21,7 +22,6 @@ use ninja_gen::Utf8PathBuf; use crate::anki_version; use crate::python::BuildWheel; use crate::web::copy_mathjax; -use crate::web::eslint; pub fn build_and_check_aqt(build: &mut Build) -> Result<()> { build_forms(build)?; @@ -114,9 +114,22 @@ fn build_data_folder(build: &mut Build) -> Result<()> { build_js(build)?; build_pages(build)?; build_icons(build)?; + copy_sveltekit(build)?; Ok(()) } +fn copy_sveltekit(build: &mut Build) -> Result<()> { + build.add_action( + "qt:aqt:data:web:sveltekit", + RsyncFiles { + inputs: inputs![":sveltekit:folder"], + target_folder: "qt/_aqt/data/web/", + strip_prefix: "$builddir/", + extra_args: "-a", + }, + ) +} + fn build_css(build: &mut Build) -> Result<()> { let scss_files = build.expand_inputs(inputs![glob!["qt/aqt/data/web/css/*.scss"]]); let out_dir = Utf8Path::new("qt/_aqt/data/web/css"); @@ -172,7 +185,6 @@ fn build_js(build: &mut Build) -> Result<()> { )?; } let files = inputs![glob!["qt/aqt/data/web/js/*"]]; - eslint(build, "aqt", "qt/aqt/data/web/js", files.clone())?; build.add_action( "check:typescript:aqt", TypescriptCheck { diff --git a/build/configure/src/rust.rs b/build/configure/src/rust.rs index 553fac01e..a90a21176 100644 --- a/build/configure/src/rust.rs +++ b/build/configure/src/rust.rs @@ -56,8 +56,7 @@ fn prepare_translations(build: &mut Build) -> Result<()> { ], outputs: &[ RustOutput::Data("py", "pylib/anki/_fluent.py"), - RustOutput::Data("ts", "ts/lib/ftl.d.ts"), - RustOutput::Data("ts", "ts/lib/ftl.js"), + RustOutput::Data("ts", "ts/lib/generated/ftl.ts"), ], target: None, extra_args: "-p anki_i18n", @@ -119,8 +118,7 @@ fn build_proto_descriptors_and_interfaces(build: &mut Build) -> Result<()> { let outputs = vec![ RustOutput::Data("descriptors.bin", "rslib/proto/descriptors.bin"), RustOutput::Data("py", "pylib/anki/_backend_generated.py"), - RustOutput::Data("ts", "ts/lib/backend.d.ts"), - RustOutput::Data("ts", "ts/lib/backend.js"), + RustOutput::Data("ts", "ts/lib/generated/backend.ts"), ]; build.add_action( "rslib:proto", @@ -249,7 +247,7 @@ pub fn check_minilints(build: &mut Build) -> Result<()> { let files = inputs![ glob![ "**/*.{py,rs,ts,svelte,mjs}", - "{node_modules,qt/bundle/PyOxidizer}/**" + "{node_modules,qt/bundle/PyOxidizer,ts/.svelte-kit}/**" ], "Cargo.lock" ]; diff --git a/build/configure/src/web.rs b/build/configure/src/web.rs index 325090d3d..f02bd7a47 100644 --- a/build/configure/src/web.rs +++ b/build/configure/src/web.rs @@ -3,21 +3,21 @@ use anyhow::Result; use ninja_gen::action::BuildAction; +use ninja_gen::copy::CopyFiles; use ninja_gen::glob; use ninja_gen::hashmap; use ninja_gen::input::BuildInput; use ninja_gen::inputs; use ninja_gen::node::node_archive; use ninja_gen::node::CompileSass; -use ninja_gen::node::CompileTypescript; use ninja_gen::node::DPrint; use ninja_gen::node::EsbuildScript; use ninja_gen::node::Eslint; use ninja_gen::node::GenTypescriptProto; -use ninja_gen::node::JestTest; use ninja_gen::node::SqlFormat; use ninja_gen::node::SvelteCheck; -use ninja_gen::node::TypescriptCheck; +use ninja_gen::node::SveltekitBuild; +use ninja_gen::node::ViteTest; use ninja_gen::rsync::RsyncFiles; use ninja_gen::Build; @@ -25,6 +25,7 @@ pub fn build_and_check_web(build: &mut Build) -> Result<()> { setup_node(build)?; build_sass(build)?; build_and_check_tslib(build)?; + build_sveltekit(build)?; declare_and_check_other_libraries(build)?; build_and_check_pages(build)?; build_and_check_editor(build)?; @@ -35,6 +36,20 @@ pub fn build_and_check_web(build: &mut Build) -> Result<()> { Ok(()) } +fn build_sveltekit(build: &mut Build) -> Result<()> { + build.add_action( + "sveltekit", + SveltekitBuild { + output_folder: inputs!["sveltekit"], + deps: inputs![ + "ts/tsconfig.json", + glob!["ts/**", "ts/.svelte-kit/**"], + ":ts:lib" + ], + }, + ) +} + fn setup_node(build: &mut Build) -> Result<()> { ninja_gen::node::setup_node( build, @@ -46,7 +61,8 @@ fn setup_node(build: &mut Build) -> Result<()> { "sass", "tsc", "tsx", - "jest", + "vite", + "vitest", "protoc-gen-es", ], hashmap! { @@ -111,55 +127,39 @@ fn setup_node(build: &mut Build) -> Result<()> { } fn build_and_check_tslib(build: &mut Build) -> Result<()> { - build.add_dependency("ts:lib:i18n", ":rslib:i18n:ts".into()); + build.add_dependency("ts:generated:i18n", ":rslib:i18n:ts".into()); build.add_action( - "ts:lib:proto", + "ts:generated:proto", GenTypescriptProto { protos: inputs![glob!["proto/**/*.proto"]], include_dirs: &["proto"], - out_dir: "out/ts/lib", + out_dir: "out/ts/lib/generated", out_path_transform: |path| { - path.replace("proto/", "ts/lib/") - .replace("proto\\", "ts/lib\\") + path.replace("proto/", "ts/lib/generated/") + .replace("proto\\", "ts/lib/generated\\") }, ts_transform_script: "ts/tools/markpure.ts", }, )?; // ensure _service files are generated by rslib - build.add_dependency("ts:lib:proto", inputs![":rslib:proto:ts"]); - // the generated _service.js files import @tslib/post, and esbuild won't be able - // to import the .ts file, so we need to generate a .js file for it + build.add_dependency("ts:generated:proto", inputs![":rslib:proto:ts"]); + // copy source files from ts/lib/generated build.add_action( - "ts:lib:proto", - CompileTypescript { - ts_files: "ts/lib/post.ts".into(), - out_dir: "out/ts/lib", - out_path_transform: |path| path.into(), + "ts:generated:src", + CopyFiles { + inputs: inputs![glob!["ts/lib/generated/*.ts"]], + output_folder: "ts/lib/generated", }, )?; let src_files = inputs![glob!["ts/lib/**"]]; - eslint(build, "lib", "ts/lib", inputs![":ts:lib", &src_files])?; - - build.add_action( - "check:jest:lib", - jest_test("ts/lib", inputs![":ts:lib", &src_files], true), - )?; + build.add_dependency("ts:lib", inputs![":ts:generated"]); build.add_dependency("ts:lib", src_files); Ok(()) } -fn jest_test(folder: &str, deps: BuildInput, jsdom: bool) -> impl BuildAction + '_ { - JestTest { - folder, - deps, - jest_rc: "ts/jest.config.js".into(), - jsdom, - } -} - fn declare_and_check_other_libraries(build: &mut Build) -> Result<()> { for (library, inputs) in [ ("sveltelib", inputs![":ts:lib", glob!("ts/sveltelib/**")]), @@ -171,49 +171,13 @@ fn declare_and_check_other_libraries(build: &mut Build) -> Result<()> { ("html-filter", inputs![glob!("ts/html-filter/**")]), ] { let library_with_ts = format!("ts:{library}"); - let folder = library_with_ts.replace(':', "/"); build.add_dependency(&library_with_ts, inputs.clone()); - eslint(build, library, &folder, inputs.clone())?; - - if matches!(library, "domlib" | "html-filter") { - build.add_action( - &format!("check:jest:{library}"), - jest_test(&folder, inputs, true), - )?; - } } - eslint(build, "scripts", "ts/tools", inputs![glob!("ts/tools/*")])?; - - Ok(()) -} - -pub fn eslint(build: &mut Build, name: &str, folder: &str, deps: BuildInput) -> Result<()> { - let eslint_rc = inputs![".eslintrc.js"]; - build.add_action( - format!("check:eslint:{name}"), - Eslint { - folder, - inputs: deps.clone(), - eslint_rc: eslint_rc.clone(), - fix: false, - }, - )?; - build.add_action( - format!("fix:eslint:{name}"), - Eslint { - folder, - inputs: deps, - eslint_rc, - fix: true, - }, - )?; Ok(()) } fn build_and_check_pages(build: &mut Build) -> Result<()> { - build.add_dependency("ts:tag-editor", inputs![glob!["ts/tag-editor/**"]]); - let mut build_page = |name: &str, html: bool, deps: BuildInput| -> Result<()> { let group = format!("ts:{name}"); let deps = inputs![deps, glob!(format!("ts/{name}/**"))]; @@ -229,99 +193,9 @@ fn build_and_check_pages(build: &mut Build) -> Result<()> { }, )?; build.add_dependency("ts:pages", inputs![format!(":{group}")]); - build.add_action( - format!("check:svelte:{name}"), - SvelteCheck { - tsconfig: inputs![format!("ts/{name}/tsconfig.json")], - inputs: deps.clone(), - }, - )?; - let folder = format!("ts/{name}"); - eslint(build, name, &folder, deps.clone())?; - if matches!(name, "deck-options" | "change-notetype") { - build.add_action( - &format!("check:jest:{name}"), - jest_test(&folder, deps, false), - )?; - } Ok(()) }; - build_page( - "congrats", - true, - inputs![ - // - ":ts:lib", - ":ts:components", - ":sass", - ], - )?; - build_page( - "deck-options", - true, - inputs![ - // - ":ts:lib", - ":ts:components", - ":ts:sveltelib", - ":sass", - ], - )?; - build_page( - "graphs", - true, - inputs![ - // - ":ts:lib", - ":ts:components", - ":sass", - ], - )?; - build_page( - "card-info", - true, - inputs![ - // - ":ts:lib", - ":ts:components", - ":sass", - ], - )?; - build_page( - "change-notetype", - true, - inputs![ - // - ":ts:lib", - ":ts:components", - ":ts:sveltelib", - ":sass", - ], - )?; - build_page( - "import-csv", - true, - inputs![ - // - ":ts:lib", - ":ts:components", - ":ts:sveltelib", - ":ts:tag-editor", - ":sass" - ], - )?; - build_page( - "import-anki-package", - true, - inputs![ - // - ":ts:lib", - ":ts:components", - ":ts:sveltelib", - ":sass" - ], - )?; // we use the generated .css file separately build_page( "editable", @@ -332,30 +206,8 @@ fn build_and_check_pages(build: &mut Build) -> Result<()> { ":ts:components", ":ts:domlib", ":ts:sveltelib", - ":sass" - ], - )?; - build_page( - "image-occlusion", - true, - inputs![ - // - ":ts:lib", - ":ts:components", - ":ts:sveltelib", - ":ts:tag-editor", - ":sass" - ], - )?; - build_page( - "import-page", - true, - inputs![ - // - ":ts:lib", - ":ts:components", - ":ts:sveltelib", - ":sass" + ":sass", + ":sveltekit", ], )?; @@ -369,11 +221,10 @@ fn build_and_check_editor(build: &mut Build) -> Result<()> { ":ts:components", ":ts:domlib", ":ts:sveltelib", - ":ts:tag-editor", ":ts:html-filter", - ":ts:image-occlusion", ":sass", - glob!("ts/{editable,editor}/**") + ":sveltekit", + glob!("ts/{editable,editor,routes/image-occlusion}/**") ]; build.add_action( @@ -387,20 +238,15 @@ fn build_and_check_editor(build: &mut Build) -> Result<()> { }, )?; - let group = "ts/editor"; - build.add_action( - "check:svelte:editor", - SvelteCheck { - tsconfig: inputs![format!("{group}/tsconfig.json")], - inputs: editor_deps.clone(), - }, - )?; - eslint(build, "editor", group, editor_deps)?; Ok(()) } fn build_and_check_reviewer(build: &mut Build) -> Result<()> { - let reviewer_deps = inputs![":ts:lib", glob!("ts/{reviewer,image-occlusion}/**"),]; + let reviewer_deps = inputs![ + ":ts:lib", + glob!("ts/{reviewer,image-occlusion}/**"), + ":sveltekit" + ]; build.add_action( "ts:reviewer:reviewer.js", EsbuildScript { @@ -416,7 +262,7 @@ fn build_and_check_reviewer(build: &mut Build) -> Result<()> { CompileSass { input: inputs!["ts/reviewer/reviewer.scss"], output: "ts/reviewer/reviewer.css", - deps: inputs![":sass", "ts/image-occlusion/review.scss"], + deps: inputs![":sass", "ts/routes/image-occlusion/review.scss"], load_paths: vec!["."], }, )?; @@ -435,30 +281,18 @@ fn build_and_check_reviewer(build: &mut Build) -> Result<()> { CompileSass { input: inputs!["ts/reviewer/reviewer_extras.scss"], output: "ts/reviewer/reviewer_extras.css", - deps: inputs!["ts/image-occlusion/review.scss"], + deps: inputs!["ts/routes/image-occlusion/review.scss"], load_paths: vec!["."], }, )?; - build.add_action( - "check:typescript:reviewer", - TypescriptCheck { - tsconfig: inputs!["ts/reviewer/tsconfig.json"], - inputs: reviewer_deps.clone(), - }, - )?; - eslint(build, "reviewer", "ts/reviewer", reviewer_deps)?; - build.add_action( - "check:jest:reviewer", - jest_test("ts/reviewer", inputs![":ts:reviewer"], false), - )?; Ok(()) } fn check_web(build: &mut Build) -> Result<()> { let dprint_files = inputs![glob![ "**/*.{ts,mjs,js,md,json,toml,svelte,scss}", - "target/**" + "{target,ts/.svelte-kit}/**" ]]; build.add_action( "check:format:dprint", @@ -474,6 +308,52 @@ fn check_web(build: &mut Build) -> Result<()> { check_only: false, }, )?; + build.add_action( + "check:vitest", + ViteTest { + deps: inputs![ + "yarn", + ":node_modules", + ":ts:generated", + glob!["ts/{svelte.config.js,vite.config.ts,tsconfig.json}"], + glob!["ts/{lib,deck-options,html-filter,domlib,reviewer,change-notetype}/**/*"], + ], + }, + )?; + build.add_action( + "check:svelte", + SvelteCheck { + tsconfig: inputs!["ts/tsconfig.json"], + inputs: inputs![ + "yarn", + ":node_modules", + ":ts:generated", + glob!["ts/**/*", "ts/.svelte-kit/**"], + ], + }, + )?; + let eslint_rc = inputs![".eslintrc.cjs"]; + for folder in ["ts", "qt/aqt/data/web/js"] { + let inputs = inputs![glob![format!("{folder}/**"), "ts/.svelte-kit/**"]]; + build.add_action( + "check:eslint", + Eslint { + folder, + inputs: inputs.clone(), + eslint_rc: eslint_rc.clone(), + fix: false, + }, + )?; + build.add_action( + "fix:eslint", + Eslint { + folder, + inputs, + eslint_rc: eslint_rc.clone(), + fix: true, + }, + )?; + } Ok(()) } @@ -497,7 +377,7 @@ pub fn check_sql(build: &mut Build) -> Result<()> { } fn build_and_check_mathjax(build: &mut Build) -> Result<()> { - let files = inputs![glob!["ts/mathjax/*"]]; + let files = inputs![glob!["ts/mathjax/*"], ":sveltekit"]; build.add_action( "ts:mathjax", EsbuildScript { @@ -507,14 +387,6 @@ fn build_and_check_mathjax(build: &mut Build) -> Result<()> { output_stem: "ts/mathjax/mathjax", extra_exts: &[], }, - )?; - eslint(build, "mathjax", "ts/mathjax", files.clone())?; - build.add_action( - "check:typescript:mathjax", - TypescriptCheck { - tsconfig: "ts/mathjax/tsconfig.json".into(), - inputs: files, - }, ) } @@ -566,14 +438,14 @@ pub fn copy_mathjax() -> impl BuildAction { } fn build_sass(build: &mut Build) -> Result<()> { - build.add_dependency("sass", inputs![glob!("sass/**")]); + build.add_dependency("sass", inputs![glob!("ts/lib/sass/**")]); build.add_action( "css:_root-vars", CompileSass { - input: inputs!["sass/_root-vars.scss"], - output: "sass/_root-vars.css", - deps: inputs![glob!["sass/*"]], + input: inputs!["ts/lib/sass/_root-vars.scss"], + output: "ts/lib/sass/_root-vars.css", + deps: inputs![glob!["ts/lib/sass/*"]], load_paths: vec![], }, )?; diff --git a/build/ninja_gen/src/node.rs b/build/ninja_gen/src/node.rs index 111867783..c18a16b9c 100644 --- a/build/ninja_gen/src/node.rs +++ b/build/ninja_gen/src/node.rs @@ -19,24 +19,24 @@ use crate::input::BuildInput; pub fn node_archive(platform: Platform) -> OnlineArchive { match platform { Platform::LinuxX64 => OnlineArchive { - url: "https://nodejs.org/dist/v18.12.1/node-v18.12.1-linux-x64.tar.xz", - sha256: "4481a34bf32ddb9a9ff9540338539401320e8c3628af39929b4211ea3552a19e", + url: "https://nodejs.org/dist/v20.11.0/node-v20.11.0-linux-x64.tar.xz", + sha256: "822780369d0ea309e7d218e41debbd1a03f8cdf354ebf8a4420e89f39cc2e612", }, Platform::LinuxArm => OnlineArchive { - url: "https://nodejs.org/dist/v18.12.1/node-v18.12.1-linux-arm64.tar.xz", - sha256: "3904869935b7ecc51130b4b86486d2356539a174d11c9181180cab649f32cd2a", + url: "https://nodejs.org/dist/v20.11.0/node-v20.11.0-linux-arm64.tar.xz", + sha256: "f943abd348d2b8ff8754ca912c118a20301eb6a0014cc4cdea86cff021fde8e6", }, Platform::MacX64 => OnlineArchive { - url: "https://nodejs.org/dist/v18.12.1/node-v18.12.1-darwin-x64.tar.xz", - sha256: "6c88d462550a024661e74e9377371d7e023321a652eafb3d14d58a866e6ac002", + url: "https://nodejs.org/dist/v20.11.0/node-v20.11.0-darwin-x64.tar.xz", + sha256: "d4b4ab81ebf1f7aab09714f834992f27270ad0079600da00c8110f8950ca6c5a", }, Platform::MacArm => OnlineArchive { - url: "https://nodejs.org/dist/v18.12.1/node-v18.12.1-darwin-arm64.tar.xz", - sha256: "17f2e25d207d36d6b0964845062160d9ed16207c08d09af33b9a2fd046c5896f", + url: "https://nodejs.org/dist/v20.11.0/node-v20.11.0-darwin-arm64.tar.xz", + sha256: "f18a7438723d48417f5e9be211a2f3c0520ffbf8e02703469e5153137ca0f328", }, Platform::WindowsX64 => OnlineArchive { - url: "https://nodejs.org/dist/v18.12.1/node-v18.12.1-win-x64.zip", - sha256: "5478a5a2dce2803ae22327a9f8ae8494c1dec4a4beca5bbf897027380aecf4c7", + url: "https://nodejs.org/dist/v20.11.0/node-v20.11.0-win-x64.zip", + sha256: "893115cd92ad27bf178802f15247115e93c0ef0c753b93dca96439240d64feb5", }, } } @@ -214,9 +214,11 @@ pub struct SvelteCheck { impl BuildAction for SvelteCheck { fn command(&self) -> &str { - "$svelte-check --tsconfig $tsconfig $ - --fail-on-warnings --threshold warning $ - --compiler-warnings $compiler_warnings" + if cfg!(windows) { + "cmd /c yarn svelte-check:once" + } else { + "./yarn svelte-check:once" + } } fn files(&mut self, build: &mut impl build::FilesHandle) { @@ -290,30 +292,23 @@ impl BuildAction for Eslint<'_> { } } -pub struct JestTest<'a> { - pub folder: &'a str, +pub struct ViteTest { pub deps: BuildInput, - pub jest_rc: BuildInput, - pub jsdom: bool, } -impl BuildAction for JestTest<'_> { +impl BuildAction for ViteTest { fn command(&self) -> &str { - "$jest --config $config $env $folder" + if cfg!(windows) { + "cmd /c yarn vitest:once" + } else { + "./yarn vitest:once" + } } fn files(&mut self, build: &mut impl build::FilesHandle) { - build.add_inputs("jest", inputs![":node_modules:jest"]); + build.add_inputs("vitest", inputs![":node_modules:vitest"]); build.add_inputs("", &self.deps); - build.add_inputs("config", &self.jest_rc); - build.add_variable("env", if self.jsdom { "--env=jsdom" } else { "" }); - build.add_variable("folder", self.folder); - let hash = simple_hash(self.folder); - build.add_output_stamp(format!("tests/jest.{hash}")); - } - - fn hide_last_line(&self) -> bool { - true + build.add_output_stamp("tests/vitest"); } } @@ -451,3 +446,32 @@ impl BuildAction for CompileTypescript<'_> { build.add_outputs("", output_files); } } + +/// The output_folder will be declared as a build output, but each file inside +/// it is not declared, as the files will vary. +pub struct SveltekitBuild { + pub output_folder: BuildInput, + pub deps: BuildInput, +} + +impl BuildAction for SveltekitBuild { + fn command(&self) -> &str { + if std::env::var("HMR").is_err() { + if cfg!(windows) { + "cmd /c yarn build" + } else { + "./yarn build" + } + } else { + "echo" + } + } + + fn files(&mut self, build: &mut impl build::FilesHandle) { + build.add_inputs("node_modules", inputs![":node_modules"]); + build.add_inputs("", &self.deps); + build.add_inputs("", inputs!["yarn.lock"]); + build.add_output_stamp("sveltekit.marker"); + build.add_outputs_ext("folder", vec!["sveltekit"], true); + } +} diff --git a/build/runner/src/build.rs b/build/runner/src/build.rs index 02bf58d05..3b36277b3 100644 --- a/build/runner/src/build.rs +++ b/build/runner/src/build.rs @@ -69,11 +69,7 @@ pub fn run_build(args: BuildArgs) { // commands will not show colors by default, as we do not provide a tty .env("FORCE_COLOR", "1") .env("MYPY_FORCE_COLOR", "1") - .env("TERM", std::env::var("TERM").unwrap_or_default()) - // Prevents 'Warn: You must provide the URL of lib/mappings.wasm'. - // Updating svelte-check or its deps will likely remove the need for it. - .env("NODE_OPTIONS", "--no-experimental-fetch"); - + .env("TERM", std::env::var("TERM").unwrap_or_default()); if env::var("NINJA_STATUS").is_err() { command.env("NINJA_STATUS", "[%f/%t; %r active; %es] "); } diff --git a/ninja b/ninja index b96df5d1c..5feee474b 100755 --- a/ninja +++ b/ninja @@ -8,7 +8,7 @@ else out="$BUILD_ROOT" fi export CARGO_TARGET_DIR=$out/rust -export RECONFIGURE_KEY="${MAC_X86};${SOURCEMAP}" +export RECONFIGURE_KEY="${MAC_X86};${SOURCEMAP};${HMR}" if [ "$SKIP_RUNNER_BUILD" = "1" ]; then echo "Runner not rebuilt." diff --git a/package.json b/package.json index be7be4188..ff3daec2f 100644 --- a/package.json +++ b/package.json @@ -5,14 +5,26 @@ "author": "Ankitects Pty Ltd and contributors", "license": "AGPL-3.0-or-later", "description": "Anki JS support files", + "scripts": { + "dev": "cd ts && vite dev", + "build": "cd ts && vite build", + "preview": "cd ts && vite preview", + "svelte-check:once": "cd ts && svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings --threshold warning --compiler-warnings a11y-click-events-have-key-events:ignore,a11y-no-noninteractive-tabindex:ignore,a11y-no-static-element-interactions:ignore", + "svelte-check": "cd ts && svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch --compiler-warnings a11y-click-events-have-key-events:ignore,a11y-no-noninteractive-tabindex:ignore,a11y-no-static-element-interactions:ignore", + "vitest:once": "cd ts && vitest run", + "vitest": "cd ts && vitest" + }, "devDependencies": { - "@bufbuild/protoc-gen-es": "^1.2.1", + "@bufbuild/protoc-gen-es": "^1.8.0", "@sqltools/formatter": "^1.2.2", + "@sveltejs/adapter-static": "^3.0.0", + "@sveltejs/kit": "^2.4.1", + "@sveltejs/vite-plugin-svelte": "^3.0.0", "@types/bootstrap": "^5.0.12", "@types/codemirror": "^5.60.0", "@types/d3": "^7.0.0", "@types/diff": "^5.0.0", - "@types/jest": "^27.0.2", + "@types/fabric": "^5.3.7", "@types/jquery": "^3.5.0", "@types/jqueryui": "^1.12.13", "@types/lodash-es": "^4.17.4", @@ -32,8 +44,6 @@ "eslint-plugin-import": "^2.25.4", "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-svelte": "^2", - "jest-cli": "^28.0.0-alpha.5", - "jest-environment-jsdom": "^28.0.0-alpha.5", "license-checker-rseidelsohn": "^4.2.6", "prettier": "^2.4.1", "prettier-plugin-svelte": "^2.10.1", @@ -43,7 +53,9 @@ "svelte-preprocess-esbuild": "^3.0.1", "tslib": "^2.0.3", "tsx": "^3.12.0", - "typescript": "^5.0.4" + "typescript": "^5.0.4", + "vite": "^5.0.12", + "vitest": "^1.2.1" }, "dependencies": { "@bufbuild/protobuf": "^1.2.1", @@ -74,5 +86,6 @@ "not < 1%", "Chrome 77", "iOS 14.5" - ] + ], + "type": "module" } diff --git a/pylib/anki/utils.py b/pylib/anki/utils.py index 5e74e702e..150a210fb 100644 --- a/pylib/anki/utils.py +++ b/pylib/anki/utils.py @@ -248,6 +248,7 @@ is_win = sys.platform.startswith("win32") # also covers *BSD is_lin = not is_mac and not is_win dev_mode = os.getenv("ANKIDEV", "") +hmr_mode = os.getenv("HMR", "") INVALID_FILENAME_CHARS = ':*?"<>|' diff --git a/qt/aqt/browser/card_info.py b/qt/aqt/browser/card_info.py index 0d5a7a423..3f82f4fdd 100644 --- a/qt/aqt/browser/card_info.py +++ b/qt/aqt/browser/card_info.py @@ -3,7 +3,6 @@ from __future__ import annotations -import json from typing import Callable import aqt @@ -55,7 +54,7 @@ class CardInfoDialog(QDialog): self.web = AnkiWebView(kind=AnkiWebViewKind.BROWSER_CARD_INFO) self.web.setVisible(False) - self.web.load_ts_page("card-info") + self.web.load_sveltekit_page(f"card-info/{card_id}") layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.web) @@ -64,17 +63,13 @@ class CardInfoDialog(QDialog): layout.addWidget(buttons) qconnect(buttons.rejected, self.reject) self.setLayout(layout) - self.web.eval("anki.cardInfoPromise = anki.setupCardInfo(document.body);") - self.update_card(card_id) def update_card(self, card_id: CardId | None) -> None: try: self.mw.col.get_card(card_id) except NotFoundError: card_id = None - self.web.eval( - f"anki.cardInfoPromise.then((c) => c.updateStats({json.dumps(card_id)}));" - ) + self.web.eval(f"window.location.href = '/card-info/{card_id}';") def reject(self) -> None: if self._on_close: diff --git a/qt/aqt/changenotetype.py b/qt/aqt/changenotetype.py index 44540c1ba..3f637eabf 100644 --- a/qt/aqt/changenotetype.py +++ b/qt/aqt/changenotetype.py @@ -53,15 +53,12 @@ class ChangeNotetypeDialog(QDialog): self.web = AnkiWebView(kind=AnkiWebViewKind.CHANGE_NOTETYPE) self.web.setVisible(False) - self.web.load_ts_page("change-notetype") + self.web.load_sveltekit_page(f"change-notetype/{notetype_id}") layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.web) self.setLayout(layout) - self.web.eval( - f"""anki.setupChangeNotetypePage({notetype_id}, {notetype_id});""" - ) self.setWindowTitle(tr.browsing_change_notetype()) def reject(self) -> None: diff --git a/qt/aqt/data/web/css/deckbrowser.scss b/qt/aqt/data/web/css/deckbrowser.scss index 0c094671c..280b8858a 100644 --- a/qt/aqt/data/web/css/deckbrowser.scss +++ b/qt/aqt/data/web/css/deckbrowser.scss @@ -1,9 +1,9 @@ /* Copyright: Ankitects Pty Ltd and contributors * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */ -@use "sass/root-vars"; -@use "sass/vars" as *; -@use "sass/card-counts"; -@use "sass/elevation" as *; +@use "../../../../../ts/lib/sass/root-vars"; +@use "../../../../../ts/lib/sass/vars" as *; +@use "../../../../../ts/lib/sass/card-counts"; +@use "../../../../../ts/lib/sass/elevation" as *; table { padding: 1rem; diff --git a/qt/aqt/data/web/css/overview.scss b/qt/aqt/data/web/css/overview.scss index 75dc15e6a..cad62fa93 100644 --- a/qt/aqt/data/web/css/overview.scss +++ b/qt/aqt/data/web/css/overview.scss @@ -1,10 +1,10 @@ /* Copyright: Ankitects Pty Ltd and contributors * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */ -@use "sass/root-vars"; -@use "sass/vars" as *; -@use "sass/card-counts"; -@use "sass/button-mixins" as button; +@use "../../../../../ts/lib/sass/root-vars"; +@use "../../../../../ts/lib/sass/vars" as *; +@use "../../../../../ts/lib/sass/card-counts"; +@use "../../../../../ts/lib/sass/button-mixins" as button; .smallLink { font-size: 10px; diff --git a/qt/aqt/data/web/css/reviewer-bottom.scss b/qt/aqt/data/web/css/reviewer-bottom.scss index 2c1eb0dad..59098a5fb 100644 --- a/qt/aqt/data/web/css/reviewer-bottom.scss +++ b/qt/aqt/data/web/css/reviewer-bottom.scss @@ -1,9 +1,9 @@ /* Copyright: Ankitects Pty Ltd and contributors * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */ -@use "sass/root-vars"; -@use "sass/vars" as *; -@use "sass/card-counts"; +@use "../../../../../ts/lib/sass/root-vars"; +@use "../../../../../ts/lib/sass/vars" as *; +@use "../../../../../ts/lib/sass/card-counts"; :root { --focus-color: #{palette-of(border-focus)}; diff --git a/qt/aqt/data/web/css/toolbar.scss b/qt/aqt/data/web/css/toolbar.scss index d73bd72c2..b46179e11 100644 --- a/qt/aqt/data/web/css/toolbar.scss +++ b/qt/aqt/data/web/css/toolbar.scss @@ -1,10 +1,10 @@ /* Copyright: Ankitects Pty Ltd and contributors * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */ -@use "sass/root-vars"; -@use "sass/vars" as *; -@use "sass/elevation" as *; -@use "sass/button-mixins" as button; +@use "../../../../../ts/lib/sass/root-vars"; +@use "../../../../../ts/lib/sass/vars" as *; +@use "../../../../../ts/lib/sass/elevation" as *; +@use "../../../../../ts/lib/sass/button-mixins" as button; .header { display: grid; diff --git a/qt/aqt/data/web/css/webview.scss b/qt/aqt/data/web/css/webview.scss index 5e1a0e2b4..f927e9f03 100644 --- a/qt/aqt/data/web/css/webview.scss +++ b/qt/aqt/data/web/css/webview.scss @@ -1,9 +1,9 @@ /* Copyright: Ankitects Pty Ltd and contributors * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */ -@use "sass/root-vars"; -@use "sass/scrollbar"; -@use "sass/buttons"; +@use "../../../../../ts/lib/sass/root-vars"; +@use "../../../../../ts/lib/sass/scrollbar"; +@use "../../../../../ts/lib/sass/buttons"; * { // border-box would be better, but we need to diff --git a/qt/aqt/data/web/js/tsconfig.json b/qt/aqt/data/web/js/tsconfig.json index 7b417363a..745bba127 100644 --- a/qt/aqt/data/web/js/tsconfig.json +++ b/qt/aqt/data/web/js/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../../../../ts/tsconfig.json", + "extends": "../../../../../ts/tsconfig_legacy.json", "include": ["*.ts"], "references": [], "compilerOptions": { diff --git a/qt/aqt/deckoptions.py b/qt/aqt/deckoptions.py index e0805367d..f53c047ed 100644 --- a/qt/aqt/deckoptions.py +++ b/qt/aqt/deckoptions.py @@ -43,17 +43,13 @@ class DeckOptionsDialog(QDialog): addCloseShortcut(self) self.web = AnkiWebView(kind=AnkiWebViewKind.DECK_OPTIONS) - self.web.load_ts_page("deck-options") + self.web.load_sveltekit_page(f"deck-options/{self._deck['id']}") layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.web) self.setLayout(layout) self.show() self.web.hide_while_preserving_layout() - - self.web.eval( - f"""const $deckOptions = anki.setupDeckOptions({self._deck["id"]});""" - ) self.setWindowTitle( without_unicode_isolation(tr.actions_options_for(val=self._deck["name"])) ) diff --git a/qt/aqt/import_export/import_dialog.py b/qt/aqt/import_export/import_dialog.py index 876e692e6..52aaa5683 100644 --- a/qt/aqt/import_export/import_dialog.py +++ b/qt/aqt/import_export/import_dialog.py @@ -21,7 +21,6 @@ class ImportArgs: title = "importLog" kind = AnkiWebViewKind.IMPORT_LOG ts_page = "import-page" - setup_function_name = "setupImportPage" def args_json(self) -> str: return json.dumps(self.path) @@ -32,26 +31,16 @@ class JsonFileArgs(ImportArgs): return json.dumps(dict(type="json_file", path=self.path)) -@dataclass -class JsonStringArgs(ImportArgs): - json: str - - def args_json(self) -> str: - return json.dumps(dict(type="json_string", path=self.path, json=self.json)) - - class CsvArgs(ImportArgs): title = "csv import" kind = AnkiWebViewKind.IMPORT_CSV ts_page = "import-csv" - setup_function_name = "setupImportCsvPage" class AnkiPackageArgs(ImportArgs): title = "anki package import" kind = AnkiWebViewKind.IMPORT_ANKI_PACKAGE ts_page = "import-anki-package" - setup_function_name = "setupImportAnkiPackagePage" class ImportDialog(QDialog): @@ -76,17 +65,13 @@ class ImportDialog(QDialog): self.web = AnkiWebView(kind=self.args.kind) self.web.setVisible(False) - self.web.load_ts_page(self.args.ts_page) + self.web.load_sveltekit_page(f"{self.args.ts_page}/{self.args.path}") layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.web) self.setLayout(layout) restoreGeom(self, self.args.title, default_size=(800, 800)) - self.web.evalWithCallback( - f"anki.{self.args.setup_function_name}({self.args.args_json()});", - lambda _: self.web.setFocus(), - ) self.setWindowTitle(tr.decks_import_file()) def reject(self) -> None: diff --git a/qt/aqt/import_export/importing.py b/qt/aqt/import_export/importing.py index f9929fbce..0719701da 100644 --- a/qt/aqt/import_export/importing.py +++ b/qt/aqt/import_export/importing.py @@ -13,12 +13,12 @@ from anki.collection import Collection, Progress from anki.errors import Interrupted from anki.foreign_data import mnemosyne from anki.lang import without_unicode_isolation +from anki.utils import tmpdir from aqt.import_export.import_dialog import ( AnkiPackageArgs, CsvArgs, ImportDialog, JsonFileArgs, - JsonStringArgs, ) from aqt.operations import QueryOp from aqt.progress import ProgressUpdate @@ -95,10 +95,16 @@ class MnemosyneImporter(Importer): @staticmethod def do_import(mw: aqt.main.AnkiQt, path: str) -> None: + def on_success(json: str) -> None: + json_path = os.path.join(tmpdir(), path) + with open(json_path, "wb") as file: + file.write(json.encode("utf8")) + ImportDialog(mw, JsonFileArgs(path=json_path)) + QueryOp( parent=mw, op=lambda col: mnemosyne.serialize(path, col.decks.current()["id"]), - success=lambda json: ImportDialog(mw, JsonStringArgs(path=path, json=json)), + success=on_success, ).with_progress().run_in_background() diff --git a/qt/aqt/main.py b/qt/aqt/main.py index 85475276d..08f74d447 100644 --- a/qt/aqt/main.py +++ b/qt/aqt/main.py @@ -109,6 +109,7 @@ class MainWebView(AnkiWebView): self.setFocusPolicy(Qt.FocusPolicy.WheelFocus) self.setMinimumWidth(400) self.setAcceptDrops(True) + print("todo: windows paths in import screen") # Importing files via drag & drop ########################################################################## diff --git a/qt/aqt/mediasrv.py b/qt/aqt/mediasrv.py index b1484f556..51b72e960 100644 --- a/qt/aqt/mediasrv.py +++ b/qt/aqt/mediasrv.py @@ -166,7 +166,7 @@ def _mime_for_path(path: str) -> str: if path.endswith(".css"): # some users may have invalid mime type in the Windows registry return "text/css" - elif path.endswith(".js"): + elif path.endswith(".js") or path.endswith(".mjs"): return "application/javascript" else: # autodetect @@ -255,11 +255,18 @@ def _builtin_data(path: str) -> bytes: def _handle_builtin_file_request(request: BundledFileRequest) -> Response: path = request.path + # do we need to serve the fallback page? + immutable = "immutable" in path + if path.startswith("sveltekit/") and not immutable: + path = "sveltekit/index.html" mimetype = _mime_for_path(path) data_path = f"data/web/{path}" try: data = _builtin_data(data_path) - return Response(data, mimetype=mimetype) + response = Response(data, mimetype=mimetype) + if immutable: + response.headers["Cache-Control"] = "max-age=31536000" + return response except FileNotFoundError: if dev_mode: print(f"404: {data_path}") @@ -316,10 +323,29 @@ def handle_request(pathin: str) -> Response: ) +def is_sveltekit_page(path: str) -> bool: + page_name = path.split("/")[0] + return page_name in [ + "graphs", + "congrats", + "card-info", + "change-notetype", + "deck-options", + "import-anki-package", + "import-csv", + "import-page", + ] + + def _extract_internal_request( path: str, ) -> BundledFileRequest | DynamicRequest | NotFound | None: "Catch /_anki references and rewrite them to web export folder." + if is_sveltekit_page(path): + path = f"_anki/sveltekit/_app/{path}" + if path.startswith("_app/"): + path = path.replace("_app", "_anki/sveltekit/_app") + prefix = "_anki/" if not path.startswith(prefix): return None @@ -662,6 +688,7 @@ def _check_dynamic_request_permissions(): context == PageContext.NON_LEGACY_PAGE or context == PageContext.EDITOR or context == PageContext.ADDON_PAGE + or os.environ.get("ANKI_API_PORT") ): pass elif context == PageContext.REVIEWER and request.path in ( @@ -698,7 +725,7 @@ def _extract_page_context() -> PageContext: from urllib.parse import parse_qs, urlparse referer = urlparse(request.headers.get("Referer", "")) - if referer.path.startswith("/_anki/pages/"): + if referer.path.startswith("/_anki/pages/") or is_sveltekit_page(referer.path[1:]): return PageContext.NON_LEGACY_PAGE elif referer.path == "/_anki/legacyPageData": query_params = parse_qs(referer.query) diff --git a/qt/aqt/overview.py b/qt/aqt/overview.py index 44e1c2e67..d5ca1945e 100644 --- a/qt/aqt/overview.py +++ b/qt/aqt/overview.py @@ -204,7 +204,7 @@ class Overview: ) def _show_finished_screen(self) -> None: - self.web.load_ts_page("congrats") + self.web.load_sveltekit_page("congrats") def _desc(self, deck: dict[str, Any]) -> str: if deck["dyn"]: diff --git a/qt/aqt/stats.py b/qt/aqt/stats.py index 23658b5c0..388f2d89e 100644 --- a/qt/aqt/stats.py +++ b/qt/aqt/stats.py @@ -134,7 +134,7 @@ class NewDeckStats(QDialog): return False def refresh(self) -> None: - self.form.web.load_ts_page("graphs") + self.form.web.load_sveltekit_page("graphs") class DeckStats(QDialog): diff --git a/qt/aqt/webview.py b/qt/aqt/webview.py index f58f1d5e5..0956426d0 100644 --- a/qt/aqt/webview.py +++ b/qt/aqt/webview.py @@ -14,7 +14,7 @@ import anki import anki.lang from anki._legacy import deprecated from anki.lang import is_rtl -from anki.utils import is_lin, is_mac, is_win +from anki.utils import hmr_mode, is_lin, is_mac, is_win from aqt import colors, gui_hooks from aqt.qt import * from aqt.theme import theme_manager @@ -129,10 +129,13 @@ class AnkiWebPage(QWebEnginePage): def acceptNavigationRequest( self, url: QUrl, navType: Any, isMainFrame: bool ) -> bool: + from aqt.mediasrv import is_sveltekit_page + if ( not self.open_links_externally or "_anki/pages" in url.path() or url.path() == "/_anki/legacyPageData" + or is_sveltekit_page(url.path()[1:]) ): return super().acceptNavigationRequest(url, navType, isMainFrame) @@ -758,6 +761,23 @@ html {{ {font} }} self.load_url(QUrl(f"{mw.serverURL()}_anki/pages/{name}.html{extra}")) self.add_dynamic_styling_and_props_then_show() + def load_sveltekit_page(self, path: str) -> None: + from aqt import mw + + self.set_open_links_externally(True) + if theme_manager.night_mode: + extra = "#night" + else: + extra = "" + + if hmr_mode: + server = "http://127.0.0.1:5173/" + else: + server = mw.serverURL() + + self.load_url(QUrl(f"{server}{path}{extra}")) + self.add_dynamic_styling_and_props_then_show() + def force_load_hack(self) -> None: """Force process to initialize. Must be done on Windows prior to changing current working directory.""" diff --git a/rslib/i18n/src/lib.rs b/rslib/i18n/src/lib.rs index a2c68c6bb..f8e483782 100644 --- a/rslib/i18n/src/lib.rs +++ b/rslib/i18n/src/lib.rs @@ -288,9 +288,16 @@ fn get_modules(langs: &[LanguageIdentifier], desired_modules: &[String]) -> Vec< let mut buf = String::new(); let lang_name = remapped_lang_name(&lang); if let Some(strings) = STRINGS.get(lang_name) { - for module_name in desired_modules { - if let Some(text) = strings.get(module_name.as_str()) { - buf.push_str(text); + if desired_modules.is_empty() { + // empty list, provide all modules + for value in strings.values() { + buf.push_str(value) + } + } else { + for module_name in desired_modules { + if let Some(text) = strings.get(module_name.as_str()) { + buf.push_str(text); + } } } } diff --git a/rslib/i18n/typescript.rs b/rslib/i18n/typescript.rs index a51b3b12d..0c2230338 100644 --- a/rslib/i18n/typescript.rs +++ b/rslib/i18n/typescript.rs @@ -16,41 +16,32 @@ use crate::extract::Variable; use crate::extract::VariableKind; pub fn write_ts_interface(modules: &[Module]) -> Result<()> { - let mut dts_out = header(); - let mut js_out = header(); - write_translate_method(&mut js_out); - dts_out.push_str("export declare const funcs: any;\n"); + let mut ts_out = header(); + write_imports(&mut ts_out); - render_module_map(modules, &mut dts_out, &mut js_out); - render_methods(modules, &mut dts_out, &mut js_out); + render_module_map(modules, &mut ts_out); + render_methods(modules, &mut ts_out); - if let Ok(path) = env::var("STRINGS_JS") { + if let Ok(path) = env::var("STRINGS_TS") { let path = PathBuf::from(path); create_dir_all(path.parent().unwrap())?; - write_file_if_changed(path, js_out)?; - } - if let Ok(path) = env::var("STRINGS_DTS") { - let path = PathBuf::from(path); - create_dir_all(path.parent().unwrap())?; - write_file_if_changed(path, dts_out)?; + write_file_if_changed(path, ts_out)?; } Ok(()) } -fn render_module_map(modules: &[Module], dts_out: &mut String, js_out: &mut String) { - dts_out.push_str("export declare enum ModuleName {\n"); - js_out.push_str("export const ModuleName = {};\n"); +fn render_module_map(modules: &[Module], ts_out: &mut String) { + ts_out.push_str("export enum ModuleName {\n"); for module in modules { let name = &module.name; let upper = name.to_upper_case(); - writeln!(dts_out, r#" {upper} = "{name}","#).unwrap(); - writeln!(js_out, r#"ModuleName["{upper}"] = "{name}";"#).unwrap(); + writeln!(ts_out, r#" {upper} = "{name}","#).unwrap(); } - dts_out.push('}'); + ts_out.push('}'); } -fn render_methods(modules: &[Module], dts_out: &mut String, js_out: &mut String) { +fn render_methods(modules: &[Module], ts_out: &mut String) { for module in modules { for translation in &module.translations { let text = &translation.text; @@ -59,20 +50,14 @@ fn render_methods(modules: &[Module], dts_out: &mut String, js_out: &mut String) let arg_types = get_arg_types(&translation.variables); let args = get_args(&translation.variables); let maybe_args = if translation.variables.is_empty() { - "" + "".to_string() } else { - "args" + arg_types }; writeln!( - dts_out, - " -/** {text} */ -export declare function {func_name}({arg_types}): string;", - ) - .unwrap(); - writeln!( - js_out, + ts_out, r#" +/** {text} */ export function {func_name}({maybe_args}) {{ return translate("{key}", {args}) }}"#, @@ -101,23 +86,15 @@ fn get_args(variables: &[Variable]) -> String { } fn typescript_arg_name(name: &str) -> String { - let name = name.replace('-', "_").to_camel_case(); - if name == "new" { - "new_".into() - } else { - name - } + name.replace('-', "_").to_camel_case() } -fn write_translate_method(buf: &mut String) { +fn write_imports(buf: &mut String) { buf.push_str( " -// tslib is responsible for injecting getMessage helper in -export const funcs = {}; - -function translate(key, args = {}) { - return funcs.getMessage(key, args) ?? `missing key: ${key}`; -} +import { translate } from './ftl-helpers'; +export { firstLanguage, setBundles } from './ftl-helpers'; +export { FluentBundle, FluentResource } from '@fluent/bundle'; ", ); } diff --git a/rslib/linkchecker/tests/links.rs b/rslib/linkchecker/tests/links.rs index dc3aaee17..04482c99a 100644 --- a/rslib/linkchecker/tests/links.rs +++ b/rslib/linkchecker/tests/links.rs @@ -74,7 +74,7 @@ fn ts_help_pages() -> impl Iterator { static ref QUOTED_URL: Regex = Regex::new("\"(http.+)\"").unwrap(); } QUOTED_URL - .captures_iter(include_str!("../../../ts/lib/help-page.ts")) + .captures_iter(include_str!("../../../ts/lib/tslib/help-page.ts")) .map(|caps| caps.get(1).unwrap().as_str()) } diff --git a/rslib/proto/typescript.rs b/rslib/proto/typescript.rs index 52cb0ded8..4e941a0ca 100644 --- a/rslib/proto/typescript.rs +++ b/rslib/proto/typescript.rs @@ -14,11 +14,10 @@ use inflections::Inflect; use itertools::Itertools; pub(crate) fn write_ts_interface(services: &[BackendService]) -> Result<()> { - let root = Path::new("../../out/ts/lib"); + let root = Path::new("../../out/ts/lib/generated"); create_dir_all(root)?; - let mut dts_out = String::new(); - let mut js_out = String::new(); + let mut ts_out = String::new(); let mut referenced_packages = HashSet::new(); for service in services { @@ -30,30 +29,26 @@ pub(crate) fn write_ts_interface(services: &[BackendService]) -> Result<()> { let method = MethodDetails::from_method(method); record_referenced_type(&mut referenced_packages, &method.input_type); record_referenced_type(&mut referenced_packages, &method.output_type); - write_dts_method(&method, &mut dts_out); - write_js_method(&method, &mut js_out); + write_ts_method(&method, &mut ts_out); } } let imports = imports(referenced_packages); write_file_if_changed( - root.join("backend.d.ts"), - format!("{}{}{}", dts_header(), imports, dts_out), - )?; - write_file_if_changed( - root.join("backend.js"), - format!("{}{}{}", js_header(), imports, js_out), + root.join("backend.ts"), + format!("{}{}{}", ts_header(), imports, ts_out), )?; Ok(()) } -fn dts_header() -> String { +fn ts_header() -> String { r#"// Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; https://www.gnu.org/licenses/agpl.html import type { PlainMessage } from "@bufbuild/protobuf"; import type { PostProtoOptions } from "./post"; +import { postProto } from "./post"; "# .into() } @@ -72,7 +67,7 @@ fn imports(referenced_packages: HashSet) -> String { out } -fn write_dts_method( +fn write_ts_method( MethodDetails { method_name, input_type, @@ -84,38 +79,12 @@ fn write_dts_method( let comments = format_comments(comments); writeln!( out, - r#"{comments}export declare function {method_name}(input: PlainMessage<{input_type}>, options?: PostProtoOptions): Promise<{output_type}>;"# + r#"{comments}export async function {method_name}(input: PlainMessage<{input_type}>, options?: PostProtoOptions): Promise<{output_type}> {{ + return await postProto("{method_name}", new {input_type}(input), {output_type}, options); +}}"# ).unwrap() } -fn js_header() -> String { - r#"// Copyright: Ankitects Pty Ltd and contributors -// License: GNU AGPL, version 3 or later; https://www.gnu.org/licenses/agpl.html - -import { postProto } from "./post"; -"# - .into() -} - -fn write_js_method( - MethodDetails { - method_name, - input_type, - output_type, - .. - }: &MethodDetails, - out: &mut String, -) { - write!( - out, - r#"export async function {method_name}(input, options = {{}}) {{ - return await postProto("{method_name}", new {input_type}(input), {output_type}, options); -}} -"# - ) - .unwrap(); -} - fn format_comments(comments: &Option) -> String { comments .as_ref() diff --git a/tools/minilints/src/main.rs b/tools/minilints/src/main.rs index 9836d7483..eb1cfe4cd 100644 --- a/tools/minilints/src/main.rs +++ b/tools/minilints/src/main.rs @@ -42,6 +42,7 @@ const IGNORED_FOLDERS: &[&str] = &[ "./target", ".mypy_cache", "./extra", + "./ts/.svelte-kit", ]; fn main() -> Result<()> { @@ -90,7 +91,7 @@ impl LintContext { .into_iter() .map(Some) .collect(); - if exts.contains(&path.extension()) { + if exts.contains(&path.extension()) && !sveltekit_temp_file(path.as_str()) { self.check_copyright(path)?; self.check_triple_slash(path)?; } @@ -202,6 +203,11 @@ impl LintContext { } } +/// Annoyingly, sveltekit writes temp files into ts/ folder when it's running. +fn sveltekit_temp_file(path: &str) -> bool { + path.contains("vite.config.ts.timestamp") +} + fn check_cargo_deny() -> Result<()> { Command::run("cargo install cargo-deny@0.14.12")?; Command::run("cargo deny check")?; diff --git a/ts/bundle_svelte.mjs b/ts/bundle_svelte.mjs index c4f891b3e..56c21fb4f 100644 --- a/ts/bundle_svelte.mjs +++ b/ts/bundle_svelte.mjs @@ -31,7 +31,7 @@ if (!sourcemap) { define: { "process.browser": "true", }, - tsconfig: "ts/tsconfig.json", + tsconfig: "ts/tsconfig_legacy.json", }), sveltePreprocess({ typescript: false }), ]; @@ -52,7 +52,7 @@ build({ preserveSymlinks: true, sourcemap: sourcemap ? "inline" : false, plugins: [ - sassPlugin({ loadPaths: [".", "node_modules"] }), + sassPlugin({ loadPaths: ["node_modules"] }), sveltePlugin({ compilerOptions: { css: inlineCss ? "injected" : "external" }, preprocess: sveltePlugins, diff --git a/ts/card-info/CardInfo.svelte b/ts/card-info/CardInfo.svelte deleted file mode 100644 index e47f78cd7..000000000 --- a/ts/card-info/CardInfo.svelte +++ /dev/null @@ -1,59 +0,0 @@ - - - - - {#if stats} - - - - - {#if revlog} - - - - {/if} - {:else} - - {/if} - diff --git a/ts/card-info/card-info-base.scss b/ts/card-info/card-info-base.scss deleted file mode 100644 index 845433cc4..000000000 --- a/ts/card-info/card-info-base.scss +++ /dev/null @@ -1 +0,0 @@ -@import "sass/base"; diff --git a/ts/card-info/tsconfig.json b/ts/card-info/tsconfig.json deleted file mode 100644 index 156ec7f9f..000000000 --- a/ts/card-info/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["*"], - "references": [{ "path": "../lib" }] -} diff --git a/ts/change-notetype/icons.ts b/ts/change-notetype/icons.ts deleted file mode 100644 index b8175ff13..000000000 --- a/ts/change-notetype/icons.ts +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright: Ankitects Pty Ltd and contributors -// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html - -/// - -export { default as arrowLeftIcon } from "bootstrap-icons/icons/arrow-left.svg"; -export { default as arrowRightIcon } from "bootstrap-icons/icons/arrow-right.svg"; -export { default as minusIcon } from "bootstrap-icons/icons/dash-lg.svg"; -export { default as exclamationIcon } from "bootstrap-icons/icons/exclamation-circle.svg"; -export { default as plusIcon } from "bootstrap-icons/icons/plus-lg.svg"; diff --git a/ts/change-notetype/tsconfig.json b/ts/change-notetype/tsconfig.json deleted file mode 100644 index 276e90989..000000000 --- a/ts/change-notetype/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["*"], - "references": [ - { "path": "../lib" }, - { "path": "../sveltelib" }, - { "path": "../components" } - ], - "compilerOptions": { - "types": ["jest"] - } -} diff --git a/ts/components/icons.ts b/ts/components/icons.ts deleted file mode 100644 index ca1fe413d..000000000 --- a/ts/components/icons.ts +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright: Ankitects Pty Ltd and contributors -// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html - -/// - -export { default as hsplitIcon } from "@mdi/svg/svg/arrow-split-horizontal.svg"; -export { default as vsplitIcon } from "@mdi/svg/svg/arrow-split-vertical.svg"; -export { default as chevronDown } from "@mdi/svg/svg/chevron-down.svg"; -export { default as chevronLeft } from "@mdi/svg/svg/chevron-left.svg"; -export { default as chevronRight } from "@mdi/svg/svg/chevron-right.svg"; -export { default as chevronUp } from "@mdi/svg/svg/chevron-up.svg"; -export { default as horizontalHandle } from "@mdi/svg/svg/drag-horizontal.svg"; -export { default as verticalHandle } from "@mdi/svg/svg/drag-vertical.svg"; -export { default as infoCircle } from "@mdi/svg/svg/help-circle.svg"; -export { default as revertIcon } from "bootstrap-icons/icons/arrow-counterclockwise.svg"; diff --git a/ts/components/tsconfig.json b/ts/components/tsconfig.json deleted file mode 100644 index 6ef6ea47c..000000000 --- a/ts/components/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["*"], - "references": [{ "path": "../lib" }, { "path": "../sveltelib" }] -} diff --git a/ts/congrats/tsconfig.json b/ts/congrats/tsconfig.json deleted file mode 100644 index cbea14fce..000000000 --- a/ts/congrats/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["*"], - "references": [{ "path": "../lib" }], - "compilerOptions": { - "types": ["node"] - } -} diff --git a/ts/deck-options/icons.ts b/ts/deck-options/icons.ts deleted file mode 100644 index 99a6e57b6..000000000 --- a/ts/deck-options/icons.ts +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright: Ankitects Pty Ltd and contributors -// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html - -/// - -export { default as chevronDown } from "@mdi/svg/svg/chevron-down.svg"; -export { default as gearIcon } from "bootstrap-icons/icons/gear.svg"; diff --git a/ts/deck-options/tsconfig.json b/ts/deck-options/tsconfig.json deleted file mode 100644 index 3a3f4c022..000000000 --- a/ts/deck-options/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["*"], - "references": [ - { "path": "@tslib" }, - { "path": "../sveltelib" }, - { "path": "../components" } - ], - "compilerOptions": { - "types": ["jest"] - } -} diff --git a/ts/domlib/tsconfig.json b/ts/domlib/tsconfig.json deleted file mode 100644 index 0ae246fe5..000000000 --- a/ts/domlib/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": [ - "*", - "location/*", - "surround/*", - "surround/apply/*", - "surround/build/*", - "surround/tree/*" - ], - "references": [{ "path": "../lib" }], - "compilerOptions": { - "types": ["jest"] - } -} diff --git a/ts/editable/ContentEditable.svelte b/ts/editable/ContentEditable.svelte index c3c5fa2da..e5ba95251 100644 --- a/ts/editable/ContentEditable.svelte +++ b/ts/editable/ContentEditable.svelte @@ -9,10 +9,11 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html diff --git a/ts/editor/EditingArea.svelte b/ts/editor/EditingArea.svelte index b26cb0c98..32356f328 100644 --- a/ts/editor/EditingArea.svelte +++ b/ts/editor/EditingArea.svelte @@ -5,7 +5,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html - -
Fields
diff --git a/ts/fields/fields-base.scss b/ts/fields/fields-base.scss deleted file mode 100644 index 5d37055eb..000000000 --- a/ts/fields/fields-base.scss +++ /dev/null @@ -1,28 +0,0 @@ -@use "sass/bootstrap-dark"; - -@import "sass/base"; - -@import "bootstrap/scss/alert"; -@import "bootstrap/scss/buttons"; -@import "bootstrap/scss/button-group"; -@import "bootstrap/scss/close"; -@import "bootstrap/scss/grid"; -@import "sass/bootstrap-forms"; - -.night-mode { - @include bootstrap-dark.night-mode; -} - -body { - width: min(100vw, 70em); - margin: 0 auto; -} - -html { - overflow-x: hidden; -} - -#main { - padding: 0.5em 0.5em 1em 0.5em; - height: 100vh; -} diff --git a/ts/fields/index.ts b/ts/fields/index.ts deleted file mode 100644 index 343f8ed37..000000000 --- a/ts/fields/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright: Ankitects Pty Ltd and contributors -// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html - -import "./fields-base.css"; - -import { ModuleName, setupI18n } from "@tslib/i18n"; -import { checkNightMode } from "@tslib/nightmode"; -import FieldsPage from "./FieldsPage.svelte"; - -const i18n = setupI18n({ - modules: [ModuleName.ACTIONS, ModuleName.CHANGE_NOTETYPE, ModuleName.KEYBOARD], -}); - -export async function setupFieldsPage(): Promise { - checkNightMode(); - - await i18n; - return new FieldsPage({ - target: document.body, - }); -} - -setupFieldsPage(); diff --git a/ts/fields/tsconfig.json b/ts/fields/tsconfig.json deleted file mode 100644 index b8ee6e3a4..000000000 --- a/ts/fields/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["*"], - "references": [ - { "path": "../lib" }, - { "path": "../sveltelib" }, - { "path": "../components" } - ], - "compilerOptions": {} -} diff --git a/ts/graphs/tsconfig.json b/ts/graphs/tsconfig.json deleted file mode 100644 index 550aecf3c..000000000 --- a/ts/graphs/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["*"], - "references": [ - { "path": "../lib" }, - { "path": "../components" }, - { "path": "../sveltelib" } - ] -} diff --git a/ts/html-filter/index.test.ts b/ts/html-filter/index.test.ts index 12d179d39..3db056965 100644 --- a/ts/html-filter/index.test.ts +++ b/ts/html-filter/index.test.ts @@ -1,5 +1,8 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +// @vitest-environment jsdom + +import { describe, expect, test } from "vitest"; import { filterHTML } from "."; diff --git a/ts/html-filter/tsconfig.json b/ts/html-filter/tsconfig.json deleted file mode 100644 index 587e87472..000000000 --- a/ts/html-filter/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["*"], - "references": [], - "compilerOptions": { - "types": ["jest"] - } -} diff --git a/ts/image-occlusion/icons.ts b/ts/image-occlusion/icons.ts index 1f27e07d3..e69de29bb 100644 --- a/ts/image-occlusion/icons.ts +++ b/ts/image-occlusion/icons.ts @@ -1,39 +0,0 @@ -// Copyright: Ankitects Pty Ltd and contributors -// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html - -/// - -export { default as mdiAlignHorizontalCenter } from "@mdi/svg/svg/align-horizontal-center.svg"; -export { default as mdiAlignHorizontalLeft } from "@mdi/svg/svg/align-horizontal-left.svg"; -export { default as mdiAlignHorizontalRight } from "@mdi/svg/svg/align-horizontal-right.svg"; -export { default as mdiAlignVerticalBottom } from "@mdi/svg/svg/align-vertical-bottom.svg"; -export { default as mdiAlignVerticalCenter } from "@mdi/svg/svg/align-vertical-center.svg"; -export { default as mdiAlignVerticalTop } from "@mdi/svg/svg/align-vertical-top.svg"; -export { default as mdiChevronDown } from "@mdi/svg/svg/chevron-down.svg"; -export { default as mdiClose } from "@mdi/svg/svg/close.svg"; -export { default as mdiCodeTags } from "@mdi/svg/svg/code-tags.svg"; -export { default as mdiCopy } from "@mdi/svg/svg/content-copy.svg"; -export { default as mdiCursorDefaultOutline } from "@mdi/svg/svg/cursor-default-outline.svg"; -export { default as mdiDeleteOutline } from "@mdi/svg/svg/delete-outline.svg"; -export { default as mdiEllipseOutline } from "@mdi/svg/svg/ellipse-outline.svg"; -export { default as mdiEye } from "@mdi/svg/svg/eye.svg"; -export { default as mdiFormatAlignCenter } from "@mdi/svg/svg/format-align-center.svg"; -export { default as mdiFormatBold } from "@mdi/svg/svg/format-bold.svg"; -export { default as mdiFormatItalic } from "@mdi/svg/svg/format-italic.svg"; -export { default as mdiFormatUnderline } from "@mdi/svg/svg/format-underline.svg"; -export { default as mdiGroup } from "@mdi/svg/svg/group.svg"; -export { default as mdiZoomReset } from "@mdi/svg/svg/magnify-expand.svg"; -export { default as mdiZoomOut } from "@mdi/svg/svg/magnify-minus-outline.svg"; -export { default as mdiZoomIn } from "@mdi/svg/svg/magnify-plus-outline.svg"; -export { default as mdiMagnifyScan } from "@mdi/svg/svg/magnify-scan.svg"; -export { default as mdiRectangleOutline } from "@mdi/svg/svg/rectangle-outline.svg"; -export { default as mdiRedo } from "@mdi/svg/svg/redo.svg"; -export { default as mdiRefresh } from "@mdi/svg/svg/refresh.svg"; -export { default as mdiSelectAll } from "@mdi/svg/svg/select-all.svg"; -export { default as mdiSquare } from "@mdi/svg/svg/square.svg"; -export { default as mdiTextBox } from "@mdi/svg/svg/text-box.svg"; -export { default as mdiUndo } from "@mdi/svg/svg/undo.svg"; -export { default as mdiUnfoldMoreHorizontal } from "@mdi/svg/svg/unfold-more-horizontal.svg"; -export { default as mdiUngroup } from "@mdi/svg/svg/ungroup.svg"; -export { default as mdiVectorPolygonVariant } from "@mdi/svg/svg/vector-polygon-variant.svg"; -export { default as mdiViewDashboard } from "@mdi/svg/svg/view-dashboard.svg"; diff --git a/ts/image-occlusion/tsconfig.json b/ts/image-occlusion/tsconfig.json deleted file mode 100644 index b23b91981..000000000 --- a/ts/image-occlusion/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": [ - "*", - "tools/*", - "shapes/*", - "notes-toolbar" - ], - "references": [ - { "path": "../lib" }, - { "path": "../sveltelib" }, - { "path": "../components" }, - { "path": "../tag-editor" } - ], - "compilerOptions": { - "types": ["jest"] - } -} diff --git a/ts/import-anki-package/tsconfig.json b/ts/import-anki-package/tsconfig.json deleted file mode 100644 index 276e90989..000000000 --- a/ts/import-anki-package/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["*"], - "references": [ - { "path": "../lib" }, - { "path": "../sveltelib" }, - { "path": "../components" } - ], - "compilerOptions": { - "types": ["jest"] - } -} diff --git a/ts/import-csv/tsconfig.json b/ts/import-csv/tsconfig.json deleted file mode 100644 index 276e90989..000000000 --- a/ts/import-csv/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["*"], - "references": [ - { "path": "../lib" }, - { "path": "../sveltelib" }, - { "path": "../components" } - ], - "compilerOptions": { - "types": ["jest"] - } -} diff --git a/ts/import-page/icons.ts b/ts/import-page/icons.ts deleted file mode 100644 index 02bef772a..000000000 --- a/ts/import-page/icons.ts +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright: Ankitects Pty Ltd and contributors -// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html - -/// - -export { default as checkCircle } from "@mdi/svg/svg/check-circle.svg"; -export { default as closeBox } from "@mdi/svg/svg/close-box.svg"; -export { default as magnifyIcon } from "@mdi/svg/svg/magnify.svg"; -export { default as newBox } from "@mdi/svg/svg/new-box.svg"; -export { default as updateIcon } from "@mdi/svg/svg/update.svg"; diff --git a/ts/import-page/tsconfig.json b/ts/import-page/tsconfig.json deleted file mode 100644 index 61d5e4756..000000000 --- a/ts/import-page/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": [ - "*" - ], - "references": [ - { - "path": "../lib" - }, - { - "path": "../components" - } - ], - "compilerOptions": { - "types": [ - "jest" - ] - } -} diff --git a/ts/jest.config.js b/ts/jest.config.js deleted file mode 100644 index 7d3df5977..000000000 --- a/ts/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testMatch: ["**/*.test.ts"], - transform: { - "\\.(ts|js)$": [ - "/esbuild_jest.mjs", - {}, - ], - }, - moduleNameMapper: { - "^@tslib(.*)$": [ - "/../out/ts/lib$1", - "/lib$1", - ], - }, - transformIgnorePatterns: ["/node_modules/(?!(lodash-es|svelte)/)"], -}; diff --git a/ts/components/Absolute.svelte b/ts/lib/components/Absolute.svelte similarity index 100% rename from ts/components/Absolute.svelte rename to ts/lib/components/Absolute.svelte diff --git a/ts/components/BackendProgressIndicator.svelte b/ts/lib/components/BackendProgressIndicator.svelte similarity index 95% rename from ts/components/BackendProgressIndicator.svelte rename to ts/lib/components/BackendProgressIndicator.svelte index 4fe21ce5a..6a5778e21 100644 --- a/ts/components/BackendProgressIndicator.svelte +++ b/ts/lib/components/BackendProgressIndicator.svelte @@ -3,10 +3,10 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> + + diff --git a/ts/routes/+layout.ts b/ts/routes/+layout.ts new file mode 100644 index 000000000..489a56fa5 --- /dev/null +++ b/ts/routes/+layout.ts @@ -0,0 +1,15 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html + +import { setupGlobalI18n } from "@tslib/i18n"; +import { checkNightMode } from "@tslib/nightmode"; + +import type { LayoutLoad } from "./$types"; + +export const ssr = false; +export const prerender = false; + +export const load: LayoutLoad = async () => { + checkNightMode(); + await setupGlobalI18n(); +}; diff --git a/ts/routes/base.scss b/ts/routes/base.scss new file mode 100644 index 000000000..1e0ee1ae3 --- /dev/null +++ b/ts/routes/base.scss @@ -0,0 +1,34 @@ +@import "$lib/sass/base"; + +// override Bootstrap transition duration +$carousel-transition: var(--transition); + +@import "bootstrap/scss/buttons"; +@import "bootstrap/scss/button-group"; +@import "bootstrap/scss/transitions"; +@import "bootstrap/scss/modal"; +@import "bootstrap/scss/carousel"; +@import "bootstrap/scss/close"; +@import "bootstrap/scss/alert"; +@import "bootstrap/scss/badge"; +@import "$lib/sass/bootstrap-forms"; +@import "$lib/sass/bootstrap-tooltip"; + +input[type="text"] { + padding-inline: 0.5rem; + background: var(--canvas-inset); +} + +input { + color: var(--fg); +} + +// Setting 100% height causes the sticky element to hide as you scroll down on Safari. +html { + height: initial; +} + +[dir="rtl"] .modal-header .btn-close { + padding: 1rem 1rem !important; + margin: -1rem auto -1rem -1rem !important; +} diff --git a/ts/routes/card-info/CardInfo.svelte b/ts/routes/card-info/CardInfo.svelte new file mode 100644 index 000000000..b0651dc5b --- /dev/null +++ b/ts/routes/card-info/CardInfo.svelte @@ -0,0 +1,33 @@ + + + + + {#if stats} + + + + + {#if showRevlog} + + + + {/if} + {:else} + + {/if} + diff --git a/ts/card-info/CardInfoPlaceholder.svelte b/ts/routes/card-info/CardInfoPlaceholder.svelte similarity index 90% rename from ts/card-info/CardInfoPlaceholder.svelte rename to ts/routes/card-info/CardInfoPlaceholder.svelte index 4fc8bcf5a..7ca42d12b 100644 --- a/ts/card-info/CardInfoPlaceholder.svelte +++ b/ts/routes/card-info/CardInfoPlaceholder.svelte @@ -3,7 +3,7 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -->
{tr.cardStatsNoCard()}
diff --git a/ts/card-info/CardStats.svelte b/ts/routes/card-info/CardStats.svelte similarity index 97% rename from ts/card-info/CardStats.svelte rename to ts/routes/card-info/CardStats.svelte index 3961e4985..ddea49bde 100644 --- a/ts/card-info/CardStats.svelte +++ b/ts/routes/card-info/CardStats.svelte @@ -3,8 +3,8 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> + + diff --git a/ts/routes/card-info/[cardId]/+page.ts b/ts/routes/card-info/[cardId]/+page.ts new file mode 100644 index 000000000..35b0dd9a8 --- /dev/null +++ b/ts/routes/card-info/[cardId]/+page.ts @@ -0,0 +1,10 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +import { cardStats } from "@generated/backend"; + +import type { PageLoad } from "./$types"; + +export const load = (async ({ params }) => { + const info = await cardStats({ cid: BigInt(params.cardId) }); + return { info }; +}) satisfies PageLoad; diff --git a/ts/routes/card-info/card-info-base.scss b/ts/routes/card-info/card-info-base.scss new file mode 100644 index 000000000..96e199d3c --- /dev/null +++ b/ts/routes/card-info/card-info-base.scss @@ -0,0 +1 @@ +@import "../lib/sass/base"; diff --git a/ts/card-info/index.ts b/ts/routes/card-info/index.ts similarity index 100% rename from ts/card-info/index.ts rename to ts/routes/card-info/index.ts diff --git a/ts/change-notetype/Alert.svelte b/ts/routes/change-notetype/Alert.svelte similarity index 91% rename from ts/change-notetype/Alert.svelte rename to ts/routes/change-notetype/Alert.svelte index 79406785e..8e85c741e 100644 --- a/ts/change-notetype/Alert.svelte +++ b/ts/routes/change-notetype/Alert.svelte @@ -3,12 +3,13 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> + + diff --git a/ts/routes/change-notetype/[...notetypeIds]/+page.ts b/ts/routes/change-notetype/[...notetypeIds]/+page.ts new file mode 100644 index 000000000..4c9a9d48d --- /dev/null +++ b/ts/routes/change-notetype/[...notetypeIds]/+page.ts @@ -0,0 +1,22 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +import { getChangeNotetypeInfo, getNotetypeNames } from "@generated/backend"; + +import { ChangeNotetypeState } from "../lib"; +import type { PageLoad } from "./$types"; + +export const load = (async ({ params }) => { + const [fromIdStr, toIdStr] = params.notetypeIds.split("/"); + const oldNotetypeId = BigInt(fromIdStr); + const newNotetypeId = toIdStr ? BigInt(toIdStr) : oldNotetypeId; + + const notetypeNames = getNotetypeNames({}); + const changeNotetypeInfo = getChangeNotetypeInfo({ + oldNotetypeId, + newNotetypeId, + }); + const [names, info] = await Promise.all([notetypeNames, changeNotetypeInfo]); + const state = new ChangeNotetypeState(names, info); + + return { state }; +}) satisfies PageLoad; diff --git a/ts/change-notetype/change-notetype-base.scss b/ts/routes/change-notetype/change-notetype-base.scss similarity index 79% rename from ts/change-notetype/change-notetype-base.scss rename to ts/routes/change-notetype/change-notetype-base.scss index 5d37055eb..22aeed358 100644 --- a/ts/change-notetype/change-notetype-base.scss +++ b/ts/routes/change-notetype/change-notetype-base.scss @@ -1,13 +1,13 @@ -@use "sass/bootstrap-dark"; +@use "../lib/sass/bootstrap-dark"; -@import "sass/base"; +@import "../lib/sass/base"; @import "bootstrap/scss/alert"; @import "bootstrap/scss/buttons"; @import "bootstrap/scss/button-group"; @import "bootstrap/scss/close"; @import "bootstrap/scss/grid"; -@import "sass/bootstrap-forms"; +@import "../lib/sass/bootstrap-forms"; .night-mode { @include bootstrap-dark.night-mode; diff --git a/ts/change-notetype/index.ts b/ts/routes/change-notetype/index.ts similarity index 94% rename from ts/change-notetype/index.ts rename to ts/routes/change-notetype/index.ts index dbbe00686..4fd56507a 100644 --- a/ts/change-notetype/index.ts +++ b/ts/routes/change-notetype/index.ts @@ -3,7 +3,7 @@ import "./change-notetype-base.scss"; -import { getChangeNotetypeInfo, getNotetypeNames } from "@tslib/backend"; +import { getChangeNotetypeInfo, getNotetypeNames } from "@generated/backend"; import { ModuleName, setupI18n } from "@tslib/i18n"; import { checkNightMode } from "@tslib/nightmode"; diff --git a/ts/change-notetype/lib.test.ts b/ts/routes/change-notetype/lib.test.ts similarity index 96% rename from ts/change-notetype/lib.test.ts rename to ts/routes/change-notetype/lib.test.ts index 9035732e5..f0b666879 100644 --- a/ts/change-notetype/lib.test.ts +++ b/ts/routes/change-notetype/lib.test.ts @@ -7,9 +7,10 @@ import "@tslib/i18n"; -import { ChangeNotetypeInfo, NotetypeNames } from "@tslib/anki/notetypes_pb"; -import * as tr from "@tslib/ftl"; +import { ChangeNotetypeInfo, NotetypeNames } from "@generated/anki/notetypes_pb"; +import * as tr from "@generated/ftl"; import { get } from "svelte/store"; +import { expect, test } from "vitest"; import { ChangeNotetypeState, MapContext, negativeOneToNull } from "./lib"; diff --git a/ts/change-notetype/lib.ts b/ts/routes/change-notetype/lib.ts similarity index 97% rename from ts/change-notetype/lib.ts rename to ts/routes/change-notetype/lib.ts index 460d5cd4b..6fa2a776a 100644 --- a/ts/change-notetype/lib.ts +++ b/ts/routes/change-notetype/lib.ts @@ -1,9 +1,9 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -import type { ChangeNotetypeInfo, ChangeNotetypeRequest, NotetypeNames } from "@tslib/anki/notetypes_pb"; -import { changeNotetype, getChangeNotetypeInfo } from "@tslib/backend"; -import * as tr from "@tslib/ftl"; +import type { ChangeNotetypeInfo, ChangeNotetypeRequest, NotetypeNames } from "@generated/anki/notetypes_pb"; +import { changeNotetype, getChangeNotetypeInfo } from "@generated/backend"; +import * as tr from "@generated/ftl"; import { isEqual } from "lodash-es"; import type { Readable } from "svelte/store"; import { readable } from "svelte/store"; diff --git a/ts/routes/congrats/+page.svelte b/ts/routes/congrats/+page.svelte new file mode 100644 index 000000000..cab3febdf --- /dev/null +++ b/ts/routes/congrats/+page.svelte @@ -0,0 +1,12 @@ + + + + diff --git a/ts/routes/congrats/+page.ts b/ts/routes/congrats/+page.ts new file mode 100644 index 000000000..9f894ef44 --- /dev/null +++ b/ts/routes/congrats/+page.ts @@ -0,0 +1,10 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +import { congratsInfo } from "@generated/backend"; + +import type { PageLoad } from "./$types"; + +export const load = (async () => { + const info = await congratsInfo({}); + return { info }; +}) satisfies PageLoad; diff --git a/ts/congrats/CongratsPage.svelte b/ts/routes/congrats/CongratsPage.svelte similarity index 90% rename from ts/congrats/CongratsPage.svelte rename to ts/routes/congrats/CongratsPage.svelte index 1b5912c48..bd05e10d9 100644 --- a/ts/congrats/CongratsPage.svelte +++ b/ts/routes/congrats/CongratsPage.svelte @@ -3,12 +3,13 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> + + diff --git a/ts/routes/deck-options/[deckId]/+page.ts b/ts/routes/deck-options/[deckId]/+page.ts new file mode 100644 index 000000000..aef4dd6fe --- /dev/null +++ b/ts/routes/deck-options/[deckId]/+page.ts @@ -0,0 +1,16 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +import { getDeckConfigsForUpdate } from "@generated/backend"; + +import { DeckOptionsState } from "../lib"; +import type { PageLoad } from "./$types"; + +export const load = (async ({ params }) => { + const deckId = Number(params.deckId); + + const did = BigInt(deckId); + const info = await getDeckConfigsForUpdate({ did }); + const state = new DeckOptionsState(BigInt(did), info); + + return { state }; +}) satisfies PageLoad; diff --git a/ts/deck-options/choices.ts b/ts/routes/deck-options/choices.ts similarity index 97% rename from ts/deck-options/choices.ts rename to ts/routes/deck-options/choices.ts index e1eb134d6..5f84af617 100644 --- a/ts/deck-options/choices.ts +++ b/ts/routes/deck-options/choices.ts @@ -9,9 +9,10 @@ import { DeckConfig_Config_NewCardSortOrder, DeckConfig_Config_ReviewCardOrder, DeckConfig_Config_ReviewMix, -} from "@tslib/anki/deck_config_pb"; -import * as tr from "@tslib/ftl"; -import type { Choice } from "components/EnumSelector.svelte"; +} from "@generated/anki/deck_config_pb"; +import * as tr from "@generated/ftl"; + +import type { Choice } from "$lib/components/EnumSelector.svelte"; export function newGatherPriorityChoices(): Choice[] { return [ diff --git a/ts/deck-options/deck-options-base.scss b/ts/routes/deck-options/deck-options-base.scss similarity index 87% rename from ts/deck-options/deck-options-base.scss rename to ts/routes/deck-options/deck-options-base.scss index 5b686319e..1e0ee1ae3 100644 --- a/ts/deck-options/deck-options-base.scss +++ b/ts/routes/deck-options/deck-options-base.scss @@ -1,4 +1,4 @@ -@import "sass/base"; +@import "$lib/sass/base"; // override Bootstrap transition duration $carousel-transition: var(--transition); @@ -11,8 +11,8 @@ $carousel-transition: var(--transition); @import "bootstrap/scss/close"; @import "bootstrap/scss/alert"; @import "bootstrap/scss/badge"; -@import "sass/bootstrap-forms"; -@import "sass/bootstrap-tooltip"; +@import "$lib/sass/bootstrap-forms"; +@import "$lib/sass/bootstrap-tooltip"; input[type="text"] { padding-inline: 0.5rem; diff --git a/ts/deck-options/index.ts b/ts/routes/deck-options/index.ts similarity index 75% rename from ts/deck-options/index.ts rename to ts/routes/deck-options/index.ts index 550d08db0..3b88c4d0c 100644 --- a/ts/deck-options/index.ts +++ b/ts/routes/deck-options/index.ts @@ -5,15 +5,22 @@ @typescript-eslint/no-explicit-any: "off", */ -import "../sveltelib/export-runtime"; +import "$lib/sveltelib/export-runtime"; import "./deck-options-base.scss"; +import { getDeckConfigsForUpdate } from "@generated/backend"; import { ModuleName, setupI18n } from "@tslib/i18n"; import { checkNightMode } from "@tslib/nightmode"; -import { modalsKey, touchDeviceKey } from "../components/context-keys"; +import { modalsKey, touchDeviceKey } from "$lib/components/context-keys"; +import EnumSelectorRow from "$lib/components/EnumSelectorRow.svelte"; +import SwitchRow from "$lib/components/SwitchRow.svelte"; +import TitledContainer from "$lib/components/TitledContainer.svelte"; + import DeckOptionsPage from "./DeckOptionsPage.svelte"; import { DeckOptionsState } from "./lib"; +import SpinBoxFloatRow from "./SpinBoxFloatRow.svelte"; +import SpinBoxRow from "./SpinBoxRow.svelte"; const i18n = setupI18n({ modules: [ @@ -45,14 +52,6 @@ export async function setupDeckOptions(did_: number): Promise { }); } -import { getDeckConfigsForUpdate } from "@tslib/backend"; - -import EnumSelectorRow from "../components/EnumSelectorRow.svelte"; -import SwitchRow from "../components/SwitchRow.svelte"; -import TitledContainer from "../components/TitledContainer.svelte"; -import SpinBoxFloatRow from "./SpinBoxFloatRow.svelte"; -import SpinBoxRow from "./SpinBoxRow.svelte"; - export const components = { TitledContainer, SpinBoxRow, @@ -61,6 +60,6 @@ export const components = { SwitchRow, }; -if (window.location.hash.startsWith("#test")) { - setupDeckOptions(1); -} +// if (window.location.hash.startsWith("#test")) { +// setupDeckOptions(1); +// } diff --git a/ts/deck-options/lib.test.ts b/ts/routes/deck-options/lib.test.ts similarity index 98% rename from ts/deck-options/lib.test.ts rename to ts/routes/deck-options/lib.test.ts index 998c54e94..f8da32efd 100644 --- a/ts/deck-options/lib.test.ts +++ b/ts/routes/deck-options/lib.test.ts @@ -6,8 +6,13 @@ */ import { protoBase64 } from "@bufbuild/protobuf"; -import { DeckConfig_Config_LeechAction, DeckConfigsForUpdate, UpdateDeckConfigsMode } from "@tslib/anki/deck_config_pb"; +import { + DeckConfig_Config_LeechAction, + DeckConfigsForUpdate, + UpdateDeckConfigsMode, +} from "@generated/anki/deck_config_pb"; import { get } from "svelte/store"; +import { expect, test } from "vitest"; import { DeckOptionsState } from "./lib"; diff --git a/ts/deck-options/lib.ts b/ts/routes/deck-options/lib.ts similarity index 98% rename from ts/deck-options/lib.ts rename to ts/routes/deck-options/lib.ts index e1dd21ed5..d95b1e1aa 100644 --- a/ts/deck-options/lib.ts +++ b/ts/routes/deck-options/lib.ts @@ -7,15 +7,15 @@ import type { DeckConfigsForUpdate_CurrentDeck, UpdateDeckConfigsMode, UpdateDeckConfigsRequest, -} from "@tslib/anki/deck_config_pb"; -import { DeckConfig, DeckConfig_Config, DeckConfigsForUpdate_CurrentDeck_Limits } from "@tslib/anki/deck_config_pb"; -import { updateDeckConfigs } from "@tslib/backend"; +} from "@generated/anki/deck_config_pb"; +import { DeckConfig, DeckConfig_Config, DeckConfigsForUpdate_CurrentDeck_Limits } from "@generated/anki/deck_config_pb"; +import { updateDeckConfigs } from "@generated/backend"; import { localeCompare } from "@tslib/i18n"; import { cloneDeep, isEqual } from "lodash-es"; import type { Readable, Writable } from "svelte/store"; import { get, readable, writable } from "svelte/store"; -import type { DynamicSvelteComponent } from "../sveltelib/dynamicComponent"; +import type { DynamicSvelteComponent } from "$lib/sveltelib/dynamicComponent"; export type DeckOptionsId = bigint; diff --git a/ts/deck-options/steps.test.ts b/ts/routes/deck-options/steps.test.ts similarity index 95% rename from ts/deck-options/steps.test.ts rename to ts/routes/deck-options/steps.test.ts index bd7b82025..1ccd7b923 100644 --- a/ts/deck-options/steps.test.ts +++ b/ts/routes/deck-options/steps.test.ts @@ -1,6 +1,8 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +import { expect, test } from "vitest"; + import { stepsToString, stringToSteps } from "./steps"; test("whole steps", () => { diff --git a/ts/deck-options/steps.ts b/ts/routes/deck-options/steps.ts similarity index 100% rename from ts/deck-options/steps.ts rename to ts/routes/deck-options/steps.ts diff --git a/ts/routes/graphs/+page.svelte b/ts/routes/graphs/+page.svelte new file mode 100644 index 000000000..01900217c --- /dev/null +++ b/ts/routes/graphs/+page.svelte @@ -0,0 +1,44 @@ + + + + diff --git a/ts/graphs/AddedGraph.svelte b/ts/routes/graphs/AddedGraph.svelte similarity index 94% rename from ts/graphs/AddedGraph.svelte rename to ts/routes/graphs/AddedGraph.svelte index 335657672..b3ac60b82 100644 --- a/ts/graphs/AddedGraph.svelte +++ b/ts/routes/graphs/AddedGraph.svelte @@ -3,8 +3,8 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> diff --git a/ts/image-occlusion/Notes.svelte b/ts/routes/image-occlusion/Notes.svelte similarity index 94% rename from ts/image-occlusion/Notes.svelte rename to ts/routes/image-occlusion/Notes.svelte index bbe8fe9ae..c3eaf2780 100644 --- a/ts/image-occlusion/Notes.svelte +++ b/ts/routes/image-occlusion/Notes.svelte @@ -3,10 +3,11 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> + + diff --git a/ts/routes/image-occlusion/[...imagePathOrNoteId]/+page.ts b/ts/routes/image-occlusion/[...imagePathOrNoteId]/+page.ts new file mode 100644 index 000000000..ec6f33775 --- /dev/null +++ b/ts/routes/image-occlusion/[...imagePathOrNoteId]/+page.ts @@ -0,0 +1,16 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +import type { IOMode } from "../lib"; +import type { PageLoad } from "./$types"; + +export const load = (async ({ params }) => { + let mode: IOMode; + if (/^\d+/.test(params.imagePathOrNoteId)) { + mode = { kind: "edit", noteId: Number(params.imagePathOrNoteId) }; + } else { + mode = { kind: "add", imagePath: params.imagePathOrNoteId, notetypeId: 0 }; + } + return { + mode, + }; +}) satisfies PageLoad; diff --git a/ts/image-occlusion/add-or-update-note.ts b/ts/routes/image-occlusion/add-or-update-note.ts similarity index 94% rename from ts/image-occlusion/add-or-update-note.ts rename to ts/routes/image-occlusion/add-or-update-note.ts index 909d9bcdc..d3af77b59 100644 --- a/ts/image-occlusion/add-or-update-note.ts +++ b/ts/routes/image-occlusion/add-or-update-note.ts @@ -1,9 +1,9 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -import type { OpChanges } from "@tslib/anki/collection_pb"; -import { addImageOcclusionNote, updateImageOcclusionNote } from "@tslib/backend"; -import * as tr from "@tslib/ftl"; +import type { OpChanges } from "@generated/anki/collection_pb"; +import { addImageOcclusionNote, updateImageOcclusionNote } from "@generated/backend"; +import * as tr from "@generated/ftl"; import { get } from "svelte/store"; import type { IOMode } from "./lib"; diff --git a/ts/image-occlusion/canvas-scale.ts b/ts/routes/image-occlusion/canvas-scale.ts similarity index 100% rename from ts/image-occlusion/canvas-scale.ts rename to ts/routes/image-occlusion/canvas-scale.ts diff --git a/ts/routes/image-occlusion/icons.ts b/ts/routes/image-occlusion/icons.ts new file mode 100644 index 000000000..5142febd9 --- /dev/null +++ b/ts/routes/image-occlusion/icons.ts @@ -0,0 +1,74 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html + +import mdiAlignHorizontalCenter_ from "@mdi/svg/svg/align-horizontal-center.svg"; +import mdiAlignHorizontalLeft_ from "@mdi/svg/svg/align-horizontal-left.svg"; +import mdiAlignHorizontalRight_ from "@mdi/svg/svg/align-horizontal-right.svg"; +import mdiAlignVerticalBottom_ from "@mdi/svg/svg/align-vertical-bottom.svg"; +import mdiAlignVerticalCenter_ from "@mdi/svg/svg/align-vertical-center.svg"; +import mdiAlignVerticalTop_ from "@mdi/svg/svg/align-vertical-top.svg"; +import mdiChevronDown_ from "@mdi/svg/svg/chevron-down.svg"; +import mdiClose_ from "@mdi/svg/svg/close.svg"; +import mdiCodeTags_ from "@mdi/svg/svg/code-tags.svg"; +import mdiCopy_ from "@mdi/svg/svg/content-copy.svg"; +import mdiCursorDefaultOutline_ from "@mdi/svg/svg/cursor-default-outline.svg"; +import mdiDeleteOutline_ from "@mdi/svg/svg/delete-outline.svg"; +import mdiEllipseOutline_ from "@mdi/svg/svg/ellipse-outline.svg"; +import mdiEye_ from "@mdi/svg/svg/eye.svg"; +import mdiFormatAlignCenter_ from "@mdi/svg/svg/format-align-center.svg"; +import mdiFormatBold_ from "@mdi/svg/svg/format-bold.svg"; +import mdiFormatItalic_ from "@mdi/svg/svg/format-italic.svg"; +import mdiFormatUnderline_ from "@mdi/svg/svg/format-underline.svg"; +import mdiGroup_ from "@mdi/svg/svg/group.svg"; +import mdiZoomReset_ from "@mdi/svg/svg/magnify-expand.svg"; +import mdiZoomOut_ from "@mdi/svg/svg/magnify-minus-outline.svg"; +import mdiZoomIn_ from "@mdi/svg/svg/magnify-plus-outline.svg"; +import mdiMagnifyScan_ from "@mdi/svg/svg/magnify-scan.svg"; +import mdiRectangleOutline_ from "@mdi/svg/svg/rectangle-outline.svg"; +import mdiRedo_ from "@mdi/svg/svg/redo.svg"; +import mdiRefresh_ from "@mdi/svg/svg/refresh.svg"; +import mdiSelectAll_ from "@mdi/svg/svg/select-all.svg"; +import mdiSquare_ from "@mdi/svg/svg/square.svg"; +import mdiTextBox_ from "@mdi/svg/svg/text-box.svg"; +import mdiUndo_ from "@mdi/svg/svg/undo.svg"; +import mdiUnfoldMoreHorizontal_ from "@mdi/svg/svg/unfold-more-horizontal.svg"; +import mdiUngroup_ from "@mdi/svg/svg/ungroup.svg"; +import mdiVectorPolygonVariant_ from "@mdi/svg/svg/vector-polygon-variant.svg"; +import mdiViewDashboard_ from "@mdi/svg/svg/view-dashboard.svg"; + +import { imageLink } from "$lib/components/icons"; + +export const mdiAlignHorizontalCenter = imageLink(mdiAlignHorizontalCenter_); +export const mdiAlignHorizontalLeft = imageLink(mdiAlignHorizontalLeft_); +export const mdiAlignHorizontalRight = imageLink(mdiAlignHorizontalRight_); +export const mdiAlignVerticalBottom = imageLink(mdiAlignVerticalBottom_); +export const mdiAlignVerticalCenter = imageLink(mdiAlignVerticalCenter_); +export const mdiAlignVerticalTop = imageLink(mdiAlignVerticalTop_); +export const mdiChevronDown = imageLink(mdiChevronDown_); +export const mdiClose = imageLink(mdiClose_); +export const mdiCodeTags = imageLink(mdiCodeTags_); +export const mdiCopy = imageLink(mdiCopy_); +export const mdiCursorDefaultOutline = imageLink(mdiCursorDefaultOutline_); +export const mdiDeleteOutline = imageLink(mdiDeleteOutline_); +export const mdiEllipseOutline = imageLink(mdiEllipseOutline_); +export const mdiEye = imageLink(mdiEye_); +export const mdiFormatAlignCenter = imageLink(mdiFormatAlignCenter_); +export const mdiFormatBold = imageLink(mdiFormatBold_); +export const mdiFormatItalic = imageLink(mdiFormatItalic_); +export const mdiFormatUnderline = imageLink(mdiFormatUnderline_); +export const mdiGroup = imageLink(mdiGroup_); +export const mdiZoomReset = imageLink(mdiZoomReset_); +export const mdiZoomOut = imageLink(mdiZoomOut_); +export const mdiZoomIn = imageLink(mdiZoomIn_); +export const mdiMagnifyScan = imageLink(mdiMagnifyScan_); +export const mdiRectangleOutline = imageLink(mdiRectangleOutline_); +export const mdiRedo = imageLink(mdiRedo_); +export const mdiRefresh = imageLink(mdiRefresh_); +export const mdiSelectAll = imageLink(mdiSelectAll_); +export const mdiSquare = imageLink(mdiSquare_); +export const mdiTextBox = imageLink(mdiTextBox_); +export const mdiUndo = imageLink(mdiUndo_); +export const mdiUnfoldMoreHorizontal = imageLink(mdiUnfoldMoreHorizontal_); +export const mdiUngroup = imageLink(mdiUngroup_); +export const mdiVectorPolygonVariant = imageLink(mdiVectorPolygonVariant_); +export const mdiViewDashboard = imageLink(mdiViewDashboard_); diff --git a/ts/image-occlusion/image-occlusion-base.scss b/ts/routes/image-occlusion/image-occlusion-base.scss similarity index 73% rename from ts/image-occlusion/image-occlusion-base.scss rename to ts/routes/image-occlusion/image-occlusion-base.scss index 362cec848..33836a9c4 100644 --- a/ts/image-occlusion/image-occlusion-base.scss +++ b/ts/routes/image-occlusion/image-occlusion-base.scss @@ -1,14 +1,14 @@ -@use "sass/vars"; -@use "sass/bootstrap-dark"; +@use "../lib/sass/vars"; +@use "../lib/sass/bootstrap-dark"; -@import "sass/base"; +@import "../lib/sass/base"; @import "bootstrap/scss/alert"; @import "bootstrap/scss/buttons"; @import "bootstrap/scss/button-group"; @import "bootstrap/scss/close"; @import "bootstrap/scss/grid"; -@import "sass/bootstrap-forms"; +@import "../lib/sass/bootstrap-forms"; .night-mode { @include bootstrap-dark.night-mode; diff --git a/ts/image-occlusion/index.ts b/ts/routes/image-occlusion/index.ts similarity index 96% rename from ts/image-occlusion/index.ts rename to ts/routes/image-occlusion/index.ts index 1bc753df6..da4e77c88 100644 --- a/ts/image-occlusion/index.ts +++ b/ts/routes/image-occlusion/index.ts @@ -4,9 +4,9 @@ import "./image-occlusion-base.scss"; import { ModuleName, setupI18n } from "@tslib/i18n"; +import { checkNightMode } from "@tslib/nightmode"; import { get } from "svelte/store"; -import { checkNightMode } from "../lib/nightmode"; import { addOrUpdateNote } from "./add-or-update-note"; import ImageOcclusionPage from "./ImageOcclusionPage.svelte"; import type { IOMode } from "./lib"; diff --git a/ts/image-occlusion/lib.ts b/ts/routes/image-occlusion/lib.ts similarity index 100% rename from ts/image-occlusion/lib.ts rename to ts/routes/image-occlusion/lib.ts diff --git a/ts/image-occlusion/mask-editor.ts b/ts/routes/image-occlusion/mask-editor.ts similarity index 97% rename from ts/image-occlusion/mask-editor.ts rename to ts/routes/image-occlusion/mask-editor.ts index 269df5751..e05640a0e 100644 --- a/ts/image-occlusion/mask-editor.ts +++ b/ts/routes/image-occlusion/mask-editor.ts @@ -2,8 +2,8 @@ // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import { protoBase64 } from "@bufbuild/protobuf"; -import { getImageForOcclusion, getImageOcclusionNote } from "@tslib/backend"; -import * as tr from "@tslib/ftl"; +import { getImageForOcclusion, getImageOcclusionNote } from "@generated/backend"; +import * as tr from "@generated/ftl"; import { fabric } from "fabric"; import { get } from "svelte/store"; @@ -59,7 +59,7 @@ export const setupMaskEditorForEdit = async ( type: "error", }, }).$set({ showToast: true }); - return; + throw "error getting cloze"; } const clozeNote = clozeNoteResponse.value.value; @@ -118,7 +118,6 @@ function initCanvas(onChange: () => void): fabric.Canvas { const setupBoundingBox = (canvas: fabric.Canvas, size: Size): fabric.Rect => { const boundingBox = new fabric.Rect({ - id: "boundingBox", fill: "transparent", width: size.width, height: size.height, @@ -129,6 +128,7 @@ const setupBoundingBox = (canvas: fabric.Canvas, size: Size): fabric.Rect => { selectable: false, evented: false, }); + boundingBox["id"] = "boundingBox"; canvas.add(boundingBox); onResize(canvas); diff --git a/ts/image-occlusion/notes-toolbar/MoreTools.svelte b/ts/routes/image-occlusion/notes-toolbar/MoreTools.svelte similarity index 91% rename from ts/image-occlusion/notes-toolbar/MoreTools.svelte rename to ts/routes/image-occlusion/notes-toolbar/MoreTools.svelte index 415b21beb..097a3aa99 100644 --- a/ts/image-occlusion/notes-toolbar/MoreTools.svelte +++ b/ts/routes/image-occlusion/notes-toolbar/MoreTools.svelte @@ -3,7 +3,8 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> + + diff --git a/ts/routes/import-anki-package/[...path]/+page.ts b/ts/routes/import-anki-package/[...path]/+page.ts new file mode 100644 index 000000000..5528acd64 --- /dev/null +++ b/ts/routes/import-anki-package/[...path]/+page.ts @@ -0,0 +1,10 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +import { getImportAnkiPackagePresets } from "@generated/backend"; + +import type { PageLoad } from "./$types"; + +export const load = (async ({ params }) => { + const options = await getImportAnkiPackagePresets({}); + return { path: params.path, options }; +}) satisfies PageLoad; diff --git a/ts/import-anki-package/choices.ts b/ts/routes/import-anki-package/choices.ts similarity index 76% rename from ts/import-anki-package/choices.ts rename to ts/routes/import-anki-package/choices.ts index 49a456e62..97b117ffb 100644 --- a/ts/import-anki-package/choices.ts +++ b/ts/routes/import-anki-package/choices.ts @@ -1,9 +1,10 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -import { ImportAnkiPackageUpdateCondition } from "@tslib/anki/import_export_pb"; -import * as tr from "@tslib/ftl"; -import type { Choice } from "components/EnumSelector.svelte"; +import { ImportAnkiPackageUpdateCondition } from "@generated/anki/import_export_pb"; +import * as tr from "@generated/ftl"; + +import type { Choice } from "$lib/components/EnumSelector.svelte"; export function updateChoices(): Choice[] { return [ diff --git a/ts/import-anki-package/import-anki-package-base.scss b/ts/routes/import-anki-package/import-anki-package-base.scss similarity index 73% rename from ts/import-anki-package/import-anki-package-base.scss rename to ts/routes/import-anki-package/import-anki-package-base.scss index 91c0fc932..58cc5daa6 100644 --- a/ts/import-anki-package/import-anki-package-base.scss +++ b/ts/routes/import-anki-package/import-anki-package-base.scss @@ -1,6 +1,6 @@ -@use "sass/bootstrap-dark"; +@use "../lib/sass/bootstrap-dark"; -@import "sass/base"; +@import "../lib/sass/base"; @import "bootstrap/scss/alert"; @import "bootstrap/scss/buttons"; @@ -10,8 +10,8 @@ @import "bootstrap/scss/transitions"; @import "bootstrap/scss/modal"; @import "bootstrap/scss/carousel"; -@import "sass/bootstrap-forms"; -@import "sass/bootstrap-tooltip"; +@import "../lib/sass/bootstrap-forms"; +@import "../lib/sass/bootstrap-tooltip"; .night-mode { @include bootstrap-dark.night-mode; diff --git a/ts/import-anki-package/index.ts b/ts/routes/import-anki-package/index.ts similarity index 91% rename from ts/import-anki-package/index.ts rename to ts/routes/import-anki-package/index.ts index 9696ec053..f709fe50c 100644 --- a/ts/import-anki-package/index.ts +++ b/ts/routes/import-anki-package/index.ts @@ -3,11 +3,12 @@ import "./import-anki-package-base.scss"; -import { getImportAnkiPackagePresets } from "@tslib/backend"; +import { getImportAnkiPackagePresets } from "@generated/backend"; import { ModuleName, setupI18n } from "@tslib/i18n"; import { checkNightMode } from "@tslib/nightmode"; -import { modalsKey } from "../components/context-keys"; +import { modalsKey } from "$lib/components/context-keys"; + import ImportAnkiPackagePage from "./ImportAnkiPackagePage.svelte"; const i18n = setupI18n({ diff --git a/ts/import-csv/FieldMapper.svelte b/ts/routes/import-csv/FieldMapper.svelte similarity index 91% rename from ts/import-csv/FieldMapper.svelte rename to ts/routes/import-csv/FieldMapper.svelte index 5c27a47bf..d36a8bc0c 100644 --- a/ts/import-csv/FieldMapper.svelte +++ b/ts/routes/import-csv/FieldMapper.svelte @@ -3,8 +3,9 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> + + diff --git a/ts/routes/import-csv/[...path]/+page.ts b/ts/routes/import-csv/[...path]/+page.ts new file mode 100644 index 000000000..cda2bace9 --- /dev/null +++ b/ts/routes/import-csv/[...path]/+page.ts @@ -0,0 +1,19 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +import { getCsvMetadata, getDeckNames, getNotetypeNames } from "@generated/backend"; + +import { ImportCsvState } from "../lib"; +import type { PageLoad } from "./$types"; + +export const load = (async ({ params }) => { + const [notetypes, decks, metadata] = await Promise.all([ + getNotetypeNames({}), + getDeckNames({ + skipEmptyDefault: false, + includeFiltered: false, + }), + getCsvMetadata({ path: params.path }, { alertOnError: false }), + ]); + const state = new ImportCsvState(params.path, notetypes, decks, metadata); + return { state }; +}) satisfies PageLoad; diff --git a/ts/import-csv/choices.ts b/ts/routes/import-csv/choices.ts similarity index 91% rename from ts/import-csv/choices.ts rename to ts/routes/import-csv/choices.ts index 2b89eec04..e59a55039 100644 --- a/ts/import-csv/choices.ts +++ b/ts/routes/import-csv/choices.ts @@ -5,9 +5,10 @@ import { CsvMetadata_Delimiter, CsvMetadata_DupeResolution, CsvMetadata_MatchScope, -} from "@tslib/anki/import_export_pb"; -import * as tr from "@tslib/ftl"; -import type { Choice } from "components/EnumSelector.svelte"; +} from "@generated/anki/import_export_pb"; +import * as tr from "@generated/ftl"; + +import type { Choice } from "$lib/components/EnumSelector.svelte"; export function delimiterChoices(): Choice[] { return [ diff --git a/ts/import-csv/import-csv-base.scss b/ts/routes/import-csv/import-csv-base.scss similarity index 73% rename from ts/import-csv/import-csv-base.scss rename to ts/routes/import-csv/import-csv-base.scss index 91c0fc932..58cc5daa6 100644 --- a/ts/import-csv/import-csv-base.scss +++ b/ts/routes/import-csv/import-csv-base.scss @@ -1,6 +1,6 @@ -@use "sass/bootstrap-dark"; +@use "../lib/sass/bootstrap-dark"; -@import "sass/base"; +@import "../lib/sass/base"; @import "bootstrap/scss/alert"; @import "bootstrap/scss/buttons"; @@ -10,8 +10,8 @@ @import "bootstrap/scss/transitions"; @import "bootstrap/scss/modal"; @import "bootstrap/scss/carousel"; -@import "sass/bootstrap-forms"; -@import "sass/bootstrap-tooltip"; +@import "../lib/sass/bootstrap-forms"; +@import "../lib/sass/bootstrap-tooltip"; .night-mode { @include bootstrap-dark.night-mode; diff --git a/ts/import-csv/index.ts b/ts/routes/import-csv/index.ts similarity index 92% rename from ts/import-csv/index.ts rename to ts/routes/import-csv/index.ts index 65d61117c..743aa4e7e 100644 --- a/ts/import-csv/index.ts +++ b/ts/routes/import-csv/index.ts @@ -3,12 +3,13 @@ import "./import-csv-base.scss"; -import { getCsvMetadata, getDeckNames, getNotetypeNames } from "@tslib/backend"; +import { getCsvMetadata, getDeckNames, getNotetypeNames } from "@generated/backend"; import { ModuleName, setupI18n } from "@tslib/i18n"; import { checkNightMode } from "@tslib/nightmode"; -import { modalsKey } from "../components/context-keys"; -import ErrorPage from "../components/ErrorPage.svelte"; +import { modalsKey } from "$lib/components/context-keys"; +import ErrorPage from "$lib/components/ErrorPage.svelte"; + import ImportCsvPage from "./ImportCsvPage.svelte"; import { ImportCsvState } from "./lib"; diff --git a/ts/import-csv/lib.ts b/ts/routes/import-csv/lib.ts similarity index 94% rename from ts/import-csv/lib.ts rename to ts/routes/import-csv/lib.ts index b0e909cfd..8c1ff3783 100644 --- a/ts/import-csv/lib.ts +++ b/ts/routes/import-csv/lib.ts @@ -1,12 +1,12 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -import type { DeckNameId, DeckNames } from "@tslib/anki/decks_pb"; -import type { CsvMetadata, CsvMetadata_Delimiter, ImportResponse } from "@tslib/anki/import_export_pb"; -import { type CsvMetadata_MappedNotetype } from "@tslib/anki/import_export_pb"; -import type { NotetypeNameId, NotetypeNames } from "@tslib/anki/notetypes_pb"; -import { getCsvMetadata, getFieldNames, importCsv } from "@tslib/backend"; -import * as tr from "@tslib/ftl"; +import type { DeckNameId, DeckNames } from "@generated/anki/decks_pb"; +import type { CsvMetadata, CsvMetadata_Delimiter, ImportResponse } from "@generated/anki/import_export_pb"; +import { type CsvMetadata_MappedNotetype } from "@generated/anki/import_export_pb"; +import type { NotetypeNameId, NotetypeNames } from "@generated/anki/notetypes_pb"; +import { getCsvMetadata, getFieldNames, importCsv } from "@generated/backend"; +import * as tr from "@generated/ftl"; import { cloneDeep, isEqual, noop } from "lodash-es"; import type { Readable, Writable } from "svelte/store"; import { readable, writable } from "svelte/store"; diff --git a/ts/import-page/CloseButton.svelte b/ts/routes/import-page/CloseButton.svelte similarity index 87% rename from ts/import-page/CloseButton.svelte rename to ts/routes/import-page/CloseButton.svelte index a1a7f0c44..bd198fccb 100644 --- a/ts/import-page/CloseButton.svelte +++ b/ts/routes/import-page/CloseButton.svelte @@ -3,12 +3,12 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> + + diff --git a/ts/routes/import-page/[...path]/+page.ts b/ts/routes/import-page/[...path]/+page.ts new file mode 100644 index 000000000..b5a4c1243 --- /dev/null +++ b/ts/routes/import-page/[...path]/+page.ts @@ -0,0 +1,7 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +import type { PageLoad } from "./$types"; + +export const load = (async ({ params }) => { + return { path: params.path }; +}) satisfies PageLoad; diff --git a/ts/import-page/import-page-base.scss b/ts/routes/import-page/import-page-base.scss similarity index 60% rename from ts/import-page/import-page-base.scss rename to ts/routes/import-page/import-page-base.scss index b4d5d174e..fe96efcac 100644 --- a/ts/import-page/import-page-base.scss +++ b/ts/routes/import-page/import-page-base.scss @@ -1,8 +1,8 @@ -@use "sass/bootstrap-dark"; +@use "../lib/sass/bootstrap-dark"; -@import "sass/base"; +@import "../lib/sass/base"; -@import "sass/bootstrap-tooltip"; +@import "../lib/sass/bootstrap-tooltip"; @import "bootstrap/scss/buttons"; .night-mode { diff --git a/ts/import-page/index.ts b/ts/routes/import-page/index.ts similarity index 95% rename from ts/import-page/index.ts rename to ts/routes/import-page/index.ts index 9bbec1620..68e03ed9e 100644 --- a/ts/import-page/index.ts +++ b/ts/routes/import-page/index.ts @@ -3,7 +3,7 @@ import "./import-page-base.scss"; -import { importJsonFile, importJsonString } from "@tslib/backend"; +import { importJsonFile, importJsonString } from "@generated/backend"; import { ModuleName, setupI18n } from "@tslib/i18n"; import { checkNightMode } from "@tslib/nightmode"; diff --git a/ts/import-page/lib.ts b/ts/routes/import-page/lib.ts similarity index 91% rename from ts/import-page/lib.ts rename to ts/routes/import-page/lib.ts index e0017a6ad..d89da9336 100644 --- a/ts/import-page/lib.ts +++ b/ts/routes/import-page/lib.ts @@ -1,12 +1,13 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -import type { ImportResponse_Log, ImportResponse_Note } from "@tslib/anki/import_export_pb"; -import { CsvMetadata_DupeResolution } from "@tslib/anki/import_export_pb"; -import { searchInBrowser } from "@tslib/backend"; -import * as tr from "@tslib/ftl"; +import type { ImportResponse_Log, ImportResponse_Note } from "@generated/anki/import_export_pb"; +import { CsvMetadata_DupeResolution } from "@generated/anki/import_export_pb"; +import { searchInBrowser } from "@generated/backend"; +import * as tr from "@generated/ftl"; + +import { checkCircle, closeBox, newBox, updateIcon } from "$lib/components/icons"; -import { checkCircle, closeBox, newBox, updateIcon } from "./icons"; import type { LogQueue, NoteRow, SummarizedLogQueues } from "./types"; function getFirstFieldQueue(log: ImportResponse_Log): { diff --git a/ts/import-page/types.ts b/ts/routes/import-page/types.ts similarity index 90% rename from ts/import-page/types.ts rename to ts/routes/import-page/types.ts index 609124dc8..4276d65c4 100644 --- a/ts/import-page/types.ts +++ b/ts/routes/import-page/types.ts @@ -1,7 +1,7 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -import type { ImportResponse_Note } from "@tslib/anki/import_export_pb"; +import type { ImportResponse_Note } from "@generated/anki/import_export_pb"; export type LogQueue = { notes: ImportResponse_Note[]; diff --git a/ts/routes/tmp/+page.ts b/ts/routes/tmp/+page.ts new file mode 100644 index 000000000..185bba104 --- /dev/null +++ b/ts/routes/tmp/+page.ts @@ -0,0 +1,6 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +// this route pulls in code that's currently bundled separately, so that +// errors in it get caught by svelte-check +import * as _editor from "$lib/../editor"; +import * as _reviewer from "$lib/../reviewer"; diff --git a/ts/src/app.d.ts b/ts/src/app.d.ts new file mode 100644 index 000000000..c7c0ed1d2 --- /dev/null +++ b/ts/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/ts/src/app.html b/ts/src/app.html new file mode 100644 index 000000000..77a5ff52c --- /dev/null +++ b/ts/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/ts/svelte.config.js b/ts/svelte.config.js new file mode 100644 index 000000000..948fa290e --- /dev/null +++ b/ts/svelte.config.js @@ -0,0 +1,37 @@ +import adapter from "@sveltejs/adapter-static"; +import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; +import { dirname, join } from "path"; +import { fileURLToPath } from "url"; + +// This prevents errors being shown when opening VSCode on the root of the +// project, instead of the ts folder. +const tsFolder = dirname(fileURLToPath(import.meta.url)); + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + preprocess: vitePreprocess(), + + kit: { + adapter: adapter( + { pages: "../out/sveltekit", fallback: "index.html", precompress: false }, + ), + alias: { + "@tslib": join(tsFolder, "lib/tslib"), + "@generated": join(tsFolder, "../out/ts/lib/generated"), + }, + files: { + lib: join(tsFolder, "lib"), + routes: join(tsFolder, "routes"), + }, + // outside of out/; as things break when out/ is a symlink + outDir: join(tsFolder, ".svelte-kit"), + output: { preloadStrategy: "preload-mjs" }, + prerender: { + crawl: false, + entries: [], + }, + paths: {}, + }, +}; + +export default config; diff --git a/ts/sveltelib/tsconfig.json b/ts/sveltelib/tsconfig.json deleted file mode 100644 index 43917a08a..000000000 --- a/ts/sveltelib/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["*", "position/*"], - "references": [ - { - "path": "../lib" - } - ] -} diff --git a/ts/tag-editor/tag-options-button/icons.ts b/ts/tag-editor/tag-options-button/icons.ts deleted file mode 100644 index bcacaf056..000000000 --- a/ts/tag-editor/tag-options-button/icons.ts +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright: Ankitects Pty Ltd and contributors -// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html - -/// - -export { default as dotsIcon } from "@mdi/svg/svg/dots-vertical.svg"; -export { default as tagIcon } from "@mdi/svg/svg/tag-outline.svg"; -export { default as addTagIcon } from "@mdi/svg/svg/tag-plus-outline.svg"; diff --git a/ts/tag-editor/tsconfig.json b/ts/tag-editor/tsconfig.json deleted file mode 100644 index ea49cf6c2..000000000 --- a/ts/tag-editor/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["*", "tag-options-button/*"], - "references": [ - { "path": "../components" }, - { "path": "../domlib" }, - { "path": "../lib" }, - { "path": "../sveltelib" } - // { "path": "../editable" }, - ] -} diff --git a/ts/tools/markpure.ts b/ts/tools/markpure.ts index 8d7b30463..206017b7b 100644 --- a/ts/tools/markpure.ts +++ b/ts/tools/markpure.ts @@ -30,16 +30,10 @@ function adjustFiles() { for (const file of jsFiles) { const contents = fs.readFileSync(file, "utf8"); - // allow tree shaking on proto messages - let newContents = contents.replace( - /= proto3.make/g, - "= /* @__PURE__ */ proto3.make", - ); - // strip out typeName info, which appears to only be required for // certain JSON functionality (though this only saves a few hundred // bytes) - newContents = newContents.replace(typeRe, "$1(\"\","); + const newContents = contents.replace(typeRe, "$1(\"\","); if (contents != newContents) { fs.writeFileSync(file, newContents, "utf8"); diff --git a/ts/tsconfig.json b/ts/tsconfig.json index 49c060296..7ec382701 100644 --- a/ts/tsconfig.json +++ b/ts/tsconfig.json @@ -1,60 +1,14 @@ { - "include": [], - "exclude": [], - "references": [ - { "path": "components" }, - { "path": "congrats" }, - { "path": "deck-options" }, - { "path": "editable" }, - { "path": "editor" }, - { "path": "graphs" }, - { "path": "html-filter" }, - { "path": "reviewer" }, - { "path": "lib" }, - { "path": "mathjax" }, - { "path": "domlib" }, - { "path": "sveltelib" }, - { "path": "icons" } - ], + "extends": ["./.svelte-kit/tsconfig.json"], "compilerOptions": { - "declaration": true, - "isolatedModules": true, - "composite": false, - "target": "es2020", - "module": "es2020", - "lib": [ - "es2017", - "es2018", - "es2019", - "es2020", - "dom", - "dom.iterable" - ], - "outDir": "../out", - "rootDir": "..", - "rootDirs": [ - "..", - "../out" - ], - "baseUrl": ".", - "paths": { - "@tslib/*": ["lib/*", "../out/ts/lib/*"] - }, - "types": [], - "verbatimModuleSyntax": true, - "strict": true, - "noImplicitAny": false, - "strictNullChecks": true, - "strictFunctionTypes": true, - "strictBindCallApply": true, - "strictPropertyInitialization": true, - "noImplicitThis": true, - "alwaysStrict": true, - "moduleResolution": "node", - "allowSyntheticDefaultImports": true, + "allowJs": true, + "checkJs": true, "esModuleInterop": true, - "jsx": "react", - "noEmitHelpers": true, - "importHelpers": true + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "noImplicitAny": false } } diff --git a/ts/tsconfig_legacy.json b/ts/tsconfig_legacy.json new file mode 100644 index 000000000..99dbec72a --- /dev/null +++ b/ts/tsconfig_legacy.json @@ -0,0 +1,62 @@ +{ + "include": [], + "exclude": [], + "references": [ + { "path": "components" }, + { "path": "congrats" }, + { "path": "deck-options" }, + { "path": "editable" }, + { "path": "editor" }, + { "path": "graphs" }, + { "path": "html-filter" }, + { "path": "reviewer" }, + { "path": "lib" }, + { "path": "mathjax" }, + { "path": "domlib" }, + { "path": "sveltelib" }, + { "path": "icons" } + ], + "compilerOptions": { + "declaration": true, + "isolatedModules": true, + "composite": false, + "target": "es2020", + "module": "es2020", + "lib": [ + "es2017", + "es2018", + "es2019", + "es2020", + "dom", + "dom.iterable" + ], + "outDir": "../out", + "rootDir": "..", + "rootDirs": [ + "..", + "../out" + ], + "baseUrl": ".", + "paths": { + "@generated/*": ["../out/ts/lib/generated/*"], + "@tslib/*": ["lib/tslib/*"], + "$lib/*": ["lib/*"] + }, + "types": [], + "verbatimModuleSyntax": true, + "strict": true, + "noImplicitAny": false, + "strictNullChecks": true, + "strictFunctionTypes": true, + "strictBindCallApply": true, + "strictPropertyInitialization": true, + "noImplicitThis": true, + "alwaysStrict": true, + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "jsx": "react", + "noEmitHelpers": true, + "importHelpers": true + } +} diff --git a/ts/vite.config.ts b/ts/vite.config.ts new file mode 100644 index 000000000..1ec72e4f3 --- /dev/null +++ b/ts/vite.config.ts @@ -0,0 +1,50 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +import { sveltekit } from "@sveltejs/kit/vite"; +import { realpathSync } from "fs"; +import { defineConfig } from "vite"; + +const configure = (proxy: any, _options: any) => { + proxy.on("error", (err: any) => { + console.log("proxy error", err); + }); + proxy.on("proxyReq", (proxyReq: any, req: any) => { + console.log("Sending Request to the Target:", req.method, req.url); + }); + proxy.on("proxyRes", (proxyRes: any, req: any) => { + console.log("Received Response from the Target:", proxyRes.statusCode, req.url); + }); +}; + +export default defineConfig({ + plugins: [sveltekit()], + test: { + include: ["**/*.{test,spec}.{js,ts}"], + cache: { + // prevent vitest from creating ts/node_modules/.vitest + dir: "../node_modules/.vitest", + }, + }, + build: { + reportCompressedSize: false, + }, + server: { + fs: { + // Allow serving files project root and out dir + allow: [ + // realpathSync(".."), + // "/home/dae/Local/build/anki/node_modules", + realpathSync("../out"), + // realpathSync("../out/node_modules"), + ], + }, + proxy: { + "/_anki": { + target: "http://127.0.0.1:40000", + changeOrigin: true, + autoRewrite: true, + configure, + }, + }, + }, +}); diff --git a/yarn b/yarn new file mode 100755 index 000000000..97a0b7c7b --- /dev/null +++ b/yarn @@ -0,0 +1,7 @@ +#!/bin/bash +# Execute subcommand (eg 'yarn ...') + +set -e + +export PATH="./out/extracted/node/bin:$PATH" +./out/extracted/node/bin/yarn $* diff --git a/yarn.bat b/yarn.bat new file mode 100755 index 000000000..ccd4345e2 --- /dev/null +++ b/yarn.bat @@ -0,0 +1 @@ +call .\out\extracted\node\yarn %* diff --git a/yarn.lock b/yarn.lock index 020748fcf..e92efe98d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,7 +7,7 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.2.1": +"@ampproject/remapping@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== @@ -15,418 +15,258 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== +"@bufbuild/protobuf@1.8.0", "@bufbuild/protobuf@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-1.8.0.tgz#1c8651ea34adb8019b483e09de02aeeb1cd57d79" + integrity sha512-qR9FwI8QKIveDnUYutvfzbC21UZJJryYrLuZGjeZ/VGz+vXelUkK+xgkOHsvPEdYEdxtgUUq4313N8QtOehJ1Q== + +"@bufbuild/protobuf@^1.2.1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-1.4.2.tgz#dc4faf21264a47b71a15806616043cb006e80ac8" + integrity sha512-JyEH8Z+OD5Sc2opSg86qMHn1EM1Sa+zj/Tc0ovxdwk56ByVNONJSabuCUbLQp+eKN3rWNfrho0X+3SEqEPXIow== + +"@bufbuild/protoc-gen-es@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@bufbuild/protoc-gen-es/-/protoc-gen-es-1.8.0.tgz#b16cca884ccba23f1401104ca002028635a2b169" + integrity sha512-jnvBKwHq3o/iOgfKxaxn5Za7ay4oAs8KWgoHiDc9Fsb0g+/d1z+mHlHvmevOiCPcVZsnH6V3LImOJvGStPONpA== dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" + "@bufbuild/protobuf" "^1.8.0" + "@bufbuild/protoplugin" "1.8.0" -"@babel/compat-data@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" - integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== - -"@babel/core@^7.11.6", "@babel/core@^7.12.3": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" - integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== +"@bufbuild/protoplugin@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@bufbuild/protoplugin/-/protoplugin-1.8.0.tgz#0e60a79d195ad79d014c263ae9c57f64063d23a5" + integrity sha512-Pb89cTshW+I577qh27VvxGYvZEvQ3zJ8La1OfzPCKugP9d4A4P65WStkAY+aSCiDHk68m1/+mtBb6elfiLPuFg== dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.9" - "@babel/parser" "^7.23.9" - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.23.6", "@babel/generator@^7.7.2": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== - dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" - integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== - dependencies: - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" - integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" - integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/template@^7.22.15", "@babel/template@^7.23.9", "@babel/template@^7.3.3": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" - integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/traverse@^7.23.9", "@babel/traverse@^7.7.2": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" - integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.3.3": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" - integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@bufbuild/protobuf@1.7.2", "@bufbuild/protobuf@^1.2.1", "@bufbuild/protobuf@^1.7.2": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-1.7.2.tgz#1b3d6c66ebd987f7da7f1e3f0546cffaa87f8732" - integrity sha512-i5GE2Dk5ekdlK1TR7SugY4LWRrKSfb5T1Qn4unpIMbfxoeGKERKQ59HG3iYewacGD10SR7UzevfPnh6my4tNmQ== - -"@bufbuild/protoc-gen-es@^1.2.1": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@bufbuild/protoc-gen-es/-/protoc-gen-es-1.7.2.tgz#03d85a30338191c74fcee330a2644d35eb8c7240" - integrity sha512-yiRk/T+YGmpSVvIkybCjPt+QyM/pLWMO+MAiz6auvCsiAgfXfc5nFFosD4yBYXID55M6eIkgBcity1AoJ6I30A== - dependencies: - "@bufbuild/protobuf" "^1.7.2" - "@bufbuild/protoplugin" "1.7.2" - -"@bufbuild/protoplugin@1.7.2": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@bufbuild/protoplugin/-/protoplugin-1.7.2.tgz#3f5d7a75bf486d7c0956b73227e46c40216c191a" - integrity sha512-N3QtO8XWD4F4alMtASWtxBw6BWXp4aLz7rPBXH4KTULdjpUHnq46g15TsrG0/8szZw6pIklTO3lFe14dl6ZYdA== - dependencies: - "@bufbuild/protobuf" "1.7.2" + "@bufbuild/protobuf" "1.8.0" "@typescript/vfs" "^1.4.0" typescript "4.5.2" +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + "@esbuild/android-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + "@esbuild/android-arm@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + "@esbuild/android-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + "@esbuild/darwin-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + "@esbuild/darwin-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== + "@esbuild/freebsd-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + "@esbuild/freebsd-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + "@esbuild/linux-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + "@esbuild/linux-arm@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + "@esbuild/linux-ia32@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== + "@esbuild/linux-loong64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + "@esbuild/linux-mips64el@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + "@esbuild/linux-ppc64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + "@esbuild/linux-riscv64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + "@esbuild/linux-s390x@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + "@esbuild/linux-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + "@esbuild/netbsd-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + "@esbuild/openbsd-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + "@esbuild/sunos-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + "@esbuild/win32-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + "@esbuild/win32-ia32@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + "@esbuild/win32-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -515,219 +355,17 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" + "@sinclair/typebox" "^0.27.8" -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" - integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - slash "^3.0.0" - -"@jest/core@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7" - integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA== - dependencies: - "@jest/console" "^28.1.3" - "@jest/reporters" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^28.1.3" - jest-config "^28.1.3" - jest-haste-map "^28.1.3" - jest-message-util "^28.1.3" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-resolve-dependencies "^28.1.3" - jest-runner "^28.1.3" - jest-runtime "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - jest-watcher "^28.1.3" - micromatch "^4.0.4" - pretty-format "^28.1.3" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" - integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA== - dependencies: - "@jest/fake-timers" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - jest-mock "^28.1.3" - -"@jest/expect-utils@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" - integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== - dependencies: - jest-get-type "^28.0.2" - -"@jest/expect@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72" - integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw== - dependencies: - expect "^28.1.3" - jest-snapshot "^28.1.3" - -"@jest/fake-timers@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" - integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw== - dependencies: - "@jest/types" "^28.1.3" - "@sinonjs/fake-timers" "^9.1.2" - "@types/node" "*" - jest-message-util "^28.1.3" - jest-mock "^28.1.3" - jest-util "^28.1.3" - -"@jest/globals@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" - integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA== - dependencies: - "@jest/environment" "^28.1.3" - "@jest/expect" "^28.1.3" - "@jest/types" "^28.1.3" - -"@jest/reporters@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a" - integrity sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@jridgewell/trace-mapping" "^0.3.13" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - jest-worker "^28.1.3" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - terminal-link "^2.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" - integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== - dependencies: - "@sinclair/typebox" "^0.24.1" - -"@jest/source-map@^28.1.2": - version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" - integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww== - dependencies: - "@jridgewell/trace-mapping" "^0.3.13" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" - integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== - dependencies: - "@jest/console" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3" - integrity sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw== - dependencies: - "@jest/test-result" "^28.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - slash "^3.0.0" - -"@jest/transform@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" - integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^28.1.3" - "@jridgewell/trace-mapping" "^0.3.13" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.1" - -"@jest/types@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" - integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== - dependencies: - "@jest/schemas" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.4.tgz#9b18145d26cf33d08576cf4c7665b28554480ed7" - integrity sha512-Oud2QPM5dHviZNn4y/WhhYKSXksv+1xLEIsNrAbGcFzUN3ubqWRFT5gwPchNc5NuzILOU4tPBDTZ4VwhL8Y7cw== +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -748,10 +386,18 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.23" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.23.tgz#afc96847f3f07841477f303eed687707a5aacd80" - integrity sha512-9/4foRoUKp8s96tSkh8DlAAc5A0Ty8vLXld+l9gjKKY6ckwI8G15f0hskGmuLZu78ZlGa1vtsfOa+lnB4vG6Jg== +"@jridgewell/trace-mapping@^0.3.17": + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.22" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" + integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -799,73 +445,139 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@polka/url@^1.0.0-next.24": + version "1.0.0-next.24" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.24.tgz#58601079e11784d20f82d0585865bb42305c4df3" + integrity sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ== + "@popperjs/core@^2.11.8", "@popperjs/core@^2.9.2": version "2.11.8" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@sinclair/typebox@^0.24.1": - version "0.24.51" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" - integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== +"@rollup/rollup-android-arm-eabi@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz#66b8d9cb2b3a474d115500f9ebaf43e2126fe496" + integrity sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg== -"@sinonjs/commons@^1.7.0": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" - integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== - dependencies: - type-detect "4.0.8" +"@rollup/rollup-android-arm64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz#46327d5b86420d2307946bec1535fdf00356e47d" + integrity sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw== -"@sinonjs/fake-timers@^9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" - integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== - dependencies: - "@sinonjs/commons" "^1.7.0" +"@rollup/rollup-darwin-arm64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz#166987224d2f8b1e2fd28ee90c447d52271d5e90" + integrity sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw== + +"@rollup/rollup-darwin-x64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz#a2e6e096f74ccea6e2f174454c26aef6bcdd1274" + integrity sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog== + +"@rollup/rollup-linux-arm-gnueabihf@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz#09fcd4c55a2d6160c5865fec708a8e5287f30515" + integrity sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ== + +"@rollup/rollup-linux-arm64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz#19a3c0b6315c747ca9acf86e9b710cc2440f83c9" + integrity sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ== + +"@rollup/rollup-linux-arm64-musl@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz#94aaf95fdaf2ad9335983a4552759f98e6b2e850" + integrity sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ== + +"@rollup/rollup-linux-riscv64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz#160510e63f4b12618af4013bddf1761cf9fc9880" + integrity sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA== + +"@rollup/rollup-linux-x64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz#5ac5d068ce0726bd0a96ca260d5bd93721c0cb98" + integrity sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw== + +"@rollup/rollup-linux-x64-musl@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz#bafa759ab43e8eab9edf242a8259ffb4f2a57a5d" + integrity sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ== + +"@rollup/rollup-win32-arm64-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz#1cc3416682e5a20d8f088f26657e6e47f8db468e" + integrity sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA== + +"@rollup/rollup-win32-ia32-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz#7d2251e1aa5e8a1e47c86891fe4547a939503461" + integrity sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ== + +"@rollup/rollup-win32-x64-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz#2c1fb69e02a3f1506f52698cfdc3a8b6386df9a6" + integrity sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== "@sqltools/formatter@^1.2.2": version "1.2.5" resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.5.tgz#3abc203c79b8c3e90fd6c156a0c62d5403520e12" integrity sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw== +"@sveltejs/adapter-static@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sveltejs/adapter-static/-/adapter-static-3.0.1.tgz#64c36020435d7b1eacd362b2d027fefda5ec2e44" + integrity sha512-6lMvf7xYEJ+oGeR5L8DFJJrowkefTK6ZgA4JiMqoClMkKq0s6yvsd3FZfCFvX1fQ0tpCD7fkuRVHsnUVgsHyNg== + +"@sveltejs/kit@^2.4.1": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@sveltejs/kit/-/kit-2.5.0.tgz#5785b40ab00b6aa0758812c69a6a0d1c646d823b" + integrity sha512-1uyXvzC2Lu1FZa30T4y5jUAC21R309ZMRG0TPt+PPPbNUoDpy8zSmSNVWYaBWxYDqLGQ5oPNWvjvvF2IjJ1jmA== + dependencies: + "@types/cookie" "^0.6.0" + cookie "^0.6.0" + devalue "^4.3.2" + esm-env "^1.0.0" + import-meta-resolve "^4.0.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 "^2.0.4" + tiny-glob "^0.2.9" + +"@sveltejs/vite-plugin-svelte-inspector@^2.0.0-next.0 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.0.0.tgz#365afaa0dd63517838ce4686a3dc3982be348a9b" + integrity sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg== + dependencies: + debug "^4.3.4" + +"@sveltejs/vite-plugin-svelte@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.0.1.tgz#475d3496a2a1c7fb4ec6ee3a4d3f0af01fb052e1" + integrity sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA== + dependencies: + "@sveltejs/vite-plugin-svelte-inspector" "^2.0.0-next.0 || ^2.0.0" + debug "^4.3.4" + deepmerge "^4.3.1" + kleur "^4.1.5" + magic-string "^0.30.5" + svelte-hmr "^0.15.3" + vitefu "^0.2.5" + "@tootallnate/once@2": version "2.0.0" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== -"@types/babel__core@^7.1.14": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== - dependencies: - "@babel/types" "^7.20.7" - "@types/bootstrap@^5.0.12": version "5.2.10" resolved "https://registry.yarnpkg.com/@types/bootstrap/-/bootstrap-5.2.10.tgz#58506463bccc6602bc051487ad8d3a6458f94c6c" @@ -880,6 +592,11 @@ dependencies: "@types/tern" "*" +"@types/cookie@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5" + integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA== + "@types/d3-array@*": version "3.2.1" resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.1.tgz#1f6658e3d2006c4fceac53fde464166859f8b8c5" @@ -1095,50 +812,21 @@ resolved "https://registry.yarnpkg.com/@types/diff/-/diff-5.0.9.tgz#31977962175079c2048315febeb8fd5f520192c6" integrity sha512-RWVEhh/zGXpAVF/ZChwNnv7r4rvqzJ7lYNSmZSVTxjV0PBLf6Qu7RNg+SUtkpzxmiNkjCx0Xn2tPp7FIkshJwQ== -"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.1": +"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0", "@types/estree@^1.0.1": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/fabric@^5.3.7": + version "5.3.7" + resolved "https://registry.yarnpkg.com/@types/fabric/-/fabric-5.3.7.tgz#49c247141168d97d7ae7ca1936e0d4cbe38f2027" + integrity sha512-Fd2oN4zg/E6X+85HbmWSpswzcu3rvDfmwtvz1SH0j2av9OFHZDRrkLQ3K16nl6w+mSflrcTfmB719I7wXkfIsw== + "@types/geojson@*": version "7946.0.14" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.14.tgz#319b63ad6df705ee2a65a73ef042c8271e696613" integrity sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg== -"@types/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^27.0.2": - version "27.5.2" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c" - integrity sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA== - dependencies: - jest-matcher-utils "^27.0.0" - pretty-format "^27.0.0" - "@types/jquery@*", "@types/jquery@^3.5.0": version "3.5.29" resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.29.tgz#3c06a1f519cd5fc3a7a108971436c00685b5dcea" @@ -1153,15 +841,6 @@ dependencies: "@types/jquery" "*" -"@types/jsdom@^16.2.4": - version "16.2.15" - resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.15.tgz#6c09990ec43b054e49636cba4d11d54367fc90d6" - integrity sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ== - dependencies: - "@types/node" "*" - "@types/parse5" "^6.0.3" - "@types/tough-cookie" "*" - "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" @@ -1189,28 +868,11 @@ resolved "https://registry.yarnpkg.com/@types/marked/-/marked-5.0.2.tgz#ca6b0cd7a5c8799c8cd0963df0b3e1a9021dcdfa" integrity sha512-OucS4KMHhFzhz27KxmWg7J+kIYqyqoW5kdIEI319hqARQQUTqhao3M/F+uFnDXD0Rg72iDDZxZNxq5gvctmLlg== -"@types/node@*": - version "20.11.21" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.21.tgz#ad67e65652f7be15686e2df87a38076a81c5e9c5" - integrity sha512-/ySDLGscFPNasfqStUuWWPfL78jompfIoVzLJPVVAHBh6rpG68+pI2Gk+fNLeI8/f1yPYL4s46EleVIc20F1Ow== - dependencies: - undici-types "~5.26.4" - "@types/node@^16.10.2": version "16.18.84" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.84.tgz#6e9b24aeaa612de3e190917e90b85147841b7d1a" integrity sha512-mtn6ixzrUK5IMf6gyyMVUsm0TIeF3IYpUr3i0HHTuPJVbdZ6kc93poZ+wCkFNtxXoP/tyGrdVPOL6/WqGXjfXw== -"@types/parse5@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" - integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== - -"@types/prettier@^2.1.5": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== - "@types/pug@^2.0.6": version "2.0.10" resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.10.tgz#52f8dbd6113517aef901db20b4f3fca543b88c1f" @@ -1226,11 +888,6 @@ resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.8.tgz#518609aefb797da19bf222feb199e8f653ff7627" integrity sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg== -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - "@types/tern@*": version "0.23.9" resolved "https://registry.yarnpkg.com/@types/tern/-/tern-0.23.9.tgz#6f6093a4a9af3e6bb8dde528e024924d196b367c" @@ -1238,23 +895,6 @@ dependencies: "@types/estree" "*" -"@types/tough-cookie@*": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" - integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - dependencies: - "@types/yargs-parser" "*" - "@typescript-eslint/eslint-plugin@^5.60.1": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" @@ -1351,6 +991,50 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== +"@vitest/expect@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.2.1.tgz#574c0ac138a9e34522da202ea4c48a3adfe7240e" + integrity sha512-/bqGXcHfyKgFWYwIgFr1QYDaR9e64pRKxgBNWNXPefPFRhgm+K3+a/dS0cUGEreWngets3dlr8w8SBRw2fCfFQ== + dependencies: + "@vitest/spy" "1.2.1" + "@vitest/utils" "1.2.1" + chai "^4.3.10" + +"@vitest/runner@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-1.2.1.tgz#13e65b47eb04e572b99757e55f063f8f025822b2" + integrity sha512-zc2dP5LQpzNzbpaBt7OeYAvmIsRS1KpZQw4G3WM/yqSV1cQKNKwLGmnm79GyZZjMhQGlRcSFMImLjZaUQvNVZQ== + dependencies: + "@vitest/utils" "1.2.1" + p-limit "^5.0.0" + pathe "^1.1.1" + +"@vitest/snapshot@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-1.2.1.tgz#bd2dcae2322b90bab1660421ff9dae73fc84ecc0" + integrity sha512-Tmp/IcYEemKaqAYCS08sh0vORLJkMr0NRV76Gl8sHGxXT5151cITJCET20063wk0Yr/1koQ6dnmP6eEqezmd/Q== + dependencies: + magic-string "^0.30.5" + pathe "^1.1.1" + pretty-format "^29.7.0" + +"@vitest/spy@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.2.1.tgz#2777444890de9d32e55e600e34a13b2074cabc18" + integrity sha512-vG3a/b7INKH7L49Lbp0IWrG6sw9j4waWAucwnksPB1r1FTJgV7nkBByd9ufzu6VWya/QTvQW4V9FShZbZIB2UQ== + dependencies: + tinyspy "^2.2.0" + +"@vitest/utils@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.2.1.tgz#ad798cb13ec9e9e97b13be65d135e9e8e3c586aa" + integrity sha512-bsH6WVZYe/J2v3+81M5LDU8kW76xWObKIURpPrOXm2pjBniBu2MERI/XP60GpS4PHU3jyK50LUutOwrx4CyHUg== + dependencies: + diff-sequences "^29.6.3" + estree-walker "^3.0.3" + loupe "^2.3.7" + pretty-format "^29.7.0" + abab@^2.0.5, abab@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -1379,16 +1063,26 @@ acorn-walk@^7.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +acorn-walk@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.10.0, acorn@^8.5.0, acorn@^8.9.0: +acorn@^8.10.0, acorn@^8.11.3, acorn@^8.9.0: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== +acorn@^8.5.0: + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== + agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -1406,13 +1100,6 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -1423,13 +1110,6 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -1447,7 +1127,7 @@ ansi-styles@^6.1.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -1455,13 +1135,6 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -1474,7 +1147,7 @@ aria-query@^5.3.0: dependencies: dequal "^2.0.3" -array-buffer-byte-length@^1.0.1: +array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== @@ -1545,7 +1218,7 @@ array.prototype.flatmap@^1.3.2: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -arraybuffer.prototype.slice@^1.0.3: +arraybuffer.prototype.slice@^1.0.2, arraybuffer.prototype.slice@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== @@ -1559,6 +1232,11 @@ arraybuffer.prototype.slice@^1.0.3: is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + ast-metadata-inferer@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/ast-metadata-inferer/-/ast-metadata-inferer-0.8.0.tgz#0f94c3425e310d8da45823ab2161142e3f134343" @@ -1571,7 +1249,7 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -available-typed-arrays@^1.0.6, available-typed-arrays@^1.0.7: +available-typed-arrays@^1.0.5, available-typed-arrays@^1.0.6, available-typed-arrays@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== @@ -1585,66 +1263,6 @@ axobject-query@^4.0.0: dependencies: dequal "^2.0.3" -babel-jest@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" - integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== - dependencies: - "@jest/transform" "^28.1.3" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^28.1.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" - integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" - integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A== - dependencies: - babel-plugin-jest-hoist "^28.1.3" - babel-preset-current-node-syntax "^1.0.0" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1692,23 +1310,16 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.21.10, browserslist@^4.22.2: - version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" - integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== +browserslist@^4.21.10: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001587" - electron-to-chromium "^1.4.668" - node-releases "^2.0.14" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" update-browserslist-db "^1.0.13" -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - buffer-crc32@^0.2.5, buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -1719,7 +1330,21 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: +cac@^6.7.14: + version "6.7.14" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + +call-bind@^1.0.2, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + +call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== @@ -1735,17 +1360,12 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +caniuse-lite@^1.0.30001431, caniuse-lite@^1.0.30001524: + version "1.0.30001564" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz#eaa8bbc58c0cbccdcb7b41186df39dd2ba591889" + integrity sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg== -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001431, caniuse-lite@^1.0.30001524, caniuse-lite@^1.0.30001587: +caniuse-lite@^1.0.30001541: version "1.0.30001591" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001591.tgz#16745e50263edc9f395895a7cd468b9f3767cf33" integrity sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ== @@ -1755,6 +1375,19 @@ canvas@^2.8.0, "canvas@npm:empty-npm-package": resolved "https://registry.yarnpkg.com/empty-npm-package/-/empty-npm-package-1.0.0.tgz#fda29eb6de5efa391f73d578697853af55f6793a" integrity sha512-q4Mq/+XO7UNDdMiPpR/LIBIW1Zl4V0Z6UT9aKGqIAnBCtCb3lvZJM1KbDbdzdC8fKflwflModfjR29Nt0EpcwA== +chai@^4.3.10: + version "4.4.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== + 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.0.8" + chalk@4.1.2, chalk@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -1763,19 +1396,12 @@ chalk@4.1.2, chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + get-func-name "^2.0.2" "chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1: version "3.6.0" @@ -1792,30 +1418,6 @@ char-regex@^1.0.2: optionalDependencies: fsevents "~2.3.2" -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -cjs-module-lexer@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" - integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - code-red@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/code-red/-/code-red-1.0.4.tgz#59ba5c9d1d320a4ef795bc10a28bd42bfebe3e35" @@ -1832,18 +1434,6 @@ codemirror@^5.63.1: resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.16.tgz#efc0661be6bf4988a6a1c2fe6893294638cdb334" integrity sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg== -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -1851,11 +1441,6 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" @@ -1878,15 +1463,10 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -convert-source-map@^1.4.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +cookie@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== cross-env@^7.0.2: version "7.0.3" @@ -2187,7 +1767,7 @@ data-urls@^3.0.1: whatwg-mimetype "^3.0.0" whatwg-url "^11.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -2206,17 +1786,19 @@ decimal.js@^10.3.1: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +deep-eql@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + dependencies: + type-detect "^4.0.0" deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^4.2.2: +deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -2261,20 +1843,15 @@ detect-indent@^6.1.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== +devalue@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/devalue/-/devalue-4.3.2.tgz#cc44e4cf3872ac5a78229fbce3b77e57032727b5" + integrity sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg== -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - -diff-sequences@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" - integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== diff@^5.0.0: version "5.2.0" @@ -2322,15 +1899,10 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -electron-to-chromium@^1.4.668: - version "1.4.685" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.685.tgz#3ce988e4dfbb3aa984840394b1d7064c01ad74c1" - integrity sha512-yDYeobbTEe4TNooEzOQO6xFqg9XnAkVy2Lod1C1B2it8u47JNLYvl9nLDWBamqUakWB8Jc1hhS1uHUNYTNQdfw== - -emittery@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" - integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== +electron-to-chromium@^1.4.535: + version "1.4.690" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.690.tgz#dd5145d45c49c08a9a6f7454127e660bdf9a3fa7" + integrity sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA== emoji-regex@^8.0.0: version "8.0.0" @@ -2342,14 +1914,52 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: - is-arrayish "^0.2.1" + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.13" -es-abstract@^1.22.1, es-abstract@^1.22.3: +es-abstract@^1.22.3: version "1.22.4" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.4.tgz#26eb2e7538c3271141f5754d31aabfdb215f27bf" integrity sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg== @@ -2413,7 +2023,7 @@ es-errors@^1.0.0, es-errors@^1.2.1, es-errors@^1.3.0: resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-set-tostringtag@^2.0.2: +es-set-tostringtag@^2.0.1, es-set-tostringtag@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== @@ -2484,21 +2094,40 @@ esbuild@^0.18.10, esbuild@~0.18.20: "@esbuild/win32-ia32" "0.18.20" "@esbuild/win32-x64" "0.18.20" +esbuild@^0.19.3: + version "0.19.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" + escalade@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" @@ -2660,6 +2289,11 @@ eslint@^8.44.0: strip-ansi "^6.0.1" text-table "^0.2.0" +esm-env@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esm-env/-/esm-env-1.0.0.tgz#b124b40b180711690a4cb9b00d16573391950413" + integrity sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA== + espree@^9.0.0, espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" @@ -2669,7 +2303,7 @@ espree@^9.0.0, espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -2710,36 +2344,20 @@ esutils@^2.0.2, esutils@^2.0.3: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== +execa@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== dependencies: cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" + get-stream "^8.0.1" + human-signals "^5.0.0" + is-stream "^3.0.0" merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" - integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== - dependencies: - "@jest/expect-utils" "^28.1.3" - jest-get-type "^28.0.2" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^4.1.0" + strip-final-newline "^3.0.0" fabric@^5.3.0: version "5.3.0" @@ -2782,13 +2400,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" @@ -2810,14 +2421,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -2869,7 +2472,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: +fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -2894,17 +2497,22 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" -get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: +get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== @@ -2915,17 +2523,12 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.2: +get-symbol-description@^1.0.0, get-symbol-description@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== @@ -2966,7 +2569,7 @@ glob@^10.2.2: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" -glob@^7.1.3, glob@^7.1.4: +glob@^7.1.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -2978,11 +2581,6 @@ glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - globals@^13.19.0: version "13.24.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" @@ -2997,6 +2595,11 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" +globalyzer@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" + integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== + globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -3009,6 +2612,11 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +globrex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -3016,7 +2624,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.3: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -3036,11 +2644,6 @@ has-bigints@^1.0.1, has-bigints@^1.0.2: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -3091,11 +2694,6 @@ html-encoding-sniffer@^3.0.0: dependencies: whatwg-encoding "^2.0.0" -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" @@ -3113,10 +2711,10 @@ https-proxy-agent@=5.0.1, https-proxy-agent@^5.0.0: agent-base "6" debug "4" -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== iconv-lite@0.6, iconv-lite@0.6.3: version "0.6.3" @@ -3143,13 +2741,10 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" +import-meta-resolve@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz#0b1195915689f60ab00f830af0f15cc841e8919e" + integrity sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA== imurmurhash@^0.1.4: version "0.1.4" @@ -3169,7 +2764,7 @@ inherits@2: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -internal-slot@^1.0.7: +internal-slot@^1.0.5, internal-slot@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== @@ -3188,7 +2783,7 @@ intl-pluralrules@^2.0.0: resolved "https://registry.yarnpkg.com/intl-pluralrules/-/intl-pluralrules-2.0.1.tgz#de16c3df1e09437635829725e88ea70c9ad79569" integrity sha512-astxTLzIdXPeN0K9Rumi6LfMpm3rvNO0iJE+h/k8Kr/is+wPbRe4ikyDjlLr6VTh/mEfNv8RjN+gu3KwDiuhqg== -is-array-buffer@^3.0.4: +is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== @@ -3196,11 +2791,6 @@ is-array-buffer@^3.0.4: call-bind "^1.0.2" get-intrinsic "^1.2.1" -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -3252,11 +2842,6 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -3313,10 +2898,10 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.7" -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" @@ -3332,7 +2917,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.13: +is-typed-array@^1.1.12, is-typed-array@^1.1.13: version "1.1.13" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== @@ -3356,48 +2941,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" - integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - jackspeak@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" @@ -3407,393 +2950,6 @@ jackspeak@^2.3.5: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jest-changed-files@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" - integrity sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA== - dependencies: - execa "^5.0.0" - p-limit "^3.1.0" - -jest-circus@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4" - integrity sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow== - dependencies: - "@jest/environment" "^28.1.3" - "@jest/expect" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - is-generator-fn "^2.0.0" - jest-each "^28.1.3" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-runtime "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" - p-limit "^3.1.0" - pretty-format "^28.1.3" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^28.0.0-alpha.5: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2" - integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ== - dependencies: - "@jest/core" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - import-local "^3.0.2" - jest-config "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - prompts "^2.0.1" - yargs "^17.3.1" - -jest-config@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.3.tgz#e315e1f73df3cac31447eed8b8740a477392ec60" - integrity sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^28.1.3" - "@jest/types" "^28.1.3" - babel-jest "^28.1.3" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^28.1.3" - jest-environment-node "^28.1.3" - jest-get-type "^28.0.2" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-runner "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^28.1.3" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-diff@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" - integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== - dependencies: - chalk "^4.0.0" - diff-sequences "^28.1.1" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - -jest-docblock@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" - integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA== - dependencies: - detect-newline "^3.0.0" - -jest-each@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" - integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g== - dependencies: - "@jest/types" "^28.1.3" - chalk "^4.0.0" - jest-get-type "^28.0.2" - jest-util "^28.1.3" - pretty-format "^28.1.3" - -jest-environment-jsdom@^28.0.0-alpha.5: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz#2d4e5d61b7f1d94c3bddfbb21f0308ee506c09fb" - integrity sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg== - dependencies: - "@jest/environment" "^28.1.3" - "@jest/fake-timers" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/jsdom" "^16.2.4" - "@types/node" "*" - jest-mock "^28.1.3" - jest-util "^28.1.3" - jsdom "^19.0.0" - -jest-environment-node@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5" - integrity sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A== - dependencies: - "@jest/environment" "^28.1.3" - "@jest/fake-timers" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - jest-mock "^28.1.3" - jest-util "^28.1.3" - -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - -jest-get-type@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" - integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== - -jest-haste-map@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" - integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== - dependencies: - "@jest/types" "^28.1.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" - jest-worker "^28.1.3" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d" - integrity sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA== - dependencies: - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - -jest-matcher-utils@^27.0.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== - dependencies: - chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-matcher-utils@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" - integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== - dependencies: - chalk "^4.0.0" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - -jest-message-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" - integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^28.1.3" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" - integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" - integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== - -jest-resolve-dependencies@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz#8c65d7583460df7275c6ea2791901fa975c1fe66" - integrity sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA== - dependencies: - jest-regex-util "^28.0.2" - jest-snapshot "^28.1.3" - -jest-resolve@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.3.tgz#cfb36100341ddbb061ec781426b3c31eb51aa0a8" - integrity sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-pnp-resolver "^1.2.2" - jest-util "^28.1.3" - jest-validate "^28.1.3" - resolve "^1.20.0" - resolve.exports "^1.1.0" - slash "^3.0.0" - -jest-runner@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.3.tgz#5eee25febd730b4713a2cdfd76bdd5557840f9a1" - integrity sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA== - dependencies: - "@jest/console" "^28.1.3" - "@jest/environment" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.10.2" - graceful-fs "^4.2.9" - jest-docblock "^28.1.1" - jest-environment-node "^28.1.3" - jest-haste-map "^28.1.3" - jest-leak-detector "^28.1.3" - jest-message-util "^28.1.3" - jest-resolve "^28.1.3" - jest-runtime "^28.1.3" - jest-util "^28.1.3" - jest-watcher "^28.1.3" - jest-worker "^28.1.3" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.3.tgz#a57643458235aa53e8ec7821949e728960d0605f" - integrity sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw== - dependencies: - "@jest/environment" "^28.1.3" - "@jest/fake-timers" "^28.1.3" - "@jest/globals" "^28.1.3" - "@jest/source-map" "^28.1.2" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - execa "^5.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-message-util "^28.1.3" - jest-mock "^28.1.3" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.3.tgz#17467b3ab8ddb81e2f605db05583d69388fc0668" - integrity sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/babel__traverse" "^7.0.6" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^28.1.3" - graceful-fs "^4.2.9" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - jest-haste-map "^28.1.3" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - natural-compare "^1.4.0" - pretty-format "^28.1.3" - semver "^7.3.5" - -jest-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" - integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" - integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA== - dependencies: - "@jest/types" "^28.1.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^28.0.2" - leven "^3.1.0" - pretty-format "^28.1.3" - -jest-watcher@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" - integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== - dependencies: - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.10.2" - jest-util "^28.1.3" - string-length "^4.0.1" - -jest-worker@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" - integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jquery-ui-dist@^1.12.1: version "1.13.2" resolved "https://registry.yarnpkg.com/jquery-ui-dist/-/jquery-ui-dist-1.13.2.tgz#899fbb3c6210de19ace10657cf844a3b97f3be70" @@ -3806,19 +2962,6 @@ jquery-ui-dist@^1.12.1: resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" @@ -3859,21 +3002,11 @@ jsdom@^19.0.0: ws "^8.2.3" xml-name-validator "^4.0.0" -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - json-parse-even-better-errors@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz#02bb29fb5da90b5444581749c22cedd3597c6cb0" @@ -3896,10 +3029,10 @@ json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonc-parser@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== keyv@^4.5.3: version "4.5.4" @@ -3908,21 +3041,16 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +kleur@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== known-css-properties@^0.29.0: version "0.29.0" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.29.0.tgz#e8ba024fb03886f23cb882e806929f32d814158f" integrity sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ== -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -3953,23 +3081,19 @@ lilconfig@^2.0.5: resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +local-pkg@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c" + integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg== + dependencies: + mlly "^1.4.2" + pkg-types "^1.0.3" locate-character@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-character/-/locate-character-3.0.0.tgz#0305c5b8744f61028ef5d01f444009e00779f974" integrity sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA== -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -3997,12 +3121,12 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== +loupe@^2.3.6, loupe@^2.3.7: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== dependencies: - yallist "^3.0.2" + get-func-name "^2.0.1" lru-cache@^6.0.0: version "6.0.0" @@ -4022,26 +3146,12 @@ lru-cache@^7.5.1: integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== magic-string@^0.30.4, magic-string@^0.30.5: - version "0.30.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.7.tgz#0cecd0527d473298679da95a2d7aeb8c64048505" - integrity sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA== + version "0.30.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - marked@^5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/marked/-/marked-5.1.2.tgz#62b5ccfc75adf72ca3b64b2879b551d89e77677f" @@ -4087,17 +3197,17 @@ mime-types@^2.1.12: dependencies: mime-db "1.52.0" -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -4133,11 +3243,26 @@ mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mlly@^1.2.0, mlly@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.5.0.tgz#8428a4617d54cc083d3009030ac79739a0e5447a" + integrity sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ== + dependencies: + acorn "^8.11.3" + pathe "^1.1.2" + pkg-types "^1.0.3" + ufo "^1.3.2" + mri@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== +mrmime@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" + integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -4163,12 +3288,7 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.14: +node-releases@^2.0.13: version "2.0.14" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== @@ -4200,12 +3320,12 @@ npm-normalize-package-bin@^3.0.0: resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== +npm-run-path@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.2.0.tgz#224cdd22c755560253dd71b83a1ef2f758b2e955" + integrity sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg== dependencies: - path-key "^3.0.0" + path-key "^4.0.0" nwsapi@^2.2.0: version "2.2.7" @@ -4222,7 +3342,7 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.5: +object.assign@^4.1.4, object.assign@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== @@ -4268,12 +3388,12 @@ once@^1.3.0: dependencies: wrappy "1" -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== dependencies: - mimic-fn "^2.1.0" + mimic-fn "^4.0.0" optionator@^0.9.3: version "0.9.3" @@ -4287,26 +3407,19 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: +p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== +p-limit@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-5.0.0.tgz#6946d5b7140b649b7a33a027d89b4c625b3a5985" + integrity sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ== dependencies: - p-limit "^2.2.0" + yocto-queue "^1.0.0" p-locate@^5.0.0: version "5.0.0" @@ -4315,11 +3428,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -4327,16 +3435,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - 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" - parse5@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" @@ -4352,11 +3450,16 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-key@^3.0.0, path-key@^3.1.0: +path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -4375,6 +3478,16 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" + integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -4394,22 +3507,19 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pirates@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== +pkg-types@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" + integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== dependencies: - find-up "^4.0.0" + jsonc-parser "^3.2.0" + mlly "^1.2.0" + pathe "^1.1.0" possible-typed-array-names@^1.0.0: version "1.0.0" @@ -4451,6 +3561,15 @@ postcss@^8.4.29, postcss@^8.4.5: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.32: + version "8.4.33" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" + integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -4466,33 +3585,15 @@ prettier@^2.4.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -pretty-format@^27.0.0, pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-format@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" - integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== - dependencies: - "@jest/schemas" "^28.1.3" - ansi-regex "^5.0.1" + "@jest/schemas" "^29.6.3" ansi-styles "^5.0.0" react-is "^18.0.0" -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - psl@^1.1.33: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" @@ -4513,11 +3614,6 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - react-is@^18.0.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" @@ -4553,7 +3649,7 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -regexp.prototype.flags@^1.5.2: +regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== @@ -4563,44 +3659,22 @@ regexp.prototype.flags@^1.5.2: es-errors "^1.3.0" set-function-name "^2.0.1" -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - resolve-pkg-maps@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== -resolve.exports@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" - integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== - -resolve@^1.20.0, resolve@^1.22.4, resolve@^1.22.6: +resolve@^1.22.4, resolve@^1.22.6: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -4621,7 +3695,7 @@ rimraf@^2.5.2: dependencies: glob "^7.1.3" -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -4633,6 +3707,28 @@ robust-predicates@^3.0.2: resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== +rollup@^4.2.0: + version "4.9.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.9.6.tgz#4515facb0318ecca254a2ee1315e22e09efc50a0" + integrity sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.9.6" + "@rollup/rollup-android-arm64" "4.9.6" + "@rollup/rollup-darwin-arm64" "4.9.6" + "@rollup/rollup-darwin-x64" "4.9.6" + "@rollup/rollup-linux-arm-gnueabihf" "4.9.6" + "@rollup/rollup-linux-arm64-gnu" "4.9.6" + "@rollup/rollup-linux-arm64-musl" "4.9.6" + "@rollup/rollup-linux-riscv64-gnu" "4.9.6" + "@rollup/rollup-linux-x64-gnu" "4.9.6" + "@rollup/rollup-linux-x64-musl" "4.9.6" + "@rollup/rollup-win32-arm64-msvc" "4.9.6" + "@rollup/rollup-win32-ia32-msvc" "4.9.6" + "@rollup/rollup-win32-x64-msvc" "4.9.6" + fsevents "~2.3.2" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -4645,14 +3741,14 @@ rw@1: resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== -sade@^1.7.4: +sade@^1.7.4, sade@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== dependencies: mri "^1.1.0" -safe-array-concat@^1.1.0: +safe-array-concat@^1.0.1, safe-array-concat@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== @@ -4662,7 +3758,7 @@ safe-array-concat@^1.1.0: has-symbols "^1.0.3" isarray "^2.0.5" -safe-regex-test@^1.0.3: +safe-regex-test@^1.0.0, safe-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== @@ -4709,12 +3805,17 @@ saxes@^5.0.1: dependencies: lru-cache "^6.0.0" -semver@^6.3.0, semver@^6.3.1: +semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -set-function-length@^1.2.1: +set-cookie-parser@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51" + integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ== + +set-function-length@^1.1.1, set-function-length@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== @@ -4758,20 +3859,24 @@ side-channel@^1.0.4: get-intrinsic "^1.2.4" object-inspect "^1.13.1" -signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +siginfo@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" + integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== -signal-exit@^4.0.1: +signal-exit@^4.0.1, signal-exit@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== +sirv@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" + integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== + dependencies: + "@polka/url" "^1.0.0-next.24" + mrmime "^2.0.0" + totalist "^3.0.0" slash@^3.0.0: version "3.0.0" @@ -4798,14 +3903,6 @@ sorcery@^0.11.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-support@^0.5.21: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -4814,7 +3911,7 @@ source-map-support@^0.5.21: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -4868,27 +3965,18 @@ spdx-satisfies@^5.0.1: spdx-expression-parse "^3.0.0" spdx-ranges "^2.0.0" -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +stackback@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" + integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" +std-env@^3.5.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" + integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: + name string-width-cjs version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -4952,15 +4040,10 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== strip-indent@^3.0.0: version "3.0.0" @@ -4974,35 +4057,20 @@ strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== +strip-literal@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-1.3.0.tgz#db3942c2ec1699e6836ad230090b84bb458e3a07" + integrity sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg== dependencies: - has-flag "^3.0.0" + acorn "^8.10.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" - integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -5033,6 +4101,11 @@ svelte-check@^3.4.4: postcss "^8.4.29" postcss-scss "^4.0.8" +svelte-hmr@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.15.3.tgz#df54ccde9be3f091bf5f18fc4ef7b8eb6405fbe6" + integrity sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ== + svelte-preprocess-esbuild@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/svelte-preprocess-esbuild/-/svelte-preprocess-esbuild-3.0.1.tgz#1f31c7a46f56d4c60dde3ec5fe72f2ddf40ad700" @@ -5050,9 +4123,9 @@ svelte-preprocess@^5.0.4, svelte-preprocess@^5.1.0: strip-indent "^3.0.0" svelte@^4.0.1: - version "4.2.12" - resolved "https://registry.yarnpkg.com/svelte/-/svelte-4.2.12.tgz#13d98d2274d24d3ad216c8fdc801511171c70bb1" - integrity sha512-d8+wsh5TfPwqVzbm4/HCXC783/KPHV60NvwitJnyTA5lWn1elhXMNWhXGCJ7PwPa8qFUnyJNIyuIRt2mT0WMug== + version "4.2.9" + resolved "https://registry.yarnpkg.com/svelte/-/svelte-4.2.9.tgz#ece982ccc5b700c27e85cdf130c0e343c195fab5" + integrity sha512-hsoB/WZGEPFXeRRLPhPrbRz67PhP6sqYgvwcAs+gWdSQSvNDw+/lTeUJSWe5h2xC97Fz/8QxAOqItwBzNJPU8w== dependencies: "@ampproject/remapping" "^2.2.1" "@jridgewell/sourcemap-codec" "^1.4.15" @@ -5074,37 +4147,33 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== +tiny-glob@^0.2.9: + version "0.2.9" + resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" + integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== + dependencies: + globalyzer "0.1.0" + globrex "^0.1.2" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== +tinybench@^2.5.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.6.0.tgz#1423284ee22de07c91b3752c048d2764714b341b" + integrity sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA== + +tinypool@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.8.2.tgz#84013b03dc69dacb322563a475d4c0a9be00f82a" + integrity sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ== + +tinyspy@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.0.tgz#9dc04b072746520b432f77ea2c2d17933de5d6ce" + integrity sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg== to-regex-range@^5.0.1: version "5.0.1" @@ -5113,6 +4182,11 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +totalist@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + tough-cookie@^4.0.0: version "4.1.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" @@ -5180,7 +4254,7 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-detect@4.0.8: +type-detect@^4.0.0, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== @@ -5190,12 +4264,7 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -typed-array-buffer@^1.0.1: +typed-array-buffer@^1.0.0, typed-array-buffer@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== @@ -5249,6 +4318,11 @@ typescript@^5.0.3, typescript@^5.0.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== +ufo@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.2.tgz#c7d719d0628a1c80c006d2240e0d169f6e3c0496" + integrity sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA== + unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -5259,11 +4333,6 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - universalify@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" @@ -5297,15 +4366,6 @@ util-deprecate@^1.0.2: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -v8-to-istanbul@^9.0.1: - version "9.2.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" - integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -5314,6 +4374,60 @@ validate-npm-package-license@^3.0.4: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +vite-node@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-1.2.1.tgz#bca96ae91b2b1ee9a7aa73685908362d70ce26a8" + integrity sha512-fNzHmQUSOY+y30naohBvSW7pPn/xn3Ib/uqm+5wAJQJiqQsU0NBR78XdRJb04l4bOFKjpTWld0XAfkKlrDbySg== + dependencies: + cac "^6.7.14" + debug "^4.3.4" + pathe "^1.1.1" + picocolors "^1.0.0" + vite "^5.0.0" + +vite@^5.0.0, vite@^5.0.12: + version "5.0.12" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.12.tgz#8a2ffd4da36c132aec4adafe05d7adde38333c47" + integrity sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w== + dependencies: + esbuild "^0.19.3" + postcss "^8.4.32" + rollup "^4.2.0" + optionalDependencies: + fsevents "~2.3.3" + +vitefu@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/vitefu/-/vitefu-0.2.5.tgz#c1b93c377fbdd3e5ddd69840ea3aa70b40d90969" + integrity sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q== + +vitest@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-1.2.1.tgz#9afb705826a2c6260a71b625d28b49117833dce6" + integrity sha512-TRph8N8rnSDa5M2wKWJCMnztCZS9cDcgVTQ6tsTFTG/odHJ4l5yNVqvbeDJYJRZ6is3uxaEpFs8LL6QM+YFSdA== + dependencies: + "@vitest/expect" "1.2.1" + "@vitest/runner" "1.2.1" + "@vitest/snapshot" "1.2.1" + "@vitest/spy" "1.2.1" + "@vitest/utils" "1.2.1" + acorn-walk "^8.3.2" + cac "^6.7.14" + chai "^4.3.10" + debug "^4.3.4" + execa "^8.0.1" + local-pkg "^0.5.0" + magic-string "^0.30.5" + pathe "^1.1.1" + picocolors "^1.0.0" + std-env "^3.5.0" + strip-literal "^1.3.0" + tinybench "^2.5.1" + tinypool "^0.8.1" + vite "^5.0.0" + vite-node "1.2.1" + why-is-node-running "^2.2.2" + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -5328,13 +4442,6 @@ w3c-xmlserializer@^3.0.0: dependencies: xml-name-validator "^4.0.0" -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - webidl-conversions@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" @@ -5379,7 +4486,7 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-typed-array@^1.1.14: +which-typed-array@^1.1.13, which-typed-array@^1.1.14: version "1.1.14" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06" integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg== @@ -5397,7 +4504,15 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +why-is-node-running@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e" + integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA== + dependencies: + siginfo "^2.0.0" + stackback "0.0.2" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -5420,14 +4535,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - ws@^8.2.3: version "8.16.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" @@ -5443,16 +4550,6 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" @@ -5463,24 +4560,6 @@ yaml@^1.10.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.3.1: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - yauzl@=2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" @@ -5493,3 +4572,8 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yocto-queue@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" + integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==