From 0d8c858efa4d80b92bbf6323cc6c195786357e58 Mon Sep 17 00:00:00 2001 From: modderme123 Date: Mon, 16 May 2022 13:08:07 -0700 Subject: [PATCH 01/36] :fire: cleanup --- package.json | 1 + playground/app.tsx | 20 -------- playground/components/header.tsx | 85 ++++---------------------------- pnpm-lock.yaml | 10 ++++ src/components/repl.tsx | 30 +++++------ src/workers/compiler.ts | 85 +++++++------------------------- types/types.d.ts | 1 - 7 files changed, 51 insertions(+), 181 deletions(-) diff --git a/package.json b/package.json index 90ada7e3..3bf5648a 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "rollup-plugin-delete": "^2.0.0", "rollup-plugin-import-css": "^3.0.3", "rollup-plugin-windicss": "^1.8.4", + "solid-app-router": "^0.3.2", "typescript": "^4.6.4", "vite": "^2.9.9", "vite-plugin-solid": "^2.2.6", diff --git a/playground/app.tsx b/playground/app.tsx index 8707897c..26672535 100644 --- a/playground/app.tsx +++ b/playground/app.tsx @@ -3,9 +3,7 @@ import { Show, onCleanup, createEffect, createSignal, JSX } from 'solid-js'; import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'; import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'; -import type { editor as mEditor } from 'monaco-editor'; -import pkg from '../package.json'; import { eventBus } from './utils/eventBus'; import { createTabList, defaultTabs, processImport, Repl } from '../src'; import { Update } from './components/update'; @@ -56,10 +54,6 @@ export const App = (): JSX.Element => { const [current, setCurrent] = createSignal('main.tsx'); const params = Object.fromEntries(url.searchParams.entries()); - const [version, setVersion] = createSignal(params.version || pkg.dependencies['solid-js']); - - const [format, setFormat] = createSignal(false); - let editor: mEditor.IStandaloneCodeEditor | undefined; if (params.data && isValidUrl(params.data)) { fetch(params.data) @@ -124,20 +118,10 @@ export const App = (): JSX.Element => { setDark(toggledValue); localStorage.setItem('dark', String(toggledValue)); }} - formatCode={() => { - if (!format()) { - editor?.getAction('editor.action.formatDocument').run(); - editor?.focus(); - } - setFormat(true); - setTimeout(setFormat, 750, false); - }} isHorizontal={isHorizontal} tabs={tabs()} setTabs={setTabs} setCurrent={setCurrent} - onVersionChange={setVersion} - version={version()} /> } fallback={
} @@ -154,11 +138,7 @@ export const App = (): JSX.Element => { setTabs={setTabs} current={current()} setCurrent={setCurrent} - version={version()} id="repl" - onEditorReady={(_editor) => { - editor = _editor; - }} /> setNewUpdate(false)} />} /> diff --git a/playground/components/header.tsx b/playground/components/header.tsx index d8c47acd..8f134e2c 100644 --- a/playground/components/header.tsx +++ b/playground/components/header.tsx @@ -1,27 +1,21 @@ import Dismiss from 'solid-dismiss'; import { Icon } from 'solid-heroicons'; import { compressToURL as encode } from '@amoutonbrady/lz-string'; -import { Component, onCleanup, createSignal, Show, createMemo, For } from 'solid-js'; +import { Component, onCleanup, createSignal, Show } from 'solid-js'; import { share, link, download, xCircle, menu, moon, sun } from 'solid-heroicons/outline'; import logo from '../assets/logo.svg?url'; import type { Tab } from '../../src'; -import { exportToCsb, exportToZip } from '../utils/exportFiles'; +import { exportToZip } from '../utils/exportFiles'; import { ZoomDropdown } from './zoomDropdown'; -import pkg from '../../package.json'; - -const SOLID_VERSION = pkg.dependencies['solid-js']; export const Header: Component<{ dark: boolean; toggleDark: () => void; - formatCode: () => void; isHorizontal: boolean; tabs: Tab[]; setTabs: (tabs: Tab[]) => void; setCurrent: (tabId: string) => void; - version: string; - onVersionChange: (version: string) => void; }> = (props) => { const [copy, setCopy] = createSignal(false); const [showMenu, setShowMenu] = createSignal(false); @@ -40,7 +34,6 @@ export const Header: Component<{ const url = new URL(location.href); url.hash = encode(JSON.stringify(props.tabs)); - url.searchParams.set('version', props.version); history.replaceState(null, '', url.toString()); fetch('/', { method: 'PUT', body: `{"url":"${url.href}"}` }) @@ -54,7 +47,6 @@ export const Header: Component<{ .then((hash) => { const tinyUrl = new URL(location.origin); tinyUrl.searchParams.set('hash', hash); - tinyUrl.searchParams.set('version', props.version); navigator.clipboard.writeText(tinyUrl.toString()).then(() => { setCopy(true); @@ -69,12 +61,6 @@ export const Header: Component<{ }); } - const versions = createMemo(() => { - const hardCoded = ['0.26.5', '1.0.0', SOLID_VERSION]; - - return hardCoded.includes(props.version) ? hardCoded : [props.version, ...hardCoded]; - }); - return (
- - - - - - +
); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f1911b63..e12e11b6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,6 +36,7 @@ specifiers: rollup-plugin-delete: ^2.0.0 rollup-plugin-import-css: ^3.0.3 rollup-plugin-windicss: ^1.8.4 + solid-app-router: ^0.3.2 solid-dismiss: ^1.2.1 solid-heroicons: ^2.0.3 solid-js: 1.4.1 @@ -87,6 +88,7 @@ devDependencies: rollup-plugin-delete: 2.0.0 rollup-plugin-import-css: 3.0.3_rollup@2.73.0 rollup-plugin-windicss: 1.8.4_rollup@2.73.0 + solid-app-router: 0.3.2_solid-js@1.4.1 typescript: 4.6.4 vite: 2.9.9 vite-plugin-solid: 2.2.6 @@ -3954,6 +3956,14 @@ packages: engines: {node: '>=8'} dev: true + /solid-app-router/0.3.2_solid-js@1.4.1: + resolution: {integrity: sha512-zh6Ui87xy23JUxrH0z1xAROJPpiuxa3JRx9jP2qqjr07q2EKQOjn9BrmTFvQd/azQWzLjSMU+hN2fy6kLh5Bdw==} + peerDependencies: + solid-js: ^1.3.5 + dependencies: + solid-js: 1.4.1 + dev: true + /solid-dismiss/1.2.1_solid-js@1.4.1: resolution: {integrity: sha512-/2DKasY3/4ECnqxHueC2hq6bYxZ1Yyn/TtbeKDKV57Sox0HhHm8rPJLzqwn/9KxY3VhizJbmTABTZiKG0l7pNw==} peerDependencies: diff --git a/src/components/repl.tsx b/src/components/repl.tsx index 4df7fbc0..311060d3 100644 --- a/src/components/repl.tsx +++ b/src/components/repl.tsx @@ -133,10 +133,10 @@ export const Repl: typeof ReplProps = (props) => { createEffect(() => showPreview() && setStore('mode', 'DOM')); compiler.addEventListener('message', ({ data }) => { - const { event, result } = data; + const { event } = data; if (event === 'RESULT') { - const [error, compiled] = result; + const { compiled, error } = data; if (error) return setStore({ error }); if (!compiled) return; @@ -152,20 +152,16 @@ export const Repl: typeof ReplProps = (props) => { * it takes ~15ms to compile with the web worker... * Also, real time feedback can be stressful */ - const applyCompilation = debounce( - (tabs: Tab[], compileOpts: Record, solidVersion?: string) => { - setStore('isCompiling', true); - now = performance.now(); - - compiler.postMessage({ - event: 'COMPILE', - tabs, - compileOpts, - solidVersion, - }); - }, - 250, - ); + const applyCompilation = debounce((tabs: Tab[], compileOpts: Record) => { + setStore('isCompiling', true); + now = performance.now(); + + compiler.postMessage({ + event: 'COMPILE', + tabs, + compileOpts, + }); + }, 250); /** * The heart of the playground. This recompile on @@ -173,7 +169,7 @@ export const Repl: typeof ReplProps = (props) => { */ createEffect(() => { for (const tab of props.tabs) tab.source; - applyCompilation(unwrap(props.tabs), unwrap(compileMode[store.mode]), props.version); + applyCompilation(unwrap(props.tabs), unwrap(compileMode[store.mode])); }); /** diff --git a/src/workers/compiler.ts b/src/workers/compiler.ts index ec86c853..2d516a46 100644 --- a/src/workers/compiler.ts +++ b/src/workers/compiler.ts @@ -1,5 +1,4 @@ import type { Tab } from '../'; -import pkg from '../../package.json'; import { transform } from '@babel/standalone'; // @ts-ignore @@ -8,13 +7,9 @@ import babelPresetSolid from 'babel-preset-solid'; import { rollup } from 'rollup/dist/es/rollup.browser.js'; import dd from 'dedent'; -type TransformFunction = (code: string, opts: { babel: any; solid: any }) => any; - const CDN_URL = 'https://cdn.skypack.dev'; -const SOLID_VERSION = pkg.dependencies['solid-js']; const tabsLookup = new Map(); -const versionManager = new Map(); function uid(str: string) { return Array.from(str) @@ -22,48 +17,6 @@ function uid(str: string) { .toString(); } -async function loadBabel(solidVersion: string) { - if (versionManager.has(solidVersion)) { - return versionManager.get(solidVersion)!; - } - - let solid: any; - - try { - const preset = - solidVersion === SOLID_VERSION - ? await Promise.resolve({ default: babelPresetSolid }) - : await import(/* @vite-ignore */ `https://esm.sh/babel-preset-solid@${solidVersion}`); - - solid = preset.default; - } catch { - solid = babelPresetSolid; - } - - const babel = (code: string, opts: { babel: any; solid: any } = { babel: {}, solid: {} }) => - transform(code, { - presets: [ - [solid, { ...opts.solid }], - ['typescript', { onlyRemoveTypeImports: true }], - ], - ...opts.babel, - }); - - versionManager.set(solidVersion, babel); - - return babel; -} - -/** - * This function helps identify each section of the final compiled - * output from the rollup concatenation. - * - * @param tab {Tab} - A tab - */ -function generateCodeString(tab: Tab) { - return `/* source: ${tab.name}.${tab.type} */\n${tab.source}`; -} - /** * This is a custom rollup plugin to handle tabs as a * virtual file system and replacing every non-URL import with an @@ -71,19 +24,13 @@ function generateCodeString(tab: Tab) { * * Note: Passing in the Solid Version for later use */ -function virtual({ - solidVersion, - solidOptions = {}, -}: { - solidVersion: string; - solidOptions: unknown; -}) { +function virtual({ solidOptions = {} }: { solidOptions: unknown }) { return { name: 'repl-plugin', async resolveId(importee: string) { - if (importee.startsWith('.') && importee.endsWith('.css')) return importee; // This is a tab being imported + if (importee.startsWith('.') && importee.endsWith('.css')) return importee; if (importee.startsWith('.')) return importee.replace('.tsx', '') + '.tsx'; // External URL @@ -96,14 +43,13 @@ function virtual({ // NPM module via ESM CDN return { - id: `${CDN_URL}/${importee.replace('solid-js', `solid-js@${solidVersion}`)}`, + id: `${CDN_URL}/${importee}`, external: true, }; }, async load(id: string) { - const tab = tabsLookup.get(id); - return tab ? generateCodeString(tab) : null; + return tabsLookup.get(id)?.source; }, async transform(code: string, filename: string) { @@ -129,9 +75,13 @@ function virtual({ // Compile solid code if (/\.(j|t)sx$/.test(filename)) { - const babel = await loadBabel(solidVersion); - - return babel(code, { solid: solidOptions, babel: { filename } }); + return transform(code, { + presets: [ + [babelPresetSolid, solidOptions], + ['typescript', { onlyRemoveTypeImports: true }], + ], + filename, + }); } }, }; @@ -140,8 +90,7 @@ function virtual({ async function compile( tabs: Tab[], solidOptions = {}, - solidVersion: string, -): Promise<[string, null] | [null, string]> { +): Promise<{ compiled: string } | { error: string }> { try { for (const tab of tabs) { tabsLookup.set(`./${tab.name}.${tab.type}`, tab); @@ -149,28 +98,28 @@ async function compile( const compiler = await rollup({ input: `./${tabs[0].name}`, - plugins: [virtual({ solidVersion: solidVersion, solidOptions })], + plugins: [virtual({ solidOptions })], }); const { output: [{ code }], } = await compiler.generate({ format: 'esm', inlineDynamicImports: true }); - return [null, code as string]; + return { compiled: code as string }; } catch (e) { - return [(e as Error).message, null]; + return { error: (e as Error).message }; } } self.addEventListener('message', async ({ data }) => { - const { event, tabs, compileOpts, solidVersion = SOLID_VERSION } = data; + const { event, tabs, compileOpts } = data; switch (event) { case 'COMPILE': // @ts-ignore self.postMessage({ event: 'RESULT', - result: await compile(tabs, compileOpts, solidVersion), + ...(await compile(tabs, compileOpts)), }); break; } diff --git a/types/types.d.ts b/types/types.d.ts index 158c1ea7..1d6d9032 100644 --- a/types/types.d.ts +++ b/types/types.d.ts @@ -10,7 +10,6 @@ export declare const Repl: Component<{ dark: boolean; tabs: Tab[]; id: string; - version?: string; setTabs: (tab: Tab[]) => void; current: string; setCurrent: (tabId: string) => void; From 09bf482e9feeae3e29764cccfaaad10e8cb9c02c Mon Sep 17 00:00:00 2001 From: modderme123 Date: Mon, 16 May 2022 16:54:10 -0700 Subject: [PATCH 02/36] tweaks --- playground/components/header.tsx | 16 ++++++++-------- playground/components/zoomDropdown.tsx | 2 +- tailwind.config.ts | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/playground/components/header.tsx b/playground/components/header.tsx index 8f134e2c..d113052f 100644 --- a/playground/components/header.tsx +++ b/playground/components/header.tsx @@ -63,7 +63,7 @@ export const Header: Component<{ return (

@@ -92,7 +92,7 @@ export const Header: Component<{ -
+
Login diff --git a/playground/components/zoomDropdown.tsx b/playground/components/zoomDropdown.tsx index d92caeb2..5061e691 100644 --- a/playground/components/zoomDropdown.tsx +++ b/playground/components/zoomDropdown.tsx @@ -87,7 +87,7 @@ export const ZoomDropdown: Component<{ showMenu: boolean }> = (props) => { > -

diff --git a/playground/components/update.tsx b/playground/components/update.tsx index df7ff7d9..f1ffe753 100644 --- a/playground/components/update.tsx +++ b/playground/components/update.tsx @@ -14,17 +14,11 @@ export const Update: Component = (props) => { return (
-

There's a new update available.

-

- Refresh your browser or click the button below to get the latest update of the REPL. -

+

Refresh your browser or click the button below to get the latest update of the REPL.

+ + + + @@ -417,20 +384,12 @@ export const Repl: typeof ReplProps = (props) => { - - @@ -444,7 +403,6 @@ export const Repl: typeof ReplProps = (props) => { onDocChange={handleDocChange} class="flex-1 overflow-auto focus:outline-none bg-slate-50 dark:bg-yellow-400" styles={{ backgroundColor: '#F8FAFC' }} - disabled={!props.interactive} canFormat formatter={formatter} isDark={props.dark} @@ -483,9 +441,7 @@ export const Repl: typeof ReplProps = (props) => { devtools={devtoolsOpen()} isDark={props.dark} code={store.compiled} - class={`h-full w-full bg-white row-start-5 ${ - props.isHorizontal ? '' : 'md:row-start-2' - }`} + class={`h-full w-full bg-white row-start-5 ${props.isHorizontal ? '' : 'md:row-start-2'}`} /> } > diff --git a/src/components/tab/item.tsx b/src/components/tab/item.tsx index ed272ccb..267656b9 100644 --- a/src/components/tab/item.tsx +++ b/src/components/tab/item.tsx @@ -3,12 +3,12 @@ import type { Component, JSX } from 'solid-js'; export const TabItem: Component = (props) => { return (
  • {props.children} diff --git a/src/components/tab/list.tsx b/src/components/tab/list.tsx index b0d62754..622cb39f 100644 --- a/src/components/tab/list.tsx +++ b/src/components/tab/list.tsx @@ -4,9 +4,7 @@ export const TabList: Component> = (props) return (
      {props.children}
    diff --git a/src/hooks/useZoom.ts b/src/hooks/useZoom.ts index 5f3b53ba..67be6790 100644 --- a/src/hooks/useZoom.ts +++ b/src/hooks/useZoom.ts @@ -54,10 +54,7 @@ const useZoom = () => { setZoomState({ ...zoomState, fontSize, zoom, scale }); }; - const updateZoomSettings = ( - input: keyof Pick, - value: boolean, - ) => { + const updateZoomSettings = (input: keyof Pick, value: boolean) => { let { overrideNative, scaleIframe } = zoomState; switch (input) { @@ -69,10 +66,7 @@ const useZoom = () => { break; } - localStorage.setItem( - 'zoomState', - JSON.stringify({ ...zoomState, overrideNative, scaleIframe }), - ); + localStorage.setItem('zoomState', JSON.stringify({ ...zoomState, overrideNative, scaleIframe })); setZoomState({ ...zoomState, overrideNative, scaleIframe }); }; diff --git a/src/utils/keyedMap.ts b/src/utils/keyedMap.ts index cb7136e7..4b6be27b 100644 --- a/src/utils/keyedMap.ts +++ b/src/utils/keyedMap.ts @@ -4,11 +4,7 @@ import { onCleanup, createEffect, createSignal, untrack, createRoot } from 'soli // This version is designed to call a function on creation and onCleanup on removal // for a certain keying function (the by parameter) // this does not return any values, and is designed as more of a hook -export const keyedMap = (props: { - by: (a: T) => string; - children: (a: () => T) => void; - each: T[]; -}): void => { +export const keyedMap = (props: { by: (a: T) => string; children: (a: () => T) => void; each: T[] }): void => { const key = props.by; const mapFn = props.children; const disposers = new Map(); diff --git a/src/utils/throttle.ts b/src/utils/throttle.ts index 0d6f7664..701665e6 100644 --- a/src/utils/throttle.ts +++ b/src/utils/throttle.ts @@ -1,7 +1,4 @@ -export const throttle = ( - fn: (...params: T) => unknown, - wait: number, -): ((...args: T) => void) => { +export const throttle = (fn: (...params: T) => unknown, wait: number): ((...args: T) => void) => { let previouslyRun: number; let queuedToRun: number | undefined; diff --git a/src/workers/compiler.ts b/src/workers/compiler.ts index 2d516a46..d253d2e0 100644 --- a/src/workers/compiler.ts +++ b/src/workers/compiler.ts @@ -87,10 +87,7 @@ function virtual({ solidOptions = {} }: { solidOptions: unknown }) { }; } -async function compile( - tabs: Tab[], - solidOptions = {}, -): Promise<{ compiled: string } | { error: string }> { +async function compile(tabs: Tab[], solidOptions = {}): Promise<{ compiled: string } | { error: string }> { try { for (const tab of tabs) { tabsLookup.set(`./${tab.name}.${tab.type}`, tab); diff --git a/types/types.d.ts b/types/types.d.ts index 1d6d9032..0cb56d91 100644 --- a/types/types.d.ts +++ b/types/types.d.ts @@ -5,8 +5,6 @@ export declare const Repl: Component<{ compiler: Worker; formatter?: Worker; isHorizontal: boolean; - interactive: boolean; - editableTabs: boolean; dark: boolean; tabs: Tab[]; id: string; From 5aa04bb9c63175650ef4525be47521f426977b0d Mon Sep 17 00:00:00 2001 From: modderme123 Date: Mon, 16 May 2022 20:56:54 -0700 Subject: [PATCH 04/36] color tweaks --- playground/app.tsx | 2 +- playground/components/header.tsx | 4 ++-- src/components/gridResizer/index.tsx | 2 +- src/components/repl.tsx | 10 +++++----- src/components/tab/list.tsx | 5 +---- 5 files changed, 10 insertions(+), 13 deletions(-) diff --git a/playground/app.tsx b/playground/app.tsx index 0818069f..eb7fb5db 100644 --- a/playground/app.tsx +++ b/playground/app.tsx @@ -101,7 +101,7 @@ export const App = (): JSX.Element => { }); return ( -
    +

    @@ -83,7 +83,7 @@ export const Header: Component<{ show >
    = (props) => { }); const baseClasses = - 'justify-center group items-center border-slate-200 dark:border-solid-darkbg/30 hover:bg-brand-default dark:hover:bg-solid-medium'; + 'justify-center group items-center border-slate-200 dark:border-neutral-800 hover:bg-brand-default dark:hover:bg-brand-default'; const resizingClasses = () => `${isDragging() ? 'bg-brand-default dark:bg-brand-default' : 'bg-slate-50 dark:bg-solid-darkbg/70'}`; const directionClasses = () => diff --git a/src/components/repl.tsx b/src/components/repl.tsx index f1ea0944..a86a0504 100644 --- a/src/components/repl.tsx +++ b/src/components/repl.tsx @@ -249,7 +249,7 @@ export const Repl: typeof ReplProps = (props) => { (props.ref as (el: HTMLDivElement) => void)(el); } }} - class="grid h-full text-slate-900 dark:text-slate-50 font-sans overflow-hidden" + class="grid h-full bg-white dark:bg-solid-darkbg dark:text-white text-black font-sans overflow-hidden" classList={{ 'wrapper--forced': props.isHorizontal, wrapper: !props.isHorizontal, @@ -311,7 +311,7 @@ export const Repl: typeof ReplProps = (props) => { 0}>
    -
    +
    {zoomState.zoom}%
    - diff --git a/playground/components/zoomDropdown.tsx b/playground/components/zoomDropdown.tsx index dedadf4c..5c3dacc5 100644 --- a/playground/components/zoomDropdown.tsx +++ b/playground/components/zoomDropdown.tsx @@ -2,11 +2,11 @@ import { Icon } from 'solid-heroicons'; import { zoomIn } from 'solid-heroicons/outline'; import Dismiss from 'solid-dismiss'; import { Component, createSignal, createEffect } from 'solid-js'; -import useZoom from '../../src/hooks/useZoom'; +import { useZoom } from '../../src/hooks/useZoom'; export const ZoomDropdown: Component<{ showMenu: boolean }> = (props) => { const [open, setOpen] = createSignal(false); - const { zoomState, updateZoomScale, updateZoomSettings } = useZoom(); + const { zoomState, updateZoom, setZoomState } = useZoom(); const popupDuration = 1250; let containerEl!: HTMLDivElement; let prevZoom = zoomState.zoom; @@ -110,7 +110,7 @@ export const ZoomDropdown: Component<{ showMenu: boolean }> = (props) => { @@ -120,14 +120,14 @@ export const ZoomDropdown: Component<{ showMenu: boolean }> = (props) => { @@ -138,7 +138,7 @@ export const ZoomDropdown: Component<{ showMenu: boolean }> = (props) => { type="checkbox" class="mr-4 cursor-pointer" checked={zoomState.overrideNative} - onChange={(e) => updateZoomSettings('overrideNative', e.currentTarget.checked)} + onChange={(e) => setZoomState('overrideNative', e.currentTarget.checked)} /> Override browser zoom keyboard shortcut @@ -147,7 +147,7 @@ export const ZoomDropdown: Component<{ showMenu: boolean }> = (props) => { type="checkbox" class="mr-4 cursor-pointer" checked={zoomState.scaleIframe} - onChange={(e) => updateZoomSettings('scaleIframe', e.currentTarget.checked)} + onChange={(e) => setZoomState('scaleIframe', e.currentTarget.checked)} /> Scale iframe Result diff --git a/playground/edit.tsx b/playground/edit.tsx new file mode 100644 index 00000000..e9ee2a41 --- /dev/null +++ b/playground/edit.tsx @@ -0,0 +1,65 @@ +import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; +import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'; +import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'; +import { parseHash } from './utils/parseHash'; +import { isValidUrl } from './utils/isValidUrl'; + +import CompilerWorker from '../src/workers/compiler?worker'; +import FormatterWorker from '../src/workers/formatter?worker'; +import { exportToJSON } from './utils/exportFiles'; +import { createTabList, defaultTabs, processImport, Repl, Tab } from '../src'; +import { createSignal } from 'solid-js'; + +(window as any).MonacoEnvironment = { + getWorker(_moduleId: unknown, label: string) { + switch (label) { + case 'css': + return new cssWorker(); + case 'typescript': + case 'javascript': + return new tsWorker(); + default: + return new editorWorker(); + } + }, +}; + +export const Edit = (props: { dark: boolean }) => { + const compiler = new CompilerWorker(); + const formatter = new FormatterWorker(); + + const url = new URL(location.href); + const initialTabs = parseHash(url.hash && url.hash.slice(1)) || defaultTabs; + + const [tabs, setTabs] = createTabList(initialTabs); + const [current, setCurrent] = createSignal('main.tsx'); + + const params = Object.fromEntries(url.searchParams.entries()); + + if (params.data && isValidUrl(params.data)) { + fetch(params.data) + .then((r) => r.json()) + .then((data) => setTabs(processImport(data))) + .catch((e) => console.error('Failed to import browser data', e)); + } + + const isHorizontal = 'isHorizontal' in params; + + if (params.format === 'json') { + exportToJSON(tabs()); + } + + return ( + + ); +}; diff --git a/playground/home.tsx b/playground/home.tsx new file mode 100644 index 00000000..57d3cf77 --- /dev/null +++ b/playground/home.tsx @@ -0,0 +1,35 @@ +import { useRouteData } from 'solid-app-router'; +import { Icon } from 'solid-heroicons'; +import { eyeOff, plus, x } from 'solid-heroicons/outline'; + +export const Home = () => { + const user = useRouteData(); + + return ( +
    + + + + + + + + + + + + + + + + + +
    TitleEditedOptions
    New Suspense DemoMay 17, 2022 + + +
    +
    + ); +}; diff --git a/playground/index.ts b/playground/index.tsx similarity index 52% rename from playground/index.ts rename to playground/index.tsx index 614474c1..85eebd5f 100644 --- a/playground/index.ts +++ b/playground/index.tsx @@ -1,7 +1,15 @@ +import { Router } from 'solid-app-router'; import { render } from 'solid-js/web'; import { App } from './app'; import { registerServiceWorker } from './utils/serviceWorker'; -render(App, document.querySelector('#app')!); +render( + () => ( + + + + ), + document.querySelector('#app')!, +); registerServiceWorker(); diff --git a/playground/utils/parseHash.ts b/playground/utils/parseHash.ts index 43c4fd51..5179eaf1 100644 --- a/playground/utils/parseHash.ts +++ b/playground/utils/parseHash.ts @@ -1,9 +1,9 @@ import { decompressFromURL as decompress } from '@amoutonbrady/lz-string'; -export function parseHash(hash: string, fallback: T): T { +export function parseHash(hash: string): T | undefined { try { return JSON.parse(decompress(hash)!); } catch { - return fallback; + return; } } diff --git a/rollup.config.js b/rollup.config.js index 6fffbaf1..7a83e6dd 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -94,9 +94,7 @@ const preppy = { // this extracts the artificial tag id from the comment and the possibly renamed variable // name from the variable via two capture groups - .map((replacementAndVariable) => - replacementAndVariable.match(/^\s*?\/\*([^*]*)\*\/\s*?(\S*)$/), - ) + .map((replacementAndVariable) => replacementAndVariable.match(/^\s*?\/\*([^*]*)\*\/\s*?(\S*)$/)) .filter(Boolean) .forEach(([usedEntry, tagId, updatedName]) => replacements.set(tagId, updatedName)); @@ -145,15 +143,13 @@ rollup({ if (!id.endsWith('?url')) { return null; } - let base64 = true; // ideally, we wouldn't have to do this, but current end user bundlers can't handle non base64 + let base64 = false; // ideally, we wouldn't have to do this, but current end user bundlers can't handle non base64 let url = id.slice(0, -4); if (base64) { const mimetype = mime.getType(url); - return readFile(url).then( - (x) => `export default "data:${mimetype};base64,${x.toString('base64')}"`, - ); + return readFile(url).then((x) => `export default "data:${mimetype};base64,${x.toString('base64')}"`); } else { const ext = extname(url); const name = basename(url, ext); @@ -192,11 +188,9 @@ rollup({ preppy, ], }).then((builder) => { - builder - .write({ dir: 'lib', chunkFileNames: (info) => (info.isEntry ? '[name].jsx' : '[name].js') }) - .then(() => { - const basePath = cwd(); + builder.write({ dir: 'lib', chunkFileNames: (info) => (info.isEntry ? '[name].jsx' : '[name].js') }).then(() => { + const basePath = cwd(); - renameSync(resolve(basePath, 'lib/index.js'), resolve(basePath, 'lib/index.jsx')); - }); + renameSync(resolve(basePath, 'lib/index.js'), resolve(basePath, 'lib/index.jsx')); + }); }); diff --git a/src/components/editor/index.tsx b/src/components/editor/index.tsx index f145b403..d8aed6b3 100644 --- a/src/components/editor/index.tsx +++ b/src/components/editor/index.tsx @@ -1,7 +1,7 @@ import { Component, createEffect, onMount, onCleanup } from 'solid-js'; import { Uri, languages, editor as mEditor } from 'monaco-editor'; import { liftOff } from './setupSolid'; -import useZoom from '../../hooks/useZoom'; +import { useZoom } from '../../hooks/useZoom'; interface Props { classList?: { diff --git a/src/components/preview.tsx b/src/components/preview.tsx index ca2b4140..f7af5dc0 100644 --- a/src/components/preview.tsx +++ b/src/components/preview.tsx @@ -1,5 +1,5 @@ import { Component, createEffect, createSignal, splitProps, JSX, onMount } from 'solid-js'; -import useZoom from '../hooks/useZoom'; +import { useZoom } from '../hooks/useZoom'; export const Preview: Component = (props) => { const { zoomState } = useZoom(); diff --git a/src/hooks/useZoom.ts b/src/hooks/useZoom.ts index 67be6790..71a26396 100644 --- a/src/hooks/useZoom.ts +++ b/src/hooks/useZoom.ts @@ -1,6 +1,6 @@ -import { createStore } from 'solid-js/store'; +import { createStore, SetStoreFunction } from 'solid-js/store'; -type TZoomState = { +type ZoomState = { zoom: number; scaleIframe: boolean; overrideNative: boolean; @@ -11,26 +11,40 @@ type TZoomState = { const getLS = () => { const result = localStorage.getItem('zoomState'); if (result == null) return null; - return JSON.parse(result) as TZoomState; + return JSON.parse(result) as ZoomState; }; const ls = getLS(); const initFontSize = 15; const initScale = 100; -const [zoomState, setZoomState] = createStore({ - overrideNative: ls ? ls.overrideNative : true, - fontSize: ls ? ls.fontSize : initFontSize, - scale: ls ? ls.scale : initScale, - zoom: ls ? ls.zoom : 100, - scaleIframe: ls ? ls.scaleIframe : true, +const [zoomState, setZoomStateInternal] = createStore({ + overrideNative: ls?.overrideNative || true, + scaleIframe: ls?.scaleIframe || true, + zoom: ls?.zoom || 100, + get fontSize() { + return initFontSize * (this.zoom / 100); + }, + get scale() { + return initScale * (100 / this.zoom); + }, }); -const useZoom = () => { - const updateZoomScale = (input: 'increase' | 'decrease' | 'reset') => { - let { zoom, fontSize, scale } = zoomState; - const max = 200; - const min = 40; +const setZoomState: SetStoreFunction = (...args: any[]) => { + (setZoomStateInternal as any)(...args); + localStorage.setItem( + 'zoomState', + JSON.stringify({ + zoom: zoomState.zoom, + scaleIframe: zoomState.scaleIframe, + overrideNative: zoomState.overrideNative, + }), + ); +}; + +export const useZoom = () => { + const updateZoom = (input: 'increase' | 'decrease' | 'reset') => { + let { zoom } = zoomState; switch (input) { case 'increase': @@ -44,33 +58,8 @@ const useZoom = () => { break; } - if (zoom > max) zoom = max; - if (zoom < min) zoom = min; - fontSize = (initFontSize * zoom) / 100; - scale = (initScale / zoom) * 100; - - localStorage.setItem('zoomState', JSON.stringify({ ...zoomState, zoom, fontSize, scale })); - - setZoomState({ ...zoomState, fontSize, zoom, scale }); - }; - - const updateZoomSettings = (input: keyof Pick, value: boolean) => { - let { overrideNative, scaleIframe } = zoomState; - - switch (input) { - case 'overrideNative': - overrideNative = value; - break; - case 'scaleIframe': - scaleIframe = value; - break; - } - - localStorage.setItem('zoomState', JSON.stringify({ ...zoomState, overrideNative, scaleIframe })); - - setZoomState({ ...zoomState, overrideNative, scaleIframe }); + setZoomState('zoom', Math.min(Math.max(zoom, 40), 200)); }; - return { zoomState, updateZoomScale, updateZoomSettings }; + return { zoomState, updateZoom, setZoomState }; }; -export default useZoom; diff --git a/src/utils/keyedMap.ts b/src/utils/keyedMap.ts index 4b6be27b..ee80ae6b 100644 --- a/src/utils/keyedMap.ts +++ b/src/utils/keyedMap.ts @@ -1,4 +1,4 @@ -import { onCleanup, createEffect, createSignal, untrack, createRoot } from 'solid-js'; +import { onCleanup, createEffect, createSignal, untrack, createRoot, Signal } from 'solid-js'; // A modified version of Ryan's https://codesandbox.io/s/explicit-keys-4iyen?file=/Key.js // This version is designed to call a function on creation and onCleanup on removal @@ -7,15 +7,15 @@ import { onCleanup, createEffect, createSignal, untrack, createRoot } from 'soli export const keyedMap = (props: { by: (a: T) => string; children: (a: () => T) => void; each: T[] }): void => { const key = props.by; const mapFn = props.children; - const disposers = new Map(); - let prev = new Map(); + const disposers = new Map void>(); + let prev = new Map>(); onCleanup(() => { for (const disposer of disposers.values()) disposer(); }); return createEffect(() => { const list = props.each || []; - const newNodes = new Map(); + const newNodes = new Map>(); return untrack(() => { for (let i = 0; i < list.length; i++) { const listItem = list[i]; @@ -26,17 +26,17 @@ export const keyedMap = (props: { by: (a: T) => string; children: (a: () => T disposers.set(keyValue, dispose); const item = createSignal(listItem); const result = mapFn(item[0]); - newNodes.set(keyValue, { item, result }); + newNodes.set(keyValue, item); return result; }); } else { - lookup.item[1](listItem); + lookup[1](listItem as Exclude); newNodes.set(keyValue, lookup); } } // disposal for (const old of prev.keys()) { - if (!newNodes.has(old)) disposers.get(old)(); + if (!newNodes.has(old)) disposers.get(old)!(); } prev = newNodes; }); diff --git a/workers-site/pnpm-lock.yaml b/workers-site/pnpm-lock.yaml index 766ea714..82bba0a3 100644 --- a/workers-site/pnpm-lock.yaml +++ b/workers-site/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: 5.3 +lockfileVersion: 5.4 specifiers: '@cloudflare/kv-asset-handler': ^0.2.0 From b0423ca9268ea2717e0254768b4e71ff6a9a6340 Mon Sep 17 00:00:00 2001 From: modderme123 Date: Tue, 17 May 2022 21:31:45 -0700 Subject: [PATCH 08/36] appcontext --- playground/app.tsx | 9 ++- playground/components/header.tsx | 63 ++++---------------- playground/components/zoomDropdown.tsx | 4 +- playground/context.tsx | 50 ++++++++++++++++ playground/home.tsx | 35 ----------- playground/index.tsx | 5 +- playground/{ => pages}/edit.tsx | 15 ++--- playground/pages/home.tsx | 72 ++++++++++++++++++++++ playground/pages/login.tsx | 9 +++ playground/utils/exportFiles.tsx | 82 ++------------------------ 10 files changed, 163 insertions(+), 181 deletions(-) create mode 100644 playground/context.tsx delete mode 100644 playground/home.tsx rename playground/{ => pages}/edit.tsx (82%) create mode 100644 playground/pages/home.tsx create mode 100644 playground/pages/login.tsx diff --git a/playground/app.tsx b/playground/app.tsx index e48c26e9..e61c5437 100644 --- a/playground/app.tsx +++ b/playground/app.tsx @@ -1,15 +1,13 @@ import { Show, onCleanup, createEffect, createSignal, JSX } from 'solid-js'; - import { Routes, Route } from 'solid-app-router'; import { eventBus } from './utils/eventBus'; - import { Update } from './components/update'; import { Header } from './components/header'; - import { useZoom } from '../src/hooks/useZoom'; import { isDarkTheme } from './utils/isDarkTheme'; -import { Edit } from './edit'; -import { Home } from './home'; +import { Edit } from './pages/edit'; +import { Home } from './pages/home'; +import { Login } from './pages/login'; let swUpdatedBeforeRender = false; eventBus.on('sw-update', () => (swUpdatedBeforeRender = true)); @@ -58,6 +56,7 @@ export const App = (): JSX.Element => { } /> } /> } /> + } /> setNewUpdate(false)} />} /> diff --git a/playground/components/header.tsx b/playground/components/header.tsx index ecfd1aa2..eb81b8a8 100644 --- a/playground/components/header.tsx +++ b/playground/components/header.tsx @@ -1,20 +1,20 @@ import Dismiss from 'solid-dismiss'; import { Icon } from 'solid-heroicons'; -import { compressToURL as encode } from '@amoutonbrady/lz-string'; import { Component, onCleanup, createSignal, Show } from 'solid-js'; -import { share, link, download, xCircle, menu, moon, sun } from 'solid-heroicons/outline'; +import { download, xCircle, menu, moon, sun } from 'solid-heroicons/outline'; import logo from '../assets/logo.svg?url'; import type { Tab } from '../../src'; import { exportToZip } from '../utils/exportFiles'; import { ZoomDropdown } from './zoomDropdown'; +import { useAppContext } from '../context'; export const Header: Component<{ dark: boolean; toggleDark: () => void; tabs: Tab[]; }> = (props) => { - const [copy, setCopy] = createSignal(false); + const context = useAppContext()!; const [showMenu, setShowMenu] = createSignal(false); let menuBtnEl!: HTMLButtonElement; @@ -27,37 +27,6 @@ export const Header: Component<{ setShowMenu(false); } - function shareLink() { - const url = new URL(location.href); - - url.hash = encode(JSON.stringify(props.tabs)); - history.replaceState(null, '', url.toString()); - - fetch('/', { method: 'PUT', body: `{"url":"${url.href}"}` }) - .then((response) => { - if (response.status >= 400) { - throw new Error(response.statusText); - } - - return response.text(); - }) - .then((hash) => { - const tinyUrl = new URL(location.origin); - tinyUrl.searchParams.set('hash', hash); - - navigator.clipboard.writeText(tinyUrl.toString()).then(() => { - setCopy(true); - setTimeout(setCopy, 750, false); - }); - }) - .catch(() => { - navigator.clipboard.writeText(url.href).then(() => { - setCopy(true); - setTimeout(setCopy, 750, false); - }); - }); - } - return (

    @@ -112,21 +81,6 @@ export const Header: Component<{ Export to Zip -

    @@ -146,7 +100,16 @@ export const Header: Component<{ Show menu
    - Login + + Login + + } + > + {(x) => x} +
    diff --git a/playground/components/zoomDropdown.tsx b/playground/components/zoomDropdown.tsx index 5c3dacc5..85b2a888 100644 --- a/playground/components/zoomDropdown.tsx +++ b/playground/components/zoomDropdown.tsx @@ -65,12 +65,12 @@ export const ZoomDropdown: Component<{ showMenu: boolean }> = (props) => { createEffect(() => { if (!open()) { if (containerEl) { - containerEl.removeEventListener('mousemove', onMouseMove); + containerEl.removeEventListener('mouseenter', onMouseMove); } stealFocus = true; } else { if (containerEl) { - containerEl.addEventListener('mousemove', onMouseMove, { once: true }); + containerEl.addEventListener('mouseenter', onMouseMove, { once: true }); } } }); diff --git a/playground/context.tsx b/playground/context.tsx new file mode 100644 index 00000000..735fe242 --- /dev/null +++ b/playground/context.tsx @@ -0,0 +1,50 @@ +import { createContext, createResource, createSignal, ParentComponent, Resource, useContext } from 'solid-js'; + +interface AppContextType { + token: string; + user: Resource<{ display: any; avatar: any } | undefined>; +} + +const AppContext = createContext(); + +// const API = "http://localhost:8787"; +export const API = 'https://api.solidjs.com'; + +export const AppContextProvider: ParentComponent = (props) => { + const [token, setToken] = createSignal(localStorage.getItem('token') || ''); + const [user] = createResource(token, async (token) => { + if (!token) + return { + display: '', + avatar: '', + }; + const result = await fetch(`${API}/profile`, { + headers: { + authorization: `Bearer ${token}`, + }, + }); + const body = await result.json(); + return { + display: body.display, + avatar: body.avatar, + }; + }); + return ( + + {props.children} + + ); +}; + +export const useAppContext = () => useContext(AppContext); diff --git a/playground/home.tsx b/playground/home.tsx deleted file mode 100644 index 57d3cf77..00000000 --- a/playground/home.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { useRouteData } from 'solid-app-router'; -import { Icon } from 'solid-heroicons'; -import { eyeOff, plus, x } from 'solid-heroicons/outline'; - -export const Home = () => { - const user = useRouteData(); - - return ( -
    - - - - - - - - - - - - - - - - - -
    TitleEditedOptions
    New Suspense DemoMay 17, 2022 - - -
    -
    - ); -}; diff --git a/playground/index.tsx b/playground/index.tsx index 85eebd5f..c1c0bc9e 100644 --- a/playground/index.tsx +++ b/playground/index.tsx @@ -1,12 +1,15 @@ import { Router } from 'solid-app-router'; import { render } from 'solid-js/web'; import { App } from './app'; +import { AppContextProvider } from './context'; import { registerServiceWorker } from './utils/serviceWorker'; render( () => ( - + + + ), document.querySelector('#app')!, diff --git a/playground/edit.tsx b/playground/pages/edit.tsx similarity index 82% rename from playground/edit.tsx rename to playground/pages/edit.tsx index e9ee2a41..3ef26382 100644 --- a/playground/edit.tsx +++ b/playground/pages/edit.tsx @@ -1,13 +1,12 @@ import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'; import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'; -import { parseHash } from './utils/parseHash'; -import { isValidUrl } from './utils/isValidUrl'; +import { parseHash } from '../utils/parseHash'; +import { isValidUrl } from '../utils/isValidUrl'; -import CompilerWorker from '../src/workers/compiler?worker'; -import FormatterWorker from '../src/workers/formatter?worker'; -import { exportToJSON } from './utils/exportFiles'; -import { createTabList, defaultTabs, processImport, Repl, Tab } from '../src'; +import CompilerWorker from '../../src/workers/compiler?worker'; +import FormatterWorker from '../../src/workers/formatter?worker'; +import { createTabList, defaultTabs, processImport, Repl, Tab } from '../../src'; import { createSignal } from 'solid-js'; (window as any).MonacoEnvironment = { @@ -45,10 +44,6 @@ export const Edit = (props: { dark: boolean }) => { const isHorizontal = 'isHorizontal' in params; - if (params.format === 'json') { - exportToJSON(tabs()); - } - return ( { + const user = useRouteData(); + const context = useAppContext()!; + + const [repls] = createResource( + () => user || context.user()?.display, + async (user) => { + if (!user) return { total: 0, list: [] }; + const result = await fetch(`${API}/repls/${user}/list`); + return (await result.json()) as Repls; + }, + ); + + return ( +
    + + + + + + + + + + + + + {(repl) => ( + + + + + + )} + + +
    TitleEditedOptions
    {repl.title}{repl.created_at} + + +
    +
    + ); +}; diff --git a/playground/pages/login.tsx b/playground/pages/login.tsx new file mode 100644 index 00000000..a3b75dee --- /dev/null +++ b/playground/pages/login.tsx @@ -0,0 +1,9 @@ +import { Navigate, useSearchParams } from 'solid-app-router'; +import { useAppContext } from '../context'; + +export const Login = () => { + const [params] = useSearchParams(); + const context = useAppContext()!; + context.token = params.token; + return ; +}; diff --git a/playground/utils/exportFiles.tsx b/playground/utils/exportFiles.tsx index 1e9e42dd..f2f2046b 100644 --- a/playground/utils/exportFiles.tsx +++ b/playground/utils/exportFiles.tsx @@ -1,9 +1,7 @@ import pkg from '../../package.json'; import type { Tab } from '../../src'; -import { compressToBase64 } from '@amoutonbrady/lz-string'; import dedent from 'dedent'; -type IFiles = Record; isBinary: boolean }>; const viteConfigFile = dedent` import { defineConfig } from "vite"; import solidPlugin from "vite-plugin-solid"; @@ -37,8 +35,6 @@ const tsConfig = JSON.stringify( 2, ); -const { dependencies: d, devDependencies: dd } = pkg; - const packageJSON = JSON.stringify( { scripts: { @@ -46,11 +42,11 @@ const packageJSON = JSON.stringify( build: 'vite build', }, dependencies: { - 'solid-js': d['solid-js'], + 'solid-js': pkg.dependencies['solid-js'], }, devDependencies: { - vite: dd['vite'], - 'vite-plugin-solid': dd['vite-plugin-solid'], + vite: pkg.devDependencies['vite'], + 'vite-plugin-solid': pkg.devDependencies['vite-plugin-solid'], }, }, null, @@ -72,60 +68,9 @@ const indexHTML = (tabs: Tab[]) => dedent` `; -function getParameters(parameters: { files: IFiles }) { - return compressToBase64(JSON.stringify(parameters)) - .replace(/\+/g, '-') // Convert '+' to '-' - .replace(/\//g, '_') // Convert '/' to '_' - .replace(/=+$/, ''); // Remove ending '=' -} - -export function exportToCsb(tabs: Tab[]): void { - const params = tabs.reduce((p, tab) => { - p[`src/${tab.name}.${tab.type}`] = { content: tab.source, isBinary: false }; - return p; - }, {}); - - const parameters = getParameters({ - files: { - ...params, - 'vite.config.ts': { - content: viteConfigFile, - isBinary: false, - }, - 'tsconfig.json': { - content: tsConfig, - isBinary: false, - }, - 'index.html': { - content: indexHTML(tabs), - isBinary: false, - }, - 'package.json': { - content: packageJSON, - isBinary: false, - }, - }, - }); - - const url = `https://codesandbox.io/api/v1/sandboxes/define?parameters=${parameters}`; - - const a = document.createElement('a'); - a.setAttribute('href', url); - a.setAttribute('target', '_blank'); - a.setAttribute('rel', 'noopener'); - - document.body.appendChild(a); - a.click(); - a.remove(); -} - /** * This function will convert the tabs of the playground - * into a JSON formatted playground that can then be reimported later on - * via the url `https://playground.solidjs.com/?data=my-file.json` or - * vua the import button - * - * @param tabs {Tab[]} - The tabs to export + * into a ZIP formatted playground that can then be reimported later on */ export async function exportToZip(tabs: Tab[]): Promise { const { default: JSZip } = await import('jszip'); @@ -152,22 +97,3 @@ export async function exportToZip(tabs: Tab[]): Promise { anchor.click(); anchor.remove(); } - -/** - * This function will convert the tabs of the playground - * into a JSON formatted playground that can then be reimported later on - * via the url `https://playground.solidjs.com/?data=my-file.json` or - * vua the import button - * - * @param tabs {Tab[]} - The tabs to export - */ -export function exportToJSON(tabs: Tab[]): void { - const files = tabs.map<{ name: string; content: string }>((tab) => ({ - name: tab.name, - type: tab.type, - content: tab.source, - })); - - const blob = new Blob([JSON.stringify({ files }, null, 4)], { type: 'application/json' }); - location.href = URL.createObjectURL(blob); -} From 79f68e9fd26dc0a79e5ec94ee07582a4131b5661 Mon Sep 17 00:00:00 2001 From: modderme123 Date: Tue, 17 May 2022 21:54:16 -0700 Subject: [PATCH 09/36] more tweaks --- playground/context.tsx | 2 +- playground/pages/home.tsx | 31 +++++++++++++++++++++++-------- vite.config.ts | 9 +++++++++ 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/playground/context.tsx b/playground/context.tsx index 735fe242..0b700f5e 100644 --- a/playground/context.tsx +++ b/playground/context.tsx @@ -8,7 +8,7 @@ interface AppContextType { const AppContext = createContext(); // const API = "http://localhost:8787"; -export const API = 'https://api.solidjs.com'; +export const API = '/api'; export const AppContextProvider: ParentComponent = (props) => { const [token, setToken] = createSignal(localStorage.getItem('token') || ''); diff --git a/playground/pages/home.tsx b/playground/pages/home.tsx index fd363228..41542dcd 100644 --- a/playground/pages/home.tsx +++ b/playground/pages/home.tsx @@ -1,7 +1,8 @@ -import { useRouteData } from 'solid-app-router'; +import { useNavigate, useRouteData } from 'solid-app-router'; import { Icon } from 'solid-heroicons'; import { eye, eyeOff, plus, x } from 'solid-heroicons/outline'; import { createResource, For } from 'solid-js'; +import { defaultTabs } from '../../src'; import { API, useAppContext } from '../context'; interface Repls { @@ -22,6 +23,7 @@ interface Repls { export const Home = () => { const user = useRouteData(); const context = useAppContext()!; + const navigate = useNavigate(); const [repls] = createResource( () => user || context.user()?.display, @@ -34,13 +36,26 @@ export const Home = () => { return (
    - diff --git a/vite.config.ts b/vite.config.ts index b443dad9..19bed304 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -17,4 +17,13 @@ export default defineConfig((env) => ({ }, }, }, + server: { + proxy: { + '/api': { + target: 'https://api.solidjs.com', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, ''), + }, + }, + }, })); From 5b2d13bf21eedc5a671322427f124380003eed7d Mon Sep 17 00:00:00 2001 From: modderme123 Date: Tue, 17 May 2022 22:59:18 -0700 Subject: [PATCH 10/36] prefer blobs --- src/components/preview.tsx | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/components/preview.tsx b/src/components/preview.tsx index f7af5dc0..e50b906b 100644 --- a/src/components/preview.tsx +++ b/src/components/preview.tsx @@ -1,4 +1,4 @@ -import { Component, createEffect, createSignal, splitProps, JSX, onMount } from 'solid-js'; +import { Component, createEffect, createSignal, splitProps, JSX, onMount, onCleanup } from 'solid-js'; import { useZoom } from '../hooks/useZoom'; export const Preview: Component = (props) => { @@ -21,7 +21,14 @@ export const Preview: Component = (props) => { if (isNotDom || isEmpty || !isIframeReady()) return; latestCode = internal.code.replace('render(', 'window.dispose = render('); - iframe.contentWindow!.postMessage({ event: CODE_UPDATE, code: latestCode }, '*'); + + const blob = new Blob([latestCode], { + type: 'text/javascript', + }); + const src = URL.createObjectURL(blob); + onCleanup(() => URL.revokeObjectURL(src)); + + iframe.contentWindow!.postMessage({ event: CODE_UPDATE, code: src }, '*'); }); createEffect(() => { @@ -49,7 +56,7 @@ export const Preview: Component = (props) => { - + @@ -115,7 +122,7 @@ export const Preview: Component = (props) => { eruda.position({ x: window.innerWidth - 30, y: window.innerHeight - 30 }); const style = Object.assign(document.createElement('link'), { rel: 'stylesheet', - href: '/eruda.css' + href: '${location.origin}/eruda.css' }); eruda._shadowRoot.appendChild(style); if (${internal.devtools}) eruda.show(); @@ -147,9 +154,7 @@ export const Preview: Component = (props) => { console.clear(); - const encodedCode = encodeURIComponent(code); - const dataUri = 'data:text/javascript;charset=utf-8,' + encodedCode; - await import(dataUri); + await import(code); const load = document.getElementById('load'); if (code && load) load.remove(); @@ -168,6 +173,11 @@ export const Preview: Component = (props) => { `; + const blob = new Blob([html], { + type: 'text/html', + }); + const src = URL.createObjectURL(blob); + onCleanup(() => URL.revokeObjectURL(src)); createEffect(() => { // Bail early on first mount or we are already reloading @@ -175,7 +185,7 @@ export const Preview: Component = (props) => { // Otherwise, reload everytime we clicked the reload button setIframeReady(false); - iframe.srcdoc = html; + iframe.src = src; }); const styleScale = () => { @@ -187,7 +197,6 @@ export const Preview: Component = (props) => { }; onMount(() => { - iframe.srcdoc = html; iframe.addEventListener('load', () => { setIframeReady(true); @@ -205,6 +214,7 @@ export const Preview: Component = (props) => { title="Solid REPL" class="overflow-auto p-0 w-full h-full dark:bg-other block" ref={iframe} + src={src} // @ts-ignore sandbox="allow-popups-to-escape-sandbox allow-scripts allow-popups allow-forms allow-pointer-lock allow-top-navigation allow-modals allow-same-origin" > From 7f93bc573bd9b9f79e670fc16d1629fc2b729609 Mon Sep 17 00:00:00 2001 From: modderme123 Date: Wed, 18 May 2022 22:27:50 -0700 Subject: [PATCH 11/36] add content-type header --- playground/components/header.tsx | 6 +++--- playground/context.tsx | 2 +- playground/pages/home.tsx | 24 +++++++++++++----------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/playground/components/header.tsx b/playground/components/header.tsx index eb81b8a8..b41481ab 100644 --- a/playground/components/header.tsx +++ b/playground/components/header.tsx @@ -7,7 +7,7 @@ import logo from '../assets/logo.svg?url'; import type { Tab } from '../../src'; import { exportToZip } from '../utils/exportFiles'; import { ZoomDropdown } from './zoomDropdown'; -import { useAppContext } from '../context'; +import { API, useAppContext } from '../context'; export const Header: Component<{ dark: boolean; @@ -103,12 +103,12 @@ export const Header: Component<{ + Login } > - {(x) => x} + {(x) => {x}}
    diff --git a/playground/context.tsx b/playground/context.tsx index 0b700f5e..10f03ce7 100644 --- a/playground/context.tsx +++ b/playground/context.tsx @@ -8,7 +8,7 @@ interface AppContextType { const AppContext = createContext(); // const API = "http://localhost:8787"; -export const API = '/api'; +export const API = 'https://api.solidjs.com'; // '/api'; export const AppContextProvider: ParentComponent = (props) => { const [token, setToken] = createSignal(localStorage.getItem('token') || ''); diff --git a/playground/pages/home.tsx b/playground/pages/home.tsx index 41542dcd..b6035fa6 100644 --- a/playground/pages/home.tsx +++ b/playground/pages/home.tsx @@ -21,18 +21,17 @@ interface Repls { } export const Home = () => { - const user = useRouteData(); + const routeUser = useRouteData(); const context = useAppContext()!; const navigate = useNavigate(); - const [repls] = createResource( - () => user || context.user()?.display, - async (user) => { - if (!user) return { total: 0, list: [] }; - const result = await fetch(`${API}/repls/${user}/list`); - return (await result.json()) as Repls; - }, - ); + const user = () => routeUser || context.user()?.display; + + const [repls] = createResource(user, async (user) => { + if (!user) return { total: 0, list: [] }; + const result = await fetch(`${API}/repl/${user}/list`); + return (await result.json()) as Repls; + }); return (
    @@ -43,6 +42,7 @@ export const Home = () => { method: 'POST', headers: { authorization: `Bearer ${context.token}`, + 'Content-Type': 'application/json', }, body: JSON.stringify({ title: 'Counter Example', @@ -71,8 +71,10 @@ export const Home = () => { {(repl) => ( - {repl.title} - {repl.created_at} + + {repl.title} + + {new Date(repl.created_at).toLocaleString()} From da1e70bea4cdc2435ff722a20252addb2df3ffee Mon Sep 17 00:00:00 2001 From: modderme123 Date: Wed, 18 May 2022 22:53:37 -0700 Subject: [PATCH 12/36] bug --- playground/app.tsx | 2 +- playground/pages/home.tsx | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/playground/app.tsx b/playground/app.tsx index e61c5437..162b40a8 100644 --- a/playground/app.tsx +++ b/playground/app.tsx @@ -54,7 +54,7 @@ export const App = (): JSX.Element => { } /> - } /> + } /> } /> } /> diff --git a/playground/pages/home.tsx b/playground/pages/home.tsx index b6035fa6..33814f66 100644 --- a/playground/pages/home.tsx +++ b/playground/pages/home.tsx @@ -1,4 +1,4 @@ -import { useNavigate, useRouteData } from 'solid-app-router'; +import { useNavigate, useParams } from 'solid-app-router'; import { Icon } from 'solid-heroicons'; import { eye, eyeOff, plus, x } from 'solid-heroicons/outline'; import { createResource, For } from 'solid-js'; @@ -21,11 +21,10 @@ interface Repls { } export const Home = () => { - const routeUser = useRouteData(); + const params = useParams(); const context = useAppContext()!; const navigate = useNavigate(); - - const user = () => routeUser || context.user()?.display; + const user = () => params.user || context.user()?.display; const [repls] = createResource(user, async (user) => { if (!user) return { total: 0, list: [] }; From 8bfef552142b4ccf58aa9f53db9927446b060b90 Mon Sep 17 00:00:00 2001 From: modderme123 Date: Sat, 21 May 2022 14:07:26 -0700 Subject: [PATCH 13/36] suspense --- playground/pages/edit.tsx | 46 ++++++++++++++++++++++++++++----------- playground/pages/home.tsx | 46 +++++++++++++++++++++++++++++---------- rollup.config.js | 3 ++- src/components/repl.tsx | 4 +++- src/index.ts | 1 - types/types.d.ts | 2 +- 6 files changed, 73 insertions(+), 29 deletions(-) diff --git a/playground/pages/edit.tsx b/playground/pages/edit.tsx index 3ef26382..e9163a14 100644 --- a/playground/pages/edit.tsx +++ b/playground/pages/edit.tsx @@ -6,8 +6,10 @@ import { isValidUrl } from '../utils/isValidUrl'; import CompilerWorker from '../../src/workers/compiler?worker'; import FormatterWorker from '../../src/workers/formatter?worker'; -import { createTabList, defaultTabs, processImport, Repl, Tab } from '../../src'; -import { createSignal } from 'solid-js'; +import { createTabList, defaultTabs, processImport, Tab } from '../../src'; +import { createSignal, lazy, Suspense } from 'solid-js'; + +const Repl = lazy(() => import('../../src/components/repl')); (window as any).MonacoEnvironment = { getWorker(_moduleId: unknown, label: string) { @@ -45,16 +47,34 @@ export const Edit = (props: { dark: boolean }) => { const isHorizontal = 'isHorizontal' in params; return ( - + + + + + } + > + + ); }; diff --git a/playground/pages/home.tsx b/playground/pages/home.tsx index 33814f66..b9affdc1 100644 --- a/playground/pages/home.tsx +++ b/playground/pages/home.tsx @@ -1,7 +1,7 @@ import { useNavigate, useParams } from 'solid-app-router'; import { Icon } from 'solid-heroicons'; import { eye, eyeOff, plus, x } from 'solid-heroicons/outline'; -import { createResource, For } from 'solid-js'; +import { createResource, For, Suspense } from 'solid-js'; import { defaultTabs } from '../../src'; import { API, useAppContext } from '../context'; @@ -67,20 +67,42 @@ export const Home = () => { - - {(repl) => ( + - - {repl.title} - - {new Date(repl.created_at).toLocaleString()} - - - + + + + + - )} - + } + > + + {(repl) => ( + + + {repl.title} + + {new Date(repl.created_at).toLocaleString()} + + + + + + )} + +
    diff --git a/rollup.config.js b/rollup.config.js index 7a83e6dd..72041c33 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -110,7 +110,7 @@ const preppy = { }; rollup({ - input: ['src/index.ts', 'src/workers/compiler.ts', 'src/workers/formatter.ts'], + input: ['src/index.ts', 'src/workers/compiler.ts', 'src/workers/formatter.ts', 'src/components/repl.tsx'], external: ['solid-js', 'solid-js/web', 'solid-js/store', 'monaco-editor'], acornInjectPlugins: [jsx()], plugins: [ @@ -192,5 +192,6 @@ rollup({ const basePath = cwd(); renameSync(resolve(basePath, 'lib/index.js'), resolve(basePath, 'lib/index.jsx')); + renameSync(resolve(basePath, 'lib/repl.js'), resolve(basePath, 'lib/repl.jsx')); }); }); diff --git a/src/components/repl.tsx b/src/components/repl.tsx index d2f2d18b..d2818f40 100644 --- a/src/components/repl.tsx +++ b/src/components/repl.tsx @@ -26,7 +26,7 @@ type ValueOf = T[keyof T]; const id = (tab: Tab) => `${tab.name}.${tab.type}`; -export const Repl: typeof ReplProps = (props) => { +const Repl: typeof ReplProps = (props) => { // this is bad style don't do this const { compiler, formatter } = props; let now: number; @@ -511,3 +511,5 @@ export const Repl: typeof ReplProps = (props) => {
    ); }; + +export default Repl; diff --git a/src/index.ts b/src/index.ts index 86339151..945d2dde 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,6 @@ import './assets/main.css'; import 'virtual:windi.css'; -export { Repl } from './components/repl'; export { processImport } from './utils/processImport'; export { createTabList } from './utils/createTabList'; import type { Tab } from '../types/types'; diff --git a/types/types.d.ts b/types/types.d.ts index 0cb56d91..4c420e75 100644 --- a/types/types.d.ts +++ b/types/types.d.ts @@ -1,7 +1,7 @@ import { Component } from 'solid-js'; import { editor as mEditor } from 'monaco-editor'; -export declare const Repl: Component<{ +export type Repl = Component<{ compiler: Worker; formatter?: Worker; isHorizontal: boolean; From eab598f5c5a6f02007a45bd66c38c3c4d235cea2 Mon Sep 17 00:00:00 2001 From: modderme123 Date: Sat, 21 May 2022 14:08:54 -0700 Subject: [PATCH 14/36] update --- package.json | 18 +- pnpm-lock.yaml | 915 +++++++++++++++++++++++++------------------------ 2 files changed, 472 insertions(+), 461 deletions(-) diff --git a/package.json b/package.json index 3bf5648a..0f3a1346 100644 --- a/package.json +++ b/package.json @@ -22,9 +22,9 @@ "prepublishOnly": "pnpm build:lib" }, "devDependencies": { - "@babel/core": "^7.17.12", + "@babel/core": "^7.18.0", "@babel/plugin-syntax-jsx": "^7.17.12", - "@babel/types": "^7.17.12", + "@babel/types": "^7.18.0", "@rollup/plugin-babel": "^5.3.1", "@rollup/plugin-commonjs": "^22.0.0", "@rollup/plugin-json": "^4.1.0", @@ -45,29 +45,29 @@ "rollup-plugin-delete": "^2.0.0", "rollup-plugin-import-css": "^3.0.3", "rollup-plugin-windicss": "^1.8.4", - "solid-app-router": "^0.3.2", + "solid-app-router": "^0.3.3", "typescript": "^4.6.4", "vite": "^2.9.9", "vite-plugin-solid": "^2.2.6", "vite-plugin-windicss": "^1.8.4", - "windicss": "^3.5.3", + "windicss": "^3.5.4", "workbox-cli": "^6.5.3" }, "dependencies": { "@amoutonbrady/lz-string": "^0.0.1", "@babel/preset-typescript": "^7.17.12", - "@babel/standalone": "^7.17.12", - "babel-preset-solid": "1.4.0", + "@babel/standalone": "^7.18.1", + "babel-preset-solid": "1.4.2", "dedent": "^0.7.0", - "jszip": "^3.9.1", + "jszip": "^3.10.0", "mitt": "^3.0.0", "monaco-editor-textmate": "^3.0.0", "monaco-textmate": "^3.0.1", "onigasm": "^2.2.5", "prettier": "^2.6.2", - "rollup": "^2.73.0", + "rollup": "^2.74.1", "solid-dismiss": "^1.2.1", "solid-heroicons": "^2.0.3", - "solid-js": "1.4.1" + "solid-js": "1.4.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e12e11b6..5f44b2f3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,11 +2,11 @@ lockfileVersion: 5.4 specifiers: '@amoutonbrady/lz-string': ^0.0.1 - '@babel/core': ^7.17.12 + '@babel/core': ^7.18.0 '@babel/plugin-syntax-jsx': ^7.17.12 '@babel/preset-typescript': ^7.17.12 - '@babel/standalone': ^7.17.12 - '@babel/types': ^7.17.12 + '@babel/standalone': ^7.18.1 + '@babel/types': ^7.18.0 '@rollup/plugin-babel': ^5.3.1 '@rollup/plugin-commonjs': ^22.0.0 '@rollup/plugin-json': ^4.1.0 @@ -19,11 +19,11 @@ specifiers: acorn: ^8.7.1 acorn-jsx: ^5.3.2 assert: ^2.0.0 - babel-preset-solid: 1.4.0 + babel-preset-solid: 1.4.2 dedent: ^0.7.0 fs-extra: ^10.1.0 jiti: ^1.13.0 - jszip: ^3.9.1 + jszip: ^3.10.0 mime: ^3.0.0 mitt: ^3.0.0 monaco-editor: ~0.33.0 @@ -32,47 +32,47 @@ specifiers: onigasm: ^2.2.5 prettier: ^2.6.2 register-service-worker: ^1.7.2 - rollup: ^2.73.0 + rollup: ^2.74.1 rollup-plugin-delete: ^2.0.0 rollup-plugin-import-css: ^3.0.3 rollup-plugin-windicss: ^1.8.4 - solid-app-router: ^0.3.2 + solid-app-router: ^0.3.3 solid-dismiss: ^1.2.1 solid-heroicons: ^2.0.3 - solid-js: 1.4.1 + solid-js: 1.4.2 typescript: ^4.6.4 vite: ^2.9.9 vite-plugin-solid: ^2.2.6 vite-plugin-windicss: ^1.8.4 - windicss: ^3.5.3 + windicss: ^3.5.4 workbox-cli: ^6.5.3 dependencies: '@amoutonbrady/lz-string': 0.0.1 - '@babel/preset-typescript': 7.17.12_@babel+core@7.17.12 - '@babel/standalone': 7.17.12 - babel-preset-solid: 1.4.0_@babel+core@7.17.12 + '@babel/preset-typescript': 7.17.12_@babel+core@7.18.0 + '@babel/standalone': 7.18.1 + babel-preset-solid: 1.4.2_@babel+core@7.18.0 dedent: 0.7.0 - jszip: 3.9.1 + jszip: 3.10.0 mitt: 3.0.0 monaco-editor-textmate: 3.0.0_nurowwtvogix47pnszh4m7lsnu monaco-textmate: 3.0.1_onigasm@2.2.5 onigasm: 2.2.5 prettier: 2.6.2 - rollup: 2.73.0 - solid-dismiss: 1.2.1_solid-js@1.4.1 + rollup: 2.74.1 + solid-dismiss: 1.2.1_solid-js@1.4.2 solid-heroicons: 2.0.3 - solid-js: 1.4.1 + solid-js: 1.4.2 devDependencies: - '@babel/core': 7.17.12 - '@babel/plugin-syntax-jsx': 7.17.12_@babel+core@7.17.12 - '@babel/types': 7.17.12 - '@rollup/plugin-babel': 5.3.1_cozkpsv5bxi2sl4sehld7oc7ze - '@rollup/plugin-commonjs': 22.0.0_rollup@2.73.0 - '@rollup/plugin-json': 4.1.0_rollup@2.73.0 - '@rollup/plugin-node-resolve': 13.3.0_rollup@2.73.0 - '@rollup/plugin-replace': 4.0.0_rollup@2.73.0 + '@babel/core': 7.18.0 + '@babel/plugin-syntax-jsx': 7.17.12_@babel+core@7.18.0 + '@babel/types': 7.18.0 + '@rollup/plugin-babel': 5.3.1_ykg7cmcqpmn5fbkb5gxs7i3du4 + '@rollup/plugin-commonjs': 22.0.0_rollup@2.74.1 + '@rollup/plugin-json': 4.1.0_rollup@2.74.1 + '@rollup/plugin-node-resolve': 13.3.0_rollup@2.74.1 + '@rollup/plugin-replace': 4.0.0_rollup@2.74.1 '@types/babel__standalone': 7.1.4 '@types/dedent': 0.7.0 '@types/fs-extra': 9.0.13 @@ -86,14 +86,14 @@ devDependencies: monaco-editor: 0.33.0 register-service-worker: 1.7.2 rollup-plugin-delete: 2.0.0 - rollup-plugin-import-css: 3.0.3_rollup@2.73.0 - rollup-plugin-windicss: 1.8.4_rollup@2.73.0 - solid-app-router: 0.3.2_solid-js@1.4.1 + rollup-plugin-import-css: 3.0.3_rollup@2.74.1 + rollup-plugin-windicss: 1.8.4_rollup@2.74.1 + solid-app-router: 0.3.3_solid-js@1.4.2 typescript: 4.6.4 vite: 2.9.9 vite-plugin-solid: 2.2.6 vite-plugin-windicss: 1.8.4_vite@2.9.9 - windicss: 3.5.3 + windicss: 3.5.4 workbox-cli: 6.5.3 packages: @@ -137,20 +137,20 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.17.12: - resolution: {integrity: sha512-44ODe6O1IVz9s2oJE3rZ4trNNKTX9O7KpQpfAP4t8QII/zwrVRHL7i2pxhqtcY7tqMLrrKfMlBKnm1QlrRFs5w==} + /@babel/core/7.18.0: + resolution: {integrity: sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.16.7 - '@babel/generator': 7.17.12 - '@babel/helper-compilation-targets': 7.17.10_@babel+core@7.17.12 - '@babel/helper-module-transforms': 7.17.12 - '@babel/helpers': 7.17.9 - '@babel/parser': 7.17.12 + '@babel/generator': 7.18.0 + '@babel/helper-compilation-targets': 7.17.10_@babel+core@7.18.0 + '@babel/helper-module-transforms': 7.18.0 + '@babel/helpers': 7.18.0 + '@babel/parser': 7.18.0 '@babel/template': 7.16.7 - '@babel/traverse': 7.17.12 - '@babel/types': 7.17.12 + '@babel/traverse': 7.18.0 + '@babel/types': 7.18.0 convert-source-map: 1.8.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -160,11 +160,11 @@ packages: - supports-color dev: true - /@babel/generator/7.17.12: - resolution: {integrity: sha512-V49KtZiiiLjH/CnIW6OjJdrenrGoyh6AmKQ3k2AZFKozC1h846Q4NYlZ5nqAigPDUXfGzC88+LOUuG8yKd2kCw==} + /@babel/generator/7.18.0: + resolution: {integrity: sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 '@jridgewell/gen-mapping': 0.3.1 jsesc: 2.5.2 @@ -172,36 +172,36 @@ packages: resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 /@babel/helper-builder-binary-assignment-operator-visitor/7.16.7: resolution: {integrity: sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.16.7 - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 dev: true - /@babel/helper-compilation-targets/7.17.10_@babel+core@7.17.12: + /@babel/helper-compilation-targets/7.17.10_@babel+core@7.18.0: resolution: {integrity: sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/compat-data': 7.17.10 - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-validator-option': 7.16.7 browserslist: 4.20.3 semver: 6.3.0 dev: true - /@babel/helper-create-class-features-plugin/7.17.12_@babel+core@7.17.12: - resolution: {integrity: sha512-sZoOeUTkFJMyhqCei2+Z+wtH/BehW8NVKQt7IRUQlRiOARuXymJYfN/FCcI8CvVbR0XVyDM6eLFOlR7YtiXnew==} + /@babel/helper-create-class-features-plugin/7.18.0_@babel+core@7.18.0: + resolution: {integrity: sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-annotate-as-pure': 7.16.7 '@babel/helper-environment-visitor': 7.16.7 '@babel/helper-function-name': 7.17.9 @@ -212,27 +212,27 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-create-regexp-features-plugin/7.17.12_@babel+core@7.17.12: + /@babel/helper-create-regexp-features-plugin/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-annotate-as-pure': 7.16.7 regexpu-core: 5.0.1 dev: true - /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.17.12: + /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.18.0: resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-compilation-targets': 7.17.10_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-compilation-targets': 7.17.10_@babel+core@7.18.0 '@babel/helper-module-imports': 7.16.7 '@babel/helper-plugin-utils': 7.17.12 - '@babel/traverse': 7.17.12 + '@babel/traverse': 7.18.0 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.0 @@ -245,13 +245,13 @@ packages: resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 /@babel/helper-explode-assignable-expression/7.16.7: resolution: {integrity: sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 dev: true /@babel/helper-function-name/7.17.9: @@ -259,35 +259,35 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.16.7 - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 /@babel/helper-hoist-variables/7.16.7: resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 /@babel/helper-member-expression-to-functions/7.17.7: resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 /@babel/helper-module-imports/7.16.0: resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 /@babel/helper-module-imports/7.16.7: resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 dev: true - /@babel/helper-module-transforms/7.17.12: - resolution: {integrity: sha512-t5s2BeSWIghhFRPh9XMn6EIGmvn8Lmw5RVASJzkIx1mSemubQQBNIZiQD7WzaFmaHIrjAec4x8z9Yx8SjJ1/LA==} + /@babel/helper-module-transforms/7.18.0: + resolution: {integrity: sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.16.7 @@ -296,8 +296,8 @@ packages: '@babel/helper-split-export-declaration': 7.16.7 '@babel/helper-validator-identifier': 7.16.7 '@babel/template': 7.16.7 - '@babel/traverse': 7.17.12 - '@babel/types': 7.17.12 + '@babel/traverse': 7.18.0 + '@babel/types': 7.18.0 transitivePeerDependencies: - supports-color dev: true @@ -306,7 +306,7 @@ packages: resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 /@babel/helper-plugin-utils/7.17.12: resolution: {integrity: sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==} @@ -318,7 +318,7 @@ packages: dependencies: '@babel/helper-annotate-as-pure': 7.16.7 '@babel/helper-wrap-function': 7.16.8 - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 transitivePeerDependencies: - supports-color dev: true @@ -330,8 +330,8 @@ packages: '@babel/helper-environment-visitor': 7.16.7 '@babel/helper-member-expression-to-functions': 7.17.7 '@babel/helper-optimise-call-expression': 7.16.7 - '@babel/traverse': 7.17.12 - '@babel/types': 7.17.12 + '@babel/traverse': 7.18.0 + '@babel/types': 7.18.0 transitivePeerDependencies: - supports-color @@ -339,21 +339,21 @@ packages: resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 dev: true /@babel/helper-skip-transparent-expression-wrappers/7.16.0: resolution: {integrity: sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 dev: true /@babel/helper-split-export-declaration/7.16.7: resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 /@babel/helper-validator-identifier/7.16.7: resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} @@ -369,19 +369,19 @@ packages: dependencies: '@babel/helper-function-name': 7.17.9 '@babel/template': 7.16.7 - '@babel/traverse': 7.17.12 - '@babel/types': 7.17.12 + '@babel/traverse': 7.18.0 + '@babel/types': 7.18.0 transitivePeerDependencies: - supports-color dev: true - /@babel/helpers/7.17.9: - resolution: {integrity: sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==} + /@babel/helpers/7.18.0: + resolution: {integrity: sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.16.7 - '@babel/traverse': 7.17.12 - '@babel/types': 7.17.12 + '@babel/traverse': 7.18.0 + '@babel/types': 7.18.0 transitivePeerDependencies: - supports-color dev: true @@ -394,382 +394,392 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.17.12: - resolution: {integrity: sha512-FLzHmN9V3AJIrWfOpvRlZCeVg/WLdicSnTMsLur6uDj9TT8ymUlG9XxURdW/XvuygK+2CW0poOJABdA4m/YKxA==} + /@babel/parser/7.18.0: + resolution: {integrity: sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.17.12 + '@babel/types': 7.18.0 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.17.12_@babel+core@7.17.12: + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.17.12_@babel+core@7.17.12: + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 - '@babel/plugin-proposal-optional-chaining': 7.17.12_@babel+core@7.17.12 + '@babel/plugin-proposal-optional-chaining': 7.17.12_@babel+core@7.18.0 dev: true - /@babel/plugin-proposal-async-generator-functions/7.17.12_@babel+core@7.17.12: + /@babel/plugin-proposal-async-generator-functions/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 '@babel/helper-remap-async-to-generator': 7.16.8 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.12 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-properties/7.17.12_@babel+core@7.17.12: + /@babel/plugin-proposal-class-properties/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-create-class-features-plugin': 7.17.12_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-create-class-features-plugin': 7.18.0_@babel+core@7.18.0 '@babel/helper-plugin-utils': 7.17.12 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-static-block/7.17.12_@babel+core@7.17.12: - resolution: {integrity: sha512-8ILyDG6eL14F8iub97dVc8q35Md0PJYAnA5Kz9NACFOkt6ffCcr0FISyUPKHsvuAy36fkpIitxZ9bVYPFMGQHA==} + /@babel/plugin-proposal-class-static-block/7.18.0_@babel+core@7.18.0: + resolution: {integrity: sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-create-class-features-plugin': 7.17.12_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-create-class-features-plugin': 7.18.0_@babel+core@7.18.0 '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.17.12 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.18.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-dynamic-import/7.16.7_@babel+core@7.17.12: + /@babel/plugin-proposal-dynamic-import/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.12 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.0 dev: true - /@babel/plugin-proposal-export-namespace-from/7.17.12_@babel+core@7.17.12: + /@babel/plugin-proposal-export-namespace-from/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.17.12 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.18.0 dev: true - /@babel/plugin-proposal-json-strings/7.17.12_@babel+core@7.17.12: + /@babel/plugin-proposal-json-strings/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.12 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.0 dev: true - /@babel/plugin-proposal-logical-assignment-operators/7.17.12_@babel+core@7.17.12: + /@babel/plugin-proposal-logical-assignment-operators/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.12 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.0 dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.17.12_@babel+core@7.17.12: + /@babel/plugin-proposal-nullish-coalescing-operator/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.12 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.0 dev: true - /@babel/plugin-proposal-numeric-separator/7.16.7_@babel+core@7.17.12: + /@babel/plugin-proposal-numeric-separator/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.12 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.0 dev: true - /@babel/plugin-proposal-object-rest-spread/7.17.12_@babel+core@7.17.12: - resolution: {integrity: sha512-6l9cO3YXXRh4yPCPRA776ZyJ3RobG4ZKJZhp7NDRbKIOeV3dBPG8FXCF7ZtiO2RTCIOkQOph1xDDcc01iWVNjQ==} + /@babel/plugin-proposal-object-rest-spread/7.18.0_@babel+core@7.18.0: + resolution: {integrity: sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.17.10 - '@babel/core': 7.17.12 - '@babel/helper-compilation-targets': 7.17.10_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-compilation-targets': 7.17.10_@babel+core@7.18.0 '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.12 - '@babel/plugin-transform-parameters': 7.17.12_@babel+core@7.17.12 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.0 + '@babel/plugin-transform-parameters': 7.17.12_@babel+core@7.18.0 dev: true - /@babel/plugin-proposal-optional-catch-binding/7.16.7_@babel+core@7.17.12: + /@babel/plugin-proposal-optional-catch-binding/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.12 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.0 dev: true - /@babel/plugin-proposal-optional-chaining/7.17.12_@babel+core@7.17.12: + /@babel/plugin-proposal-optional-chaining/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.12 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.0 dev: true - /@babel/plugin-proposal-private-methods/7.17.12_@babel+core@7.17.12: + /@babel/plugin-proposal-private-methods/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-create-class-features-plugin': 7.17.12_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-create-class-features-plugin': 7.18.0_@babel+core@7.18.0 '@babel/helper-plugin-utils': 7.17.12 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object/7.17.12_@babel+core@7.17.12: + /@babel/plugin-proposal-private-property-in-object/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-create-class-features-plugin': 7.17.12_@babel+core@7.17.12 + '@babel/helper-create-class-features-plugin': 7.18.0_@babel+core@7.18.0 '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.17.12 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.18.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-unicode-property-regex/7.17.12_@babel+core@7.17.12: + /@babel/plugin-proposal-unicode-property-regex/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-create-regexp-features-plugin': 7.17.12_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-create-regexp-features-plugin': 7.17.12_@babel+core@7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.17.12: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.18.0: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.17.12: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.18.0: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.17.12: + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.18.0: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.17.12: + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.18.0: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.17.12: + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.18.0: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.17.12: + /@babel/plugin-syntax-import-assertions/7.17.12_@babel+core@7.18.0: + resolution: {integrity: sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.0 + '@babel/helper-plugin-utils': 7.17.12 + dev: true + + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.18.0: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-jsx/7.17.12_@babel+core@7.17.12: + /@babel/plugin-syntax-jsx/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.17.12: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.18.0: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.17.12: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.18.0: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.17.12: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.18.0: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.17.12: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.18.0: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.17.12: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.18.0: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.17.12: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.18.0: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.17.12: + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.18.0: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.17.12: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.18.0: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-syntax-typescript/7.17.12_@babel+core@7.17.12: + /@babel/plugin-syntax-typescript/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 - /@babel/plugin-transform-arrow-functions/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-arrow-functions/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-async-to-generator/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-async-to-generator/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-module-imports': 7.16.7 '@babel/helper-plugin-utils': 7.17.12 '@babel/helper-remap-async-to-generator': 7.16.8 @@ -777,33 +787,33 @@ packages: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.17.12: + /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-block-scoping/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-block-scoping/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-jw8XW/B1i7Lqwqj2CbrViPcZijSxfguBWZP2aN59NHgxUyO/OcO1mfdCxH13QhN5LbWhPkX+f+brKGhZTiqtZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-classes/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-classes/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-cvO7lc7pZat6BsvH6l/EGaI8zpl8paICaoGk+7x7guvtfak/TbIf66nYmJOH13EuG0H+Xx3M+9LQDtSvZFKXKw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-annotate-as-pure': 7.16.7 '@babel/helper-environment-visitor': 7.16.7 '@babel/helper-function-name': 7.17.9 @@ -816,122 +826,122 @@ packages: - supports-color dev: true - /@babel/plugin-transform-computed-properties/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-computed-properties/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-destructuring/7.17.12_@babel+core@7.17.12: - resolution: {integrity: sha512-P8pt0YiKtX5UMUL5Xzsc9Oyij+pJE6JuC+F1k0/brq/OOGs5jDa1If3OY0LRWGvJsJhI+8tsiecL3nJLc0WTlg==} + /@babel/plugin-transform-destructuring/7.18.0_@babel+core@7.18.0: + resolution: {integrity: sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.17.12: + /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-create-regexp-features-plugin': 7.17.12_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-create-regexp-features-plugin': 7.17.12_@babel+core@7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-duplicate-keys/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-duplicate-keys/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.17.12: + /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-builder-binary-assignment-operator-visitor': 7.16.7 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-for-of/7.17.12_@babel+core@7.17.12: - resolution: {integrity: sha512-76lTwYaCxw8ldT7tNmye4LLwSoKDbRCBzu6n/DcK/P3FOR29+38CIIaVIZfwol9By8W/QHORYEnYSLuvcQKrsg==} + /@babel/plugin-transform-for-of/7.18.1_@babel+core@7.18.0: + resolution: {integrity: sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.17.12: + /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-compilation-targets': 7.17.10_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-compilation-targets': 7.17.10_@babel+core@7.18.0 '@babel/helper-function-name': 7.17.9 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-literals/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-literals/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.17.12: + /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-modules-amd/7.17.12_@babel+core@7.17.12: - resolution: {integrity: sha512-p5rt9tB5Ndcc2Za7CeNxVf7YAjRcUMR6yi8o8tKjb9KhRkEvXwa+C0hj6DA5bVDkKRxB0NYhMUGbVKoFu4+zEA==} + /@babel/plugin-transform-modules-amd/7.18.0_@babel+core@7.18.0: + resolution: {integrity: sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-module-transforms': 7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-module-transforms': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.17.12_@babel+core@7.17.12: - resolution: {integrity: sha512-tVPs6MImAJz+DiX8Y1xXEMdTk5Lwxu9jiPjlS+nv5M2A59R7+/d1+9A8C/sbuY0b3QjIxqClkj6KAplEtRvzaA==} + /@babel/plugin-transform-modules-commonjs/7.18.0_@babel+core@7.18.0: + resolution: {integrity: sha512-cCeR0VZWtfxWS4YueAK2qtHtBPJRSaJcMlbS8jhSIm/A3E2Kpro4W1Dn4cqJtp59dtWfXjQwK7SPKF8ghs7rlw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-module-transforms': 7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-module-transforms': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 '@babel/helper-simple-access': 7.17.7 babel-plugin-dynamic-import-node: 2.3.3 @@ -939,15 +949,15 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs/7.17.12_@babel+core@7.17.12: - resolution: {integrity: sha512-NVhDb0q00hqZcuLduUf/kMzbOQHiocmPbIxIvk23HLiEqaTKC/l4eRxeC7lO63M72BmACoiKOcb9AkOAJRerpw==} + /@babel/plugin-transform-modules-systemjs/7.18.0_@babel+core@7.18.0: + resolution: {integrity: sha512-vwKpxdHnlM5tIrRt/eA0bzfbi7gUBLN08vLu38np1nZevlPySRe6yvuATJB5F/WPJ+ur4OXwpVYq9+BsxqAQuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-module-transforms': 7.17.12 + '@babel/helper-module-transforms': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 '@babel/helper-validator-identifier': 7.16.7 babel-plugin-dynamic-import-node: 2.3.3 @@ -955,298 +965,300 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-umd/7.17.12_@babel+core@7.17.12: - resolution: {integrity: sha512-BnsPkrUHsjzZGpnrmJeDFkOMMljWFHPjDc9xDcz71/C+ybF3lfC3V4m3dwXPLZrE5b3bgd4V+3/Pj+3620d7IA==} + /@babel/plugin-transform-modules-umd/7.18.0_@babel+core@7.18.0: + resolution: {integrity: sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-module-transforms': 7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-module-transforms': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-named-capturing-groups-regex/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-named-capturing-groups-regex/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-create-regexp-features-plugin': 7.17.12_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-create-regexp-features-plugin': 7.17.12_@babel+core@7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-new-target/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-new-target/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.17.12: + /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 '@babel/helper-replace-supers': 7.16.7 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-parameters/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-parameters/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.17.12: + /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-regenerator/7.17.9_@babel+core@7.17.12: - resolution: {integrity: sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==} + /@babel/plugin-transform-regenerator/7.18.0_@babel+core@7.18.0: + resolution: {integrity: sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-plugin-utils': 7.17.12 regenerator-transform: 0.15.0 dev: true - /@babel/plugin-transform-reserved-words/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-reserved-words/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.17.12: + /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-spread/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-spread/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 dev: true - /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.17.12: + /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-template-literals/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-template-literals/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-kAKJ7DX1dSRa2s7WN1xUAuaQmkTpN+uig4wCKWivVXIObqGbVTUlSavHyfI2iZvz89GFAMGm9p2DBJ4Y1Tp0hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-typeof-symbol/7.17.12_@babel+core@7.17.12: + /@babel/plugin-transform-typeof-symbol/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-typescript/7.17.12_@babel+core@7.17.12: - resolution: {integrity: sha512-ICbXZqg6hgenjmwciVI/UfqZtExBrZOrS8sLB5mTHGO/j08Io3MmooULBiijWk9JBknjM3CbbtTc/0ZsqLrjXQ==} + /@babel/plugin-transform-typescript/7.18.1_@babel+core@7.18.0: + resolution: {integrity: sha512-F+RJmL479HJmC0KeqqwEGZMg1P7kWArLGbAKfEi9yPthJyMNjF+DjxFF/halfQvq1Q9GFM4TUbYDNV8xe4Ctqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-create-class-features-plugin': 7.17.12_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-create-class-features-plugin': 7.18.0_@babel+core@7.18.0 '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-typescript': 7.17.12_@babel+core@7.17.12 + '@babel/plugin-syntax-typescript': 7.17.12_@babel+core@7.18.0 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.17.12: + /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.17.12: + /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.18.0: resolution: {integrity: sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-create-regexp-features-plugin': 7.17.12_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-create-regexp-features-plugin': 7.17.12_@babel+core@7.18.0 '@babel/helper-plugin-utils': 7.17.12 dev: true - /@babel/preset-env/7.17.12_@babel+core@7.17.12: - resolution: {integrity: sha512-Kke30Rj3Lmcx97bVs71LO0s8M6FmJ7tUAQI9fNId62rf0cYG1UAWwdNO9/sE0/pLEahAw1MqMorymoD12bj5Fg==} + /@babel/preset-env/7.18.0_@babel+core@7.18.0: + resolution: {integrity: sha512-cP74OMs7ECLPeG1reiCQ/D/ypyOxgfm8uR6HRYV23vTJ7Lu1nbgj9DQDo/vH59gnn7GOAwtTDPPYV4aXzsMKHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.17.10 - '@babel/core': 7.17.12 - '@babel/helper-compilation-targets': 7.17.10_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-compilation-targets': 7.17.10_@babel+core@7.18.0 '@babel/helper-plugin-utils': 7.17.12 '@babel/helper-validator-option': 7.16.7 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-proposal-async-generator-functions': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-proposal-class-properties': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-proposal-class-static-block': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-proposal-dynamic-import': 7.16.7_@babel+core@7.17.12 - '@babel/plugin-proposal-export-namespace-from': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-proposal-json-strings': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-proposal-logical-assignment-operators': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-proposal-numeric-separator': 7.16.7_@babel+core@7.17.12 - '@babel/plugin-proposal-object-rest-spread': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-proposal-optional-catch-binding': 7.16.7_@babel+core@7.17.12 - '@babel/plugin-proposal-optional-chaining': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-proposal-private-methods': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-proposal-private-property-in-object': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-proposal-unicode-property-regex': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.17.12 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.17.12 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.12 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.17.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.12 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.12 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.17.12 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.17.12 - '@babel/plugin-transform-arrow-functions': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-async-to-generator': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-block-scoped-functions': 7.16.7_@babel+core@7.17.12 - '@babel/plugin-transform-block-scoping': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-classes': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-computed-properties': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-destructuring': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.17.12 - '@babel/plugin-transform-duplicate-keys': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-exponentiation-operator': 7.16.7_@babel+core@7.17.12 - '@babel/plugin-transform-for-of': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-function-name': 7.16.7_@babel+core@7.17.12 - '@babel/plugin-transform-literals': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.17.12 - '@babel/plugin-transform-modules-amd': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-modules-commonjs': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-modules-systemjs': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-modules-umd': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-named-capturing-groups-regex': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-new-target': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-object-super': 7.16.7_@babel+core@7.17.12 - '@babel/plugin-transform-parameters': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-property-literals': 7.16.7_@babel+core@7.17.12 - '@babel/plugin-transform-regenerator': 7.17.9_@babel+core@7.17.12 - '@babel/plugin-transform-reserved-words': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.17.12 - '@babel/plugin-transform-spread': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-sticky-regex': 7.16.7_@babel+core@7.17.12 - '@babel/plugin-transform-template-literals': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-typeof-symbol': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.17.12 - '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.17.12 - '@babel/preset-modules': 0.1.5_@babel+core@7.17.12 - '@babel/types': 7.17.12 - babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.17.12 - babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.17.12 - babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.17.12 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-proposal-async-generator-functions': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-proposal-class-properties': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-proposal-class-static-block': 7.18.0_@babel+core@7.18.0 + '@babel/plugin-proposal-dynamic-import': 7.16.7_@babel+core@7.18.0 + '@babel/plugin-proposal-export-namespace-from': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-proposal-json-strings': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-proposal-logical-assignment-operators': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-proposal-numeric-separator': 7.16.7_@babel+core@7.18.0 + '@babel/plugin-proposal-object-rest-spread': 7.18.0_@babel+core@7.18.0 + '@babel/plugin-proposal-optional-catch-binding': 7.16.7_@babel+core@7.18.0 + '@babel/plugin-proposal-optional-chaining': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-proposal-private-methods': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-proposal-private-property-in-object': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-proposal-unicode-property-regex': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.0 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.18.0 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.18.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.18.0 + '@babel/plugin-syntax-import-assertions': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.18.0 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.18.0 + '@babel/plugin-transform-arrow-functions': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-async-to-generator': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-block-scoped-functions': 7.16.7_@babel+core@7.18.0 + '@babel/plugin-transform-block-scoping': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-classes': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-computed-properties': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-destructuring': 7.18.0_@babel+core@7.18.0 + '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.18.0 + '@babel/plugin-transform-duplicate-keys': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-exponentiation-operator': 7.16.7_@babel+core@7.18.0 + '@babel/plugin-transform-for-of': 7.18.1_@babel+core@7.18.0 + '@babel/plugin-transform-function-name': 7.16.7_@babel+core@7.18.0 + '@babel/plugin-transform-literals': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.18.0 + '@babel/plugin-transform-modules-amd': 7.18.0_@babel+core@7.18.0 + '@babel/plugin-transform-modules-commonjs': 7.18.0_@babel+core@7.18.0 + '@babel/plugin-transform-modules-systemjs': 7.18.0_@babel+core@7.18.0 + '@babel/plugin-transform-modules-umd': 7.18.0_@babel+core@7.18.0 + '@babel/plugin-transform-named-capturing-groups-regex': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-new-target': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-object-super': 7.16.7_@babel+core@7.18.0 + '@babel/plugin-transform-parameters': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-property-literals': 7.16.7_@babel+core@7.18.0 + '@babel/plugin-transform-regenerator': 7.18.0_@babel+core@7.18.0 + '@babel/plugin-transform-reserved-words': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.18.0 + '@babel/plugin-transform-spread': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-sticky-regex': 7.16.7_@babel+core@7.18.0 + '@babel/plugin-transform-template-literals': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-typeof-symbol': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.18.0 + '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.18.0 + '@babel/preset-modules': 0.1.5_@babel+core@7.18.0 + '@babel/types': 7.18.0 + babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.18.0 + babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.18.0 + babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.18.0 core-js-compat: 3.22.5 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules/0.1.5_@babel+core@7.17.12: + /@babel/preset-modules/0.1.5_@babel+core@7.18.0: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-proposal-unicode-property-regex': 7.17.12_@babel+core@7.17.12 - '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.17.12 - '@babel/types': 7.17.12 + '@babel/plugin-proposal-unicode-property-regex': 7.17.12_@babel+core@7.18.0 + '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.18.0 + '@babel/types': 7.18.0 esutils: 2.0.3 dev: true - /@babel/preset-typescript/7.17.12_@babel+core@7.17.12: + /@babel/preset-typescript/7.17.12_@babel+core@7.18.0: resolution: {integrity: sha512-S1ViF8W2QwAKUGJXxP9NAfNaqGDdEBJKpYkxHf5Yy2C4NPPzXGeR3Lhk7G8xJaaLcFTRfNjVbtbVtm8Gb0mqvg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-plugin-utils': 7.17.12 '@babel/helper-validator-option': 7.16.7 - '@babel/plugin-transform-typescript': 7.17.12_@babel+core@7.17.12 + '@babel/plugin-transform-typescript': 7.18.1_@babel+core@7.18.0 transitivePeerDependencies: - supports-color - /@babel/runtime/7.17.9: - resolution: {integrity: sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==} + /@babel/runtime/7.18.0: + resolution: {integrity: sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.9 dev: true - /@babel/standalone/7.17.12: - resolution: {integrity: sha512-U14lJUFnEXZn/t8v516Hok6pZR6mRu7wk+Ivl2uvDJ1elA7kbYVh0djVdQvQDatMerR/P8yPJpNCuCxWHsWpaA==} + /@babel/standalone/7.18.1: + resolution: {integrity: sha512-RPTw2fR7FlvRqOa4/UCVgFz7RrL+gka8imIaswu6a8DOLDZ0bP+/ttHNw3W4vvabvScjDWNVtR0RG/C13KQBtw==} engines: {node: '>=6.9.0'} dev: false @@ -1255,28 +1267,28 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.16.7 - '@babel/parser': 7.17.12 - '@babel/types': 7.17.12 + '@babel/parser': 7.18.0 + '@babel/types': 7.18.0 - /@babel/traverse/7.17.12: - resolution: {integrity: sha512-zULPs+TbCvOkIFd4FrG53xrpxvCBwLIgo6tO0tJorY7YV2IWFxUfS/lXDJbGgfyYt9ery/Gxj2niwttNnB0gIw==} + /@babel/traverse/7.18.0: + resolution: {integrity: sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.16.7 - '@babel/generator': 7.17.12 + '@babel/generator': 7.18.0 '@babel/helper-environment-visitor': 7.16.7 '@babel/helper-function-name': 7.17.9 '@babel/helper-hoist-variables': 7.16.7 '@babel/helper-split-export-declaration': 7.16.7 - '@babel/parser': 7.17.12 - '@babel/types': 7.17.12 + '@babel/parser': 7.18.0 + '@babel/types': 7.18.0 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types/7.17.12: - resolution: {integrity: sha512-rH8i29wcZ6x9xjzI5ILHL/yZkbQnCERdHlogKuIb4PUr7do4iT8DPekrTbBLWTnRQm6U0GYABbTMSzijmEqlAg==} + /@babel/types/7.18.0: + resolution: {integrity: sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.16.7 @@ -1336,7 +1348,7 @@ packages: fastq: 1.13.0 dev: true - /@rollup/plugin-babel/5.3.1_cozkpsv5bxi2sl4sehld7oc7ze: + /@rollup/plugin-babel/5.3.1_ykg7cmcqpmn5fbkb5gxs7i3du4: resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -1347,88 +1359,88 @@ packages: '@types/babel__core': optional: true dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 '@babel/helper-module-imports': 7.16.7 - '@rollup/pluginutils': 3.1.0_rollup@2.73.0 - rollup: 2.73.0 + '@rollup/pluginutils': 3.1.0_rollup@2.74.1 + rollup: 2.74.1 dev: true - /@rollup/plugin-commonjs/22.0.0_rollup@2.73.0: + /@rollup/plugin-commonjs/22.0.0_rollup@2.74.1: resolution: {integrity: sha512-Ktvf2j+bAO+30awhbYoCaXpBcyPmJbaEUYClQns/+6SNCYFURbvBiNbWgHITEsIgDDWCDUclWRKEuf8cwZCFoQ==} engines: {node: '>= 12.0.0'} peerDependencies: rollup: ^2.68.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.73.0 + '@rollup/pluginutils': 3.1.0_rollup@2.74.1 commondir: 1.0.1 estree-walker: 2.0.2 glob: 7.2.3 is-reference: 1.2.1 magic-string: 0.25.9 resolve: 1.22.0 - rollup: 2.73.0 + rollup: 2.74.1 dev: true - /@rollup/plugin-json/4.1.0_rollup@2.73.0: + /@rollup/plugin-json/4.1.0_rollup@2.74.1: resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.73.0 - rollup: 2.73.0 + '@rollup/pluginutils': 3.1.0_rollup@2.74.1 + rollup: 2.74.1 dev: true - /@rollup/plugin-node-resolve/11.2.1_rollup@2.73.0: + /@rollup/plugin-node-resolve/11.2.1_rollup@2.74.1: resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.73.0 + '@rollup/pluginutils': 3.1.0_rollup@2.74.1 '@types/resolve': 1.17.1 builtin-modules: 3.3.0 deepmerge: 4.2.2 is-module: 1.0.0 resolve: 1.22.0 - rollup: 2.73.0 + rollup: 2.74.1 dev: true - /@rollup/plugin-node-resolve/13.3.0_rollup@2.73.0: + /@rollup/plugin-node-resolve/13.3.0_rollup@2.74.1: resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^2.42.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.73.0 + '@rollup/pluginutils': 3.1.0_rollup@2.74.1 '@types/resolve': 1.17.1 deepmerge: 4.2.2 is-builtin-module: 3.1.0 is-module: 1.0.0 resolve: 1.22.0 - rollup: 2.73.0 + rollup: 2.74.1 dev: true - /@rollup/plugin-replace/2.4.2_rollup@2.73.0: + /@rollup/plugin-replace/2.4.2_rollup@2.74.1: resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.73.0 + '@rollup/pluginutils': 3.1.0_rollup@2.74.1 magic-string: 0.25.9 - rollup: 2.73.0 + rollup: 2.74.1 dev: true - /@rollup/plugin-replace/4.0.0_rollup@2.73.0: + /@rollup/plugin-replace/4.0.0_rollup@2.74.1: resolution: {integrity: sha512-+rumQFiaNac9y64OHtkHGmdjm7us9bo1PlbgQfdihQtuNxzjpaB064HbRnewUOggLQxVCCyINfStkgmBeQpv1g==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.73.0 + '@rollup/pluginutils': 3.1.0_rollup@2.74.1 magic-string: 0.25.9 - rollup: 2.73.0 + rollup: 2.74.1 dev: true - /@rollup/pluginutils/3.1.0_rollup@2.73.0: + /@rollup/pluginutils/3.1.0_rollup@2.74.1: resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -1437,7 +1449,7 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 2.73.0 + rollup: 2.74.1 dev: true /@rollup/pluginutils/4.2.1: @@ -1472,7 +1484,7 @@ packages: /@types/babel__standalone/7.1.4: resolution: {integrity: sha512-HijIDmcNl3Wmo0guqjYkQvMzyRCM6zMCkYcdG8f+2X7mPBNa9ikSeaQlWs2Yg18KN1klOJzyupX5BPOf+7ahaw==} dependencies: - '@babel/core': 7.17.12 + '@babel/core': 7.18.0 transitivePeerDependencies: - supports-color dev: true @@ -1492,20 +1504,20 @@ packages: /@types/fs-extra/9.0.13: resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: - '@types/node': 17.0.34 + '@types/node': 17.0.35 dev: true /@types/glob/7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 3.0.5 - '@types/node': 17.0.34 + '@types/node': 17.0.35 dev: true /@types/keyv/3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 17.0.34 + '@types/node': 17.0.35 dev: true /@types/minimatch/3.0.5: @@ -1516,8 +1528,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/17.0.34: - resolution: {integrity: sha512-XImEz7XwTvDBtzlTnm8YvMqGW/ErMWBsKZ+hMTvnDIjGCKxwK5Xpc+c/oQjOauwq8M4OS11hEkpjX8rrI/eEgA==} + /@types/node/17.0.35: + resolution: {integrity: sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==} dev: true /@types/normalize-package-data/2.4.1: @@ -1527,13 +1539,13 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 17.0.34 + '@types/node': 17.0.35 dev: true /@types/responselike/1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 17.0.34 + '@types/node': 17.0.35 dev: true /@types/trusted-types/2.0.2: @@ -1627,7 +1639,7 @@ packages: dependencies: debug: 4.3.4 jiti: 1.13.0 - windicss: 3.5.3 + windicss: 3.5.4 transitivePeerDependencies: - supports-color dev: true @@ -1641,7 +1653,7 @@ packages: fast-glob: 3.2.11 magic-string: 0.26.2 micromatch: 4.0.5 - windicss: 3.5.3 + windicss: 3.5.4 transitivePeerDependencies: - supports-color dev: true @@ -1755,56 +1767,56 @@ packages: object.assign: 4.1.2 dev: true - /babel-plugin-jsx-dom-expressions/0.33.0_@babel+core@7.17.12: - resolution: {integrity: sha512-f70XzLfr+x8pOxRAZPNe7MBaILcgIp10RE6AVA7BZqtZYclsT/h/9Bj2GZU6rXG+ud1fEZCW1lAIt6gv9kt3Cw==} + /babel-plugin-jsx-dom-expressions/0.33.7_@babel+core@7.18.0: + resolution: {integrity: sha512-2RsP7+i8KAd7EPxw3L1mJ9YGhxF56YJ0qQgWgPRiWWECzmxd3RYc+gaIwPw0yZRTN5Z0xQfa+3yTdNgDzq36dQ==} dependencies: '@babel/helper-module-imports': 7.16.0 - '@babel/plugin-syntax-jsx': 7.17.12_@babel+core@7.17.12 - '@babel/types': 7.17.12 + '@babel/plugin-syntax-jsx': 7.17.12_@babel+core@7.18.0 + '@babel/types': 7.18.0 html-entities: 2.3.2 transitivePeerDependencies: - '@babel/core' - /babel-plugin-polyfill-corejs2/0.3.1_@babel+core@7.17.12: + /babel-plugin-polyfill-corejs2/0.3.1_@babel+core@7.18.0: resolution: {integrity: sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.17.10 - '@babel/core': 7.17.12 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.18.0 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.17.12: + /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.18.0: resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.18.0 core-js-compat: 3.22.5 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator/0.3.1_@babel+core@7.17.12: + /babel-plugin-polyfill-regenerator/0.3.1_@babel+core@7.18.0: resolution: {integrity: sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.12 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.18.0 transitivePeerDependencies: - supports-color dev: true - /babel-preset-solid/1.4.0_@babel+core@7.17.12: - resolution: {integrity: sha512-mcnAtsQj4cxX+rPomhH+XgNunTFxW6CnkyaD9nZqzpcBULtfSTnqqlfFx0+OqaD5/71Q90UgOSNv7NJp+GGU4g==} + /babel-preset-solid/1.4.2_@babel+core@7.18.0: + resolution: {integrity: sha512-dDAYTT4UcBvUjdnlf1SOBNTospI/L1wWyzrMxEie3B4Auofo0lSFaCc95Pn5AZY8sdAew13Rp4a1ImByIsZlsQ==} dependencies: - babel-plugin-jsx-dom-expressions: 0.33.0_@babel+core@7.17.12 + babel-plugin-jsx-dom-expressions: 0.33.7_@babel+core@7.18.0 transitivePeerDependencies: - '@babel/core' @@ -2207,8 +2219,8 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract/1.20.0: - resolution: {integrity: sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA==} + /es-abstract/1.20.1: + resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -2596,7 +2608,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.0 + es-abstract: 1.20.1 functions-have-names: 1.2.3 dev: true @@ -3064,7 +3076,7 @@ packages: dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 - es-abstract: 1.20.0 + es-abstract: 1.20.1 for-each: 0.3.3 has-tostringtag: 1.0.0 dev: true @@ -3112,7 +3124,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 17.0.34 + '@types/node': 17.0.35 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -3170,13 +3182,13 @@ packages: engines: {node: '>=0.10.0'} dev: true - /jszip/3.9.1: - resolution: {integrity: sha512-H9A60xPqJ1CuC4Ka6qxzXZeU8aNmgOeP5IFqwJbQQwtu2EUYxota3LdsiZWplF7Wgd9tkAd0mdu36nceSaPuYw==} + /jszip/3.10.0: + resolution: {integrity: sha512-LDfVtOLtOxb9RXkYOwPyNBTQDL4eUbqahtoY6x07GiDJHwSYvn8sHHIw8wINImV3MqbMNve2gSuM1DDqEKk09Q==} dependencies: lie: 3.3.0 pako: 1.0.11 readable-stream: 2.3.7 - set-immediate-shim: 1.0.1 + setimmediate: 1.0.5 dev: false /keyv/3.1.0: @@ -3590,8 +3602,8 @@ packages: engines: {node: '>=8.6'} dev: true - /postcss/8.4.13: - resolution: {integrity: sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==} + /postcss/8.4.14: + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.4 @@ -3736,7 +3748,7 @@ packages: /regenerator-transform/0.15.0: resolution: {integrity: sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==} dependencies: - '@babel/runtime': 7.17.9 + '@babel/runtime': 7.18.0 dev: true /regexp.prototype.flags/1.4.3: @@ -3836,42 +3848,42 @@ packages: del: 5.1.0 dev: true - /rollup-plugin-import-css/3.0.3_rollup@2.73.0: + /rollup-plugin-import-css/3.0.3_rollup@2.74.1: resolution: {integrity: sha512-0JE1UVigYqhbbbwNalxcYCnYAD70JgJIqnaSYeBgCOO60ASx9hpJubfA8toxEv6ceZrRPnLF1cnr0vsskH1Uiw==} peerDependencies: rollup: ^2.x.x dependencies: '@rollup/pluginutils': 4.2.1 - rollup: 2.73.0 + rollup: 2.74.1 dev: true - /rollup-plugin-terser/7.0.2_rollup@2.73.0: + /rollup-plugin-terser/7.0.2_rollup@2.74.1: resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} peerDependencies: rollup: ^2.0.0 dependencies: '@babel/code-frame': 7.16.7 jest-worker: 26.6.2 - rollup: 2.73.0 + rollup: 2.74.1 serialize-javascript: 4.0.0 terser: 5.13.1 dev: true - /rollup-plugin-windicss/1.8.4_rollup@2.73.0: + /rollup-plugin-windicss/1.8.4_rollup@2.74.1: resolution: {integrity: sha512-NSAiyr1ZmRrw6p2AT86+/Q5pDUajgorX9BF6107OO7seAl3V+zscXu1JPGLMKwFUtgVWAI5KIrpQeIXJfQROwg==} peerDependencies: rollup: ^2.0.0 dependencies: '@windicss/plugin-utils': 1.8.4 debug: 4.3.4 - rollup: 2.73.0 - windicss: 3.5.3 + rollup: 2.74.1 + windicss: 3.5.4 transitivePeerDependencies: - supports-color dev: true - /rollup/2.73.0: - resolution: {integrity: sha512-h/UngC3S4Zt28mB3g0+2YCMegT5yoftnQplwzPqGZcKvlld5e+kT/QRmJiL+qxGyZKOYpgirWGdLyEO1b0dpLQ==} + /rollup/2.74.1: + resolution: {integrity: sha512-K2zW7kV8Voua5eGkbnBtWYfMIhYhT9Pel2uhBk2WO5eMee161nPze/XRfvEQPFYz7KgrCCnmh2Wy0AMFLGGmMA==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: @@ -3934,9 +3946,8 @@ packages: randombytes: 2.1.0 dev: true - /set-immediate-shim/1.0.1: - resolution: {integrity: sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=} - engines: {node: '>=0.10.0'} + /setimmediate/1.0.5: + resolution: {integrity: sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=} dev: false /side-channel/1.0.4: @@ -3956,40 +3967,40 @@ packages: engines: {node: '>=8'} dev: true - /solid-app-router/0.3.2_solid-js@1.4.1: - resolution: {integrity: sha512-zh6Ui87xy23JUxrH0z1xAROJPpiuxa3JRx9jP2qqjr07q2EKQOjn9BrmTFvQd/azQWzLjSMU+hN2fy6kLh5Bdw==} + /solid-app-router/0.3.3_solid-js@1.4.2: + resolution: {integrity: sha512-JEn0gi6q8Pq9M2Ml3CLeNzenxuBrOrQg4aQyeIZTNjOAeEil/9YiaAJk+US78sIdVcqflTneN5KZgJMIGJ0rFQ==} peerDependencies: solid-js: ^1.3.5 dependencies: - solid-js: 1.4.1 + solid-js: 1.4.2 dev: true - /solid-dismiss/1.2.1_solid-js@1.4.1: + /solid-dismiss/1.2.1_solid-js@1.4.2: resolution: {integrity: sha512-/2DKasY3/4ECnqxHueC2hq6bYxZ1Yyn/TtbeKDKV57Sox0HhHm8rPJLzqwn/9KxY3VhizJbmTABTZiKG0l7pNw==} peerDependencies: solid-js: '1' dependencies: - solid-js: 1.4.1 + solid-js: 1.4.2 dev: false /solid-heroicons/2.0.3: resolution: {integrity: sha512-sHlEaCaFFD8s/RDWTlmfIC/5dUPOtRB/UqOTpXQLq/BUZ94jWS58CANwONBclxwKFFGu6iasaP5zN4iYqORlVg==} dependencies: - solid-js: 1.4.1 + solid-js: 1.4.2 dev: false - /solid-js/1.4.1: - resolution: {integrity: sha512-ts480PccmUW9WAludSXET2dbBevjv+l6XMmN/OyG/a/xA8ZQoX4hNBN3gGhW785ZZv90fowbUSuSQUwOISm3YA==} + /solid-js/1.4.2: + resolution: {integrity: sha512-IU5yKuT8P/n5F5g8j1rTXqxUdPYmoZDk/074TG94AEYf/nyXAeG82BSge4/lLIbCfUcnGUJ6DRdebIjujOAYyg==} - /solid-refresh/0.4.0_solid-js@1.4.1: + /solid-refresh/0.4.0_solid-js@1.4.2: resolution: {integrity: sha512-5XCUz845n/sHPzKK2i2G2EeV61tAmzv6SqzqhXcPaYhrgzVy7nKTQaBpKK8InKrriq9Z2JFF/mguIU00t/73xw==} peerDependencies: solid-js: ^1.3.0 dependencies: - '@babel/generator': 7.17.12 + '@babel/generator': 7.18.0 '@babel/helper-module-imports': 7.16.7 - '@babel/types': 7.17.12 - solid-js: 1.4.1 + '@babel/types': 7.18.0 + solid-js: 1.4.2 dev: true /source-map-js/1.0.2: @@ -4056,7 +4067,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.0 + es-abstract: 1.20.1 get-intrinsic: 1.1.1 has-symbols: 1.0.3 internal-slot: 1.0.3 @@ -4069,7 +4080,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.0 + es-abstract: 1.20.1 dev: true /string.prototype.trimstart/1.0.5: @@ -4077,7 +4088,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.0 + es-abstract: 1.20.1 dev: true /string_decoder/1.1.1: @@ -4362,12 +4373,12 @@ packages: /vite-plugin-solid/2.2.6: resolution: {integrity: sha512-J1RnmqkZZJSNYDW7vZj0giKKHLWGr9tS/gxR70WDSTYfhyXrgukbZdIfSEFbtrsg8ZiQ2t2zXcvkWoeefenqKw==} dependencies: - '@babel/core': 7.17.12 - '@babel/preset-typescript': 7.17.12_@babel+core@7.17.12 - babel-preset-solid: 1.4.0_@babel+core@7.17.12 + '@babel/core': 7.18.0 + '@babel/preset-typescript': 7.17.12_@babel+core@7.18.0 + babel-preset-solid: 1.4.2_@babel+core@7.18.0 merge-anything: 5.0.2 - solid-js: 1.4.1 - solid-refresh: 0.4.0_solid-js@1.4.1 + solid-js: 1.4.2 + solid-refresh: 0.4.0_solid-js@1.4.2 vite: 2.9.9 transitivePeerDependencies: - less @@ -4385,7 +4396,7 @@ packages: debug: 4.3.4 kolorist: 1.5.1 vite: 2.9.9 - windicss: 3.5.3 + windicss: 3.5.4 transitivePeerDependencies: - supports-color dev: true @@ -4407,9 +4418,9 @@ packages: optional: true dependencies: esbuild: 0.14.39 - postcss: 8.4.13 + postcss: 8.4.14 resolve: 1.22.0 - rollup: 2.73.0 + rollup: 2.74.1 optionalDependencies: fsevents: 2.3.2 dev: true @@ -4448,7 +4459,7 @@ packages: dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 - es-abstract: 1.20.0 + es-abstract: 1.20.1 for-each: 0.3.3 has-tostringtag: 1.0.0 is-typed-array: 1.1.9 @@ -4461,8 +4472,8 @@ packages: string-width: 4.2.3 dev: true - /windicss/3.5.3: - resolution: {integrity: sha512-Zsb38RscfZJa218GUREJyFu6EF1xD5DZ+b0XL1Kac3BGDtYwVmXJMmOahMK4mZSEy3gWO8aqUQMny0nbJFG6yA==} + /windicss/3.5.4: + resolution: {integrity: sha512-x2Iu0a69dtNiKHMkR886lx0WKbZI5GqvXyvGBCJ2VA6rcjKYjnzCA/Ljd6hNQBfqlkSum8J+qAVcCfLzQFI4rQ==} engines: {node: '>= 12'} hasBin: true dev: true @@ -4485,12 +4496,12 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@apideck/better-ajv-errors': 0.3.3_ajv@8.11.0 - '@babel/core': 7.17.12 - '@babel/preset-env': 7.17.12_@babel+core@7.17.12 - '@babel/runtime': 7.17.9 - '@rollup/plugin-babel': 5.3.1_cozkpsv5bxi2sl4sehld7oc7ze - '@rollup/plugin-node-resolve': 11.2.1_rollup@2.73.0 - '@rollup/plugin-replace': 2.4.2_rollup@2.73.0 + '@babel/core': 7.18.0 + '@babel/preset-env': 7.18.0_@babel+core@7.18.0 + '@babel/runtime': 7.18.0 + '@rollup/plugin-babel': 5.3.1_ykg7cmcqpmn5fbkb5gxs7i3du4 + '@rollup/plugin-node-resolve': 11.2.1_rollup@2.74.1 + '@rollup/plugin-replace': 2.4.2_rollup@2.74.1 '@surma/rollup-plugin-off-main-thread': 2.2.3 ajv: 8.11.0 common-tags: 1.8.2 @@ -4499,8 +4510,8 @@ packages: glob: 7.2.3 lodash: 4.17.21 pretty-bytes: 5.6.0 - rollup: 2.73.0 - rollup-plugin-terser: 7.0.2_rollup@2.73.0 + rollup: 2.74.1 + rollup-plugin-terser: 7.0.2_rollup@2.74.1 source-map: 0.8.0-beta.0 stringify-object: 3.3.0 strip-comments: 2.0.1 From 3b50548a70056e125d2f85646759b1c877f360b7 Mon Sep 17 00:00:00 2001 From: modderme123 Date: Sat, 21 May 2022 16:50:09 -0700 Subject: [PATCH 15/36] fetch repl --- package.json | 3 +- playground/app.tsx | 21 ++++--- playground/context.tsx | 2 +- playground/pages/edit.tsx | 71 +++++++++++++++------- playground/pages/home.tsx | 32 +++++----- playground/utils/eventBus.ts | 2 - playground/utils/parseHash.ts | 9 --- playground/utils/serviceWorker.ts | 10 ++- playground/utils/{isValidUrl.ts => url.ts} | 10 +++ pnpm-lock.yaml | 34 ++++++++--- src/components/gridResizer/index.tsx | 15 ++--- src/components/preview.tsx | 41 ++++++------- src/components/repl.tsx | 35 ++++++----- src/utils/debounce.ts | 11 ---- src/utils/formatTime.ts | 3 - src/utils/keyedMap.ts | 3 +- src/utils/throttle.ts | 18 ------ types/types.d.ts | 2 +- 18 files changed, 168 insertions(+), 154 deletions(-) delete mode 100644 playground/utils/eventBus.ts delete mode 100644 playground/utils/parseHash.ts rename playground/utils/{isValidUrl.ts => url.ts} (50%) delete mode 100644 src/utils/debounce.ts delete mode 100644 src/utils/formatTime.ts delete mode 100644 src/utils/throttle.ts diff --git a/package.json b/package.json index 0f3a1346..4ab1fc3e 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.3.0", "@rollup/plugin-replace": "^4.0.0", + "@solid-primitives/debounce": "^1.3.0", "@types/babel__standalone": "^7.1.4", "@types/dedent": "^0.7.0", "@types/fs-extra": "^9.0.13", @@ -57,10 +58,10 @@ "@amoutonbrady/lz-string": "^0.0.1", "@babel/preset-typescript": "^7.17.12", "@babel/standalone": "^7.18.1", + "@solid-primitives/throttle": "^1.2.0", "babel-preset-solid": "1.4.2", "dedent": "^0.7.0", "jszip": "^3.10.0", - "mitt": "^3.0.0", "monaco-editor-textmate": "^3.0.0", "monaco-textmate": "^3.0.1", "onigasm": "^2.2.5", diff --git a/playground/app.tsx b/playground/app.tsx index 162b40a8..c21412c1 100644 --- a/playground/app.tsx +++ b/playground/app.tsx @@ -1,6 +1,6 @@ -import { Show, onCleanup, createEffect, createSignal, JSX } from 'solid-js'; -import { Routes, Route } from 'solid-app-router'; -import { eventBus } from './utils/eventBus'; +import { Show, createEffect, createSignal, JSX, on } from 'solid-js'; +import { Routes, Route, useSearchParams } from 'solid-app-router'; +import { eventBus } from './utils/serviceWorker'; import { Update } from './components/update'; import { Header } from './components/header'; import { useZoom } from '../src/hooks/useZoom'; @@ -9,9 +9,6 @@ import { Edit } from './pages/edit'; import { Home } from './pages/home'; import { Login } from './pages/login'; -let swUpdatedBeforeRender = false; -eventBus.on('sw-update', () => (swUpdatedBeforeRender = true)); - export const App = (): JSX.Element => { /** * Those next three lines are useful to display a popup @@ -19,9 +16,8 @@ export const App = (): JSX.Element => { * via an EventBus initiated in the service worker and * the couple line above. */ - const [newUpdate, setNewUpdate] = createSignal(swUpdatedBeforeRender); - eventBus.on('sw-update', () => setNewUpdate(true)); - onCleanup(() => eventBus.all.clear()); + const [newUpdate, setNewUpdate] = createSignal(eventBus() != undefined); + on(eventBus, () => setNewUpdate(true)); const [dark, setDark] = createSignal(isDarkTheme()); createEffect(() => document.body.classList.toggle('dark', dark())); @@ -40,6 +36,8 @@ export const App = (): JSX.Element => { } }); + const [searchParams] = useSearchParams(); + return (
    { /> - } /> + } + /> } /> } /> } /> diff --git a/playground/context.tsx b/playground/context.tsx index 10f03ce7..d54bacc2 100644 --- a/playground/context.tsx +++ b/playground/context.tsx @@ -2,7 +2,7 @@ import { createContext, createResource, createSignal, ParentComponent, Resource, interface AppContextType { token: string; - user: Resource<{ display: any; avatar: any } | undefined>; + user: Resource<{ display: string; avatar: string } | undefined>; } const AppContext = createContext(); diff --git a/playground/pages/edit.tsx b/playground/pages/edit.tsx index e9163a14..98aac10d 100644 --- a/playground/pages/edit.tsx +++ b/playground/pages/edit.tsx @@ -1,13 +1,14 @@ import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'; import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'; -import { parseHash } from '../utils/parseHash'; -import { isValidUrl } from '../utils/isValidUrl'; - import CompilerWorker from '../../src/workers/compiler?worker'; import FormatterWorker from '../../src/workers/formatter?worker'; -import { createTabList, defaultTabs, processImport, Tab } from '../../src'; -import { createSignal, lazy, Suspense } from 'solid-js'; +import { createTabList } from '../../src'; +import { createEffect, createResource, createSignal, lazy, Suspense } from 'solid-js'; +import { useParams } from 'solid-app-router'; +import { API, useAppContext } from '../context'; +import createDebounce from '@solid-primitives/debounce'; +import type { APIRepl } from './home'; const Repl = lazy(() => import('../../src/components/repl')); @@ -25,26 +26,54 @@ const Repl = lazy(() => import('../../src/components/repl')); }, }; -export const Edit = (props: { dark: boolean }) => { +export const Edit = (props: { dark: boolean; horizontal: boolean }) => { const compiler = new CompilerWorker(); const formatter = new FormatterWorker(); - const url = new URL(location.href); - const initialTabs = parseHash(url.hash && url.hash.slice(1)) || defaultTabs; - - const [tabs, setTabs] = createTabList(initialTabs); - const [current, setCurrent] = createSignal('main.tsx'); - - const params = Object.fromEntries(url.searchParams.entries()); + const params = useParams(); + const context = useAppContext()!; + const [fetchedTabs] = createResource(params.repl, (repl) => + fetch(`${API}/repl/${repl}`).then((r) => r.json()), + ); - if (params.data && isValidUrl(params.data)) { - fetch(params.data) - .then((r) => r.json()) - .then((data) => setTabs(processImport(data))) - .catch((e) => console.error('Failed to import browser data', e)); - } + const [tabs, setTabs] = createTabList([]); + const [current, setCurrent] = createSignal(); + createEffect(() => { + const myRepl = fetchedTabs(); + if (!myRepl) return; + setTabs( + myRepl.files.map((x) => { + let dot = x.name.lastIndexOf('.'); + return { name: x.name.slice(0, dot), type: x.name.slice(dot + 1), source: x.content.join('\n') }; + }), + ); + setCurrent(myRepl.files[0].name); + }); - const isHorizontal = 'isHorizontal' in params; + const tabMapper = () => tabs().map((x) => ({ name: `${x.name}.${x.type}`, content: x.source.split('\n') })); + const updateRepl = createDebounce(() => { + const repl = fetchedTabs(); + const tabs = tabMapper(); + if (!repl || !tabs.length) return; + fetch(`${API}/repl/${repl.id}`, { + method: 'PUT', + headers: { + authorization: `Bearer ${context.token}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + title: repl.title, + version: repl.version, + public: repl.public, + labels: repl.labels, + files: tabs, + }), + }); + }, 1000); + createEffect(() => { + tabMapper(); + updateRepl(); + }); return ( { { @@ -26,10 +31,9 @@ export const Home = () => { const navigate = useNavigate(); const user = () => params.user || context.user()?.display; - const [repls] = createResource(user, async (user) => { + const [repls] = createResource(user, async (user) => { if (!user) return { total: 0, list: [] }; - const result = await fetch(`${API}/repl/${user}/list`); - return (await result.json()) as Repls; + return await fetch(`${API}/repl/${user}/list`).then((r) => r.json()); }); return ( diff --git a/playground/utils/eventBus.ts b/playground/utils/eventBus.ts deleted file mode 100644 index e7e2b9e6..00000000 --- a/playground/utils/eventBus.ts +++ /dev/null @@ -1,2 +0,0 @@ -import mitt from 'mitt'; -export const eventBus = mitt(); diff --git a/playground/utils/parseHash.ts b/playground/utils/parseHash.ts deleted file mode 100644 index 5179eaf1..00000000 --- a/playground/utils/parseHash.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { decompressFromURL as decompress } from '@amoutonbrady/lz-string'; - -export function parseHash(hash: string): T | undefined { - try { - return JSON.parse(decompress(hash)!); - } catch { - return; - } -} diff --git a/playground/utils/serviceWorker.ts b/playground/utils/serviceWorker.ts index fa45457a..9936de2f 100644 --- a/playground/utils/serviceWorker.ts +++ b/playground/utils/serviceWorker.ts @@ -1,14 +1,18 @@ import { register } from 'register-service-worker'; -import { eventBus } from './eventBus'; +import { createSignal } from 'solid-js'; -export function registerServiceWorker(): void { +const [eventBus, setEventBus] = createSignal(); + +function registerServiceWorker(): void { if ('serviceWorker' in navigator && import.meta.env.PROD) { window.addEventListener('load', () => { register('/sw.js', { updated(registration) { - eventBus.emit('sw-update', registration); + setEventBus(registration); }, }); }); } } + +export { eventBus, registerServiceWorker }; diff --git a/playground/utils/isValidUrl.ts b/playground/utils/url.ts similarity index 50% rename from playground/utils/isValidUrl.ts rename to playground/utils/url.ts index 289dad13..cc3d28ce 100644 --- a/playground/utils/isValidUrl.ts +++ b/playground/utils/url.ts @@ -1,3 +1,5 @@ +import { decompressFromURL as decompress } from '@amoutonbrady/lz-string'; + /** * Validate that a string is a valid URL * @@ -11,3 +13,11 @@ export function isValidUrl(url: string): boolean { return false; } } + +export function parseHash(hash: string): T | undefined { + try { + return JSON.parse(decompress(hash)!); + } catch { + return; + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5f44b2f3..3cf763ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,6 +12,8 @@ specifiers: '@rollup/plugin-json': ^4.1.0 '@rollup/plugin-node-resolve': ^13.3.0 '@rollup/plugin-replace': ^4.0.0 + '@solid-primitives/debounce': ^1.3.0 + '@solid-primitives/throttle': ^1.2.0 '@types/babel__standalone': ^7.1.4 '@types/dedent': ^0.7.0 '@types/fs-extra': ^9.0.13 @@ -25,7 +27,6 @@ specifiers: jiti: ^1.13.0 jszip: ^3.10.0 mime: ^3.0.0 - mitt: ^3.0.0 monaco-editor: ~0.33.0 monaco-editor-textmate: ^3.0.0 monaco-textmate: ^3.0.1 @@ -51,10 +52,10 @@ dependencies: '@amoutonbrady/lz-string': 0.0.1 '@babel/preset-typescript': 7.17.12_@babel+core@7.18.0 '@babel/standalone': 7.18.1 + '@solid-primitives/throttle': 1.2.0_solid-js@1.4.2 babel-preset-solid: 1.4.2_@babel+core@7.18.0 dedent: 0.7.0 jszip: 3.10.0 - mitt: 3.0.0 monaco-editor-textmate: 3.0.0_nurowwtvogix47pnszh4m7lsnu monaco-textmate: 3.0.1_onigasm@2.2.5 onigasm: 2.2.5 @@ -73,6 +74,7 @@ devDependencies: '@rollup/plugin-json': 4.1.0_rollup@2.74.1 '@rollup/plugin-node-resolve': 13.3.0_rollup@2.74.1 '@rollup/plugin-replace': 4.0.0_rollup@2.74.1 + '@solid-primitives/debounce': 1.3.0_solid-js@1.4.2 '@types/babel__standalone': 7.1.4 '@types/dedent': 0.7.0 '@types/fs-extra': 9.0.13 @@ -1465,6 +1467,22 @@ packages: engines: {node: '>=6'} dev: true + /@solid-primitives/debounce/1.3.0_solid-js@1.4.2: + resolution: {integrity: sha512-Cen4ccCPTuEtQM7o9aEKuOJ0LRlAnzKvN7loEBBOQ+zKdu7/7kYKr7HHE/WS8JAI3QeQr5v2ModYRIZLERw5zw==} + peerDependencies: + solid-js: '>=1.0.0' + dependencies: + solid-js: 1.4.2 + dev: true + + /@solid-primitives/throttle/1.2.0_solid-js@1.4.2: + resolution: {integrity: sha512-qYKYEgGl/nSCF+wq7H6zFFi8s2e/woFZJkZbCbyUrtbEIvCze4xSZRr64Xi067GlBE+T/N4LZX/htJmLfwkAeg==} + peerDependencies: + solid-js: ^1.3.1 + dependencies: + solid-js: 1.4.2 + dev: false + /@surma/rollup-plugin-off-main-thread/2.2.3: resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} dependencies: @@ -2239,7 +2257,7 @@ packages: is-shared-array-buffer: 1.0.2 is-string: 1.0.7 is-weakref: 1.0.2 - object-inspect: 1.12.0 + object-inspect: 1.12.1 object-keys: 1.1.1 object.assign: 4.1.2 regexp.prototype.flags: 1.4.3 @@ -3390,10 +3408,6 @@ packages: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} dev: true - /mitt/3.0.0: - resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} - dev: false - /monaco-editor-textmate/3.0.0_nurowwtvogix47pnszh4m7lsnu: resolution: {integrity: sha512-4BK3ual4WllRpiQBDcBO8NKdbk4ukdBtnl23cRYvu1eNWOWKYOBM0rYac50HvFClSbtd5GMezLPjkaim0iM7sw==} peerDependencies: @@ -3453,8 +3467,8 @@ packages: engines: {node: '>=8'} dev: true - /object-inspect/1.12.0: - resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} + /object-inspect/1.12.1: + resolution: {integrity: sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==} dev: true /object-is/1.1.5: @@ -3955,7 +3969,7 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.1 - object-inspect: 1.12.0 + object-inspect: 1.12.1 dev: true /signal-exit/3.0.7: diff --git a/src/components/gridResizer/index.tsx b/src/components/gridResizer/index.tsx index be50745d..2c9979e3 100644 --- a/src/components/gridResizer/index.tsx +++ b/src/components/gridResizer/index.tsx @@ -1,5 +1,5 @@ import { Component, JSX, splitProps, createSignal, createEffect, onCleanup } from 'solid-js'; -import { throttle } from '../../utils/throttle'; +import throttle from '@solid-primitives/throttle'; import { Dot } from './dot'; interface GridResizerProps extends JSX.HTMLAttributes { @@ -14,19 +14,14 @@ export const GridResizer: Component = (props) => { const [isDragging, setIsDragging] = createSignal(false); - const onResizeStart = () => { - setIsDragging(true); - }; - - const onResizeEnd = () => { - setIsDragging(false); - }; + const onResizeStart = () => setIsDragging(true); + const onResizeEnd = () => setIsDragging(false); - const onMouseMove = throttle((e: MouseEvent) => { + const [onMouseMove] = throttle((e: MouseEvent) => { local.onResize(e.clientX, e.clientY); }, 10); - const onTouchMove = throttle((e: TouchEvent) => { + const [onTouchMove] = throttle((e: TouchEvent) => { const touch = e.touches[0]; local.onResize(touch.clientX, touch.clientY); }, 10); diff --git a/src/components/preview.tsx b/src/components/preview.tsx index e50b906b..3210666e 100644 --- a/src/components/preview.tsx +++ b/src/components/preview.tsx @@ -28,18 +28,18 @@ export const Preview: Component = (props) => { const src = URL.createObjectURL(blob); onCleanup(() => URL.revokeObjectURL(src)); - iframe.contentWindow!.postMessage({ event: CODE_UPDATE, code: src }, '*'); + iframe.contentWindow!.postMessage({ event: CODE_UPDATE, value: src }, '*'); }); createEffect(() => { if (!iframe) return; - iframe.contentWindow!.postMessage({ event: 'DEVTOOLS', open: internal.devtools }, '*'); + iframe.contentWindow!.postMessage({ event: 'DEVTOOLS', value: internal.devtools }, '*'); }); const setDarkMode = () => { const doc = iframe.contentDocument || iframe.contentWindow?.document; doc?.body!.classList.toggle('dark', internal.isDark); - iframe.contentWindow!.postMessage({ event: 'THEME', dark: internal.isDark }, '*'); + iframe.contentWindow!.postMessage({ event: 'THEME', value: internal.isDark }, '*'); }; createEffect(() => { @@ -130,34 +130,31 @@ export const Preview: Component = (props) => {