From 2af833aee1e86946dd6e34c64533895ed0766aff Mon Sep 17 00:00:00 2001 From: moklick Date: Wed, 1 Feb 2023 09:41:09 +0100 Subject: [PATCH] feat(packages): add svelte version --- packages/svelte/.eslintignore | 13 + packages/svelte/.eslintrc.cjs | 20 + packages/svelte/.gitignore | 10 + packages/svelte/.npmrc | 1 + packages/svelte/.prettierignore | 13 + packages/svelte/.prettierrc | 9 + packages/svelte/README.md | 38 + packages/svelte/package.json | 44 + packages/svelte/src/app.d.ts | 12 + packages/svelte/src/app.html | 20 + .../svelte/src/lib/components/Handle.svelte | 72 ++ .../src/lib/components/edges/BaseEdge.svelte | 29 + .../src/lib/components/nodes/BaseNode.svelte | 62 ++ .../lib/components/nodes/DefaultNode.svelte | 15 + .../src/lib/container/EdgeRenderer.svelte | 171 ++++ .../src/lib/container/NodeRenderer.svelte | 34 + .../src/lib/container/SvelteFlow.svelte | 62 ++ .../svelte/src/lib/container/Viewport.svelte | 35 + packages/svelte/src/lib/hooks/drag/index.ts | 128 +++ packages/svelte/src/lib/hooks/drag/utils.ts | 153 +++ packages/svelte/src/lib/hooks/zoom/index.ts | 103 ++ packages/svelte/src/lib/index.ts | 4 + packages/svelte/src/lib/store/index.ts | 116 +++ packages/svelte/src/routes/+page.svelte | 59 ++ packages/svelte/src/utils/index.ts | 101 ++ packages/svelte/static/favicon.png | Bin 0 -> 1571 bytes packages/svelte/svelte.config.js | 15 + packages/svelte/tsconfig.json | 17 + packages/svelte/vite.config.ts | 8 + pnpm-lock.yaml | 936 +++++++++++++++++- 30 files changed, 2279 insertions(+), 21 deletions(-) create mode 100644 packages/svelte/.eslintignore create mode 100644 packages/svelte/.eslintrc.cjs create mode 100644 packages/svelte/.gitignore create mode 100644 packages/svelte/.npmrc create mode 100644 packages/svelte/.prettierignore create mode 100644 packages/svelte/.prettierrc create mode 100644 packages/svelte/README.md create mode 100644 packages/svelte/package.json create mode 100644 packages/svelte/src/app.d.ts create mode 100644 packages/svelte/src/app.html create mode 100644 packages/svelte/src/lib/components/Handle.svelte create mode 100644 packages/svelte/src/lib/components/edges/BaseEdge.svelte create mode 100644 packages/svelte/src/lib/components/nodes/BaseNode.svelte create mode 100644 packages/svelte/src/lib/components/nodes/DefaultNode.svelte create mode 100644 packages/svelte/src/lib/container/EdgeRenderer.svelte create mode 100644 packages/svelte/src/lib/container/NodeRenderer.svelte create mode 100644 packages/svelte/src/lib/container/SvelteFlow.svelte create mode 100644 packages/svelte/src/lib/container/Viewport.svelte create mode 100644 packages/svelte/src/lib/hooks/drag/index.ts create mode 100644 packages/svelte/src/lib/hooks/drag/utils.ts create mode 100644 packages/svelte/src/lib/hooks/zoom/index.ts create mode 100644 packages/svelte/src/lib/index.ts create mode 100644 packages/svelte/src/lib/store/index.ts create mode 100644 packages/svelte/src/routes/+page.svelte create mode 100644 packages/svelte/src/utils/index.ts create mode 100644 packages/svelte/static/favicon.png create mode 100644 packages/svelte/svelte.config.js create mode 100644 packages/svelte/tsconfig.json create mode 100644 packages/svelte/vite.config.ts diff --git a/packages/svelte/.eslintignore b/packages/svelte/.eslintignore new file mode 100644 index 00000000..38972655 --- /dev/null +++ b/packages/svelte/.eslintignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/packages/svelte/.eslintrc.cjs b/packages/svelte/.eslintrc.cjs new file mode 100644 index 00000000..3ccf435f --- /dev/null +++ b/packages/svelte/.eslintrc.cjs @@ -0,0 +1,20 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'], + plugins: ['svelte3', '@typescript-eslint'], + ignorePatterns: ['*.cjs'], + overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }], + settings: { + 'svelte3/typescript': () => require('typescript') + }, + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020 + }, + env: { + browser: true, + es2017: true, + node: true + } +}; diff --git a/packages/svelte/.gitignore b/packages/svelte/.gitignore new file mode 100644 index 00000000..6635cf55 --- /dev/null +++ b/packages/svelte/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/packages/svelte/.npmrc b/packages/svelte/.npmrc new file mode 100644 index 00000000..b6f27f13 --- /dev/null +++ b/packages/svelte/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/packages/svelte/.prettierignore b/packages/svelte/.prettierignore new file mode 100644 index 00000000..38972655 --- /dev/null +++ b/packages/svelte/.prettierignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/packages/svelte/.prettierrc b/packages/svelte/.prettierrc new file mode 100644 index 00000000..a77fddea --- /dev/null +++ b/packages/svelte/.prettierrc @@ -0,0 +1,9 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "pluginSearchDirs": ["."], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/packages/svelte/README.md b/packages/svelte/README.md new file mode 100644 index 00000000..5c91169b --- /dev/null +++ b/packages/svelte/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/packages/svelte/package.json b/packages/svelte/package.json new file mode 100644 index 00000000..ee91d37b --- /dev/null +++ b/packages/svelte/package.json @@ -0,0 +1,44 @@ +{ + "name": "svelte", + "version": "0.0.1", + "scripts": { + "dev": "vite dev", + "build": "svelte-kit sync && svelte-package", + "prepublishOnly": "echo 'Did you mean to publish `./package/`, instead of `./`?' && exit 1", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --plugin-search-dir . --check . && eslint .", + "format": "prettier --plugin-search-dir . --write ." + }, + "devDependencies": { + "@sveltejs/adapter-auto": "^1.0.0", + "@sveltejs/kit": "^1.0.0", + "@sveltejs/package": "^1.0.0", + "@typescript-eslint/eslint-plugin": "^5.45.0", + "@typescript-eslint/parser": "^5.45.0", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-svelte3": "^4.0.0", + "prettier": "^2.8.0", + "prettier-plugin-svelte": "^2.8.1", + "svelte": "^3.54.0", + "svelte-check": "^3.0.1", + "tslib": "^2.4.1", + "typescript": "^4.9.3", + "vite": "^4.0.0" + }, + "type": "module", + "module": "index.ts", + "exports": { + ".": "./index.js" + }, + "dependencies": { + "@reactflow/core": "^11.5.1", + "cc": "^3.0.1", + "d3-drag": "^3.0.0", + "d3-selection": "^3.0.0", + "d3-zoom": "^3.0.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } +} diff --git a/packages/svelte/src/app.d.ts b/packages/svelte/src/app.d.ts new file mode 100644 index 00000000..f59b884c --- /dev/null +++ b/packages/svelte/src/app.d.ts @@ -0,0 +1,12 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface Platform {} + } +} + +export {}; diff --git a/packages/svelte/src/app.html b/packages/svelte/src/app.html new file mode 100644 index 00000000..f04b760b --- /dev/null +++ b/packages/svelte/src/app.html @@ -0,0 +1,20 @@ + + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/packages/svelte/src/lib/components/Handle.svelte b/packages/svelte/src/lib/components/Handle.svelte new file mode 100644 index 00000000..a90bccf2 --- /dev/null +++ b/packages/svelte/src/lib/components/Handle.svelte @@ -0,0 +1,72 @@ + + + +
+ +
+ + + \ No newline at end of file diff --git a/packages/svelte/src/lib/components/edges/BaseEdge.svelte b/packages/svelte/src/lib/components/edges/BaseEdge.svelte new file mode 100644 index 00000000..60e05403 --- /dev/null +++ b/packages/svelte/src/lib/components/edges/BaseEdge.svelte @@ -0,0 +1,29 @@ + + + + + + + \ No newline at end of file diff --git a/packages/svelte/src/lib/components/nodes/BaseNode.svelte b/packages/svelte/src/lib/components/nodes/BaseNode.svelte new file mode 100644 index 00000000..35b88312 --- /dev/null +++ b/packages/svelte/src/lib/components/nodes/BaseNode.svelte @@ -0,0 +1,62 @@ + + +
+ +
+ + \ No newline at end of file diff --git a/packages/svelte/src/lib/components/nodes/DefaultNode.svelte b/packages/svelte/src/lib/components/nodes/DefaultNode.svelte new file mode 100644 index 00000000..7357f82a --- /dev/null +++ b/packages/svelte/src/lib/components/nodes/DefaultNode.svelte @@ -0,0 +1,15 @@ + + + + {data?.label} + + diff --git a/packages/svelte/src/lib/container/EdgeRenderer.svelte b/packages/svelte/src/lib/container/EdgeRenderer.svelte new file mode 100644 index 00000000..edff1360 --- /dev/null +++ b/packages/svelte/src/lib/container/EdgeRenderer.svelte @@ -0,0 +1,171 @@ + + + + {#each edgesWithData as edge} + {#if edge} + + {/if} + {/each} + + + \ No newline at end of file diff --git a/packages/svelte/src/lib/container/NodeRenderer.svelte b/packages/svelte/src/lib/container/NodeRenderer.svelte new file mode 100644 index 00000000..8e1bb4e1 --- /dev/null +++ b/packages/svelte/src/lib/container/NodeRenderer.svelte @@ -0,0 +1,34 @@ + + +
+ {#each $nodesStore as node} + + {/each} +
+ + \ No newline at end of file diff --git a/packages/svelte/src/lib/container/SvelteFlow.svelte b/packages/svelte/src/lib/container/SvelteFlow.svelte new file mode 100644 index 00000000..af7ea786 --- /dev/null +++ b/packages/svelte/src/lib/container/SvelteFlow.svelte @@ -0,0 +1,62 @@ + + + +
+ + + + +
+ + \ No newline at end of file diff --git a/packages/svelte/src/lib/container/Viewport.svelte b/packages/svelte/src/lib/container/Viewport.svelte new file mode 100644 index 00000000..66cb8a27 --- /dev/null +++ b/packages/svelte/src/lib/container/Viewport.svelte @@ -0,0 +1,35 @@ + + +
+
+ +
+
+ + \ No newline at end of file diff --git a/packages/svelte/src/lib/hooks/drag/index.ts b/packages/svelte/src/lib/hooks/drag/index.ts new file mode 100644 index 00000000..52bf16fe --- /dev/null +++ b/packages/svelte/src/lib/hooks/drag/index.ts @@ -0,0 +1,128 @@ +import { get, type Writable } from 'svelte/store'; +import { drag as d3Drag, type D3DragEvent, type SubjectPosition } from 'd3-drag'; +import { select } from 'd3-selection'; +import type { XYPosition, CoordinateExtent, Node, Transform } from '@reactflow/core'; + +import { getDragItems, hasSelector, calcNextPosition } from './utils'; + +export type UseDragData = { dx: number; dy: number }; +export type UseDragEvent = D3DragEvent; +export type NodeDragItem = { + id: string; + position: XYPosition; + positionAbsolute: XYPosition; + // distance from the mouse cursor to the node when start dragging + distance: XYPosition; + width?: number | null; + height?: number | null; + extent?: 'parent' | CoordinateExtent; + parentNode?: string; + dragging?: boolean; +}; + +type UseDragParams = { + noDragClassName?: string; + handleSelector?: string; + nodeId?: string; + updateNodePositions: (dragItems: NodeDragItem[], d: boolean, p: boolean) => void; + nodesStore: Writable; + transformStore: Writable; +}; + +export default function drag( + nodeRef: Element, + { + noDragClassName, + handleSelector, + nodeId, + updateNodePositions, + nodesStore, + transformStore + }: UseDragParams +) { + let dragging = false; + let dragItems: NodeDragItem[] = []; + let lastPos: { x: number | null; y: number | null } = { x: null, y: null }; + + const selection = select(nodeRef); + + const getPointerPosition = ({ sourceEvent }: UseDragEvent) => { + const x = sourceEvent.touches ? sourceEvent.touches[0].clientX : sourceEvent.clientX; + const y = sourceEvent.touches ? sourceEvent.touches[0].clientY : sourceEvent.clientY; + const transform = get(transformStore); + + const pointerPos = { + x: (x - transform[0]) / transform[2], + y: (y - transform[1]) / transform[2] + }; + + // we need the snapped position in order to be able to skip unnecessary drag events + return { + xSnapped: pointerPos.x, + ySnapped: pointerPos.y, + ...pointerPos + }; + }; + + const updateNodes = ({ x, y }: XYPosition) => { + let hasChange = false; + + dragItems = dragItems.map((n) => { + const nextPosition = { x: x - n.distance.x, y: y - n.distance.y }; + const updatedPos = calcNextPosition(n, nextPosition, get(nodesStore)); + + // we want to make sure that we only fire a change event when there is a changes + hasChange = + hasChange || + n.position.x !== updatedPos.position.x || + n.position.y !== updatedPos.position.y; + + n.position = updatedPos.position; + n.positionAbsolute = updatedPos.positionAbsolute; + + return n; + }); + + if (!hasChange) { + return; + } + + updateNodePositions(dragItems, true, true); + dragging = true; + }; + + const dragHandler = d3Drag() + .on('start', (event: UseDragEvent) => { + const pointerPos = getPointerPosition(event); + + lastPos = pointerPos; + dragItems = getDragItems(get(nodesStore), pointerPos, nodeId); + }) + .on('drag', (event: UseDragEvent) => { + const pointerPos = getPointerPosition(event); + + // skip events without movement + if ((lastPos.x !== pointerPos.xSnapped || lastPos.y !== pointerPos.ySnapped) && dragItems) { + lastPos = pointerPos; + updateNodes(pointerPos); + } + }) + .on('end', (event: UseDragEvent) => { + dragging = false; + + if (dragItems) { + updateNodePositions(dragItems, false, false); + } + }) + .filter((event: MouseEvent) => { + const target = event.target as HTMLDivElement; + const isDraggable = + !event.button && + (!noDragClassName || !hasSelector(target, `.${noDragClassName}`, nodeRef)) && + (!handleSelector || hasSelector(target, handleSelector, nodeRef)); + + return isDraggable; + }); + + selection.call(dragHandler); +} diff --git a/packages/svelte/src/lib/hooks/drag/utils.ts b/packages/svelte/src/lib/hooks/drag/utils.ts new file mode 100644 index 00000000..50b95b09 --- /dev/null +++ b/packages/svelte/src/lib/hooks/drag/utils.ts @@ -0,0 +1,153 @@ +import type { + CoordinateExtent, + Node, + NodeDragItem, + NodeInternals, + NodeOrigin, + XYPosition +} from '@reactflow/core'; + +import { clampPosition, isNumeric } from '../../../utils'; + +export function isParentSelected(node: Node, nodes: Node[]): boolean { + if (!node.parentNode) { + return false; + } + + const parentNode = nodes.find((n) => n.id === node.parentNode); + + if (!parentNode) { + return false; + } + + if (parentNode.selected) { + return true; + } + + return isParentSelected(parentNode, nodes); +} + +export function hasSelector(target: Element, selector: string, domNode: Element): boolean { + let current = target; + + do { + if (current?.matches(selector)) return true; + if (current === domNode) return false; + current = current.parentElement as Element; + } while (current); + + return false; +} + +// looks for all selected nodes and created a NodeDragItem for each of them +export function getDragItems(nodes: Node[], mousePos: XYPosition, nodeId?: string): NodeDragItem[] { + console.log(mousePos, nodes); + return nodes + .filter( + (n) => (n.selected || n.id === nodeId) && (!n.parentNode || !isParentSelected(n, nodes)) + ) + .map((n) => ({ + id: n.id, + position: n.position ? { ...n.position } : { x: 0, y: 0 }, + positionAbsolute: n.positionAbsolute ? { ...n.positionAbsolute } : { x: 0, y: 0 }, + distance: { + x: mousePos.x - (n.positionAbsolute?.x ?? 0), + y: mousePos.y - (n.positionAbsolute?.y ?? 0) + }, + delta: { + x: 0, + y: 0 + }, + extent: n.extent, + parentNode: n.parentNode, + width: n.width, + height: n.height + })); +} + +export function calcNextPosition( + node: NodeDragItem | Node, + nextPosition: XYPosition, + nodes: Node[], + nodeExtent?: CoordinateExtent, + nodeOrigin: NodeOrigin = [0, 0] +): { position: XYPosition; positionAbsolute: XYPosition } { + let currentExtent = node.extent || nodeExtent; + + if (node.extent === 'parent') { + if (node.parentNode && node.width && node.height) { + const parent = nodes.find((n) => n.id === node.parentNode)!; + const { x: parentX, y: parentY } = parent.positionAbsolute!; + currentExtent = + parent && + isNumeric(parentX) && + isNumeric(parentY) && + isNumeric(parent.width) && + isNumeric(parent.height) + ? [ + [parentX + node.width * nodeOrigin[0], parentY + node.height * nodeOrigin[1]], + [ + parentX + parent.width! - node.width + node.width * nodeOrigin[0], + parentY + parent.height! - node.height + node.height * nodeOrigin[1] + ] + ] + : currentExtent; + } else { + currentExtent = nodeExtent; + } + } else if (node.extent && node.parentNode) { + const parent = nodes.find((n) => n.id === node.parentNode)!; + const { x: parentX, y: parentY } = parent.positionAbsolute!; + currentExtent = [ + [node.extent[0][0] + parentX, node.extent[0][1] + parentY], + [node.extent[1][0] + parentX, node.extent[1][1] + parentY] + ]; + } + + let parentPosition = { x: 0, y: 0 }; + + if (node.parentNode) { + const parent = nodes.find((n) => n.id === node.parentNode)!; + parentPosition = parent.positionAbsolute!; + } + + const positionAbsolute = currentExtent + ? clampPosition(nextPosition, currentExtent as CoordinateExtent) + : nextPosition; + + return { + position: { + x: positionAbsolute.x - parentPosition.x, + y: positionAbsolute.y - parentPosition.y + }, + positionAbsolute + }; +} + +// returns two params: +// 1. the dragged node (or the first of the list, if we are dragging a node selection) +// 2. array of selected nodes (for multi selections) +export function getEventHandlerParams({ + nodeId, + dragItems, + nodeInternals +}: { + nodeId?: string; + dragItems: NodeDragItem[]; + nodeInternals: NodeInternals; +}): [Node, Node[]] { + const extentedDragItems: Node[] = dragItems.map((n) => { + const node = nodeInternals.get(n.id)!; + + return { + ...node, + position: n.position, + positionAbsolute: n.positionAbsolute + }; + }); + + return [ + nodeId ? extentedDragItems.find((n) => n.id === nodeId)! : extentedDragItems[0], + extentedDragItems + ]; +} diff --git a/packages/svelte/src/lib/hooks/zoom/index.ts b/packages/svelte/src/lib/hooks/zoom/index.ts new file mode 100644 index 00000000..2292fc55 --- /dev/null +++ b/packages/svelte/src/lib/hooks/zoom/index.ts @@ -0,0 +1,103 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { Writable } from 'svelte/store'; +import { select } from 'd3-selection'; +import { zoom as d3Zoom, zoomIdentity } from 'd3-zoom'; +import type { D3ZoomEvent } from 'd3-zoom'; +import type { Transform } from '@reactflow/core'; + +const isWrappedWithClass = (event: any, className: string | undefined) => + event.target.closest(`.${className}`); + +export default function zoom( + domNode: Element, + { transformStore }: { transformStore: Writable } +) { + const d3ZoomInstance = d3Zoom(); + const selection = select(domNode).call(d3ZoomInstance); + const d3ZoomHandler = selection.on('wheel.zoom'); + d3ZoomInstance.transform(selection, zoomIdentity); + + selection.on('wheel.zoom', function (event: any, d: any) { + if (isWrappedWithClass(event, 'nowheel')) { + return null; + } + + event.preventDefault(); + d3ZoomHandler!.call(this, event, d); + }); + + d3ZoomInstance.on('zoom', (event: D3ZoomEvent) => { + transformStore.set([event.transform.x, event.transform.y, event.transform.k]); + }); + + d3ZoomInstance.filter((event: any) => { + const zoomScroll = true; + const pinchZoom = true; + + if ( + event.button === 1 && + event.type === 'mousedown' && + (isWrappedWithClass(event, 'react-flow__node') || + isWrappedWithClass(event, 'react-flow__edge')) + ) { + return true; + } + + // if all interactions are disabled, we prevent all zoom events + // if (!panOnDrag && !zoomScroll && !panOnScroll && !zoomOnDoubleClick && !zoomOnPinch) { + // return false; + // } + + // // during a selection we prevent all other interactions + // if (userSelectionActive) { + // return false; + // } + + // // if zoom on double click is disabled, we prevent the double click event + // if (!zoomOnDoubleClick && event.type === 'dblclick') { + // return false; + // } + + // // if the target element is inside an element with the nowheel class, we prevent zooming + // if (isWrappedWithClass(event, noWheelClassName) && event.type === 'wheel') { + // return false; + // } + + // // if the target element is inside an element with the nopan class, we prevent panning + // if (isWrappedWithClass(event, noPanClassName) && event.type !== 'wheel') { + // return false; + // } + + // if (!zoomOnPinch && event.ctrlKey && event.type === 'wheel') { + // return false; + // } + + // // when there is no scroll handling enabled, we prevent all wheel events + // if (!zoomScroll && !panOnScroll && !pinchZoom && event.type === 'wheel') { + // return false; + // } + + // // if the pane is not movable, we prevent dragging it with mousestart or touchstart + // if (!panOnDrag && (event.type === 'mousedown' || event.type === 'touchstart')) { + // return false; + // } + + // // if the pane is only movable using allowed clicks + // if ( + // Array.isArray(panOnDrag) && + // !panOnDrag.includes(event.button) && + // (event.type === 'mousedown' || event.type === 'touchstart') + // ) { + // return false; + // } + + // // We only allow right clicks if pan on drag is set to right click + // const buttonAllowed = + // (Array.isArray(panOnDrag) && panOnDrag.includes(event.button)) || + // !event.button || + // event.button <= 1; + + // default filter for d3-zoom + return ((!event.ctrlKey || event.type === 'wheel') && !event.button) || event.button <= 1; + }); +} diff --git a/packages/svelte/src/lib/index.ts b/packages/svelte/src/lib/index.ts new file mode 100644 index 00000000..029a1910 --- /dev/null +++ b/packages/svelte/src/lib/index.ts @@ -0,0 +1,4 @@ +// Reexport your entry components here +import SvelteFlow from '$lib/container/SvelteFlow.svelte'; + +export default SvelteFlow; diff --git a/packages/svelte/src/lib/store/index.ts b/packages/svelte/src/lib/store/index.ts new file mode 100644 index 00000000..a7e7807f --- /dev/null +++ b/packages/svelte/src/lib/store/index.ts @@ -0,0 +1,116 @@ +import { getContext } from 'svelte'; +import { get, writable, type Writable } from 'svelte/store'; +import type { Node, Transform, NodeDragItem, NodeDimensionUpdate, Edge } from '@reactflow/core'; +import { internalsSymbol } from '@reactflow/core'; + +import { getDimensions, getHandleBounds, updateAbsoluteNodePositions } from '../../utils'; + +export const key = Symbol(); + +type CreateStoreProps = { + nodes: Node[]; + edges: Edge[]; + transform?: Transform; +}; + +type SvelteFlowStore = { + nodesStore: Writable; + edgesStore: Writable; + heightStore: Writable; + widthStore: Writable; + transformStore: Writable; + updateNodePositions: ( + nodeDragItems: NodeDragItem[], + positionChanged?: boolean, + dragging?: boolean + ) => void; + updateNodeDimensions: (updates: NodeDimensionUpdate[]) => void; +}; + +export function createStore({ + nodes = [], + edges = [], + transform = [0, 0, 1] +}: CreateStoreProps): SvelteFlowStore { + const nodesStore = writable(nodes.map((n) => ({ ...n, positionAbsolute: n.position }))); + const edgesStore = writable(edges); + const heightStore = writable(500); + const widthStore = writable(500); + + const transformStore = writable(transform); + + function updateNodePositions(nodeDragItems: NodeDragItem[], dragging = false) { + nodesStore.update((nds) => { + return nds.map((n) => { + const nodeDragItem = nodeDragItems.find((ndi) => ndi.id === n.id); + + if (nodeDragItem) { + return { + ...n, + dragging, + positionAbsolute: nodeDragItem.positionAbsolute, + position: nodeDragItem.position + }; + } + + return n; + }); + }); + } + + function updateNodeDimensions(updates: NodeDimensionUpdate[]) { + const viewportNode = document?.querySelector('.react-flow__viewport'); + + if (!viewportNode) { + return; + } + + const style = window.getComputedStyle(viewportNode); + const { m22: zoom } = new window.DOMMatrixReadOnly(style.transform); + const nds = get(nodesStore); + + updates.forEach((update) => { + const node = nds.find((n) => n.id === update.id); + + if (node) { + const dimensions = getDimensions(update.nodeElement); + const doUpdate = !!( + dimensions.width && + dimensions.height && + (node.width !== dimensions.width || + node.height !== dimensions.height || + update.forceUpdate) + ); + + if (doUpdate) { + node[internalsSymbol] = { + ...node[internalsSymbol], + handleBounds: { + source: getHandleBounds('.source', update.nodeElement, zoom), + target: getHandleBounds('.target', update.nodeElement, zoom) + } + }; + node.width = dimensions.width; + node.height = dimensions.height; + } + } + }); + + updateAbsoluteNodePositions(nds); + } + + return { + nodesStore, + edgesStore, + transformStore, + heightStore, + widthStore, + updateNodePositions, + updateNodeDimensions + }; +} + +export function useStore(): SvelteFlowStore { + const { getStore } = getContext<{ getStore: () => SvelteFlowStore }>(key); + return getStore(); +} diff --git a/packages/svelte/src/routes/+page.svelte b/packages/svelte/src/routes/+page.svelte new file mode 100644 index 00000000..9591b599 --- /dev/null +++ b/packages/svelte/src/routes/+page.svelte @@ -0,0 +1,59 @@ + + + + + diff --git a/packages/svelte/src/utils/index.ts b/packages/svelte/src/utils/index.ts new file mode 100644 index 00000000..c63d83af --- /dev/null +++ b/packages/svelte/src/utils/index.ts @@ -0,0 +1,101 @@ +import { + type CoordinateExtent, + type Dimensions, + type XYPosition, + type Node, + type XYZPosition, + type HandleElement, + internalsSymbol, + Position +} from '@reactflow/core'; + +export const clamp = (val: number, min = 0, max = 1): number => Math.min(Math.max(val, min), max); + +export const clampPosition = (position: XYPosition = { x: 0, y: 0 }, extent: CoordinateExtent) => ({ + x: clamp(position.x, extent[0][0], extent[1][0]), + y: clamp(position.y, extent[0][1], extent[1][1]) +}); + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const isNumeric = (n: any): n is number => !isNaN(n) && isFinite(n); + +export const getDimensions = (node: HTMLDivElement): Dimensions => ({ + width: node.offsetWidth, + height: node.offsetHeight +}); + +type ParentNodes = Record; + +function calculateXYZPosition(node: Node, nodes: Node[], result: XYZPosition): XYZPosition { + if (!node.parentNode) { + return result; + } + const parentNode = nodes.find((n) => n.id === node.parentNode)!; + const parentNodePosition = parentNode.positionAbsolute!; + + return calculateXYZPosition(parentNode, nodes, { + x: (result.x ?? 0) + parentNodePosition.x, + y: (result.y ?? 0) + parentNodePosition.y, + z: + (parentNode[internalsSymbol]?.z ?? 0) > (result.z ?? 0) + ? parentNode[internalsSymbol]?.z ?? 0 + : result.z ?? 0 + }); +} + +export function updateAbsoluteNodePositions(nodes: Node[], parentNodes?: ParentNodes) { + nodes.forEach((node) => { + if (node.parentNode) { + throw new Error(`Parent node ${node.parentNode} not found`); + } + + if (node.parentNode || parentNodes?.[node.id]) { + const { x, y, z } = calculateXYZPosition(node, nodes, { + ...node.position, + z: node[internalsSymbol]?.z ?? 0 + }); + + node.positionAbsolute = { + x, + y + }; + + node[internalsSymbol]!.z = z; + + if (parentNodes?.[node.id]) { + node[internalsSymbol]!.isParent = true; + } + } + }); +} + +export const getHandleBounds = ( + selector: string, + nodeElement: HTMLDivElement, + zoom: number +): HandleElement[] | null => { + const handles = nodeElement.querySelectorAll(selector); + + if (!handles || !handles.length) { + return null; + } + + const handlesArray = Array.from(handles) as HTMLDivElement[]; + const nodeBounds = nodeElement.getBoundingClientRect(); + const nodeOffset = { + x: nodeBounds.width, + y: nodeBounds.height + }; + + return handlesArray.map((handle): HandleElement => { + const handleBounds = handle.getBoundingClientRect(); + + return { + id: handle.getAttribute('data-handleid'), + position: handle.getAttribute('data-handlepos') as unknown as Position, + x: (handleBounds.left - nodeBounds.left - nodeOffset.x) / zoom, + y: (handleBounds.top - nodeBounds.top - nodeOffset.y) / zoom, + ...getDimensions(handle) + }; + }); +}; diff --git a/packages/svelte/static/favicon.png b/packages/svelte/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..825b9e65af7c104cfb07089bb28659393b4f2097 GIT binary patch literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH=16.0.0} + dependencies: + ajv: registry.npmjs.org/ajv/6.12.6 + debug: registry.npmjs.org/debug/4.3.4 + espree: registry.npmjs.org/espree/9.4.0 + globals: registry.npmjs.org/globals/13.20.0 + ignore: registry.npmjs.org/ignore/5.2.4 + import-fresh: registry.npmjs.org/import-fresh/3.3.0 + js-yaml: registry.npmjs.org/js-yaml/4.1.0 + minimatch: registry.npmjs.org/minimatch/3.1.2 + strip-json-comments: registry.npmjs.org/strip-json-comments/3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + registry.npmjs.org/@hapi/hoek/9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz} name: '@hapi/hoek' @@ -1391,6 +1459,19 @@ packages: - supports-color dev: true + registry.npmjs.org/@humanwhocodes/config-array/0.11.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz} + name: '@humanwhocodes/config-array' + version: 0.11.8 + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': registry.npmjs.org/@humanwhocodes/object-schema/1.2.1 + debug: registry.npmjs.org/debug/4.3.4 + minimatch: registry.npmjs.org/minimatch/3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/1.0.2: resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz} name: '@humanwhocodes/gitignore-to-minimatch' @@ -1520,6 +1601,12 @@ packages: fastq: registry.npmjs.org/fastq/1.15.0 dev: true + registry.npmjs.org/@polka/url/1.0.0-next.21: + resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz} + name: '@polka/url' + version: 1.0.0-next.21 + dev: true + registry.npmjs.org/@preconstruct/cli/2.2.1: resolution: {integrity: sha512-G+sUV9o8l6Ds/82qJZYTXkCsVqPXLuD+bv+nVQeo3OL+eqzO/uAiBBFVp0DMcBJiyQYeU9nb+V8q22/PPaepDw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@preconstruct/cli/-/cli-2.2.1.tgz} name: '@preconstruct/cli' @@ -1580,6 +1667,30 @@ packages: - supports-color dev: true + registry.npmjs.org/@reactflow/core/11.5.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-63pXpKNW5YHk8hOWpt7RaftSn7g92BvCCGpsUUaRDDuHvxmcqmMKPrAFkBPVc5JJ+Wubx4drThYJizgVP/j9/w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@reactflow/core/-/core-11.5.1.tgz} + id: registry.npmjs.org/@reactflow/core/11.5.1 + name: '@reactflow/core' + version: 11.5.1 + peerDependencies: + react: '>=17' + react-dom: '>=17' + dependencies: + '@types/d3': registry.npmjs.org/@types/d3/7.4.0 + '@types/d3-drag': registry.npmjs.org/@types/d3-drag/3.0.1 + '@types/d3-selection': registry.npmjs.org/@types/d3-selection/3.0.3 + '@types/d3-zoom': registry.npmjs.org/@types/d3-zoom/3.0.1 + classcat: registry.npmjs.org/classcat/5.0.4 + d3-drag: registry.npmjs.org/d3-drag/3.0.0 + d3-selection: registry.npmjs.org/d3-selection/3.0.0 + d3-zoom: registry.npmjs.org/d3-zoom/3.0.0 + react: registry.npmjs.org/react/18.2.0 + react-dom: registry.npmjs.org/react-dom/18.2.0_react@18.2.0 + zustand: registry.npmjs.org/zustand/4.3.1_react@18.2.0 + transitivePeerDependencies: + - immer + dev: false + registry.npmjs.org/@rollup/plugin-alias/3.1.9_rollup@2.79.1: resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.9.tgz} id: registry.npmjs.org/@rollup/plugin-alias/3.1.9 @@ -1807,6 +1918,96 @@ packages: version: 2.0.0 dev: true + registry.npmjs.org/@sveltejs/adapter-auto/1.0.2_@sveltejs+kit@1.3.6: + resolution: {integrity: sha512-UXpEO/gutERZnD+Z5Vi4J/ifD3WSRuCI7xwtLJTcKNQvJ6t5Xsj1X3Mw2F8Vv/XTUuxf7xPLYUgThU331r0Y9w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.2.tgz} + id: registry.npmjs.org/@sveltejs/adapter-auto/1.0.2 + name: '@sveltejs/adapter-auto' + version: 1.0.2 + peerDependencies: + '@sveltejs/kit': ^1.0.0 + dependencies: + '@sveltejs/kit': registry.npmjs.org/@sveltejs/kit/1.3.6_svelte@3.55.1+vite@4.0.4 + import-meta-resolve: registry.npmjs.org/import-meta-resolve/2.2.1 + dev: true + + registry.npmjs.org/@sveltejs/kit/1.3.6_svelte@3.55.1+vite@4.0.4: + resolution: {integrity: sha512-SOGTKYiZ0ajIhQ9pUKr9F+h5Srm8Gdn3aza3dZxXWdHjpqv1iyhvt4oS0l5n1a+sXQzKlLpe/CikDBqSVSUS2Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sveltejs/kit/-/kit-1.3.6.tgz} + id: registry.npmjs.org/@sveltejs/kit/1.3.6 + name: '@sveltejs/kit' + version: 1.3.6 + engines: {node: ^16.14 || >=18} + hasBin: true + requiresBuild: true + peerDependencies: + svelte: ^3.54.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': registry.npmjs.org/@sveltejs/vite-plugin-svelte/2.0.2_svelte@3.55.1+vite@4.0.4 + '@types/cookie': registry.npmjs.org/@types/cookie/0.5.1 + cookie: registry.npmjs.org/cookie/0.5.0 + devalue: registry.npmjs.org/devalue/4.2.3 + esm-env: registry.npmjs.org/esm-env/1.0.0 + kleur: registry.npmjs.org/kleur/4.1.5 + magic-string: registry.npmjs.org/magic-string/0.27.0 + mime: registry.npmjs.org/mime/3.0.0 + sade: registry.npmjs.org/sade/1.8.1 + set-cookie-parser: registry.npmjs.org/set-cookie-parser/2.5.1 + sirv: registry.npmjs.org/sirv/2.0.2 + svelte: registry.npmjs.org/svelte/3.55.1 + tiny-glob: registry.npmjs.org/tiny-glob/0.2.9 + undici: registry.npmjs.org/undici/5.16.0 + vite: registry.npmjs.org/vite/4.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + registry.npmjs.org/@sveltejs/package/1.0.2_atrrhq7vg4ekua4nnyrpuardle: + resolution: {integrity: sha512-VY9U+05d9uNFDj7ScKRlHORYlfPSHwJewBjV+V2RsnViexpLFPUrboC9SiPYDCpLnbeqwXerxhO6twGHUBGeIA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sveltejs/package/-/package-1.0.2.tgz} + id: registry.npmjs.org/@sveltejs/package/1.0.2 + name: '@sveltejs/package' + version: 1.0.2 + engines: {node: ^16.14 || >=18} + hasBin: true + peerDependencies: + svelte: ^3.44.0 + dependencies: + chokidar: registry.npmjs.org/chokidar/3.5.3 + kleur: registry.npmjs.org/kleur/4.1.5 + sade: registry.npmjs.org/sade/1.8.1 + svelte: registry.npmjs.org/svelte/3.55.1 + svelte2tsx: registry.npmjs.org/svelte2tsx/0.6.0_atrrhq7vg4ekua4nnyrpuardle + transitivePeerDependencies: + - typescript + dev: true + + registry.npmjs.org/@sveltejs/vite-plugin-svelte/2.0.2_svelte@3.55.1+vite@4.0.4: + resolution: {integrity: sha512-xCEan0/NNpQuL0l5aS42FjwQ6wwskdxC3pW1OeFtEKNZwRg7Evro9lac9HesGP6TdFsTv2xMes5ASQVKbCacxg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz} + id: registry.npmjs.org/@sveltejs/vite-plugin-svelte/2.0.2 + name: '@sveltejs/vite-plugin-svelte' + version: 2.0.2 + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + svelte: ^3.54.0 + vite: ^4.0.0 + dependencies: + debug: registry.npmjs.org/debug/4.3.4 + deepmerge: registry.npmjs.org/deepmerge/4.2.2 + kleur: registry.npmjs.org/kleur/4.1.5 + magic-string: registry.npmjs.org/magic-string/0.27.0 + svelte: registry.npmjs.org/svelte/3.55.1 + svelte-hmr: registry.npmjs.org/svelte-hmr/0.15.1_svelte@3.55.1 + vite: registry.npmjs.org/vite/4.0.4 + vitefu: registry.npmjs.org/vitefu/0.2.4_vite@4.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + registry.npmjs.org/@types/cookie/0.5.1: + resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz} + name: '@types/cookie' + version: 0.5.1 + dev: true + registry.npmjs.org/@types/d3-array/3.0.3: resolution: {integrity: sha512-Reoy+pKnvsksN0lQUlcH6dOGjRZ/3WRwXR//m+/8lt1BXeI4xyaUZoqULNjyXXRuh0Mj4LNpkCvhUpQlY3X5xQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.3.tgz} name: '@types/d3-array' @@ -2114,6 +2315,12 @@ packages: version: 15.7.5 dev: true + registry.npmjs.org/@types/pug/2.0.6: + resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz} + name: '@types/pug' + version: 2.0.6 + dev: true + registry.npmjs.org/@types/react-dom/18.0.6: resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz} name: '@types/react-dom' @@ -2146,6 +2353,14 @@ packages: version: 1.20.2 dev: true + registry.npmjs.org/@types/sass/1.43.1: + resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz} + name: '@types/sass' + version: 1.43.1 + dependencies: + '@types/node': registry.npmjs.org/@types/node/18.7.16 + dev: true + registry.npmjs.org/@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz} name: '@types/scheduler' @@ -2216,6 +2431,36 @@ packages: - supports-color dev: true + registry.npmjs.org/@typescript-eslint/eslint-plugin/5.49.0_rsaczafy73x3xqauzesvzbsgzy: + resolution: {integrity: sha512-IhxabIpcf++TBaBa1h7jtOWyon80SXPRLDq0dVz5SLFC/eW6tofkw/O7Ar3lkx5z5U6wzbKDrl2larprp5kk5Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.49.0.tgz} + id: registry.npmjs.org/@typescript-eslint/eslint-plugin/5.49.0 + name: '@typescript-eslint/eslint-plugin' + version: 5.49.0 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': registry.npmjs.org/@typescript-eslint/parser/5.49.0_zkdaqh7it7uc4cvz2haft7rc6u + '@typescript-eslint/scope-manager': registry.npmjs.org/@typescript-eslint/scope-manager/5.49.0 + '@typescript-eslint/type-utils': registry.npmjs.org/@typescript-eslint/type-utils/5.49.0_zkdaqh7it7uc4cvz2haft7rc6u + '@typescript-eslint/utils': registry.npmjs.org/@typescript-eslint/utils/5.49.0_zkdaqh7it7uc4cvz2haft7rc6u + debug: registry.npmjs.org/debug/4.3.4 + eslint: registry.npmjs.org/eslint/8.33.0 + ignore: registry.npmjs.org/ignore/5.2.4 + natural-compare-lite: registry.npmjs.org/natural-compare-lite/1.4.0 + regexpp: registry.npmjs.org/regexpp/3.2.0 + semver: registry.npmjs.org/semver/7.3.8 + tsutils: registry.npmjs.org/tsutils/3.21.0_typescript@4.9.4 + typescript: registry.npmjs.org/typescript/4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + registry.npmjs.org/@typescript-eslint/parser/5.49.0_id2eilsndvzhjjktb64trvy3gu: resolution: {integrity: sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.49.0.tgz} id: registry.npmjs.org/@typescript-eslint/parser/5.49.0 @@ -2239,6 +2484,29 @@ packages: - supports-color dev: true + registry.npmjs.org/@typescript-eslint/parser/5.49.0_zkdaqh7it7uc4cvz2haft7rc6u: + resolution: {integrity: sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.49.0.tgz} + id: registry.npmjs.org/@typescript-eslint/parser/5.49.0 + name: '@typescript-eslint/parser' + version: 5.49.0 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': registry.npmjs.org/@typescript-eslint/scope-manager/5.49.0 + '@typescript-eslint/types': registry.npmjs.org/@typescript-eslint/types/5.49.0 + '@typescript-eslint/typescript-estree': registry.npmjs.org/@typescript-eslint/typescript-estree/5.49.0_typescript@4.9.4 + debug: registry.npmjs.org/debug/4.3.4 + eslint: registry.npmjs.org/eslint/8.33.0 + typescript: registry.npmjs.org/typescript/4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + registry.npmjs.org/@typescript-eslint/scope-manager/5.49.0: resolution: {integrity: sha512-clpROBOiMIzpbWNxCe1xDK14uPZh35u4QaZO1GddilEzoCLAEz4szb51rBpdgurs5k2YzPtJeTEN3qVbG+LRUQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.49.0.tgz} name: '@typescript-eslint/scope-manager' @@ -2272,6 +2540,29 @@ packages: - supports-color dev: true + registry.npmjs.org/@typescript-eslint/type-utils/5.49.0_zkdaqh7it7uc4cvz2haft7rc6u: + resolution: {integrity: sha512-eUgLTYq0tR0FGU5g1YHm4rt5H/+V2IPVkP0cBmbhRyEmyGe4XvJ2YJ6sYTmONfjmdMqyMLad7SB8GvblbeESZA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.49.0.tgz} + id: registry.npmjs.org/@typescript-eslint/type-utils/5.49.0 + name: '@typescript-eslint/type-utils' + version: 5.49.0 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': registry.npmjs.org/@typescript-eslint/typescript-estree/5.49.0_typescript@4.9.4 + '@typescript-eslint/utils': registry.npmjs.org/@typescript-eslint/utils/5.49.0_zkdaqh7it7uc4cvz2haft7rc6u + debug: registry.npmjs.org/debug/4.3.4 + eslint: registry.npmjs.org/eslint/8.33.0 + tsutils: registry.npmjs.org/tsutils/3.21.0_typescript@4.9.4 + typescript: registry.npmjs.org/typescript/4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + registry.npmjs.org/@typescript-eslint/types/5.49.0: resolution: {integrity: sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/types/-/types-5.49.0.tgz} name: '@typescript-eslint/types' @@ -2326,6 +2617,29 @@ packages: - typescript dev: true + registry.npmjs.org/@typescript-eslint/utils/5.49.0_zkdaqh7it7uc4cvz2haft7rc6u: + resolution: {integrity: sha512-cPJue/4Si25FViIb74sHCLtM4nTSBXtLx1d3/QT6mirQ/c65bV8arBEebBJJizfq8W2YyMoPI/WWPFWitmNqnQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.49.0.tgz} + id: registry.npmjs.org/@typescript-eslint/utils/5.49.0 + name: '@typescript-eslint/utils' + version: 5.49.0 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': registry.npmjs.org/@types/json-schema/7.0.11 + '@types/semver': registry.npmjs.org/@types/semver/7.3.13 + '@typescript-eslint/scope-manager': registry.npmjs.org/@typescript-eslint/scope-manager/5.49.0 + '@typescript-eslint/types': registry.npmjs.org/@typescript-eslint/types/5.49.0 + '@typescript-eslint/typescript-estree': registry.npmjs.org/@typescript-eslint/typescript-estree/5.49.0_typescript@4.9.4 + eslint: registry.npmjs.org/eslint/8.33.0 + eslint-scope: registry.npmjs.org/eslint-scope/5.1.1 + eslint-utils: registry.npmjs.org/eslint-utils/3.0.0_eslint@8.33.0 + semver: registry.npmjs.org/semver/7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + registry.npmjs.org/@typescript-eslint/visitor-keys/5.49.0: resolution: {integrity: sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.49.0.tgz} name: '@typescript-eslint/visitor-keys' @@ -2631,7 +2945,6 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz} name: balanced-match version: 1.0.2 - dev: true registry.npmjs.org/base64-js/1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz} @@ -2682,7 +2995,6 @@ packages: dependencies: balanced-match: registry.npmjs.org/balanced-match/1.0.2 concat-map: registry.npmjs.org/concat-map/0.0.1 - dev: true registry.npmjs.org/brace-expansion/2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz} @@ -2763,6 +3075,15 @@ packages: engines: {node: '>=6'} dev: true + registry.npmjs.org/busboy/1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz} + name: busboy + version: 1.6.0 + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: registry.npmjs.org/streamsearch/1.1.0 + dev: true + registry.npmjs.org/cachedir/2.3.0: resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz} name: cachedir @@ -2822,6 +3143,17 @@ packages: version: 0.12.0 dev: true + registry.npmjs.org/cc/3.0.1: + resolution: {integrity: sha512-WowS4JZyJZOmPuNjJJOgvc1S1VCIg9MjXkSgsskl6YZ2rFilRql1bMaFu6JdWJMoG+upPtdqQ7BCdEkt42SpMg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/cc/-/cc-3.0.1.tgz} + name: cc + version: 3.0.1 + hasBin: true + dependencies: + deglob: registry.npmjs.org/deglob/4.0.1 + pkg-conf: registry.npmjs.org/pkg-conf/3.1.0 + python-shell: registry.npmjs.org/python-shell/2.0.3 + dev: false + registry.npmjs.org/chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz} name: chalk @@ -3040,7 +3372,6 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz} name: concat-map version: 0.0.1 - dev: true registry.npmjs.org/concurrently/7.6.0: resolution: {integrity: sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz} @@ -3074,6 +3405,13 @@ packages: version: 1.9.0 dev: true + registry.npmjs.org/cookie/0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz} + name: cookie + version: 0.5.0 + engines: {node: '>= 0.6'} + dev: true + registry.npmjs.org/core-util-is/1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz} name: core-util-is @@ -3335,6 +3673,13 @@ packages: version: 1.11.5 dev: true + registry.npmjs.org/debug-log/1.0.1: + resolution: {integrity: sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz} + name: debug-log + version: 1.0.1 + engines: {node: '>=0.10.0'} + dev: false + registry.npmjs.org/debug/3.2.7_supports-color@8.1.1: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/debug/-/debug-3.2.7.tgz} id: registry.npmjs.org/debug/3.2.7 @@ -3411,6 +3756,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + registry.npmjs.org/dedent-js/1.0.1: + resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz} + name: dedent-js + version: 1.0.1 + dev: true + registry.npmjs.org/deep-is/0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz} name: deep-is @@ -3442,6 +3793,19 @@ packages: object-keys: registry.npmjs.org/object-keys/1.1.1 dev: true + registry.npmjs.org/deglob/4.0.1: + resolution: {integrity: sha512-/g+RDZ7yf2HvoW+E5Cy+K94YhgcFgr6C8LuHZD1O5HoNPkf3KY6RfXJ0DBGlB/NkLi5gml+G9zqRzk9S0mHZCg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/deglob/-/deglob-4.0.1.tgz} + name: deglob + version: 4.0.1 + dependencies: + find-root: registry.npmjs.org/find-root/1.1.0 + glob: registry.npmjs.org/glob/7.2.3 + ignore: registry.npmjs.org/ignore/5.2.4 + pkg-config: registry.npmjs.org/pkg-config/1.1.1 + run-parallel: registry.npmjs.org/run-parallel/1.2.0 + uniq: registry.npmjs.org/uniq/1.0.1 + dev: false + registry.npmjs.org/delayed-stream/1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz} name: delayed-stream @@ -3463,6 +3827,12 @@ packages: engines: {node: '>=8'} dev: true + registry.npmjs.org/devalue/4.2.3: + resolution: {integrity: sha512-JG6Q248aN0pgFL57e3zqTVeFraBe+5W2ugvv1mLXsJP6YYIYJhRZhAl7QP8haJrqob6X10F9NEkuCvNILZTPeQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/devalue/-/devalue-4.2.3.tgz} + name: devalue + version: 4.2.3 + dev: true + registry.npmjs.org/dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz} name: dir-glob @@ -3553,7 +3923,6 @@ packages: version: 1.3.2 dependencies: is-arrayish: registry.npmjs.org/is-arrayish/0.2.1 - dev: true registry.npmjs.org/es-abstract/1.21.1: resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz} @@ -3626,6 +3995,12 @@ packages: is-symbol: registry.npmjs.org/is-symbol/1.0.4 dev: true + registry.npmjs.org/es6-promise/3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz} + name: es6-promise + version: 3.3.1 + dev: true + registry.npmjs.org/esbuild/0.16.16: resolution: {integrity: sha512-24JyKq10KXM5EBIgPotYIJ2fInNWVVqflv3gicIyQqfmUqi4HvDW1VR790cBgLJHCl96Syy7lhoz7tLFcmuRmg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/esbuild/-/esbuild-0.16.16.tgz} name: esbuild @@ -3691,6 +4066,18 @@ packages: eslint: registry.npmjs.org/eslint/8.23.1 dev: true + registry.npmjs.org/eslint-config-prettier/8.5.0_eslint@8.33.0: + resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz} + id: registry.npmjs.org/eslint-config-prettier/8.5.0 + name: eslint-config-prettier + version: 8.5.0 + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: registry.npmjs.org/eslint/8.33.0 + dev: true + registry.npmjs.org/eslint-config-turbo/0.0.7_eslint@8.23.1: resolution: {integrity: sha512-WbrGlyfs94rOXrhombi1wjIAYGdV2iosgJRndOZtmDQeq5GLTzYmBUCJQZWtLBEBUPCj96RxZ2OL7Cn+xv/Azg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-config-turbo/-/eslint-config-turbo-0.0.7.tgz} id: registry.npmjs.org/eslint-config-turbo/0.0.7 @@ -3750,6 +4137,19 @@ packages: string.prototype.matchall: registry.npmjs.org/string.prototype.matchall/4.0.8 dev: true + registry.npmjs.org/eslint-plugin-svelte3/4.0.0_4omm2ewoudhgnmf7aocafatnc4: + resolution: {integrity: sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-4.0.0.tgz} + id: registry.npmjs.org/eslint-plugin-svelte3/4.0.0 + name: eslint-plugin-svelte3 + version: 4.0.0 + peerDependencies: + eslint: '>=8.0.0' + svelte: ^3.2.0 + dependencies: + eslint: registry.npmjs.org/eslint/8.33.0 + svelte: registry.npmjs.org/svelte/3.55.1 + dev: true + registry.npmjs.org/eslint-plugin-turbo/0.0.7_eslint@8.23.1: resolution: {integrity: sha512-iajOH8eD4jha3duztGVBD1BEmvNrQBaA/y3HFHf91vMDRYRwH7BpHSDFtxydDpk5ghlhRxG299SFxz7D6z4MBQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-plugin-turbo/-/eslint-plugin-turbo-0.0.7.tgz} id: registry.npmjs.org/eslint-plugin-turbo/0.0.7 @@ -3794,6 +4194,19 @@ packages: eslint-visitor-keys: registry.npmjs.org/eslint-visitor-keys/2.1.0 dev: true + registry.npmjs.org/eslint-utils/3.0.0_eslint@8.33.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz} + id: registry.npmjs.org/eslint-utils/3.0.0 + name: eslint-utils + version: 3.0.0 + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: registry.npmjs.org/eslint/8.33.0 + eslint-visitor-keys: registry.npmjs.org/eslint-visitor-keys/2.1.0 + dev: true + registry.npmjs.org/eslint-visitor-keys/2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz} name: eslint-visitor-keys @@ -3858,6 +4271,62 @@ packages: - supports-color dev: true + registry.npmjs.org/eslint/8.33.0: + resolution: {integrity: sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz} + name: eslint + version: 8.33.0 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': registry.npmjs.org/@eslint/eslintrc/1.4.1 + '@humanwhocodes/config-array': registry.npmjs.org/@humanwhocodes/config-array/0.11.8 + '@humanwhocodes/module-importer': registry.npmjs.org/@humanwhocodes/module-importer/1.0.1 + '@nodelib/fs.walk': registry.npmjs.org/@nodelib/fs.walk/1.2.8 + ajv: registry.npmjs.org/ajv/6.12.6 + chalk: registry.npmjs.org/chalk/4.1.2 + cross-spawn: registry.npmjs.org/cross-spawn/7.0.3 + debug: registry.npmjs.org/debug/4.3.4 + doctrine: registry.npmjs.org/doctrine/3.0.0 + escape-string-regexp: registry.npmjs.org/escape-string-regexp/4.0.0 + eslint-scope: registry.npmjs.org/eslint-scope/7.1.1 + eslint-utils: registry.npmjs.org/eslint-utils/3.0.0_eslint@8.33.0 + eslint-visitor-keys: registry.npmjs.org/eslint-visitor-keys/3.3.0 + espree: registry.npmjs.org/espree/9.4.0 + esquery: registry.npmjs.org/esquery/1.4.0 + esutils: registry.npmjs.org/esutils/2.0.3 + fast-deep-equal: registry.npmjs.org/fast-deep-equal/3.1.3 + file-entry-cache: registry.npmjs.org/file-entry-cache/6.0.1 + find-up: registry.npmjs.org/find-up/5.0.0 + glob-parent: registry.npmjs.org/glob-parent/6.0.2 + globals: registry.npmjs.org/globals/13.20.0 + grapheme-splitter: registry.npmjs.org/grapheme-splitter/1.0.4 + ignore: registry.npmjs.org/ignore/5.2.4 + import-fresh: registry.npmjs.org/import-fresh/3.3.0 + imurmurhash: registry.npmjs.org/imurmurhash/0.1.4 + is-glob: registry.npmjs.org/is-glob/4.0.3 + is-path-inside: registry.npmjs.org/is-path-inside/3.0.3 + js-sdsl: registry.npmjs.org/js-sdsl/4.1.4 + js-yaml: registry.npmjs.org/js-yaml/4.1.0 + json-stable-stringify-without-jsonify: registry.npmjs.org/json-stable-stringify-without-jsonify/1.0.1 + levn: registry.npmjs.org/levn/0.4.1 + lodash.merge: registry.npmjs.org/lodash.merge/4.6.2 + minimatch: registry.npmjs.org/minimatch/3.1.2 + natural-compare: registry.npmjs.org/natural-compare/1.4.0 + optionator: registry.npmjs.org/optionator/0.9.1 + regexpp: registry.npmjs.org/regexpp/3.2.0 + strip-ansi: registry.npmjs.org/strip-ansi/6.0.1 + strip-json-comments: registry.npmjs.org/strip-json-comments/3.1.1 + text-table: registry.npmjs.org/text-table/0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + registry.npmjs.org/esm-env/1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz} + name: esm-env + version: 1.0.0 + dev: true + registry.npmjs.org/espree/9.4.0: resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/espree/-/espree-9.4.0.tgz} name: espree @@ -4124,6 +4593,21 @@ packages: to-regex-range: registry.npmjs.org/to-regex-range/5.0.1 dev: true + registry.npmjs.org/find-root/1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz} + name: find-root + version: 1.1.0 + dev: false + + registry.npmjs.org/find-up/3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz} + name: find-up + version: 3.0.0 + engines: {node: '>=6'} + dependencies: + locate-path: registry.npmjs.org/locate-path/3.0.0 + dev: false + registry.npmjs.org/find-up/4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz} name: find-up @@ -4270,7 +4754,6 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz} name: fs.realpath version: 1.0.0 - dev: true registry.npmjs.org/fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz} @@ -4426,7 +4909,6 @@ packages: minimatch: registry.npmjs.org/minimatch/3.1.2 once: registry.npmjs.org/once/1.4.0 path-is-absolute: registry.npmjs.org/path-is-absolute/1.0.1 - dev: true registry.npmjs.org/glob/8.0.3: resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/glob/-/glob-8.0.3.tgz} @@ -4466,6 +4948,15 @@ packages: type-fest: registry.npmjs.org/type-fest/0.20.2 dev: true + registry.npmjs.org/globals/13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/globals/-/globals-13.20.0.tgz} + name: globals + version: 13.20.0 + engines: {node: '>=8'} + dependencies: + type-fest: registry.npmjs.org/type-fest/0.20.2 + dev: true + registry.npmjs.org/globalthis/1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz} name: globalthis @@ -4475,6 +4966,12 @@ packages: define-properties: registry.npmjs.org/define-properties/1.1.4 dev: true + registry.npmjs.org/globalyzer/0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz} + name: globalyzer + version: 0.1.0 + dev: true + registry.npmjs.org/globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/globby/-/globby-11.1.0.tgz} name: globby @@ -4502,6 +4999,12 @@ packages: slash: registry.npmjs.org/slash/4.0.0 dev: true + registry.npmjs.org/globrex/0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz} + name: globrex + version: 0.1.2 + dev: true + registry.npmjs.org/gopd/1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz} name: gopd @@ -4514,7 +5017,6 @@ packages: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz} name: graceful-fs version: 4.2.10 - dev: true registry.npmjs.org/grapheme-splitter/1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz} @@ -4677,7 +5179,6 @@ packages: name: ignore version: 5.2.4 engines: {node: '>= 4'} - dev: true registry.npmjs.org/immediate/3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz} @@ -4695,6 +5196,12 @@ packages: resolve-from: registry.npmjs.org/resolve-from/4.0.0 dev: true + registry.npmjs.org/import-meta-resolve/2.2.1: + resolution: {integrity: sha512-C6lLL7EJPY44kBvA80gq4uMsVFw5x3oSKfuMl1cuZ2RkI5+UJqQXgn+6hlUew0y4ig7Ypt4CObAAIzU53Nfpuw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.1.tgz} + name: import-meta-resolve + version: 2.2.1 + dev: true + registry.npmjs.org/imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz} name: imurmurhash @@ -4716,13 +5223,11 @@ packages: dependencies: once: registry.npmjs.org/once/1.4.0 wrappy: registry.npmjs.org/wrappy/1.0.2 - dev: true registry.npmjs.org/inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz} name: inherits version: 2.0.4 - dev: true registry.npmjs.org/ini/2.0.0: resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/ini/-/ini-2.0.0.tgz} @@ -4756,7 +5261,6 @@ packages: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz} name: is-arrayish version: 0.2.1 - dev: true registry.npmjs.org/is-bigint/1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz} @@ -5115,6 +5619,12 @@ packages: hasBin: true dev: true + registry.npmjs.org/json-parse-better-errors/1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz} + name: json-parse-better-errors + version: 1.0.2 + dev: false + registry.npmjs.org/json-parse-even-better-errors/2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz} name: json-parse-even-better-errors @@ -5276,6 +5786,19 @@ packages: wrap-ansi: registry.npmjs.org/wrap-ansi/7.0.0 dev: true + registry.npmjs.org/load-json-file/5.3.0: + resolution: {integrity: sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz} + name: load-json-file + version: 5.3.0 + engines: {node: '>=6'} + dependencies: + graceful-fs: registry.npmjs.org/graceful-fs/4.2.10 + parse-json: registry.npmjs.org/parse-json/4.0.0 + pify: registry.npmjs.org/pify/4.0.1 + strip-bom: registry.npmjs.org/strip-bom/3.0.0 + type-fest: registry.npmjs.org/type-fest/0.3.1 + dev: false + registry.npmjs.org/load-yaml-file/0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz} name: load-yaml-file @@ -5296,6 +5819,16 @@ packages: lie: registry.npmjs.org/lie/3.1.1 dev: false + registry.npmjs.org/locate-path/3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz} + name: locate-path + version: 3.0.0 + engines: {node: '>=6'} + dependencies: + p-locate: registry.npmjs.org/p-locate/3.0.0 + path-exists: registry.npmjs.org/path-exists/3.0.0 + dev: false + registry.npmjs.org/locate-path/5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz} name: locate-path @@ -5367,6 +5900,14 @@ packages: dependencies: js-tokens: registry.npmjs.org/js-tokens/4.0.0 + registry.npmjs.org/lower-case/2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz} + name: lower-case + version: 2.0.2 + dependencies: + tslib: registry.npmjs.org/tslib/2.4.1 + dev: true + registry.npmjs.org/lru-cache/4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz} name: lru-cache @@ -5507,6 +6048,14 @@ packages: mime-db: registry.npmjs.org/mime-db/1.52.0 dev: true + registry.npmjs.org/mime/3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/mime/-/mime-3.0.0.tgz} + name: mime + version: 3.0.0 + engines: {node: '>=10.0.0'} + hasBin: true + dev: true + registry.npmjs.org/mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz} name: mimic-fn @@ -5527,7 +6076,6 @@ packages: version: 3.1.2 dependencies: brace-expansion: registry.npmjs.org/brace-expansion/1.1.11 - dev: true registry.npmjs.org/minimatch/5.1.2: resolution: {integrity: sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz} @@ -5562,6 +6110,29 @@ packages: engines: {node: '>= 8.0.0'} dev: true + registry.npmjs.org/mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz} + name: mkdirp + version: 0.5.6 + hasBin: true + dependencies: + minimist: registry.npmjs.org/minimist/1.2.6 + dev: true + + registry.npmjs.org/mri/1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/mri/-/mri-1.2.0.tgz} + name: mri + version: 1.2.0 + engines: {node: '>=4'} + dev: true + + registry.npmjs.org/mrmime/1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz} + name: mrmime + version: 1.0.1 + engines: {node: '>=10'} + dev: true + registry.npmjs.org/ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/ms/-/ms-2.1.2.tgz} name: ms @@ -5594,6 +6165,15 @@ packages: version: 1.4.0 dev: true + registry.npmjs.org/no-case/3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz} + name: no-case + version: 3.0.4 + dependencies: + lower-case: registry.npmjs.org/lower-case/2.0.2 + tslib: registry.npmjs.org/tslib/2.4.1 + dev: true + registry.npmjs.org/node-fetch/2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz} name: node-fetch @@ -5761,7 +6341,6 @@ packages: version: 1.4.0 dependencies: wrappy: registry.npmjs.org/wrappy/1.0.2 - dev: true registry.npmjs.org/onetime/5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz} @@ -5821,7 +6400,6 @@ packages: engines: {node: '>=6'} dependencies: p-try: registry.npmjs.org/p-try/2.2.0 - dev: true registry.npmjs.org/p-limit/3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz} @@ -5832,6 +6410,15 @@ packages: yocto-queue: registry.npmjs.org/yocto-queue/0.1.0 dev: true + registry.npmjs.org/p-locate/3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz} + name: p-locate + version: 3.0.0 + engines: {node: '>=6'} + dependencies: + p-limit: registry.npmjs.org/p-limit/2.3.0 + dev: false + registry.npmjs.org/p-locate/4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz} name: p-locate @@ -5871,7 +6458,6 @@ packages: name: p-try version: 2.2.0 engines: {node: '>=6'} - dev: true registry.npmjs.org/parent-module/1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz} @@ -5894,6 +6480,16 @@ packages: is-glob: registry.npmjs.org/is-glob/2.0.1 dev: true + registry.npmjs.org/parse-json/4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz} + name: parse-json + version: 4.0.0 + engines: {node: '>=4'} + dependencies: + error-ex: registry.npmjs.org/error-ex/1.3.2 + json-parse-better-errors: registry.npmjs.org/json-parse-better-errors/1.0.2 + dev: false + registry.npmjs.org/parse-json/5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz} name: parse-json @@ -5906,6 +6502,22 @@ packages: lines-and-columns: registry.npmjs.org/lines-and-columns/1.2.4 dev: true + registry.npmjs.org/pascal-case/3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz} + name: pascal-case + version: 3.1.2 + dependencies: + no-case: registry.npmjs.org/no-case/3.0.4 + tslib: registry.npmjs.org/tslib/2.4.1 + dev: true + + registry.npmjs.org/path-exists/3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz} + name: path-exists + version: 3.0.0 + engines: {node: '>=4'} + dev: false + registry.npmjs.org/path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz} name: path-exists @@ -5918,7 +6530,6 @@ packages: name: path-is-absolute version: 1.0.1 engines: {node: '>=0.10.0'} - dev: true registry.npmjs.org/path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz} @@ -5985,7 +6596,6 @@ packages: name: pify version: 4.0.1 engines: {node: '>=6'} - dev: true registry.npmjs.org/pirates/4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz} @@ -5994,6 +6604,27 @@ packages: engines: {node: '>= 6'} dev: true + registry.npmjs.org/pkg-conf/3.1.0: + resolution: {integrity: sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz} + name: pkg-conf + version: 3.1.0 + engines: {node: '>=6'} + dependencies: + find-up: registry.npmjs.org/find-up/3.0.0 + load-json-file: registry.npmjs.org/load-json-file/5.3.0 + dev: false + + registry.npmjs.org/pkg-config/1.1.1: + resolution: {integrity: sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz} + name: pkg-config + version: 1.1.1 + engines: {node: '>=0.10'} + dependencies: + debug-log: registry.npmjs.org/debug-log/1.0.1 + find-root: registry.npmjs.org/find-root/1.1.0 + xtend: registry.npmjs.org/xtend/4.0.2 + dev: false + registry.npmjs.org/pkg-dir/4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz} name: pkg-dir @@ -6170,6 +6801,19 @@ packages: fast-diff: registry.npmjs.org/fast-diff/1.2.0 dev: true + registry.npmjs.org/prettier-plugin-svelte/2.9.0_kdmmghgdi3ngrsq6otxkjilbry: + resolution: {integrity: sha512-3doBi5NO4IVgaNPtwewvrgPpqAcvNv0NwJNflr76PIGgi9nf1oguQV1Hpdm9TI2ALIQVn/9iIwLpBO5UcD2Jiw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.9.0.tgz} + id: registry.npmjs.org/prettier-plugin-svelte/2.9.0 + name: prettier-plugin-svelte + version: 2.9.0 + peerDependencies: + prettier: ^1.16.4 || ^2.0.0 + svelte: ^3.2.0 + dependencies: + prettier: registry.npmjs.org/prettier/2.8.3 + svelte: registry.npmjs.org/svelte/3.55.1 + dev: true + registry.npmjs.org/prettier/2.7.1: resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz} name: prettier @@ -6178,6 +6822,14 @@ packages: hasBin: true dev: true + registry.npmjs.org/prettier/2.8.3: + resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz} + name: prettier + version: 2.8.3 + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + registry.npmjs.org/pretty-bytes/5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz} name: pretty-bytes @@ -6246,6 +6898,13 @@ packages: engines: {node: '>=6'} dev: true + registry.npmjs.org/python-shell/2.0.3: + resolution: {integrity: sha512-SBYQzXjexcxmmgzpjdIVxum9tj4Zaov1jNuSGMLssPxRhZ7lxqlpuEtLT0TEed0RAqhGfx2YFVC+imCJOmkVHg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/python-shell/-/python-shell-2.0.3.tgz} + name: python-shell + version: 2.0.3 + engines: {node: '>=0.10'} + dev: false + registry.npmjs.org/qs/6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/qs/-/qs-6.5.3.tgz} name: qs @@ -6257,7 +6916,6 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz} name: queue-microtask version: 1.2.3 - dev: true registry.npmjs.org/quick-lru/4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz} @@ -6506,6 +7164,15 @@ packages: version: 1.3.0 dev: true + registry.npmjs.org/rimraf/2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz} + name: rimraf + version: 2.7.1 + hasBin: true + dependencies: + glob: registry.npmjs.org/glob/7.2.3 + dev: true + registry.npmjs.org/rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz} name: rimraf @@ -6552,7 +7219,6 @@ packages: version: 1.2.0 dependencies: queue-microtask: registry.npmjs.org/queue-microtask/1.2.3 - dev: true registry.npmjs.org/rxjs/7.5.6: resolution: {integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz} @@ -6570,6 +7236,15 @@ packages: tslib: registry.npmjs.org/tslib/2.4.1 dev: true + registry.npmjs.org/sade/1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/sade/-/sade-1.8.1.tgz} + name: sade + version: 1.8.1 + engines: {node: '>=6'} + dependencies: + mri: registry.npmjs.org/mri/1.2.0 + dev: true + registry.npmjs.org/safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz} name: safe-buffer @@ -6598,6 +7273,17 @@ packages: version: 2.1.2 dev: true + registry.npmjs.org/sander/0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/sander/-/sander-0.5.1.tgz} + name: sander + version: 0.5.1 + dependencies: + es6-promise: registry.npmjs.org/es6-promise/3.3.1 + graceful-fs: registry.npmjs.org/graceful-fs/4.2.10 + mkdirp: registry.npmjs.org/mkdirp/0.5.6 + rimraf: registry.npmjs.org/rimraf/2.7.1 + dev: true + registry.npmjs.org/scheduler/0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz} name: scheduler @@ -6653,6 +7339,12 @@ packages: version: 2.0.0 dev: true + registry.npmjs.org/set-cookie-parser/2.5.1: + resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz} + name: set-cookie-parser + version: 2.5.1 + dev: true + registry.npmjs.org/shebang-command/1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz} name: shebang-command @@ -6707,6 +7399,17 @@ packages: version: 3.0.7 dev: true + registry.npmjs.org/sirv/2.0.2: + resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz} + name: sirv + version: 2.0.2 + engines: {node: '>= 10'} + dependencies: + '@polka/url': registry.npmjs.org/@polka/url/1.0.0-next.21 + mrmime: registry.npmjs.org/mrmime/1.0.1 + totalist: registry.npmjs.org/totalist/3.0.0 + dev: true + registry.npmjs.org/slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/slash/-/slash-3.0.0.tgz} name: slash @@ -6771,6 +7474,18 @@ packages: version: 0.0.6 dev: true + registry.npmjs.org/sorcery/0.11.0: + resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz} + name: sorcery + version: 0.11.0 + hasBin: true + dependencies: + '@jridgewell/sourcemap-codec': registry.npmjs.org/@jridgewell/sourcemap-codec/1.4.14 + buffer-crc32: registry.npmjs.org/buffer-crc32/0.2.13 + minimist: registry.npmjs.org/minimist/1.2.6 + sander: registry.npmjs.org/sander/0.5.1 + dev: true + registry.npmjs.org/source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz} name: source-map-js @@ -6912,6 +7627,13 @@ packages: mixme: registry.npmjs.org/mixme/0.5.4 dev: true + registry.npmjs.org/streamsearch/1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz} + name: streamsearch + version: 1.1.0 + engines: {node: '>=10.0.0'} + dev: true + registry.npmjs.org/string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz} name: string-width @@ -6972,7 +7694,6 @@ packages: name: strip-bom version: 3.0.0 engines: {node: '>=4'} - dev: true registry.npmjs.org/strip-final-newline/2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz} @@ -7031,6 +7752,121 @@ packages: engines: {node: '>= 0.4'} dev: true + registry.npmjs.org/svelte-check/3.0.3_svelte@3.55.1: + resolution: {integrity: sha512-ByBFXo3bfHRGIsYEasHkdMhLkNleVfszX/Ns1oip58tPJlKdo5Ssr8kgVIuo5oq00hss8AIcdesuy0Xt0BcTvg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte-check/-/svelte-check-3.0.3.tgz} + id: registry.npmjs.org/svelte-check/3.0.3 + name: svelte-check + version: 3.0.3 + hasBin: true + peerDependencies: + svelte: ^3.55.0 + dependencies: + '@jridgewell/trace-mapping': registry.npmjs.org/@jridgewell/trace-mapping/0.3.17 + chokidar: registry.npmjs.org/chokidar/3.5.3 + fast-glob: registry.npmjs.org/fast-glob/3.2.12 + import-fresh: registry.npmjs.org/import-fresh/3.3.0 + picocolors: registry.npmjs.org/picocolors/1.0.0 + sade: registry.npmjs.org/sade/1.8.1 + svelte: registry.npmjs.org/svelte/3.55.1 + svelte-preprocess: registry.npmjs.org/svelte-preprocess/5.0.1_atrrhq7vg4ekua4nnyrpuardle + typescript: registry.npmjs.org/typescript/4.9.4 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: true + + registry.npmjs.org/svelte-hmr/0.15.1_svelte@3.55.1: + resolution: {integrity: sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz} + id: registry.npmjs.org/svelte-hmr/0.15.1 + name: svelte-hmr + version: 0.15.1 + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: '>=3.19.0' + dependencies: + svelte: registry.npmjs.org/svelte/3.55.1 + dev: true + + registry.npmjs.org/svelte-preprocess/5.0.1_atrrhq7vg4ekua4nnyrpuardle: + resolution: {integrity: sha512-0HXyhCoc9rsW4zGOgtInylC6qj259E1hpFnJMJWTf+aIfeqh4O/QHT31KT2hvPEqQfdjmqBR/kO2JDkkciBLrQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.1.tgz} + id: registry.npmjs.org/svelte-preprocess/5.0.1 + name: svelte-preprocess + version: 5.0.1 + engines: {node: '>= 14.10.0'} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 + typescript: ^3.9.5 || ^4.0.0 + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + dependencies: + '@types/pug': registry.npmjs.org/@types/pug/2.0.6 + '@types/sass': registry.npmjs.org/@types/sass/1.43.1 + detect-indent: registry.npmjs.org/detect-indent/6.1.0 + magic-string: registry.npmjs.org/magic-string/0.27.0 + sorcery: registry.npmjs.org/sorcery/0.11.0 + strip-indent: registry.npmjs.org/strip-indent/3.0.0 + svelte: registry.npmjs.org/svelte/3.55.1 + typescript: registry.npmjs.org/typescript/4.9.4 + dev: true + + registry.npmjs.org/svelte/3.55.1: + resolution: {integrity: sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz} + name: svelte + version: 3.55.1 + engines: {node: '>= 8'} + dev: true + + registry.npmjs.org/svelte2tsx/0.6.0_atrrhq7vg4ekua4nnyrpuardle: + resolution: {integrity: sha512-TrxfQkO7CKi8Pu2eC/FyteDCdk3OOeQV5u6z7OjYAsOhsd0ClzAKqxJdvp6xxNQLrbFzf/XvCi9Fy8MQ1MleFA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.6.0.tgz} + id: registry.npmjs.org/svelte2tsx/0.6.0 + name: svelte2tsx + version: 0.6.0 + peerDependencies: + svelte: ^3.55 + typescript: ^4.9.4 + dependencies: + dedent-js: registry.npmjs.org/dedent-js/1.0.1 + pascal-case: registry.npmjs.org/pascal-case/3.1.2 + svelte: registry.npmjs.org/svelte/3.55.1 + typescript: registry.npmjs.org/typescript/4.9.4 + dev: true + registry.npmjs.org/term-size/2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz} name: term-size @@ -7088,6 +7924,15 @@ packages: version: 2.3.8 dev: true + registry.npmjs.org/tiny-glob/0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz} + name: tiny-glob + version: 0.2.9 + dependencies: + globalyzer: registry.npmjs.org/globalyzer/0.1.0 + globrex: registry.npmjs.org/globrex/0.1.2 + dev: true + registry.npmjs.org/tmp/0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz} name: tmp @@ -7122,6 +7967,13 @@ packages: is-number: registry.npmjs.org/is-number/7.0.0 dev: true + registry.npmjs.org/totalist/3.0.0: + resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz} + name: totalist + version: 3.0.0 + engines: {node: '>=6'} + dev: true + registry.npmjs.org/tough-cookie/2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz} name: tough-cookie @@ -7312,6 +8164,13 @@ packages: engines: {node: '>=10'} dev: true + registry.npmjs.org/type-fest/0.3.1: + resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz} + name: type-fest + version: 0.3.1 + engines: {node: '>=6'} + dev: false + registry.npmjs.org/type-fest/0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz} name: type-fest @@ -7355,6 +8214,21 @@ packages: which-boxed-primitive: registry.npmjs.org/which-boxed-primitive/1.0.2 dev: true + registry.npmjs.org/undici/5.16.0: + resolution: {integrity: sha512-KWBOXNv6VX+oJQhchXieUznEmnJMqgXMbs0xxH2t8q/FUAWSJvOSr/rMaZKnX5RIVq7JDn0JbP4BOnKG2SGXLQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/undici/-/undici-5.16.0.tgz} + name: undici + version: 5.16.0 + engines: {node: '>=12.18'} + dependencies: + busboy: registry.npmjs.org/busboy/1.6.0 + dev: true + + registry.npmjs.org/uniq/1.0.1: + resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz} + name: uniq + version: 1.0.1 + dev: false + registry.npmjs.org/universalify/0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz} name: universalify @@ -7497,6 +8371,20 @@ packages: fsevents: registry.npmjs.org/fsevents/2.3.2 dev: true + registry.npmjs.org/vitefu/0.2.4_vite@4.0.4: + resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz} + id: registry.npmjs.org/vitefu/0.2.4 + name: vitefu + version: 0.2.4 + peerDependencies: + vite: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: registry.npmjs.org/vite/4.0.4 + dev: true + registry.npmjs.org/wait-on/6.0.0_debug@4.3.2: resolution: {integrity: sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/wait-on/-/wait-on-6.0.0.tgz} id: registry.npmjs.org/wait-on/6.0.0 @@ -7631,7 +8519,13 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz} name: wrappy version: 1.0.2 - dev: true + + registry.npmjs.org/xtend/4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz} + name: xtend + version: 4.0.2 + engines: {node: '>=0.4'} + dev: false registry.npmjs.org/y18n/4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz}