From f4c4d99e136831934364d89f032922881feb7bc0 Mon Sep 17 00:00:00 2001 From: Nguyen Tran <88808276+ngtr6788@users.noreply.github.com> Date: Mon, 7 Aug 2023 03:35:16 -0400 Subject: [PATCH 01/65] fix: add test so #6009 doesn't regress (#9075) closes #6009 --- .../input.svelte | 7 +++++++ .../warnings.json | 1 + 2 files changed, 8 insertions(+) create mode 100644 packages/svelte/test/validator/samples/no-missing-declarations-for-same-node-let-variable/input.svelte create mode 100644 packages/svelte/test/validator/samples/no-missing-declarations-for-same-node-let-variable/warnings.json diff --git a/packages/svelte/test/validator/samples/no-missing-declarations-for-same-node-let-variable/input.svelte b/packages/svelte/test/validator/samples/no-missing-declarations-for-same-node-let-variable/input.svelte new file mode 100644 index 0000000000..c3c3319309 --- /dev/null +++ b/packages/svelte/test/validator/samples/no-missing-declarations-for-same-node-let-variable/input.svelte @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/svelte/test/validator/samples/no-missing-declarations-for-same-node-let-variable/warnings.json b/packages/svelte/test/validator/samples/no-missing-declarations-for-same-node-let-variable/warnings.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/packages/svelte/test/validator/samples/no-missing-declarations-for-same-node-let-variable/warnings.json @@ -0,0 +1 @@ +[] From 8b1cdde548b5eaee58380773eaae0d07c29251ab Mon Sep 17 00:00:00 2001 From: Artxe2 <60684815+Artxe2@users.noreply.github.com> Date: Fri, 11 Aug 2023 21:26:31 +0900 Subject: [PATCH 02/65] fix:change typescript url (#9093) --- packages/svelte/scripts/globals-extractor.js | 2 +- packages/svelte/src/compiler/utils/globals.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/svelte/scripts/globals-extractor.js b/packages/svelte/scripts/globals-extractor.js index 13f1c87f9a..c35a39a84f 100644 --- a/packages/svelte/scripts/globals-extractor.js +++ b/packages/svelte/scripts/globals-extractor.js @@ -16,7 +16,7 @@ const GLOBAL_TS_PATH = './src/compiler/utils/globals.js'; const SPECIALS = ['global', 'globalThis', 'InternalError', 'process', 'undefined']; const get_url = (name) => - `https://raw.githubusercontent.com/microsoft/TypeScript/main/lib/lib.${name}.d.ts`; + `https://raw.githubusercontent.com/microsoft/TypeScript/main/src/lib/${name}.d.ts`; const extract_name = (split) => split.match(/^[a-zA-Z0-9_$]+/)[0]; const extract_functions_and_references = (name, data) => { diff --git a/packages/svelte/src/compiler/utils/globals.js b/packages/svelte/src/compiler/utils/globals.js index 0d6d0642f9..87c7dfb9c2 100644 --- a/packages/svelte/src/compiler/utils/globals.js +++ b/packages/svelte/src/compiler/utils/globals.js @@ -1,6 +1,6 @@ /** ---------------------------------------------------------------------- This file is automatically generated by `scripts/globals-extractor.js`. -Generated At: 2023-05-24T13:16:20.777Z +Generated At: 2023-08-11T04:11:50.562Z ---------------------------------------------------------------------- */ export default new Set([ From 05f99d20f9030f56b4991d0a07c3919be5f529ee Mon Sep 17 00:00:00 2001 From: "Lyu, Wei-Da" <36730922+jasonlyu123@users.noreply.github.com> Date: Fri, 11 Aug 2023 21:54:20 +0800 Subject: [PATCH 03/65] feat: move svelteHTML to load the correct svelte/element (#9070) Make IntrinsicElements extends SvelteHTMLElements so it can be extend with declare module converting to module so it can extend without needing another type alias --------- Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> --- .changeset/slimy-dingos-call.md | 5 + documentation/docs/05-misc/03-typescript.md | 18 ++ packages/svelte/package.json | 1 + packages/svelte/svelte-html.d.ts | 252 ++++++++++++++++++++ 4 files changed, 276 insertions(+) create mode 100644 .changeset/slimy-dingos-call.md create mode 100644 packages/svelte/svelte-html.d.ts diff --git a/.changeset/slimy-dingos-call.md b/.changeset/slimy-dingos-call.md new file mode 100644 index 0000000000..4ecb122ae2 --- /dev/null +++ b/.changeset/slimy-dingos-call.md @@ -0,0 +1,5 @@ +--- +'svelte': minor +--- + +feat: move `svelteHTML` from language-tools into core to load the correct `svelte/element` types diff --git a/documentation/docs/05-misc/03-typescript.md b/documentation/docs/05-misc/03-typescript.md index d5772fa157..b88c6f5c9f 100644 --- a/documentation/docs/05-misc/03-typescript.md +++ b/documentation/docs/05-misc/03-typescript.md @@ -140,6 +140,24 @@ declare namespace svelteHTML { Then make sure that `d.ts` file is referenced in your `tsconfig.json`. If it reads something like `"include": ["src/**/*"]` and your `d.ts` file is inside `src`, it should work. You may need to reload for the changes to take effect. +Since Svelte version 4.2 / `svelte-check` version 3.5 / VS Code extension version 107.10.0 you can also declare the typings by augmenting the the `svelte/elements` module like this: + +```js +/// file: additional-svelte-typings.d.ts +import { HTMLButtonAttributes } from 'svelte/elements' + +declare module 'svelte/elements' { + export interface SvelteHTMLElements { + 'custom-button': HTMLButtonAttributes; + } + + // allows for more granular control over what element to add the typings to + export interface HTMLButtonAttributes { + 'veryexperimentalattribute'?: string; + } +} +``` + ## Experimental advanced typings A few features are missing from taking full advantage of TypeScript in more advanced use cases like typing that a component implements a certain interface, explicitly typing slots, or using generics. These things are possible using experimental advanced type capabilities. See [this RFC](https://github.com/dummdidumm/rfcs/blob/ts-typedefs-within-svelte-components/text/ts-typing-props-slots-events.md) for more information on how to make use of them. diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 8a294c6dff..cbc11b3da7 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -19,6 +19,7 @@ "motion.d.ts", "action.d.ts", "elements.d.ts", + "svelte-html.d.ts", "README.md" ], "exports": { diff --git a/packages/svelte/svelte-html.d.ts b/packages/svelte/svelte-html.d.ts new file mode 100644 index 0000000000..3547ad0d33 --- /dev/null +++ b/packages/svelte/svelte-html.d.ts @@ -0,0 +1,252 @@ +/// +// This file is deliberately not exposed through the exports map. +// It's meant to be loaded directly by the Svelte language server +/* eslint-disable @typescript-eslint/no-empty-interface */ + +import * as svelteElements from './elements.js'; + +/** + * @internal do not use + */ +type HTMLProps = Omit< + import('./elements.js').SvelteHTMLElements[Property], + keyof Override +> & + Override; + +declare global { + /** + * This namespace does not exist in the runtime, it is only used for typings + */ + namespace svelteHTML { + // Every namespace eligible for use needs to implement the following two functions + /** + * @internal do not use + */ + function mapElementTag(tag: K): ElementTagNameMap[K]; + function mapElementTag(tag: K): SVGElementTagNameMap[K]; + function mapElementTag(tag: any): any; // needs to be any because used in context of + + /** + * @internal do not use + */ + function createElement( + // "undefined | null" because of + element: Key | undefined | null, + attrs: string extends Key ? svelteElements.HTMLAttributes : Elements[Key] + ): Key extends keyof ElementTagNameMap + ? ElementTagNameMap[Key] + : Key extends keyof SVGElementTagNameMap + ? SVGElementTagNameMap[Key] + : any; + function createElement( + // "undefined | null" because of + element: Key | undefined | null, + attrsEnhancers: T, + attrs: (string extends Key ? svelteElements.HTMLAttributes : Elements[Key]) & T + ): Key extends keyof ElementTagNameMap + ? ElementTagNameMap[Key] + : Key extends keyof SVGElementTagNameMap + ? SVGElementTagNameMap[Key] + : any; + + // For backwards-compatibility and ease-of-use, in case someone enhanced the typings from import('svelte/elements').HTMLAttributes/SVGAttributes + // eslint-disable-next-line @typescript-eslint/no-unused-vars + interface HTMLAttributes {} + // eslint-disable-next-line @typescript-eslint/no-unused-vars + interface SVGAttributes {} + + /** + * Avoid using this interface directly. Instead use the `SvelteHTMLElements` interface exported by `svelte/elements` + * This should only be used if you need to extend the interface with custom elements + */ + interface IntrinsicElements extends svelteElements.SvelteHTMLElements { + a: HTMLProps<'a', HTMLAttributes>; + abbr: HTMLProps<'abbr', HTMLAttributes>; + address: HTMLProps<'address', HTMLAttributes>; + area: HTMLProps<'area', HTMLAttributes>; + article: HTMLProps<'article', HTMLAttributes>; + aside: HTMLProps<'aside', HTMLAttributes>; + audio: HTMLProps<'audio', HTMLAttributes>; + b: HTMLProps<'b', HTMLAttributes>; + base: HTMLProps<'base', HTMLAttributes>; + bdi: HTMLProps<'bdi', HTMLAttributes>; + bdo: HTMLProps<'bdo', HTMLAttributes>; + big: HTMLProps<'big', HTMLAttributes>; + blockquote: HTMLProps<'blockquote', HTMLAttributes>; + body: HTMLProps<'body', HTMLAttributes>; + br: HTMLProps<'br', HTMLAttributes>; + button: HTMLProps<'button', HTMLAttributes>; + canvas: HTMLProps<'canvas', HTMLAttributes>; + caption: HTMLProps<'caption', HTMLAttributes>; + cite: HTMLProps<'cite', HTMLAttributes>; + code: HTMLProps<'code', HTMLAttributes>; + col: HTMLProps<'col', HTMLAttributes>; + colgroup: HTMLProps<'colgroup', HTMLAttributes>; + data: HTMLProps<'data', HTMLAttributes>; + datalist: HTMLProps<'datalist', HTMLAttributes>; + dd: HTMLProps<'dd', HTMLAttributes>; + del: HTMLProps<'del', HTMLAttributes>; + details: HTMLProps<'details', HTMLAttributes>; + dfn: HTMLProps<'dfn', HTMLAttributes>; + dialog: HTMLProps<'dialog', HTMLAttributes>; + div: HTMLProps<'div', HTMLAttributes>; + dl: HTMLProps<'dl', HTMLAttributes>; + dt: HTMLProps<'dt', HTMLAttributes>; + em: HTMLProps<'em', HTMLAttributes>; + embed: HTMLProps<'embed', HTMLAttributes>; + fieldset: HTMLProps<'fieldset', HTMLAttributes>; + figcaption: HTMLProps<'figcaption', HTMLAttributes>; + figure: HTMLProps<'figure', HTMLAttributes>; + footer: HTMLProps<'footer', HTMLAttributes>; + form: HTMLProps<'form', HTMLAttributes>; + h1: HTMLProps<'h1', HTMLAttributes>; + h2: HTMLProps<'h2', HTMLAttributes>; + h3: HTMLProps<'h3', HTMLAttributes>; + h4: HTMLProps<'h4', HTMLAttributes>; + h5: HTMLProps<'h5', HTMLAttributes>; + h6: HTMLProps<'h6', HTMLAttributes>; + head: HTMLProps<'head', HTMLAttributes>; + header: HTMLProps<'header', HTMLAttributes>; + hgroup: HTMLProps<'hgroup', HTMLAttributes>; + hr: HTMLProps<'hr', HTMLAttributes>; + html: HTMLProps<'html', HTMLAttributes>; + i: HTMLProps<'i', HTMLAttributes>; + iframe: HTMLProps<'iframe', HTMLAttributes>; + img: HTMLProps<'img', HTMLAttributes>; + input: HTMLProps<'input', HTMLAttributes>; + ins: HTMLProps<'ins', HTMLAttributes>; + kbd: HTMLProps<'kbd', HTMLAttributes>; + keygen: HTMLProps<'keygen', HTMLAttributes>; + label: HTMLProps<'label', HTMLAttributes>; + legend: HTMLProps<'legend', HTMLAttributes>; + li: HTMLProps<'li', HTMLAttributes>; + link: HTMLProps<'link', HTMLAttributes>; + main: HTMLProps<'main', HTMLAttributes>; + map: HTMLProps<'map', HTMLAttributes>; + mark: HTMLProps<'mark', HTMLAttributes>; + menu: HTMLProps<'menu', HTMLAttributes>; + menuitem: HTMLProps<'menuitem', HTMLAttributes>; + meta: HTMLProps<'meta', HTMLAttributes>; + meter: HTMLProps<'meter', HTMLAttributes>; + nav: HTMLProps<'nav', HTMLAttributes>; + noscript: HTMLProps<'noscript', HTMLAttributes>; + object: HTMLProps<'object', HTMLAttributes>; + ol: HTMLProps<'ol', HTMLAttributes>; + optgroup: HTMLProps<'optgroup', HTMLAttributes>; + option: HTMLProps<'option', HTMLAttributes>; + output: HTMLProps<'output', HTMLAttributes>; + p: HTMLProps<'p', HTMLAttributes>; + param: HTMLProps<'param', HTMLAttributes>; + picture: HTMLProps<'picture', HTMLAttributes>; + pre: HTMLProps<'pre', HTMLAttributes>; + progress: HTMLProps<'progress', HTMLAttributes>; + q: HTMLProps<'q', HTMLAttributes>; + rp: HTMLProps<'rp', HTMLAttributes>; + rt: HTMLProps<'rt', HTMLAttributes>; + ruby: HTMLProps<'ruby', HTMLAttributes>; + s: HTMLProps<'s', HTMLAttributes>; + samp: HTMLProps<'samp', HTMLAttributes>; + slot: HTMLProps<'slot', HTMLAttributes>; + script: HTMLProps<'script', HTMLAttributes>; + section: HTMLProps<'section', HTMLAttributes>; + select: HTMLProps<'select', HTMLAttributes>; + small: HTMLProps<'small', HTMLAttributes>; + source: HTMLProps<'source', HTMLAttributes>; + span: HTMLProps<'span', HTMLAttributes>; + strong: HTMLProps<'strong', HTMLAttributes>; + style: HTMLProps<'style', HTMLAttributes>; + sub: HTMLProps<'sub', HTMLAttributes>; + summary: HTMLProps<'summary', HTMLAttributes>; + sup: HTMLProps<'sup', HTMLAttributes>; + table: HTMLProps<'table', HTMLAttributes>; + template: HTMLProps<'template', HTMLAttributes>; + tbody: HTMLProps<'tbody', HTMLAttributes>; + td: HTMLProps<'td', HTMLAttributes>; + textarea: HTMLProps<'textarea', HTMLAttributes>; + tfoot: HTMLProps<'tfoot', HTMLAttributes>; + th: HTMLProps<'th', HTMLAttributes>; + thead: HTMLProps<'thead', HTMLAttributes>; + time: HTMLProps<'time', HTMLAttributes>; + title: HTMLProps<'title', HTMLAttributes>; + tr: HTMLProps<'tr', HTMLAttributes>; + track: HTMLProps<'track', HTMLAttributes>; + u: HTMLProps<'u', HTMLAttributes>; + ul: HTMLProps<'ul', HTMLAttributes>; + var: HTMLProps<'var', HTMLAttributes>; + video: HTMLProps<'video', HTMLAttributes>; + wbr: HTMLProps<'wbr', HTMLAttributes>; + webview: HTMLProps<'webview', HTMLAttributes>; + // SVG + svg: HTMLProps<'svg', SVGAttributes>; + + animate: HTMLProps<'animate', SVGAttributes>; + animateMotion: HTMLProps<'animateMotion', SVGAttributes>; + animateTransform: HTMLProps<'animateTransform', SVGAttributes>; + circle: HTMLProps<'circle', SVGAttributes>; + clipPath: HTMLProps<'clipPath', SVGAttributes>; + defs: HTMLProps<'defs', SVGAttributes>; + desc: HTMLProps<'desc', SVGAttributes>; + ellipse: HTMLProps<'ellipse', SVGAttributes>; + feBlend: HTMLProps<'feBlend', SVGAttributes>; + feColorMatrix: HTMLProps<'feColorMatrix', SVGAttributes>; + feComponentTransfer: HTMLProps<'feComponentTransfer', SVGAttributes>; + feComposite: HTMLProps<'feComposite', SVGAttributes>; + feConvolveMatrix: HTMLProps<'feConvolveMatrix', SVGAttributes>; + feDiffuseLighting: HTMLProps<'feDiffuseLighting', SVGAttributes>; + feDisplacementMap: HTMLProps<'feDisplacementMap', SVGAttributes>; + feDistantLight: HTMLProps<'feDistantLight', SVGAttributes>; + feDropShadow: HTMLProps<'feDropShadow', SVGAttributes>; + feFlood: HTMLProps<'feFlood', SVGAttributes>; + feFuncA: HTMLProps<'feFuncA', SVGAttributes>; + feFuncB: HTMLProps<'feFuncB', SVGAttributes>; + feFuncG: HTMLProps<'feFuncG', SVGAttributes>; + feFuncR: HTMLProps<'feFuncR', SVGAttributes>; + feGaussianBlur: HTMLProps<'feGaussianBlur', SVGAttributes>; + feImage: HTMLProps<'feImage', SVGAttributes>; + feMerge: HTMLProps<'feMerge', SVGAttributes>; + feMergeNode: HTMLProps<'feMergeNode', SVGAttributes>; + feMorphology: HTMLProps<'feMorphology', SVGAttributes>; + feOffset: HTMLProps<'feOffset', SVGAttributes>; + fePointLight: HTMLProps<'fePointLight', SVGAttributes>; + feSpecularLighting: HTMLProps<'feSpecularLighting', SVGAttributes>; + feSpotLight: HTMLProps<'feSpotLight', SVGAttributes>; + feTile: HTMLProps<'feTile', SVGAttributes>; + feTurbulence: HTMLProps<'feTurbulence', SVGAttributes>; + filter: HTMLProps<'filter', SVGAttributes>; + foreignObject: HTMLProps<'foreignObject', SVGAttributes>; + g: HTMLProps<'g', SVGAttributes>; + image: HTMLProps<'image', SVGAttributes>; + line: HTMLProps<'line', SVGAttributes>; + linearGradient: HTMLProps<'linearGradient', SVGAttributes>; + marker: HTMLProps<'marker', SVGAttributes>; + mask: HTMLProps<'mask', SVGAttributes>; + metadata: HTMLProps<'metadata', SVGAttributes>; + mpath: HTMLProps<'mpath', SVGAttributes>; + path: HTMLProps<'path', SVGAttributes>; + pattern: HTMLProps<'pattern', SVGAttributes>; + polygon: HTMLProps<'polygon', SVGAttributes>; + polyline: HTMLProps<'polyline', SVGAttributes>; + radialGradient: HTMLProps<'radialGradient', SVGAttributes>; + rect: HTMLProps<'rect', SVGAttributes>; + stop: HTMLProps<'stop', SVGAttributes>; + switch: HTMLProps<'switch', SVGAttributes>; + symbol: HTMLProps<'symbol', SVGAttributes>; + text: HTMLProps<'text', SVGAttributes>; + textPath: HTMLProps<'textPath', SVGAttributes>; + tspan: HTMLProps<'tspan', SVGAttributes>; + use: HTMLProps<'use', SVGAttributes>; + view: HTMLProps<'view', SVGAttributes>; + + // Svelte specific + 'svelte:window': HTMLProps<'svelte:window', HTMLAttributes>; + 'svelte:body': HTMLProps<'svelte:body', HTMLAttributes>; + 'svelte:document': HTMLProps<'svelte:document', HTMLAttributes>; + 'svelte:fragment': { slot?: string }; + 'svelte:options': HTMLProps<'svelte:options', HTMLAttributes>; + 'svelte:head': { [name: string]: any }; + + [name: string]: { [name: string]: any }; + } + } +} From 50c270a54dfe8f7d27ca3a5f3d55c93791bab90b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 11 Aug 2023 16:32:25 +0200 Subject: [PATCH 04/65] Version Packages (#9096) --------- Co-authored-by: github-actions[bot] Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> --- .changeset/slimy-dingos-call.md | 5 ----- documentation/docs/05-misc/03-typescript.md | 2 +- packages/svelte/CHANGELOG.md | 6 ++++++ packages/svelte/package.json | 2 +- packages/svelte/src/shared/version.js | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) delete mode 100644 .changeset/slimy-dingos-call.md diff --git a/.changeset/slimy-dingos-call.md b/.changeset/slimy-dingos-call.md deleted file mode 100644 index 4ecb122ae2..0000000000 --- a/.changeset/slimy-dingos-call.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'svelte': minor ---- - -feat: move `svelteHTML` from language-tools into core to load the correct `svelte/element` types diff --git a/documentation/docs/05-misc/03-typescript.md b/documentation/docs/05-misc/03-typescript.md index b88c6f5c9f..f525810cc6 100644 --- a/documentation/docs/05-misc/03-typescript.md +++ b/documentation/docs/05-misc/03-typescript.md @@ -142,7 +142,7 @@ Then make sure that `d.ts` file is referenced in your `tsconfig.json`. If it rea Since Svelte version 4.2 / `svelte-check` version 3.5 / VS Code extension version 107.10.0 you can also declare the typings by augmenting the the `svelte/elements` module like this: -```js +```ts /// file: additional-svelte-typings.d.ts import { HTMLButtonAttributes } from 'svelte/elements' diff --git a/packages/svelte/CHANGELOG.md b/packages/svelte/CHANGELOG.md index aa0313a68a..a7d6cc5e85 100644 --- a/packages/svelte/CHANGELOG.md +++ b/packages/svelte/CHANGELOG.md @@ -1,5 +1,11 @@ # svelte +## 4.2.0 + +### Minor Changes + +- feat: move `svelteHTML` from language-tools into core to load the correct `svelte/element` types ([#9070](https://github.com/sveltejs/svelte/pull/9070)) + ## 4.1.2 ### Patch Changes diff --git a/packages/svelte/package.json b/packages/svelte/package.json index cbc11b3da7..357bfba31b 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "svelte", - "version": "4.1.2", + "version": "4.2.0", "description": "Cybernetically enhanced web apps", "type": "module", "module": "src/runtime/index.js", diff --git a/packages/svelte/src/shared/version.js b/packages/svelte/src/shared/version.js index 755a1cac33..29e3707aa8 100644 --- a/packages/svelte/src/shared/version.js +++ b/packages/svelte/src/shared/version.js @@ -6,5 +6,5 @@ * https://svelte.dev/docs/svelte-compiler#svelte-version * @type {string} */ -export const VERSION = '4.1.2'; +export const VERSION = '4.2.0'; export const PUBLIC_VERSION = '4'; From 3597cedbd8c57110a085e718ce44428ab2e385eb Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sat, 12 Aug 2023 12:04:51 -0700 Subject: [PATCH 05/65] docs: fix typo in August newsletter (#9100) --- .../blog/2023-08-01-whats-new-in-svelte-august-2023.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/blog/2023-08-01-whats-new-in-svelte-august-2023.md b/documentation/blog/2023-08-01-whats-new-in-svelte-august-2023.md index d14e1a7a08..e7b27d65f7 100644 --- a/documentation/blog/2023-08-01-whats-new-in-svelte-august-2023.md +++ b/documentation/blog/2023-08-01-whats-new-in-svelte-august-2023.md @@ -46,7 +46,7 @@ For all the patches and performance updates from this month, check out the [Svel **Learning Resources** _Featuring Svelte Contributors and Ambassadors_ - [Exploring Svelte 4 w/ Kevin AK: Performance, Compatibility, & Web Component Support | Modern Web Pod](https://www.youtube.com/watch?v=YOL0HGGVib4) by This Dot Media -- [Svelte Sirens Stream Design Systems: Lessons Learned](https://www.youtube.com/live/YHZaiIGSqsE?feature=share) featuring Eric Liu creator of Carbon Components Svelte and Svelde the docgen library +- [Svelte Sirens Stream Design Systems: Lessons Learned](https://www.youtube.com/live/YHZaiIGSqsE?feature=share) featuring Eric Liu, creator of Carbon Components Svelte and the `sveld` docgen library - This Week in Svelte: - [2023 June 30](https://www.youtube.com/watch?v=sDz4_BLoYQ4) - Svelte 4.0.1, SK 1.21, lists, screen readers, loading - [2023 July 7](https://www.youtube.com/watch?v=0tq1ph4DDFA) - Svelte 4.0.5, Kit 1.22.1, Svelte 5, local storage and markdown From 037b6ce312bf5608d9dedfb7807a3e53e684e6e8 Mon Sep 17 00:00:00 2001 From: Andy Pan Date: Sun, 13 Aug 2023 15:56:29 +0800 Subject: [PATCH 06/65] docs: Fix a regression for a quoted-attribute example (#9103) * Fix a doc regression for a quoted-attribute example * Prettier ignore --------- Co-authored-by: Puru Vijay <47742487+PuruVJ@users.noreply.github.com> --- documentation/docs/02-template-syntax/02-basic-markup.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/documentation/docs/02-template-syntax/02-basic-markup.md b/documentation/docs/02-template-syntax/02-basic-markup.md index 9e230078b5..dbdc55c060 100644 --- a/documentation/docs/02-template-syntax/02-basic-markup.md +++ b/documentation/docs/02-template-syntax/02-basic-markup.md @@ -56,8 +56,9 @@ All other attributes are included unless their value is [nullish](https://develo An expression might include characters that would cause syntax highlighting to fail in regular HTML, so quoting the value is permitted. The quotes do not affect how the value is parsed: + ```svelte - + ``` When the attribute name and value match (`name={name}`), they can be replaced with `{name}`. From da3cc6c0a0a09df780e6479389165f1283424be5 Mon Sep 17 00:00:00 2001 From: Romain l'Ourson Date: Mon, 14 Aug 2023 05:35:42 +0200 Subject: [PATCH 07/65] fix: typo (#9102) --- documentation/docs/05-misc/03-typescript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/05-misc/03-typescript.md b/documentation/docs/05-misc/03-typescript.md index f525810cc6..32580ca644 100644 --- a/documentation/docs/05-misc/03-typescript.md +++ b/documentation/docs/05-misc/03-typescript.md @@ -140,7 +140,7 @@ declare namespace svelteHTML { Then make sure that `d.ts` file is referenced in your `tsconfig.json`. If it reads something like `"include": ["src/**/*"]` and your `d.ts` file is inside `src`, it should work. You may need to reload for the changes to take effect. -Since Svelte version 4.2 / `svelte-check` version 3.5 / VS Code extension version 107.10.0 you can also declare the typings by augmenting the the `svelte/elements` module like this: +Since Svelte version 4.2 / `svelte-check` version 3.5 / VS Code extension version 107.10.0 you can also declare the typings by augmenting the `svelte/elements` module like this: ```ts /// file: additional-svelte-typings.d.ts From d2ed2ca32918eab7da531a42021946f6149afdc4 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Tue, 15 Aug 2023 16:07:33 +0200 Subject: [PATCH 08/65] docs: note ambient module info (#9106) --- documentation/docs/05-misc/03-typescript.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/documentation/docs/05-misc/03-typescript.md b/documentation/docs/05-misc/03-typescript.md index 32580ca644..00bf2e826b 100644 --- a/documentation/docs/05-misc/03-typescript.md +++ b/documentation/docs/05-misc/03-typescript.md @@ -156,6 +156,8 @@ declare module 'svelte/elements' { 'veryexperimentalattribute'?: string; } } + +export {}; // ensure this is not an ambient module, else types will be overridden instead of augmented ``` ## Experimental advanced typings From 5a8c1d2cafe8217aa1a6408b024571d3d655a431 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 18 Aug 2023 11:59:20 -0700 Subject: [PATCH 09/65] site: fix removal of tutorial from search engines (#9117) --- sites/svelte.dev/src/routes/tutorial/+layout.svelte | 5 +++++ sites/svelte.dev/static/robots.txt | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 sites/svelte.dev/src/routes/tutorial/+layout.svelte diff --git a/sites/svelte.dev/src/routes/tutorial/+layout.svelte b/sites/svelte.dev/src/routes/tutorial/+layout.svelte new file mode 100644 index 0000000000..824d5fa141 --- /dev/null +++ b/sites/svelte.dev/src/routes/tutorial/+layout.svelte @@ -0,0 +1,5 @@ + + + + + diff --git a/sites/svelte.dev/static/robots.txt b/sites/svelte.dev/static/robots.txt index a70a37514a..eb0536286f 100644 --- a/sites/svelte.dev/static/robots.txt +++ b/sites/svelte.dev/static/robots.txt @@ -1,2 +1,2 @@ User-agent: * -Disallow: /tutorial/* # new tutorial is at learn.svelte.dev +Disallow: From ba1e67844e268700406f81188c36d673d6339f35 Mon Sep 17 00:00:00 2001 From: gtmnayan <50981692+gtm-nayan@users.noreply.github.com> Date: Sun, 20 Aug 2023 16:19:32 +0545 Subject: [PATCH 10/65] fix: css sourcemap generation with unicode filenames (#9120) * fix: css sourcemap generation with unicode filenames * format --- .changeset/eighty-poems-deliver.md | 5 +++++ packages/svelte/src/compiler/utils/mapped_code.js | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 .changeset/eighty-poems-deliver.md diff --git a/.changeset/eighty-poems-deliver.md b/.changeset/eighty-poems-deliver.md new file mode 100644 index 0000000000..a209b85bd4 --- /dev/null +++ b/.changeset/eighty-poems-deliver.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: css sourcemap generation with unicode filenames diff --git a/packages/svelte/src/compiler/utils/mapped_code.js b/packages/svelte/src/compiler/utils/mapped_code.js index 0987b85ada..22645dd44b 100644 --- a/packages/svelte/src/compiler/utils/mapped_code.js +++ b/packages/svelte/src/compiler/utils/mapped_code.js @@ -292,7 +292,18 @@ export function apply_preprocessor_sourcemap(filename, svelte_map, preprocessor_ toUrl: { enumerable: false, value: function toUrl() { - return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString()); + let b64 = ''; + if (typeof window !== 'undefined' && window.btoa) { + // btoa doesn't support multi-byte characters + b64 = window.btoa(unescape(encodeURIComponent(this.toString()))); + } else if (typeof Buffer !== 'undefined') { + b64 = Buffer.from(this.toString(), 'utf8').toString('base64'); + } else { + throw new Error( + 'Unsupported environment: `window.btoa` or `Buffer` should be present to use toUrl.' + ); + } + return 'data:application/json;charset=utf-8;base64,' + b64; } } }); From d06cfe37239ca64b1a9f9178cfbb8eeaf12f7ffb Mon Sep 17 00:00:00 2001 From: gtmnayan <50981692+gtm-nayan@users.noreply.github.com> Date: Sun, 20 Aug 2023 19:02:40 +0545 Subject: [PATCH 11/65] chore: render head output in playground (#9123) --- packages/playground/start.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/playground/start.js b/packages/playground/start.js index af37a40e26..ace479ac9f 100644 --- a/packages/playground/start.js +++ b/packages/playground/start.js @@ -69,11 +69,12 @@ const watcher = watch([ async generateBundle(_, bundle) { const result = bundle['entry-server.js']; const mod = (0, eval)(result.code); - const { html } = mod.render(); + const { html, head } = mod.render(); writeFileSync( 'dist/index.html', readFileSync('src/template.html', 'utf-8') + .replace('', head) .replace('', html) .replace('', svelte.VERSION) ); From 670200c78cba68f72a0157a552af6d87f36ae9d8 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 21 Aug 2023 02:03:18 -0700 Subject: [PATCH 12/65] site: remove unused font files (#9119) --- .../src/routes/_components/Demo.svelte | 4 ---- .../fonts/fira-mono/fira-mono-latin-400.woff2 | Bin 16528 -> 0 bytes .../fonts/overpass/overpass-latin-100.woff2 | Bin 18836 -> 0 bytes .../fonts/overpass/overpass-latin-300.woff2 | Bin 19364 -> 0 bytes .../fonts/overpass/overpass-latin-400.woff2 | Bin 19800 -> 0 bytes .../fonts/overpass/overpass-latin-600.woff2 | Bin 19404 -> 0 bytes .../fonts/overpass/overpass-latin-700.woff2 | Bin 19924 -> 0 bytes .../static/fonts/roboto/roboto-latin-400.woff2 | Bin 15344 -> 0 bytes .../fonts/roboto/roboto-latin-400italic.woff2 | Bin 16944 -> 0 bytes .../static/fonts/roboto/roboto-latin-500.woff2 | Bin 15552 -> 0 bytes .../fonts/roboto/roboto-latin-500italic.woff2 | Bin 16940 -> 0 bytes 11 files changed, 4 deletions(-) delete mode 100644 sites/svelte.dev/static/fonts/fira-mono/fira-mono-latin-400.woff2 delete mode 100644 sites/svelte.dev/static/fonts/overpass/overpass-latin-100.woff2 delete mode 100644 sites/svelte.dev/static/fonts/overpass/overpass-latin-300.woff2 delete mode 100644 sites/svelte.dev/static/fonts/overpass/overpass-latin-400.woff2 delete mode 100644 sites/svelte.dev/static/fonts/overpass/overpass-latin-600.woff2 delete mode 100644 sites/svelte.dev/static/fonts/overpass/overpass-latin-700.woff2 delete mode 100644 sites/svelte.dev/static/fonts/roboto/roboto-latin-400.woff2 delete mode 100644 sites/svelte.dev/static/fonts/roboto/roboto-latin-400italic.woff2 delete mode 100644 sites/svelte.dev/static/fonts/roboto/roboto-latin-500.woff2 delete mode 100644 sites/svelte.dev/static/fonts/roboto/roboto-latin-500italic.woff2 diff --git a/sites/svelte.dev/src/routes/_components/Demo.svelte b/sites/svelte.dev/src/routes/_components/Demo.svelte index 3ddab56964..ecee643a0a 100644 --- a/sites/svelte.dev/src/routes/_components/Demo.svelte +++ b/sites/svelte.dev/src/routes/_components/Demo.svelte @@ -31,10 +31,6 @@ let selected = examples[0]; - - - -

build with ease

diff --git a/sites/svelte.dev/static/fonts/fira-mono/fira-mono-latin-400.woff2 b/sites/svelte.dev/static/fonts/fira-mono/fira-mono-latin-400.woff2 deleted file mode 100644 index e81b9f3c56ccc92bf6b0d80171fb29cdedcc6de3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16528 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�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 z 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 DS!8^& diff --git a/sites/svelte.dev/static/fonts/overpass/overpass-latin-600.woff2 b/sites/svelte.dev/static/fonts/overpass/overpass-latin-600.woff2 deleted file mode 100644 index 1956aca6e03873b9cf990c4819cbe11e853e4664..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19404 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 XC0prpFwdc1ob^=vQ(7tG)&T$jy0z>6 diff --git a/sites/svelte.dev/static/fonts/overpass/overpass-latin-700.woff2 b/sites/svelte.dev/static/fonts/overpass/overpass-latin-700.woff2 deleted file mode 100644 index 14a7f9cce5afdb49b1eff79042eaf323eb4de649..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19924 zcmV(6OaveWgmwppD-3}R z8!ERa#NBrlay#Hz`rXeu3W1FS9M6X3nNeZm06{=sUH1R~XC;*}wq4wR0mQ_rAa?Rd zcmy1WYN7>ds|T`cjiozxr}`hT#aeM!5ApGgy?)G9=tsKUKrw zf9IrFESy$_XYpu-){Z_nFF18v&$hb#XRF{nDcN_o2y9%&NLEf>qG&BDvU(4I=TM@% zQ;1Ip7S#)b5*40Y)yYRk*n-fBS#^{YqVa_=~FV-0T0YN&O^4Si%gJ z23nqSmbt6;$g$9;0PuNWy)5hIR5fu}qWn?4_LZ zQ3kh50Z70Qgs`^Vzh^=t1qlg;iop}=tbZeoz>-WcWuqm!`vkQ=lqniF{RTL+BfKd5 zRsjE-HZ6~H*Ntb!jTpZn`hWupxb7*S`r^RI+(PO8h8-Q5`Ge>cXl7sMV+H z*WEMo0zd);6=C^@6wg~F8KO3;bmGDZqK})7KO_QOGR{E@Fo%iJ%$N54T50cJ9|zm5 z4Z>7}16C0>>V%znf3c5fasfa^xTNB8MxC&!QCsVRSU%;se1wWqC$!A}Upo7?@0Gxm z41K<6_xXoT;m2_H2J`>qxSQoHHdXJwO7E3~R1z{sKnscXknBb!a0}bhp9;vOfDguQ zCwgLLQU=NG*qNRf!!CtY-lx1<&So>Klore7!2iSj)O%k18vP;9Xn0kD%aV4xBDt(=*@|Uhy)2Cl$-={AAiFg`)OZDG_AZVTeGpC zf|a2NC}?u`-+uO+ou0=o>O0z)v(N!TKM)-Jx3g!VyKZM9rI>bKzOn$5ffYa@5WXY6 zcSil_Gr_`COc3n5T#!%>tS<8*V4@C(;T^jY1yEdi)>ai1NPw(-x0jr^Q3Vz#ATT-? zVW9At192gNg$hPZo3?7tg|2sl8{O_+_j=r`Rvo)^p9KH;>VHx=ELa#prxEzc6MujC zEF5AwV$(E7Q3=;3m7M7Lop+9$NRE9WK1vWlf=MF2B<^P2oILfIf2L14Hw(M8&t)4j zA?H}a!+&`|API)!oWqRn2JiL&I((Mf;*YZxGWlE1&V-N2_7E9&|8yBVK#d-n10Dmg z`sqW2pHSh}ZP>JB+YYhL2{~MQf*P}IQ{y5d_`$1hFG82spVCfh%g?& zNsuOoaI#e!Lh5q|x$;w=q7zUI{*MHFAJOW8$hvjxeAXOHoRN!bQ+4I$T#S7UV<%(J zaL0x5WDEzF=VMN-GD|5Ud^Gb@Lm?S_xKY?lfBQX;YrsbA4G0bAJeZ9Y>mQ0m!ovkIk$gD_nMm#`hG=lf=V>UGkW|_E z&4%dIlMzg~W zKmb0))`|5`N(Uo{_-8Ve8$QNArY$*5ePP*fUPERjGe`d*18@I=9RAli^HFw0kA>c* z&Nc^$iz=Dx4i*fp2aIWrm+}A>t|K_3nhQB#dwvn<`J^4VI4t>{H8d5r4Oyp1D&N38 zwE@8nga{rbSTeyQ!;l71Lxi3kz-YYUn~WX&KC0P8AUa7A0d{rl6xL+HPi{PCiuLyn zh6_6IlqTXGBQ3W$WnI#hH?^vLN4c>@taOi@Bf8k7x<2*y-Q zsG3qSqh?Osf`*KiCG%Fat(mi7-c|+RNOAHCka)Eg_L?^lZ+VyCJ*49Opx^_aP<$3t zeC{ijubKCa%z7b%087-X6aTB(Kv+}!7QQ)OM@v=L#E`3@uB>8Y1ONbFjPM`?g4R74 z+NWP%h{F@eL=ssKK*@ZvZ9)4zuFw!FsPBetxAyQji_MXj6NrITXr->phW-(SpYx?oy(AgXhEAsZ;lt~GWz)dnv`Sbq-GXMG8`l{v$5o~!Q{V3 zwwOYF8--#4Q{lZG2gGNcya`Z~3c$UT{3j`)U5!O9DqzA;l0TqR&91ze^_4?}zQy+_ z;oO|hhioL7qSI8JA5g86@-(m4Q4$mC0l;`)2t5qn&}=+y%}geRv5ABA07pQxIln@B zY$)T3RCle^3jCwo1ZXe=izA=Kl14~&wC|Jzp&i<(*0nh{ZD*vAL~6#JUn8-{EY?a^ zD@uesI8{Mt_7qSwsttHseQ$TZSVen|B?T(TMd1H4fN-D?C~5?yo_PU^Rx}JGjj49& z_?T1u$^)PQ4O%hAg$x|@2oPd)g2SlsStKoaAj1aVDsm|)HB6sCQQ)Su>;w)OLCjr2yS-|g@~p5DkHq5jp^wDHvMPmN^ZU#B{t(-PY@0Y0Jsu zaf)~)bDOHSvH=zVn9@Z60M+7nvFJOQR&@b@O6!~eNSF%@mR56pQOj5>2w*A5E1VQ0 z1VE<}D(lwzozo5peHT=66V!jbp&{WBVN)D{jpGa%L?!!tHxE$92m6%zR7y|^iL%}R zTsKz5LK;`3!WYp833ouCVl0Vd4U;xX#x2BNB<&}PpP$SRZherT?P>RfF@b(OylG>p zQ8-+3ByRI=6*%}Mhy#rL`g+Wqe(LtH=jv!D$a3% z_pN;;mfd$Ck)r~kd*zJfNFKjpNos0{hK7QR3(w7s<>R9?X%c7796?0|c8+rpE^q;< z4EMfNQxltykUl=9_=M(D`uL3EORBGybTF58(mE*UBCXGlU8Eech#s$qmJu+*gB56j zKtPO<08%9w)C-B=M9GR>%!y0T%T6s)N}66qmO&24$&!>E1S{RG}eypq~h)zpN26#JPaUSSrDy8 zuwKdIkXVe5H0or7H8R(?IS9ZaSP2r8h>@RYZi=(w`6!-!5WzzP57D>CCdv2(QHVz( zxC2f+Q@~5&h=O>L6acdzfdQ&0oiB$p`SD#BRgu~1*Ns1#X!H)k_+5{g+dZz0SsS}H zZf)e+C`U{#oO^k#0)hXku@1y8U0Ire!lkvjGK{`s8jC1n1AFz)y?nc}0T%Aewq6Aixv|@`$M>8NhYD zgBe^$5-2)Wi0*``-D$5Zo??s9{=2hTy;cjZFHT%O+T+6@-YnIaqOXrv7EEs&=;p(i z*88=uwb9|-zj!{T{L|;&QEpk*B{7=lhm&dFQ+RujCD0Da|Am>l7-gxVs_dfXOlh3@` zP*W&Sch`x){`I0c-Bjp+@#a_Ge1YuPnJB@nxk+?eX~I<4~|iq>e0x-_IKdK~*`kh;bHi-5tcZHO`A z&PZCJjop^NGv?igqrKt({P+F8-|H71KDc}9#5bp3zVX9rgzKIRy1v6_6dnb)*MuLy zefDgS4X>hC!Z{ipBYM57-VnXnRo{r->Z<2sFMguYAG$05+GLHz$y zZ}s%~rV9N3*KaGUU|fqpxDmz%uv@H1Y$)6oD(7=1$o(qh#R z0}Jq;l1rb4ZiqOZk16CJBxVPngQ&QC059+5L(JSNWV6|up+t_S1-nAoNg-j#hEeF= z9ITLEOB+&*cw^MhluekUc|2N|b41>JxhdgtSei8?z!>B#EkK@ofqe87qIV)jR5awE zqJl-?D-SOLYr5j(UG_O5q;{O-BA!n>k?H@B>t2TanOxcranGd#3uAfiMU#6qt1uOU-FCy)U#OS{2wQkU#>GO8cN2|>S7WGaVi}9 z+X6e1onkN*3d6{i%8|2p+Mm4=3#crp!+9_19T`B9nJ`Tw@{Oo@6Z8`>cm_x#t=W7~ zC*2&xsn~5%WjYG(WIn?fZ)hNo1KQ%7yz(*~y-~lzSFv8&&;)3)qYVEzsk2w6+{TFf zgl>3|Zf4=_Q7Bw9va9itR)6UBZDK#XJ=`UnL59v-vfYIeZa)qkfq#4Pn{AajsG0lsd?S3!nUO@2UlW>4=Dg-GD+k zTsn`n0-TQm&FC?vI=(oSNK|;lPks5@UazBty!!k^$qhEXTHRf-h6NPJR}G6+K&T{O zR2B%T2pp;kJgNx-stY1&2oh=v@>mZFc~c6-+oPapiN1P=lm+_<9i_J4-3J|E+uuj% z7S>{PKq@->LQDVjE)&wV8(@#Ff9rlPt%Ts z@$8y?C@JjaxTKS`<&+X9#3rGF6GjB4noFH)2nU9FOU@M|LoRiOTMa~u)J!g^MzCRr7KeY=_Nu&{-a*j?7IR?d=hfa(^RzYB#JW1uCXsC2TYcW1$7JIiffFA2-C~Z}c{+MVz*bGhk+L0-^C;gH2n9zfc0kFqC|AdJs|=Q^HlSuvy%pF+!;qQ{Xjzu+ zCb7*r!)^V) zo;2)VqUpEZsJ7MQ&MW%aGOJg4RcM-%o{E-N5K~LdXfI?>1gmaqk`Zoj?^+z*oawa` z8`K6nraM1H`|1W8Jgw8cT3gmDk$69T+Zh21{sniPCgP;uMM1)P@+>UBnyPkF_!(?H zc-QWlHo&h~^lX~C9LSz8icOYVjM+Ez6w^#c;BpNe`BK6nn$Zd^>%JB~ZVL>f- zve#hZR2eXhJu+0{q<&(tb;pd^W^zW#=^jmh3>8UALUb>_GreFkflPigVDxe=N(I9u zGE^jCq%7gnbJL1ym8^)YIv8D(TXHiN@-d)XMb{=>hkJk%kc45=ATBqM&ymmW^^6=} zx0feq-B1n^*xax4>M5uNHCeKm>uw^&R44IH&P1jR_wmb6U>r+zFQT9az1yYYqGGB2 z_I>mcg#@k9SROOK1{}Lqb!pn2`3-@8uHX?0 z^4!5vb$@V*Z@NRAK?=EGGW=O;Q<0!&2m56Ry6VjZc7httQ_)&+C-IHP>nM8n`OEY3 z=5VQ&Z<0zZoreT-+)D5bO9jsZLxzL|1ma5b@XK`w1ZuRxEgfMIFeE7EAEOWF{J4vt zmyr6fXd{WN3_8l0jN6%CKI(<1ZMBifFi>QWr#|TMx|z>qX2JpqwjNDHh{gIrc+9$&XbE zEeLZAqi4ds^J4u{|y?q z@60@oI(21%IIBycNSFM z70Pk(oJSoVLEnI1sUhqvX=Z`J42p}o6=OoB!*+89O_UGWSkxTK+aAbeB z&JX(j7@J&4;?}?$gB9^Kli!{8?I~O+r#IOv3G)msxyk3^80`r$%&9wQSuYP28Wu!Q zL8L!M9}$>P!>ZUcW+XCay%8nA2%k3whTj;(jzDxE^9=J zljA^0vG3Uml@W>SB`@lHyvL5+8c4tj1H#J|9P+nusqUjUf6R%FV5geo_rM%T$+BpG zoRQ};_zea*f}oG&U7a)uAtMUFu79^PF6-|_aZs_;ejmNv?IK{0`|RSSkE+`4fgN4? zLe3TR+P6If;yV%+jouFZ>zCutBwvX>{fo*aMa(z}Ntm6&zb`FKDIxWCrIC2!GY?V{~j2rYTwzu=AsKb%w!o(ths;MU&xsR!I{4kLiKWQ>BB4 zhFeEag+Q#wON?zK-J(6c>k{xSo|&YMuRKIJny-7dP?Kp|p`)W2M>1Qv+yJ_)y-tVs z<#|csz|c#8ar-GThB#As9~t&BT|pxtK%;AXB&o)~Wy}?gQnn7T;S~qib0!zh>Dig=+U%+i=Z#1b z78xYqOl zk-+6NC^zjaVR};p8}pZ`OO$|Oj_+jPWLNia>e^SdIbo0zEB8gBiCEp!b=iGTi6I6)xY^ zka}cv(yD_u#oEZND+Q9Id2o*r@7uF)b#W6$V*lP1k)Nlu)Sb_+ZX@lyyX#0h?H;9e z*8SpMidV8*8$6MaXEc_PiRl2p8~hOOO(Rp7>T>bc>2_hHx|}d6yixp;;YlZ49ZxvA zMyN;U#S3C@O2H4iq~Kt`R!=HdGL8ZU6?F1A@FUNIIQ%TRgRZ^{3*Tk4-&I?2R66id zuv)Jh{iIHv<201?3lzEuu3ol3x*j%FXo1Au;QCD%Y1_W?V#AP2&!K9$&k|f;%eZD; z2^C$5qE%BZwPwd6pwV$uyHWBy8zrZ)|AIQg z)pVBFL%UR!;`N!1m?4z~j9-!8n0Q&G{@5>rYOmz+OB7=(iG~cL&67)howekWSOy%V z3qJAZiT&15m>2E5Mv7x7L4$6q2McZ>xP6^CHZ{(2wY%@9+uL;p9quc|?XUakboK|& zp@}b`7bs%<75r1lGkoF*;M5It0KHNofFj{HU>z$K;=$?`B**48B?d@rZ0U2r+PkZS4Nwguo&Quuo$YDa zIWwSr&X#zN=6$njMef5s1ihy@tu$kzYSkrv)FUKMd|)QxQ-#2EB7zm=7QVdV|26hR zY;8U6Y?Pw&LV``!Q1AmlJkA(ai_E5a(-%+SiD3YM%WnWL}@ zSPgK$9EkI>nrtFDNGw9B78x_>i;QSxA%R$kQo{^Yi%ckGVd|PFXNeP`Et|p%|NiSU z)M4Y^jItz4Lk0@yG8pY`?qZ{{EH7P2%F$dmdr}Cn!p^(|O;d7mNjX!>prxMT^PBm} zIuZq&t|7>qC}^=;t1oYL7;X9Kc)p2iTiy)xZ1QMpA1*yv;3(Jx&Bxxuup?jtxngN4 zkgAjD6+HH3rue#-7G1L1jSbnHDsA*Esc>yv4zOYV?oIxWKmBPM+guphUxCa+=&IT~ zFZH+Y1s$?%22;j!$aqW!?SnZtGm#a2d7h^po3~my=L-||!(Pm`RQWxu{EP~N*ZR57 zYADaoC=?X(s_^mxr?Ro2L`m&&CkU{V-@cm~#4x+1lM&S3A(=Xm4HL zc5Uh>Plrd!WzYbw3*ge2?2Sqhq*Hr7;_;gv(3K%v;tzV^u9p~V(LNIQF2xnshT#d; zyJsu!p7E#pa8ZD6Id~7edp#eb5Qx-JOR87te$N+Ez=_l76u3-zK)V7-qNTBU5+3C2 z>a<&3&H~a(;Gk#;78Q4~wEry0+6UYF*~$HT?%m$D`P7lFM$c+9@=6g!CDN7V=xv>P z(VFTq?2$#%$e4(vta3$3r_bHGb@!jE`r1X}aCmiqc_BGdnTr2AehNdHfk)21l*<~9 zVGVaJnDot`e6&D&^R27>o1B|8^JD^4Z#UEwCU3|pV3?a*eW{_lxmU@Sn$g3P^sE4) zZTZem`4uo>Ekz_tE|08ci7+kVMo5xV+L5=iA!A}XJq<`nQimH;s`Azw^~^#CMY)$| zo_wHilQd#_QEU~99$ii^(EwhG`pz2{Q%^~eN9$6m$_GpRkBFA3FF^h1b@2K*E0}JX z`V`cT-U08>C=OVzpQo_lI~0uAT3V@0Zl&@|oNBVTp2xB1>FN}cI>L}rSG=;AtJSb! zZQvi3J*(Gb&(4{b;h*xO=qTS5sc6bSh4>qG-mk_;Z8Ty|9<=eC?yZU2)$r(>(sEmZMt_`+SE#-U{KN zCfunzKa$WBz9|p#qa6e)@~AJt0TbIPfIO`60eCM8F&Ps@Fx*7m|;;>1*+r-*#odl)WTqyNB`5Ze_V= zbz3($1Ugw+MwOPMV@l@U{Wur{v$wANw{?|$N6HFE5?m}~W}B1>u92>YQ8{tR!?cC4 zgW$@}HfVL3di4bl;}%5FbDiR!?_tfHtJf&9&4cl zN+Z#IBYed=nM@b41TTlTKwH#SwZ5f=|5ZgdmPF>dtekh#&82k#dO9-qjh=+BrMfAObMm#Lr>h-JEtikKI3*Cb6CHV4FQ+Rl2 z`#5Hy(g{NuNs*zj=hc*1<#~PNczGQ}Qqi( zu-tsKUM-MX)jE$PS1-QAkx^q(7aLJ#4WP2;vR}Y_OA@tK?TCkc+iUg0Xvw7Ip>@YO zy|j0E`r4W%4wU4put7vZnd9mx5^gMb@9%wp&CLnhA+z=E`+YpP&)Bvj%$Z|oBMzL;y?FLdua~nd zU)Ja2ctg)+u*+asf7cBZh44b^(zQL-xgIYlNZbUEv&X?ViZHC9%W8s?;1t8?5Z=09a z%8pC36{@7=@^n8No}t*}IUh9u?&2>U;72SjwhDTICh|~3;w@O6CfdC0nz>ICWph>f zA_-oV|JH)$-t9o97m}mC;np-LrsSbCX5<%rGC5CoFsilYNH-`rX z?}6txON17cQwrqgD-`<_(u*pU*#rRK2EA08pQliqk|;k{D$Hh?tXtt?iPc`QhQ)MZ zHuuGhjr#7gA<59Qn;_H5vXzp{_uQ;szINf7h5a0J(`D$gCs%(%OAqm_R+X8R(~1IK zAn(W)?fol%roApSEi@)7f1BBrEvTR}jK?q}9zaBi>%kH1I@BTIZ^S1nJE4)Hvk|vaJ zSlCjNOu*LA<8qTGsHs$aU8>$Zr9-9E>M_U!pG0I-N`X>^nB|Tn8%a_&S|>^^!-nwD zQhL~NZDwYcj*Oo`!+G0}Z=U_$zYC<29oPw-N6x&vZ@Ln^mzCsR`fA4KYER*T_the0 z7AaYBy5dNcWiM^tpGM?hbb6*SpQ)=*R}e3qSKF*=jkRV|U#?MGtu`CiF3?-q1es95 zCTP<*IBvh)je&OyzEItq&xUA zS1$@Kj(fz2I~kjvooK-4x!6E}UfxwyEe~PgVCXsjGfN0`ltU zUpzbdAK|aBwP(MfFAqkol|~K{oHR9)t(V&|gzvW%X1XD~6?*gp7^-wk~y7QAx}v+`H(KyT!F zQttG-0u}0x@LR*ZVr0SN(W0aQ#JaTDw2-Xj4x%kBE`_?RKWD#yxhOwU8kptfdR<{H zk!xMAKM$Xl?NUO*kG-E}GgOK?wK9`?_rN=GK2_(ANAwf>A|ic6zhV5M_GVcA{xMJ$ zaCP20Up6Jb1YGqu5y7o+RUM7JCpR1)*xkW3L;%i&-%d+S@%L4L&P@2HQsOCd_P5}V z6xqCob2AoJQxZczk;o5!l9?!U3W?77$Ku#}=lbI;)NB5&w_tsMADorh|8LwoX~1vH zA5ICs@7g=PlgfH^^$0*=14FTtd=h#GGK0PTLDtWlT)}#r>Qh|upKV=1Yh4@Qj;XH5s+WcAI+o6y=gy8O zRam-Ku=v`24e{-lA3NI%h6w~WfI&w?1 z%c564LejpY>%cUulXH9dhV##}LGdf*iDdd8uOdWa5)UT@#A9xs zTR0?q9I>SNi>e1*9W%N8pr%_z{BB7A_ont5AlU_{(24$T(yig=};V~?(Rs^Z1q z8WMLN;LeUbsobun&p#-feUpZ`+Hujh;8o>p?!(%}-F#0x0;%6MD8pg3OPAEvbT2Q@ zHAEErar)nDAHuCQ^HjLO@2*QZz$viZx2@Spmjan=iHt!P1MEzxOz)M%wM&(A#Pn$@ zbNx;gQ_iimZhR3&5Nb`s)0s}t(onCHJ#EHb``lwtPIgzv{;Bb~moR=a~NcO@_q*A&c}Zg}WnRs!8;9P6(gCL$psA=sp$Nvx{%GFN}S^YVrihjk0W&71#4GA@dTpc*LUVoRYPu<_dYbyqv3U zFV-c1_rL@SvDueaCz9QHMrOAR&%ViRF`20=c!pL>`wGmQ>^rO7B}Eo<$%_>@iHMkT!U!=;zV%<)A`x1}WW_5n*!cN}3Q;IwD%mLQ0X$-+ z*iAhc*#8hZeMZ@9N*>Hi{~r$ao&e)irs_Eb1EP>u5CprC3VQ?f?E=MftW;^_$cprm z(*fGt(%i<5l^qdgFcPh4CueIEBB4nwH=%iSYCIB&fXB0n<~%yIWul0r<4PD8=5X&+ zAYf7Paq=@iuox;qyGp=d{cwhbL$PN5^YpGLuVb3H+Tv;g>Y`wb7`{c*$BqFc{j zS(J4e?jsLvQQg=I^wWri*L;ZIB|aVX`Z`y(uc7Q*-pwmSqKK4n{!KAB75OHV6h%Fd zY~L2>`W3YQsv?4uBC!XC1KKn@(wTJ)0hA_f`~f+{)(a=wUa;B944~s~gfB1bg!AqA zQR;zpyGC3!LQ5>3dw1P;NwyD7X2W5%rfvInSNHINB)sc1-RIG;4jiln|6ec%ql#)_ z^gkSCfLy^7l@f zIZhWq*i>V%H4p4kA9c=D@@OT@HUw;kDB|1uMAy1II16k~Tfa_v!Kd?J<&On;`+B`@ z>cU8oW;}%3ARKSIg`iA=++c;%t5`BLM8hJWV0B{u5blvTwpgEiT00ZPd1-4YAgA-@ zSOzW)5Pu*t^|g~&=o5y7IOHueI`|PHDyoEFL(Beue-` zER?!yW!Bpc2*?8=Zil`Psgb}55WP3sV^5KOcK>{D}yXVRW#Y+!J) zOPnC!BaT7s4!5LUJE)h%94`H+;?60=i9)#Iz?(6!bF}<*Vn$;xJm5}Et^X&kAy10k>BwdPAzbh$&jJ=d01aK7@EQA=qnf=8 zZG-O6-9RskZ5}^TJuu@3$$Kh&1W`8CAG?Kl;5=JY8YMfpB)woWY=?f0&yM?Or6w?E z)>-3!(Zjqwy6tEagy)`yx56mJ{AzeqQLC*&AlGHRB_r!&`dN70HPbkD($fO zrsgm&f>Z3JAUYb$K=PY=fF7k}w}cs8-Z&yw>0kEePKOvs5uGA6=$QbQwzf$@Vq_gF z^N_E%s#Ld>kn}g8h|Apam6|VNNfM4=T3k5xVxWu*cIat?nv?~ca6BcGb-eb?-fz0S zEeqoqJ7Lr|`R|@txU5P%Z_n}OpftRF_kjBda=c;O`!viPvO@EYw_wjY7dNY86uO8<&Dcwah|?wo1AbAGlB0XCjut{ zoI6j6-Cq)C1~GF1wz_JB%@8SN7Sy4?-btxJBkEdJcSe*gEsDH=Eca>}z+8v+*#>n> zs1@269~r7~lQaPQdL;L&B7oqD2e)@)xz3-#U;g?3tRVt&Lg4Q$0bhVe8fq!|llT*k ze-}yH8eKUpwg&9 z1$7n9kB7i+rKL3{(1<36RY^-bjj)E?5h9lMh$y+|Mja44b?$a#I(-IO+44Q3DE+NCU! zDJ@N$L1oe;GHHbLngmxonE4f@5v^?LG!fq@+|#on%fYX#&=8O?z?neeEZ#7%$&IM9jhjUOZhxqTwWfOI@-fjgNS2pjPJVYt}-B|-!z@&Kr8 zFrf;y!7`$w{Ssm+si+RjyCih*M!P;nF^#7Ex^APBt0*iB(8_jVFrC;r6dRen9AsBR zBtp|n|Gm;oD}Oq6S6RYkO-0o_8nK75(+JU-q76O+Gzx)^oFuCR&a2lCLc_pvkUyc|Q_NE**sYmy@wlObN|{Bno) z{*93#_Ug#ZMnn(P;Fxl$x5FKRedy?|m(iZ~cbMp%LFTDF4Dmhz9G;oLQs;Uzihe%( z8DVGk)QkI64-bd=0Xzfo4AI9*!L`>G`k5I27>4Uef@b{Ad5s9d;R=sU2#&u>>AQ8S z{!=at@B$wrOnZHis#yhwJ*zz|7&*<{Z_Vc$uUY$flkDOM#$?lMZJ^}CIN7mY-SbWk zmDT6DpvyF?@V;joSbx-$NPMIiL?RY{@<~t1`zYr=?|?V-#)+CIB5YOD{gU06#*L>m zlz~sqs2t;vO+z-kI$MKFW8i@hox5S~gwO)vFSix62Qh22aPii`^)pbf0+|$e?=^T8+>MbmK@hqg8fFJx&8hg9QxHPKk_XqH5gUChu`V%D<}nC~6o_^DJ4AfMOC zy|2mdB!C;F4wrA=3m<@QQ(Fu8j2sQX5pIQj^^K+H-#mtSZF;^UzHmyZNPbGvYs(zJ zKb}S{UKb82N?MAtVVK9R!8K-xobq?nI9zDvu`WGxiU7qvDVrQtri6lU?@UDnN-Y7r zVOdda&75)qrN_P9+Umwp_J3)GBK6BZQ~?1DaZucW4J;n3{f^`>mbbPz2i}BN-!9)S5w%8*DWb~Z;|}+bO#PjE&Chp2Cpz*+ zXm+`Q;}Q)1z~3^j({6er=9()!$Y*ae^!;A*q8wl)A{56K1tWX?-=1ErcIjgW#9u*t zX1Y;hKm9L>Fn-Yx2D64K8uo#PQK&cZ-XVBBvL& ztu5!sa?6z_QbyBJ#8E=kcfHP9Q5{!HZ9+32j}|WW;AE7hi{j-Sw3c}r!EJQC($7v~ z6_)jv!I+Wt3xMxKY+_P%vZI+7mL`2b^|#&wkGbBWj%bL(*qWwg$xXTE)w~}{Z@K21 zx^H^PtNcgpJ*?VRXe9?OwYoW2`uoGWjwA5-6N>BoCU>_t*H_#5G%mPco(j#WAi42% zc%}$jZm|eh{6xGA{J?*}rbs;w#^AQ{B;FXhM)2q@e)AkEYjCXem?=3YafG(H^Y_OD zS<*e5kg3=-Qw7KR7TvImqQ4L=oaYPzZXtv`K=@ct#MLs)v)z;EuA7kdQr7RBf&K(V zzq8h>mMBz&vhx{Z;JiT*E6OU8(pQ@M`|J6zqisSwj=#G;5q9FhW$;`dDIuA3ATOks z=V-9er^f+Nx5Qc*Vo;BM5F#`+jZ+C`dBKWIJtKF8!_^)XV8jjSD~nG4n6)1+b>%qk znWCc-7jKUq7au6$2(e)%i09hBR5PzcA`wf8zJay$Ah1kVAE_>CHV*D!<2hGDbKWuKJNmmR@n!q$KB$jlW@ zV7D{KC1sCO()aWaA`7L-+SlFC^^~|IDqWzLcyBZz)9?&+Lp(I^3RVk_#@C*7TNss& zW^a>6A^5xbFl@TPLi(&Tg#N;HeBxt5nM_f^doscr3`L4#UE;#w1?zc#=?T_#-?yX9 z+4AeMt+5*Gv00E(pLSAS>(U+8Aeae5EleH_wp4=RpxY76Azfh`H)mIYmtJ4Y1!sEZ zZWuw~(XAUiKA(88Cnp63^QVXGXl4x2Zhl*X0K8A-b#=}3$R)VoScqy}7(dQLqWtDC zv-$MUl#=Ewr8DpP_DV4D$@TOyzf=Vt$%qkQZDva*#Ng&oyCoYG8CUYmIfes~Wh{xp z`SvGlGFn9kT$|gbSqPp}BbyFVBeQZQQB?ZD?ER8t|v!1gnG~ z1Dy;)XJj_5iEf7!{MiM#RDLOAzgxkZLd$$cpgC+WqV_L zD`=d6^`6CE@2yaR%2!^$;-qAUCXEmQhMwM2vK0VFl;n*TsORWhVw&asMbQ|$+pF+&8ulxHuERGk>>Fk)oMIUZJXw9icg!h!+MMIq$Lg+ z(O_5iRP4)B?l&||f6qWE5rm zoX3gy>hbpd?w#M@70>H5G?kV(OGokKsWpasN_0=WcFK*cBUKpu^tQEqyxCc#ujTyX z)we~X+2%nMwv5C$G(1z53Ue`?y7plXr?==Q?*Ks?Y!4hFl~^iX`C#79*T5I|*RMCP z+j(6e-Gd4v7{QTyLiRycdl|HHE?)7meT=`em_lhJ&vtzPKV+2;m@X{5Hu!opiV~xC z1Ot!c3ujJkJ`xSC4mNmlsD}=jR@%GTV;`*M6u2vm<`n0-nusX+tD+Z=U?6x7K1Q&~ zdcxzF&YTloKHDNvj2=Vo$$`b$$rA=&ReuM;W}lNrHgR6(sXbM5#W9^ox~2x18p?V4aPYyhwdDA9orC3G z{(>FN{AZ-nHm$nDIWlB0(y_L|5j$7iD^{BJ^ZEzNzf^@-lk0vB_6x0wgRtr^mfJBk8J{7P5u7#~q1=Pc8f}{na$YG0nDoi`r(rYSlijTkY!; z7}qO}l5rDl5nOM@-8RQmhBnz8p1VS$2~9Jdv-YzaT*_~COn$r*h>qaN9GvSK(SoTP zl;V;N0%fbA&d~ZOLGaBhLQp?Oi_x?T#XdpdU$MiqGX=r2py{c8z*!ma@or==5ZC75 zgQ(HCM)ku=08`Sc)v#jQ`KUm8&8reYKf{BhU?lGx9~{vczJZ|W){&TkZ5juk4)D>t z{c)q|*75%3vR(^S)ccG*U@n`b12f8Tw88%ra!ER;1SMbz&D)M52ta{4ewIa`0NFac zDEVU|OR)+YLn3A*zlyZ-lc?p0pCSnIe7X{g-W=0oJbuCNh>j>YYe{iC5`+f{+KLOTBJ)#BMWFNM7)=j*$qt`5?rDy|Y2C;cao(Tc7t2YA=JwIOYM{R%3L?%<%M3 zyIJ0qQW2ju;&O~4E%S$a)xi1{%Lt4vB(<>#O7D|;qr6%SKoJCuDWzb?I%|DbA)dSH zQeRL-5O`649+GeYxM*!AGmk-S6c*8w%C}IY887DLIXujhb>%FKqWja_#0^Wz^;w`- z^#1q*8l?BEbbtb;xSV=qJ=)tZ1Mu$R86}3QrRAzjHRTc`lvFO-xzQx~N6gdVJgUL+ z^IIKQN0tDQ+@9e_G5Gw0~h=h=@B>rI^Ol2sWI@fE{PBb2jKNNTu_IZF;XbtAA4Z zSir>Vj5NY6+T0=P#{4%p#CBQ#(G)X7t9A@}Jvt)f&pMcL_oNTD_}GG`w0=q@8r)-|i^Z8~s)bTq0_+SVvhE32(!D3O<*v;=QD6YO(SL&to9{PlOLb zK!%(75k7Htx>Oq8Y-*R8Z&D`RjeNo_!MW5%1r-~kkmcO!Z570aE%r2ZP$34}DF!aV|P|&vws|QsV3JhSZkA6lnd>l#)9vVmXu7jId)EB_byZX{u~vfQN#eF zyU+8rw*9V7$!biL^U)a#)xBTE9$wL6dz_b9E{$DykZ-`t9#6cywte6C{@{j(`2rIy z@A0*mG){9NaT;5@ASEr6biiKsPQ5lOf#v?r26dpjm>KF3QJ@!lRz+)i+m8=Y0B?@% zsXLWMG_r{kj$zjSql?Qvm0Bp=2ZZx*k9yl_M4V;cl)axq@V>YhXXKOn^3yc9Sc#bT zcGpir7b_5l<0l|A2Ys}MT5@a(x~hf9BV_INvX)3m@VFY!_5&-qFvjZC<6Z>-5GNhI zabJh$nBS||NSF1!qx7SlR*L{=z{#lZrMHT<#-U*kE=WPtnUGAEn3Pn`6b!Nk$fyA0g<$Y6b>uM7@0 zy}|lilRp*5CKQ{VLOWPq8Gp;k262DL$~$6xRWzHmRxNiGvDE;nGEP<*cOe<8iMz_! z{UOUAvdb&;`ULV9q8g8*F3GM#inR=GpHQq?gAK-eXLNbXq!=wGU7b*zyNiv4F1T6@^U@p<;m|nI&%cw4m?4(7O%P0NuJ+6$u@FImFn^B#9Jo0y-okvZkW z!$(RcTAg&%d|HlM@uh%t$tw(H)f4NFg4#l&;F*|vy%t(k|D_>RtC^mp^pvPM+DEnyRmzv>!AkcFktv{YPlD4FDJG_a5bo=C!zn}6u}(+{{nk-Dg~~VV4{SoLKbMq zutnE=LLtGW7Fi?H4so;rybYbh<6Af9Clw{^${U#1_><3Fy6Dj8TI^wRh&~ORA5K`Pyg`ng?iU>FJAcUusxOM- zk#!Zwk|}`zV7x^HG^Q*ch+Z&!IkmX%BpVy>Imhc0w?g^xFSDxIu*7Cg#byk*nJ?)j3#{sv z)w!+MvY=whig`|HAqi7G)$m~@IxjB<@y1I86@eZ}P!6qS@!RMpfqG_|x*4wuIl2z7Mz^bJH} ziIj6sd~9NBW^N&~w6eCbwS(?AF>CpHDzCQ5W?O8v&2~HNygn>4eb?P*KTePoTbk@e zij^o;rd)-}ltnyzH3oMA3Q~4qzK-Z~#-$AkgLU-ixW$+e@smat#ElFj0IID4aT(MX z#uiub^#$_)bKBBN65P*5?QQKKeCI<9#jXMCLmhU(1GzX0%=@Rs%ja7Rty;9{(C#ER zrcT}1-oDBXp&oluj;>D9GV%(#vT}NaqUsu|Ie!s%THM0ZWqTngh7%-3GYX|jtP4oei0BI@(Gbyl7|TI`>6;Am2?LuIZ*e=(uPbJx?^B z2v7+C1p)vA00I~Vf&u_w4+HTR;oYN0A4B=-Nk1a7k0w_>2F$jnt1zd}W}nf<<5Q`# z1bO#^| zf=L@_d=+e)hO^s20I9$1Vm6|JjRO)4`_iH)+oY$-{{NOhWyrc+(+=P&Itq;~moSmb za;PcG#b{HklW6bNgyv3$DXT=*jnciMxUi7driA)p(OvuU@bLMU?p_zpvvfc4ZF}nQ z5FR2pG=>k&Im?~B3$Nk{W8DbtKiv#+GjE^n2#tM`%fnM$kAE(zdSXuiuHr9x1<-rr z^$^YNeq&?w*pSG9f=Q%+&?BWswnUDuu>m70Wzw5Ll%isRqR?VsVKq?XH1(wv*`Lx2 z3JpyVe+uq)G`7-aNh4VFdMuMH6CL+GVRm``5k?{}pvb$}5}K(d39T?VjApX$;Rl-gZG!mrQa(rhG+ zTG?9cz4Q87bG|gh0^kGsfCa!HcmM{#0QmmD_xeVXKf5Cp5K4BaVw>Qr<= zP$nterAtxmzFm2>{|o36@15buuqTti1UeaHg@7v*gk*=#7a~LDq-cn`aOpA#O`Eo5 zEXpcXP=(__fpG+fHv|+!fI$Dt)GYn4u>hCgLfmfoAaW+i8W5WGtQF$4(SgXk9w1n=t= z9R>t30dzuh-REw^Fn|K&Ig>_PV(l|{x!B6TDkQ4E`r}ln*HBH>S}li8!g5nTNzObt zWl|@-GrG1iHw&6SJCDLoOlB&nQfkq%K!b1fSE>x>wHm6Qs^#*v-P&q?K~zENtAYs< z8+KTdPCDhZGh|Hxaug|1rb3mv3p8obX2O&iOV(@<*mLB}g&PlL%2lc|fsWy-Yp%Ot z(v(L}o_+fA?Z+<@CxnD0B&DQfWR)tQC#tP+P{-o}3{AWqY7>GD2NNAH40CG zaXbv#;_WS;0zU*n0wurNOOw4Z)oZiL@w~UL;#Cc`HhT6La22k>b+}=B)D{Q`Fc6?N z)>|9|gdhw_NI@DhkhSG{BM${A+Dg4vj#{}iy+F#{9Y>rpYJ#BJs)64Ywy_hsY#6A3YN$n*;2pe!cM?Dcqj3W> zIF?|QpHMo7in(C({I2f3e(2450d$YRYoV; zjI}+yS~$ChnQkhZYHKDEVigMhZQ5~D?s~+kJQ|284zP7YOaS7RfiQl{ zYK#qzp0{tua%(zz8;yL?>Z1Nl2ku(em&N=Bj=n~O#>*X+R;!mi2T1396*%hA@Bj4S z{RlkX9ugK zWOFO9Viw)GSG4H1yWcv6HNV$H%SCmSzY^tdVax3v z8_pg|@B8PvGv2){Vxm#g`wscdZx_)AJ<6ei@^T?Zv3=tJI?|_?RsXN`JyKnCvi1dl zPeyb_$Au-eH1ChNq2fQS;wZA|$U0&3mRB}gLuy$8k*1L{)jpS%(f6&k&9;EE@+c?k z+=JHj?9;71-q&w@1sC&S`;EqZ^G*IT6$6geEq8Uqq#DbiOm+ZFHW2il!eC0nNjimvqAp;R z%@RJsM}$B~A_^l#1)QYZPEp8diXcN-$x=3Ql$RofC{Z4&l!F>&rA`H1p!_r_nkHqZ zMY$MIBty!~h#hmQ8VZ<98%zkGaJG!u#cEh!kw7urC<}MWiOiX&cm|&eaG|N5!KWHj zNG%mI;RvC-0cNsi+@{PzxaBU$vIkf_RF3Q(S%dV{@t9{eq3k6xdF~ZBdgUyHn{XRE zxWRZatj5EU%z!yd6h?;fQKT@+6y`kRM64PsVIju|mT(a^f<~-N6OfC>|?y~y|?3JGpOCeq!=F4tvfCE9M`Zl(4fT4}<5DjxnGisr0Pi-vC z4O<(WUhF7Rq>s!5k=ZO9U>A;1z+fz=KqVp?QybquCX@)Qv`hdB zOnxc>0`Ao(NHI|3wc@0}RfJmC1OUZ#-Z(6ew@oN7+*}J7^ZZQ}kA<|sK`d>u6uRi?-^0fp6*Yu!7QKHdY zF=W_?Q7{l5B7o{AMKJ_0UN#hgIO?slzRUmT<*;SLV}KL&y~0Yk#tkfufDUlXzDV#N zxcgF@00(+CKwmOwaAq_dSn$K$Qr`sDUdKH##dQG}!C}G=*h8vj`&aLz1^2vk=m>9u zkPG=NH?}>TAWjq~fs?|iT)(2naCC$e;CPGUGf#P^%c{X@vwnf&#|dv*t#tIg zlsgS&3~i+Prpf($iLWc-uLs%RuKqD^fLe@a9?;xoxPqp!-ShN z*LA-m%d&qugK1BWM<4_vr~`R3+BB!=(@MXbS9#8g^ zQo}Vvip&A_-|@tgb#Nt)tuMjTh0ueBXYxB1ow(-|&iPYFfcH3e9ojBdx4aV2vu-sJ zN2jtyuIvK8!|kPMac+w<2*lIE^K@FCdrzD>TAEhpwuZElyxPX`xD$@NC11;zyfwrH zc=^&=@=dPZDL?Y9WN|cvTL$82Y;P$}yVOZ2jrVhMQkSN+3eo}ctOYu6FxH!&$_L&`hiU$+OY&j+LrVYG}uN5TlYBko=cZA;(+rlubd3z_mx%|`X-{l)~5dA zA0qLKrg5kCcpY%S2>{fufP5fu?pq*$=W5SG5a6Ip*c-qYT)#xx7J>(!Ne5QgmW2SO zy=WgPvI{Mj4YGp5)_^JPeG_b5x^n#R7Xr_K96tvfVAtm6xqCt(S>@qek85O7)K*wsx><6 zu-UP&CQ2VVlbCC@4*KrSsyU!BwbIFA>kdw7V_SW-_Jfpog*7&3ylG@GyT!3|vb3gf zDP+OcAWk5g(Lx z?r>8=m@|cj8ZGQHWS4XfDNXb;ZTz^oq$pO*f)r9t|KaZ>;>fr;ZK&9x2qaJx;_YG|>+Dp1ivyU0y_PDTv>%STSskt(Agay9CHD?r0MRpTjLh+tz5(X+zv5vxl zU4Ed`aiHFq71-32QmlD)-1Sf@KO;anR5>$b5O=bJ_4L^X$^sIY&ShMYl2rdM=u;M4 z0!55RmrhFZI3lYYM5Q-ZfbCS5kQbz%5rb76@124O1yWYhJ;QknA;8IE;WutqFUVwB z<(5WxMRQ82s$Cjl;$XA8o+Fp%C}X9ueU-C+vgYUA-zvA*Vf#q@$65R!$kA=Sy8X+Y zyKbJLa7eG%Cs=GRw$Zd?`_7%lzKu=+OY#`)W{Q}oD42F>jwz)8G1G(v?`HhKg_!=W zq9x7*V#2l5OAai{3e*eE-9w4|5wxX2<4)F=5IAgPOQZGWqJ_N>mBr$?1OOAbw}vBcDjCpq)+pm#WJi86%oCf!bL z48$>VQP9%-xl%pV&t+_T!uXbGPXpB!&?`60uVi_)`x=ZV;JU|v=#3SUShyyYJf)7M z8C~Vd?owDiBOFk~6W0ibC(MMj+RQB;Z*I|ale{VWt3pAE$`KD%U==AdD+q-Qme^j{ zq}ZW_Eb$HUc#A?hCDE8yKGESiD#@JkB#yd;Sb=a1(yk9l%$V|U$Ksq78l}X@*_q4C zaE^)hDp;}I=fpD$kMn@VT_JpgoRk`XrD51h(cVfwPJ{YJA zq9c|ga@mYhAkZu9`?pK!jz$6mEY9Mjz(6GhVJ}o`LYa_@f>mpoOEHqPDlgH1P+VT| zMhHV*n@Ux!M#V%5?$l@eUpA3r;OXSTpjU?TQ-X;d1ieOr_xCZg|4q0;Nrn*Q8(I`f;eITaZ4GP(v(hORGI6WFfYy#)fvVlQ z#DY?+59o{SG}oFJ$pn%*I#UXj``jQtNQ?$?Y(v`oI!+p1v)kZ%gVAJV3uk+@q1dHK z1LRW;NlG(BNTx5`ECmv$Olbn!(RSDw9fa*$WSN#K@~4eQWrYJi#q=W_L;3kGqHfrZ zaE=@Ho~*5kq0*=}c281iEd(!-@gpumkGuy&lHNUhOIOc8(X@N@Z zDd|1W%NII?q^m@Vo#em<@uVWG%o~8@^_g!8Zu>@;>IWPc{O5h@uY6$V<#LYOQsu0> zrenqXrK|2p)XkrZYAxC3mavr#$+87qhq{=ESQ*;qfqKaaGOae1lmA3Jt1`sh?kP>n zsh!^(Kw1&Dx$#I=V%|MQ<+vm1Yks*t)qNKEoLS1B1QADuqsZy^w_n=b7A=OV0bY-q%jy6_J>KMy?qxL2na3h@sNx6 zwA(gV>R4qIt#Ra;fA3~EIiA=^;XP1sv-_LmS?Kt28EiLry-)XYz6LLxkyffhY-AuY zCmLKfkB9ArW4Jhw&ZfB|KGhG zH{P{w6wkFjc~G$H8|!`P!ILLnZAB-ikE|%cjiWRDYJm3z9C^u<0)J~zmNnEvuETs5 zycdijV%0?xj?6sRODt=qy!?%tFttKF5emvbB)%fqaLEc7$= zGn%@NqON;Cw>*g^x(oPAtI+Oa)3Stc?{4PK#LU?0LfG*ao-x!I8+}=Mdo6t*M>89b zusp8S5}xo3uvLN1w%ChrIwYhUNG6noGj5}Vfo*1ikZn)2hh#*yN&LWD0*eZMJG%O# zQ?*%^2GIY;GSNSSyDMuv^%E=56 z3x#RPO;SkdMyyV2sKMricL&=_aD^Ybo9ExZ-8=_Vn_z#N^_W_eu?lUTdPmx!o*B8)l!G1iw{dVQb6Yf(vo$HqTJ_?jf zs3M05j)EdmBz@rT{_OI>(;1J%D}iU@Br^xo=8n>}U~`NSRgs^XTS&=DtII2eC`qbb z2TN5;HVm7p&{MOY=1+cEoL_P3UJ zexzkRA*E=%qOy3xTF=f{a@2T6vVxzddQDMlPAQbw<0Ts@mwh$v`v2|w5C865i%q{C zDd#C0-V-wM_Q~|ryC*DB9*MOzzbmVLmKJ7ZmKAaP3Wnz9Mu%sUw*0qEKE+pYFI^4a zOz=!)B>C--O2ZCrCy~~E>hY=cSmxR=ov1C8U(`2v?KU#oVrYv$IH6PZP|Ya~)D zQ$pe?Ayi>U^NeM|m!iKvz*Hht3T_uGva}Dr=7aI>PxB9S)>Tg2=lWClex7frxwlwo z*hp=Tx*Ny48kNCKw`Kh}mFk#**E`j=73XKR)fK^fEv+y; zk87lj@nHc1E zC(*kt{0esERVAEQu$VTTJyYFQ-IDaUBHGs^2D1VXm`Q-ZJZkipHSM5nfx7^)&Lw^* z1VOtyH=Z>PTyAOWA81_HB>xv=y7Ewbp4KZqN_(KXwoDEa&n4 zY2IVBLCl;aZy0YFHd=C!7eSkHI;EfKD!q66!Q;(+zw?*QKYy}$=fQ5U?@H3MXJS4j zVpC%A&&CaT)q35A6UFlTncR&(3Jr0iuO|VLG+CVhm?siWz;b9bDWo(F3o6qS0rNy+ z^)x_|rcVmCU%kHDf97%8>BoI1)zYiVtICB%+MhK+lH12m9kJXfJ!iQ2&IqLkFb+oS zyrPJaJ~=){3~OTLoI~u@M+|t|=L$&&^w$E1IwuLEtrFWshbXUPJs9`T=jW#Gh8Lrf zdjS%B(F`Y(cTU46n68)H%^$byS+VUI$tk<*ubJsn7RT%~$mAN+HRlty$s`5D8l%3g z<&}?pe9Am9$Q)3V8(3JoG^>lE2={Ox_5~P@)4Qc#Vn*%UihiPVwgia-!;9 zF3qaplTCF$sp^5h8FmAU`z+Ct_;;fys;`gQ7k-(3y;o<4rQ)@+vsZvO@fGz|pPz^1zk@T=3t<#gTo3Ny&rc6y zwtdv?J;Gv3`|~QR$Zlb2Q#ano(?5?_+|L`dZv0?d+nZPQAeV)2W0L#2hzXPHJ z!o!{OJS5HGbbth3Ozr6E^hHtW(2x}8q>x~3o)PtNRUu9J@*hfCI(mew7}0ZK$}0O4 zT`tnUM#U#f6mRj4wes0*pIwc48e_NhksyL?S7(Zgr7S(S9#A&#_lWgH#IMqqq63L3 zm+}%>FD*0X-@O{stL3Gu$74s-5qU{>R^8TFsww&3Rz7tTE&rdRG5+@srE~)= z|Cf#$>3mvH*s-xV)V)!V-}Tf$caQtWuJrVLL^2B!g75A9!D{IXKA^7%eAc6nz=L6Uf1 zPjKmZr(>tni)9$*uC9VUM+HFMsK8==FX|T~vu=v8#$XLraPE+bGGdX_7f)M213^kA6rI=B)2b+IQo4H4M;CuSI!3xg| zdxcrhy+IUBGJVV9nH>iaDf2g}0tfUrL*k1<8^>2}3DaAVT*Q4Qwt@|lnaig}}>p&12V{QCapjm<|_CWBLx!UHpEQc!U1hBW-gh{mi3 z_Zl;D@-lMC1()iUmcv_1D>L#+D;nZv=NjY7tFlOyHKDDy=lmLrs9AaHu%sm7quGSL z*~Ey4Nyjh2x%i04**M}OUGZT7#md#Ndx#W#2R<3EH?60Ytkt2F!W?#QEwYq@kHL47 z@twhMR5Ey-Zi|;Q%Jc1pFYHI$Ja3>%j<`#QGKVYcNgdIiPK5#YHAiJ9!(3~_8KVxm za)x=nove#nui?9Q=_y^cl%i&$x50VKTpdx%ZlefKwRF*5Cq7d_ON^*5}q zpA;D%obT@HO7Q!i)!%di)1kxN(R8A}w?Q1!+0u+{Z#+)ySzTZRs;lA zRQx}tVq&PKZepr(-qa$*)I|PNnSDrANMl!HMpZ^b7Z1-D{c3&V-dcx{vjQQ02J(M3 zE*f4`Yan)(p=wgY0)m1F7K6o9dvv+Kt*McQob-XAnyJF+2JhCyRl+JYi@6u zmGNpD)*I_wl|`(HY0fq%U&iH@revq3zm8{MNpAJmiCIW=YDyi z#B%gL)HXOhQBC)b#^^G)`!rsisja&@)oI$qm{z(z-O-Bh^^CM7xD)*>d^{rw)*hjd zryd%OzSsoWD%QaY+)RwtCUF;FtytI zRYzXe*q3STSzAPXd3`c~Fh%P1co2ERI(EBmg;XcLnNXYSY6>Ew*IT2aDvy${bcmN%GTr_tl@m&ms~>})25M*P^2G6 zQ3z+q!1O+}toCT;O{J$)bNs(&q@w(r(HcHFezU}gdk6pCMlU0K+U9bv#RZ$Bkg~qz z-3iz7(ez%3$lYL;{Xc;kZ+b$>Z+g5u*1Sf}YgyI1|JbLZ^;kZqU<#?CM$Y#GYfVK@ zc~1@dH?9aJiI{YUq-Yn{#F+lXgo(riQ#)BbeR(;3U2i?Syn?R58O0YHA&EJzr-wZ? z`-M+8$|oU%<0)>(qde5a#m=hgOY5LtVgrp_Q(>i~iD-Y%MRAsL-T))l3>dX|JQMhM zE{GQh1{gc1!b)Q4zJA`f#0t&@7&((*)pUA$i1)({?aV{SXb<+hFOONL9KNFo}f@OGsZg>pN`O-X&J4 z$G27u6jJK?KvPj$?Es~)st>BKM^2G*;KRc+lx+BjF>0wx{y$~3<(c5j;GTw_ID}t3 zq9y5ITb#`_JX5}8E8Fc@kB+cudJ!ohxv4lep)&>HTgT#^p=)G{*D^OVHR<)0$P&%s zW`lU28JQ7dbBp7m8*8#DogGz*_cx#4VM-}cG&{>BVQXWnt!ZwNYhzhhNmFIC2*q*lg|=9SFVw6smtl$0;3rCwB{9G>5o zlX(^K%JqB7H*LI*Uu;2sYC>yMMt)s8tW2}M0PC4nndOz(;C|XrgJ5B)ap59CU)RLk z4U0u%(E`}T+Nr9kv^jsnshYq4Zgp^jpNP$!-M@i6yAU7Wv&vIH((f$Iw|fFoF#iD1 z0<-?8C?}J!9TQ0C-NANn-G6?}y1=jhGg`j~FzX`-m@+%p^{m!~8-gDy7CreG$X0l# zusjj0$tE0-+QwqScy2)o9L(M;B_Dvo5=z0S1zq^h}TDAeUvd{;r%6D%m5ABR2 zrU5t+Cg{SFw;X|5^Z@zt1YPhFYmc?p+Gp*z4v3eBBoenoT+*t^_>c>g$T=n^or~Ps zxY&HCA34ac{WfY?g|2W?U`vRH>ko2zGTxui1Lv3^I~OUh4Khcho$+gza|~tYqE)9h zXpQhH*hv0(6#N$a-=ZM@SvTf{Ck_E%ND zHC(E?;%k&0FrGUGSSk1_gy;VKxT-BFU04!IROPs}vI1H@uTCtD=FQv*zzf!Iz3c&% ztjnu|#wrW5VNB#uO$WH>T>yKtZ;VlwpaU%RrWw;DOR|DqDv~Ld9Qh%_z&K)2xw1$! z%|GzcDG|4W@3k?f2k5I8J&0vqKOi2P3$#Gq2$kyrTn($?+bjDt> z7)M@&ioCG0Z^LQu@!VIAIR!xddc5O;Q_)HjK;Q9hz&z4W)W!sI&&IoR@vHD?3P`$e zay%N1U*uRIFGLW%TrXsBaZ41r>Fo3W8$bnwHjwD82>jI|iAu7mzqu{q$BVKqkeP@MvNyLDtf8R&+_F*}y2>8kYtX_k{nrF&gy z^^DDA_x*_@Ymo@2Zr!@sECsB=uwi4*q-Ode1825ZIo<8|bnDY}bi$=8*|+JWt(V4PPhG08u)T=DhB3&$(amXACWf8q=?b(0K80)Hvf^Jagc;W~HGXp|q>icLM*5zR z#CSnuF|qZRS(4brR1Jru;2Rztx?P|(eSZM(_6IQd4m$GmOkekC`84hRqsMxCH{!)!CF4c`zwo;SjIk1_06^@bJCi(~Z3`vc-!M?!VDI zn{)puBX5->Qnxng13CjiJE@aZG077drym65^Tk>0?SM*Ej&;l}vlpWuyn`P*V`Q48 zqlbz6%sX&tI?D zzY>Q(A$kp~1F?fiZ!5RGg|{^J@sAtO1DL9&^!0{?0)JtP2%$t%*@_gix&ll{QzYz| zMlm&Z%vBph2<%iQf(=Uz7#Q1GieJRCb49Vci~+>^?;1B}Iqu99-#SEGfQhj-khNh3 zGPdl+R>Z>G=6$2db=D_SFywt(iE*=u{o)zvbN;_6NO89Hp#Przemb6pF5MCUAeoX2 zF#8W{@V^eEANtotM!sp7N3s9Ao@06u4j;n^2@cLpl=pa4C@QBg4?-Q0o9oDR%RW^-TOWlISX#XqoNGZkqQ2Q|WSCev zCuP)npH#g=*2tigGA!?vGu>yfEUyQK$4LCdYS@EUeqZX4v{lH1Z?84%4+19RQj3v< zufdow8AzE^sz*+i&-ecQ^xl?A!l3(T0d8b6;^po%BzMqJZBE=JF_zUV2LTC4n3E$7 zTBQpPOQD-W2PgG_=%bW3O}Q-|;6rxCZ5lQn$ZgprxIgpV%IzUMhmT-^_;`(cPrUNQ z4pX9;o1{HKwo6CZtsF)gsWt``C28@8(=MZM6v4&#-+@&rL^=GJlHe&tVNa)t$t)Dj z0|Lo}##>jph%NwNy@6+mnh`IJ2?tfrO_4TbLHj|P!&8TUH)}OAG;^CIAb^4<9geUM zj0?S2rN^+6SA_OLwr%TsCUk;Ff1OqarIYO&_<1BOS4H3Q>k= z2-s!Yb8=gM-dDRcBevyf#?MH3GWHDGmq9E|G9uOu%n88|FHdM4|wb?bC zfe76K6db16n~HFonlxNeQV>>m>Iq+ThvOLH+o<5=!c#1SoV;)UshP{3Gxc!#$zP%L z!=D2CN52Kg@UQbC2PHQk;E?*t>8=Nqhs!q@{9s?2dFA;7E18|LR=vCxY^Y5@8RRTv zy%1Pg+O2kz4d#2P2tW$WTpBWAd$(QS1r<}BprOmUYtf#auJRh{!pITErw^uSP*7qh zMM(7l&NMcii7pP7I>4AURWQIY6-0X$^<;Rw$wT8b6*C$ z)!s&m1oi~1on3)yn?Jx5d0V9v)?J6B$}!?VhHpH~4Y=c=SdKaC9V|Cq=4mpJ4C&cj z|7p;dvx`yobshrb^nMOY#;`DJHwz!m5Z?|bK$cpQRa0c>*tzCm)T6Vr7#%oKWF_=5 z7^#-H?HsFCToa%|G0{b{GGhu&o(-$DgI_69gsPMfsb;A3*?-kmJxFeJq*s`{?6UN% z>uVSAbpthgI~|OCmeGnVg>oNqQ!_Q>X*s^ww5G@BY=KL=gGLx72>>G0H>K3Rp8bxC9pNZYh z1MIiowxgX`FCMyZ8;^${S%!^_i#pTXM%ca z22+0Bg}vGp=&`z6#9!VWjTB1wqIk}AmIJ#PM^wAij*^*{9Z|I=m~*pgw01PI z<9$(LY4YaDWZj~cqE0GJL}&!Sei-cGnyO#TW=vs?A_`>BE(iTD!n!}EDCfY`;J~Q) zH$VPMX{cbp--=@q)uOIS=fWsVO5PgN%=pr>wK8X-#+U0?dXj=jk$R7__r#A1!20y~ z%ovu-sLu`|6+1elS*hpE$SPQB&0y^3)2a@a9v^}zwc6dRtmI)Nb<|~lcW%vgS8gD~ z*k6$ff2a!}-g$0r$A|~tt-A0gSP|_oNT4w+*d^AM*u1qFS2+HfkxYKTHnQEq%A|Xb zL+vm|7dlB}JT2ijN)H0O^lm=DToQjzhfia0*}`zv{vk3?K}4{A;RJkG)jVt$0TcV2 z+|zCuO52qV_*Jsu=)za`-p zq?m0Q0=SjUohV))PbGom$X*10+jlXo{v1AI8*?;>zXxBiy!xCnF;Y+m^G$P*l(A1q zDiWQLRdR$kYQ)o7ElR)$7Lt+|1Sm252vlgGa5jW@d~#*bE*Q+a14;RyD$ECc3vEo( z;XzFp!}>YFIG~wdwv|F|SVna=_))>0|@p?&%*^2SP27}9IztKhyyWr90 z<9}K%wxEdft@yE)FUbq|kg=C33X!7Q@|0KeXbx4~NL- z=8F;@bX-%8=ZhOA<-WJtcqHtjMjaR)*2an)c|eD8+qlI|;|AN|?G1LdS66mE-}G8U zWcb<8wLouhXdG}}K8Nao9ZPm1#?Xztn5tI`KIu%?X&=aA3d9&~5urn+%YOgMf;GcL zLxz^oIJdrnj)K_zxbyGgBPNoTX$3 zatVz4Mo+tKY3j!tm-Z#njj2LnOf1%Q)IM8ZP=}!&;Tq1O6;YE|QxdrwF;G2%*6CWL zmU9j~qA>%zd*yp}?DwMhdG*-;?<~T>7FtL&x0D!7E>3u$5oOpf zhl1H>qLbZiU&s#(@br(qmm)5+>D`US(3zsas@;DSi;xWN*uvyyg z^jt2CGOJ~dT;-?=Mdmb~ee=$KZKTa@i^`vLXYg$iCEg|Iqwid;0Ri~aE-VdXX3eq8tm=`OJ(k@E8lUXVL>JvHr616b zw>I%b+1XuUzHY|3`FgxYFI_*D^+wN(a%Mj{meyP4o|{?S%R*Zl_)*{uxyz=j=VD85 zch{`ay60w7aBk+rKrT&tAeTno?ePBzdF;OJH=M z_HR|oZK43XfB^_#x$h1;0J~i4KSKXacaZ~uEBw9+_!`H5Z~m*fm*%7*^?PxhDr{^B z>|gxC&!xO3CvTD}BH_+w5v4>@nPdtnE;E=}lJqD*FSvm_C_^n|gE>U3Y~T1OH?BC{ z+>F~-b<4=DMHd%YK|_^r|Iss)#SLveU7&=J9*ii7V?<9%8}A^>gGmxB0`o5r5=Oe% z!T$F64ej^3dy-WzkRNgi1|Q)?faYML*2}p1YwS}@X&F0}Vp!^ybgCXxK8jj93+)sI zEyuO9c(f+BT%^${JUc)^d{P((>tvNvVSG}*z)?C#K^Jq8F$;L)C;->f1}uFqq}m}q z;m+0%r|TA8<>;8BbmEIa6FVYh-Sbh}Q($*;86)`lrHCtjtE^vhE=PXTgiDnvt7-ln zCT*H>u3km?Pi7nP%0qg2NGmfXHA!t9&`(}v@kewXN~|`CHN}5yu$#)Prke1&1-~S& zpBv9F8a&YnS;(=3`MwM!T^iA&e3h~Mg#76A*MSIz0k0SUDrY3OL3+KQuwXVj33 zDkpM9K(5osX(w_Bc{nRieu%VWedHaKlWcv``iU>gM)e(!0myr4I%8@ zH-zC7lnLLL$pjlBNQvJNNm%3EH_iFv5ASAR2RGFNqPts|)rvq9}np%pAx}R&?G4<4d2H z%_hA-gR#*fsFU53I8%m~2p8)kfFBvsi56syKt2}2(7yb#%$U$;zycw1Y118Y;Ff!| zPWdVsHI4l&4V(o-5E^zC8sdhi2jkr8a*{%5fI17tA>#`&;yky6ahRjA>M3pqx6xOU zLgy=0{(Xvbn}pd!U%#~SN-QAMPa zEz8$J#E$*x5ZOn=j)Moy&Vsb#)KEAn%x%Y|qjXw?X9U_x*P=PV5QdHUEDijjp!gwe zK`3g-<5^4-WNV^_EX8n=$=khbU{rWstK(0d5tp&(WhJ>(%$#e3qBpj{I) O6y7R}gQBj@I4BA`2c0zl diff --git a/sites/svelte.dev/static/fonts/roboto/roboto-latin-400italic.woff2 b/sites/svelte.dev/static/fonts/roboto/roboto-latin-400italic.woff2 deleted file mode 100644 index 3791c883e8d0e8d3d5331b60584cf3869276cd43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16944 zcmV(}K+wN;Pew8T0RR91075VT5&!@I0FZP5071(D0RR9100000000000000000000 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 HBnkikn^Nxw diff --git a/sites/svelte.dev/static/fonts/roboto/roboto-latin-500.woff2 b/sites/svelte.dev/static/fonts/roboto/roboto-latin-500.woff2 deleted file mode 100644 index 8dceabcf6bdfdb0f09be31878c1ebfdd0be943ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15552 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 Date: Wed, 23 Aug 2023 00:26:43 +0530 Subject: [PATCH 13/65] chore(sites): Bump deps (#9115) * Push * Bump deps * Bumps deps --- pnpm-lock.yaml | 963 ++++++++++++------ sites/svelte.dev/package.json | 28 +- sites/svelte.dev/src/lib/server/docs/index.js | 14 +- .../src/routes/content.json/content.server.js | 58 +- 4 files changed, 684 insertions(+), 379 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a63b35d859..570597454f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,7 +104,7 @@ importers: version: 15.1.0(rollup@3.26.2) '@sveltejs/eslint-config': specifier: ^6.0.4 - version: 6.0.4(@typescript-eslint/eslint-plugin@5.60.0)(@typescript-eslint/parser@6.2.1)(eslint-config-prettier@8.10.0)(eslint-plugin-svelte@2.32.4)(eslint-plugin-unicorn@47.0.0)(eslint@8.46.0)(typescript@5.1.3) + version: 6.0.4(@typescript-eslint/eslint-plugin@6.4.1)(@typescript-eslint/parser@6.4.1)(eslint-config-prettier@9.0.0)(eslint-plugin-svelte@2.33.0)(eslint-plugin-unicorn@48.0.1)(eslint@8.47.0)(typescript@5.1.3) '@types/aria-query': specifier: ^5.0.1 version: 5.0.1 @@ -154,11 +154,11 @@ importers: specifier: ^1.4.15 version: 1.4.15 '@supabase/supabase-js': - specifier: ^2.31.0 - version: 2.31.0 + specifier: ^2.33.1 + version: 2.33.1 '@sveltejs/repl': specifier: 0.5.0 - version: 0.5.0(@codemirror/lang-html@6.4.5)(@codemirror/search@6.5.0)(@lezer/common@1.0.3)(@lezer/javascript@1.4.5)(@lezer/lr@1.3.9)(@sveltejs/kit@1.22.4)(svelte@packages+svelte) + version: 0.5.0(@codemirror/lang-html@6.4.5)(@codemirror/search@6.5.1)(@lezer/common@1.0.4)(@lezer/javascript@1.4.6)(@lezer/lr@1.3.10)(@sveltejs/kit@1.22.6)(svelte@packages+svelte) cookie: specifier: ^0.5.0 version: 0.5.0 @@ -180,22 +180,22 @@ importers: version: 2.4.1 '@sveltejs/adapter-vercel': specifier: ^3.0.3 - version: 3.0.3(@sveltejs/kit@1.22.4) + version: 3.0.3(@sveltejs/kit@1.22.6) '@sveltejs/kit': - specifier: ^1.22.4 - version: 1.22.4(svelte@packages+svelte)(vite@4.4.8) + specifier: ^1.22.6 + version: 1.22.6(svelte@packages+svelte)(vite@4.4.9) '@sveltejs/site-kit': - specifier: 6.0.0-next.25 - version: 6.0.0-next.25(@sveltejs/kit@1.22.4)(svelte@packages+svelte) + specifier: 6.0.0-next.32 + version: 6.0.0-next.32(@sveltejs/kit@1.22.6)(svelte@packages+svelte) '@sveltejs/vite-plugin-svelte': - specifier: ^2.4.3 - version: 2.4.3(svelte@packages+svelte)(vite@4.4.8) + specifier: ^2.4.5 + version: 2.4.5(svelte@packages+svelte)(vite@4.4.9) '@types/cookie': specifier: ^0.5.1 version: 0.5.1 '@types/node': - specifier: ^20.4.7 - version: 20.4.7 + specifier: ^20.5.3 + version: 20.5.3 browserslist: specifier: ^4.21.10 version: 4.21.10 @@ -209,26 +209,26 @@ importers: specifier: ^0.22.10 version: 0.22.10 lightningcss: - specifier: ^1.21.5 - version: 1.21.5 + specifier: ^1.21.7 + version: 1.21.7 magic-string: - specifier: ^0.30.2 - version: 0.30.2 + specifier: ^0.30.3 + version: 0.30.3 marked: - specifier: ^6.0.0 - version: 6.0.0 + specifier: ^7.0.4 + version: 7.0.4 prettier: - specifier: ^3.0.1 - version: 3.0.1 + specifier: ^3.0.2 + version: 3.0.2 prettier-plugin-svelte: specifier: ^3.0.3 - version: 3.0.3(prettier@3.0.1)(svelte@packages+svelte) + version: 3.0.3(prettier@3.0.2)(svelte@packages+svelte) sass: - specifier: ^1.64.2 - version: 1.64.2 + specifier: ^1.66.1 + version: 1.66.1 satori: - specifier: ^0.10.2 - version: 0.10.2 + specifier: ^0.10.3 + version: 0.10.3 satori-html: specifier: ^0.3.2 version: 0.3.2 @@ -245,11 +245,11 @@ importers: specifier: workspace:* version: link:../../packages/svelte svelte-check: - specifier: ^3.4.6 - version: 3.4.6(postcss@8.4.24)(sass@1.64.2)(svelte@packages+svelte) + specifier: ^3.5.0 + version: 3.5.0(postcss@8.4.24)(sass@1.66.1)(svelte@packages+svelte) svelte-preprocess: specifier: ^5.0.4 - version: 5.0.4(postcss@8.4.24)(sass@1.64.2)(svelte@packages+svelte)(typescript@5.1.6) + version: 5.0.4(postcss@8.4.24)(sass@1.66.1)(svelte@packages+svelte)(typescript@5.1.6) tiny-glob: specifier: ^0.2.9 version: 0.2.9 @@ -257,11 +257,11 @@ importers: specifier: ^5.1.6 version: 5.1.6 vite: - specifier: ^4.4.8 - version: 4.4.8(@types/node@20.4.7)(lightningcss@1.21.5)(sass@1.64.2) + specifier: ^4.4.9 + version: 4.4.9(@types/node@20.5.3)(lightningcss@1.21.7)(sass@1.66.1) vite-imagetools: - specifier: ^5.0.7 - version: 5.0.7 + specifier: ^5.0.8 + version: 5.0.8 packages: @@ -513,6 +513,20 @@ packages: '@lezer/common': 1.0.3 dev: false + /@codemirror/autocomplete@6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4): + resolution: {integrity: sha512-HpphvDcTdOx+9R3eUw9hZK9JA77jlaBF0kOt2McbyfvY0rX9pnMoO8rkkZc0GzSbzhIY4m5xJ0uHHgjfqHNmXQ==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + dependencies: + '@codemirror/language': 6.8.0 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.14.1 + '@lezer/common': 1.0.4 + dev: false + /@codemirror/commands@6.2.4: resolution: {integrity: sha512-42lmDqVH0ttfilLShReLXsDfASKLXzfyC36bzwcqzox9PlHulMcsUOfHXNo2X2aFMVNUoQ7j+d4q5bnfseYoOA==} dependencies: @@ -606,6 +620,14 @@ packages: crelt: 1.0.6 dev: false + /@codemirror/search@6.5.1: + resolution: {integrity: sha512-4jupk4JwkeVbrN2pStY74q6OJEYqwosB4koA66nyLeVedadtX9MHI38j2vbYmnfDGurDApP3OZO46MrWalcjiQ==} + dependencies: + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.16.0 + crelt: 1.0.6 + dev: false + /@codemirror/state@6.2.1: resolution: {integrity: sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==} dev: false @@ -618,6 +640,14 @@ packages: w3c-keyname: 2.2.8 dev: false + /@codemirror/view@6.16.0: + resolution: {integrity: sha512-1Z2HkvkC3KR/oEZVuW9Ivmp8TWLzGEd8T8TA04TTwPvqogfkHBdYSlflytDOqmkUxM2d1ywTg7X2dU5mC+SXvg==} + dependencies: + '@codemirror/state': 6.2.1 + style-mod: 4.1.0 + w3c-keyname: 2.2.8 + dev: false + /@esbuild/android-arm64@0.18.11: resolution: {integrity: sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==} engines: {node: '>=12'} @@ -633,6 +663,15 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true optional: true /@esbuild/android-arm@0.18.11: @@ -650,6 +689,15 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true optional: true /@esbuild/android-x64@0.18.11: @@ -667,6 +715,15 @@ packages: cpu: [x64] os: [android] requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true optional: true /@esbuild/darwin-arm64@0.18.11: @@ -684,6 +741,15 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true optional: true /@esbuild/darwin-x64@0.18.11: @@ -701,6 +767,15 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true optional: true /@esbuild/freebsd-arm64@0.18.11: @@ -718,6 +793,15 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true optional: true /@esbuild/freebsd-x64@0.18.11: @@ -735,6 +819,15 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true optional: true /@esbuild/linux-arm64@0.18.11: @@ -752,6 +845,15 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-arm@0.18.11: @@ -769,6 +871,15 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-ia32@0.18.11: @@ -786,6 +897,15 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-loong64@0.18.11: @@ -803,6 +923,15 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-mips64el@0.18.11: @@ -820,6 +949,15 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-ppc64@0.18.11: @@ -837,6 +975,15 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-riscv64@0.18.11: @@ -854,6 +1001,15 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-s390x@0.18.11: @@ -871,6 +1027,15 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-x64@0.18.11: @@ -888,6 +1053,15 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true /@esbuild/netbsd-x64@0.18.11: @@ -905,6 +1079,15 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true optional: true /@esbuild/openbsd-x64@0.18.11: @@ -922,6 +1105,15 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true optional: true /@esbuild/sunos-x64@0.18.11: @@ -939,6 +1131,15 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true optional: true /@esbuild/win32-arm64@0.18.11: @@ -956,6 +1157,15 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true optional: true /@esbuild/win32-ia32@0.18.11: @@ -973,6 +1183,15 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true optional: true /@esbuild/win32-x64@0.18.11: @@ -990,6 +1209,15 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true optional: true /@eslint-community/eslint-utils@4.4.0(eslint@8.44.0): @@ -1002,13 +1230,13 @@ packages: eslint-visitor-keys: 3.4.1 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.47.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.46.0 + eslint: 8.47.0 eslint-visitor-keys: 3.4.1 dev: true @@ -1017,8 +1245,8 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint-community/regexpp@4.6.2: - resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} + /@eslint-community/regexpp@4.7.0: + resolution: {integrity: sha512-+HencqxU7CFJnQb7IKtuNBqS6Yx3Tz4kOL8BJXo+JyeiBm5MEX6pO8onXDkjrkCRlfYXS1Axro15ZjVFe9YgsA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -1039,14 +1267,14 @@ packages: - supports-color dev: true - /@eslint/eslintrc@2.1.1: - resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==} + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.20.0 + globals: 13.21.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -1061,8 +1289,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@eslint/js@8.46.0: - resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} + /@eslint/js@8.47.0: + resolution: {integrity: sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -1451,6 +1679,11 @@ packages: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} @@ -1474,10 +1707,21 @@ packages: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 + /@jridgewell/trace-mapping@0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /@lezer/common@1.0.3: resolution: {integrity: sha512-JH4wAXCgUOcCGNekQPLhVeUtIqjH0yPBs7vvUdSjyQama9618IOKFJwkv2kcqdhF0my8hQEgCTEJU0GIgnahvA==} dev: false + /@lezer/common@1.0.4: + resolution: {integrity: sha512-lZHlk8p67x4aIDtJl6UQrXSOP6oi7dQR3W/geFVrENdA1JDaAJWldnVqVjPMJupbTKbzDfFcePfKttqVidS/dg==} + dev: false + /@lezer/css@1.1.3: resolution: {integrity: sha512-SjSM4pkQnQdJDVc80LYzEaMiNy9txsFbI7HsMgeVF28NdLaAdHNtQ+kB/QqDUzRBV/75NTXjJ/R5IdC8QQGxMg==} dependencies: @@ -1506,11 +1750,11 @@ packages: '@lezer/lr': 1.3.9 dev: false - /@lezer/javascript@1.4.5: - resolution: {integrity: sha512-FmBUHz8K1V22DgjTd6SrIG9owbzOYZ1t3rY6vGEmw+e2RVBd7sqjM8uXEVRFmfxKFn1Mx2ABJehHjrN3G2ZpmA==} + /@lezer/javascript@1.4.6: + resolution: {integrity: sha512-Vfs7hFLxwIW8b0rT956N164KBjy/pOw8zFfrkA1GDYx/07pnZL7seJG6Hi4ANRWzzP6F7XPA71eqwxM4FthwGA==} dependencies: '@lezer/highlight': 1.1.6 - '@lezer/lr': 1.3.9 + '@lezer/lr': 1.3.10 dev: false /@lezer/json@1.0.1: @@ -1520,6 +1764,12 @@ packages: '@lezer/lr': 1.3.9 dev: false + /@lezer/lr@1.3.10: + resolution: {integrity: sha512-BZfVvf7Re5BIwJHlZXbJn9L8lus5EonxQghyn+ih8Wl36XMFBPTXC0KM0IdUtj9w/diPHsKlXVgL+AlX2jYJ0Q==} + dependencies: + '@lezer/common': 1.0.4 + dev: false + /@lezer/lr@1.3.9: resolution: {integrity: sha512-XPz6dzuTHlnsbA5M2DZgjflNQ+9Hi5Swhic0RULdp3oOs3rh6bqGZolosVqN/fQIT8uNiepzINJDnS39oweTHQ==} dependencies: @@ -1571,7 +1821,7 @@ packages: - supports-color dev: true - /@neocodemirror/svelte@0.0.15(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.4.0)(@codemirror/search@6.5.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1): + /@neocodemirror/svelte@0.0.15(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.4.0)(@codemirror/search@6.5.1)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1): resolution: {integrity: sha512-MCux+QCR40CboJu/TFwnqK7gYQ3fvtvHX8F/mk85DRH7vMoG3VDjJhqneAITX5IzohWKeP36hzcV+oHC2LYJqA==} peerDependencies: '@codemirror/autocomplete': ^6.7.1 @@ -1582,11 +1832,11 @@ packages: '@codemirror/state': ^6.2.0 '@codemirror/view': ^6.12.0 dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.3) + '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4) '@codemirror/commands': 6.2.4 '@codemirror/language': 6.8.0 '@codemirror/lint': 6.4.0 - '@codemirror/search': 6.5.0 + '@codemirror/search': 6.5.1 '@codemirror/state': 6.2.1 '@codemirror/view': 6.14.1 csstype: 3.1.2 @@ -1628,7 +1878,7 @@ packages: /@polka/url@1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} - /@replit/codemirror-lang-svelte@6.0.0(@codemirror/autocomplete@6.8.1)(@codemirror/lang-css@6.2.0)(@codemirror/lang-html@6.4.5)(@codemirror/lang-javascript@6.1.9)(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.3)(@lezer/highlight@1.1.6)(@lezer/javascript@1.4.5)(@lezer/lr@1.3.9): + /@replit/codemirror-lang-svelte@6.0.0(@codemirror/autocomplete@6.8.1)(@codemirror/lang-css@6.2.0)(@codemirror/lang-html@6.4.5)(@codemirror/lang-javascript@6.1.9)(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4)(@lezer/highlight@1.1.6)(@lezer/javascript@1.4.6)(@lezer/lr@1.3.10): resolution: {integrity: sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==} peerDependencies: '@codemirror/autocomplete': ^6.0.0 @@ -1643,17 +1893,17 @@ packages: '@lezer/javascript': ^1.2.0 '@lezer/lr': ^1.0.0 dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.3) + '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4) '@codemirror/lang-css': 6.2.0(@codemirror/view@6.14.1) '@codemirror/lang-html': 6.4.5 '@codemirror/lang-javascript': 6.1.9 '@codemirror/language': 6.8.0 '@codemirror/state': 6.2.1 '@codemirror/view': 6.14.1 - '@lezer/common': 1.0.3 + '@lezer/common': 1.0.4 '@lezer/highlight': 1.1.6 - '@lezer/javascript': 1.4.5 - '@lezer/lr': 1.3.9 + '@lezer/javascript': 1.4.6 + '@lezer/lr': 1.3.10 dev: false /@resvg/resvg-js-android-arm-eabi@2.4.1: @@ -1878,6 +2128,20 @@ packages: rollup: 3.26.2 dev: true + /@rollup/pluginutils@5.0.3: + resolution: {integrity: sha512-hfllNN4a80rwNQ9QCxhxuHCGHMAvabXqxNdaChUSSadMre7t4iEUI6fFAhBOn/eIYTgYVhBv7vCLsAJ4u3lf3g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + /@shuding/opentype.js@1.4.0-beta.0: resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==} engines: {node: '>= 8.0.0'} @@ -1899,24 +2163,24 @@ packages: - encoding dev: false - /@supabase/gotrue-js@2.46.1: - resolution: {integrity: sha512-tebFX3XvPqEJKHOVgkXTN20g9iUhLx6tebIYQvTggYTrqOT2af8oTpSBdgYzbwJ291G6P6CSpR6KY0cT9ade5A==} + /@supabase/gotrue-js@2.47.0: + resolution: {integrity: sha512-3e34/vsKH/DoSZCpB85UZpFWSJ2p4GRUUlqgAgeTPagPlx4xS+Nc5v7g7ic7vp3gK0J5PsYVCn9Qu2JQUp4vXg==} dependencies: cross-fetch: 3.1.8 transitivePeerDependencies: - encoding dev: false - /@supabase/postgrest-js@1.7.2: - resolution: {integrity: sha512-GK80JpRq8l6Qll85erICypAfQCied8tdlXfsDN14W844HqXCSOisk8AaE01DAwGJanieaoN5fuqhzA2yKxDvEQ==} + /@supabase/postgrest-js@1.8.0: + resolution: {integrity: sha512-R6leDIC92NgjyG2/tCRJ42rWN7+fZY6ulTEE+c00tcnghn6cX4IYUlnTNMtrdfYC2JYNOTyM+rWj63Wdhr7Zig==} dependencies: cross-fetch: 3.1.8 transitivePeerDependencies: - encoding dev: false - /@supabase/realtime-js@2.7.3: - resolution: {integrity: sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==} + /@supabase/realtime-js@2.7.4: + resolution: {integrity: sha512-FzSzs1k9ruh/uds5AJ95Nc3beiMCCIhougExJ3O98CX1LMLAKUKFy5FivKLvcNhXnNfUEL0XUfGMb4UH2J7alg==} dependencies: '@types/phoenix': 1.6.0 '@types/websocket': 1.0.5 @@ -1933,13 +2197,13 @@ packages: - encoding dev: false - /@supabase/supabase-js@2.31.0: - resolution: {integrity: sha512-W9/4s+KnSUX67wJKBn/3yLq+ieycnMzVjK3nNTLX5Wko3ypNT/081l2iFYrf+nsLQ1CiT4mA92I3dxCy6CmxTg==} + /@supabase/supabase-js@2.33.1: + resolution: {integrity: sha512-jA00rquPTppPOHpBB6KABW98lfg0gYXcuGqP3TB1iiduznRVsi3GGk2qBKXPDLMYSe0kRlQp5xCwWWthaJr8eA==} dependencies: '@supabase/functions-js': 2.1.2 - '@supabase/gotrue-js': 2.46.1 - '@supabase/postgrest-js': 1.7.2 - '@supabase/realtime-js': 2.7.3 + '@supabase/gotrue-js': 2.47.0 + '@supabase/postgrest-js': 1.8.0 + '@supabase/realtime-js': 2.7.4 '@supabase/storage-js': 2.5.1 cross-fetch: 3.1.8 transitivePeerDependencies: @@ -1947,12 +2211,12 @@ packages: - supports-color dev: false - /@sveltejs/adapter-vercel@3.0.3(@sveltejs/kit@1.22.4): + /@sveltejs/adapter-vercel@3.0.3(@sveltejs/kit@1.22.6): resolution: {integrity: sha512-0FQMjR6klW4627ewdclSr0lUe/DqiiyOaRTfgb5cXgNbVMsZMOA2fQ77TYQnJdvMfSEWe6y8uznV48XqKh9+vA==} peerDependencies: '@sveltejs/kit': ^1.5.0 dependencies: - '@sveltejs/kit': 1.22.4(svelte@packages+svelte)(vite@4.4.8) + '@sveltejs/kit': 1.22.6(svelte@packages+svelte)(vite@4.4.9) '@vercel/nft': 0.23.0 esbuild: 0.18.17 transitivePeerDependencies: @@ -1960,7 +2224,7 @@ packages: - supports-color dev: true - /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@5.60.0)(@typescript-eslint/parser@6.2.1)(eslint-config-prettier@8.10.0)(eslint-plugin-svelte@2.32.4)(eslint-plugin-unicorn@47.0.0)(eslint@8.46.0)(typescript@5.1.3): + /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@6.4.1)(@typescript-eslint/parser@6.4.1)(eslint-config-prettier@9.0.0)(eslint-plugin-svelte@2.33.0)(eslint-plugin-unicorn@48.0.1)(eslint@8.47.0)(typescript@5.1.3): resolution: {integrity: sha512-U9pwmDs+DbmsnCgTfu6Bacdwqn0DuI1IQNSiQqTgzVyYfaaj+zy9ZoQCiJfxFBGXHkklyXuRHp0KMx346N0lcQ==} peerDependencies: '@typescript-eslint/eslint-plugin': '>= 5' @@ -1971,17 +2235,17 @@ packages: eslint-plugin-unicorn: '>= 47' typescript: '>= 4' dependencies: - '@typescript-eslint/eslint-plugin': 5.60.0(@typescript-eslint/parser@6.2.1)(eslint@8.46.0)(typescript@5.1.3) - '@typescript-eslint/parser': 6.2.1(eslint@8.46.0)(typescript@5.1.3) - eslint: 8.46.0 - eslint-config-prettier: 8.10.0(eslint@8.46.0) - eslint-plugin-svelte: 2.32.4(eslint@8.46.0)(svelte@packages+svelte) - eslint-plugin-unicorn: 47.0.0(eslint@8.46.0) + '@typescript-eslint/eslint-plugin': 6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)(typescript@5.1.3) + '@typescript-eslint/parser': 6.4.1(eslint@8.47.0)(typescript@5.1.3) + eslint: 8.47.0 + eslint-config-prettier: 9.0.0(eslint@8.47.0) + eslint-plugin-svelte: 2.33.0(eslint@8.47.0)(svelte@packages+svelte) + eslint-plugin-unicorn: 48.0.1(eslint@8.47.0) typescript: 5.1.3 dev: true - /@sveltejs/kit@1.22.4(svelte@packages+svelte)(vite@4.4.8): - resolution: {integrity: sha512-Opkqw1QXk4Cc25b/heJP2D7mX+OUBFAq4MXKfET58svTTxdeiHFKzmnuRsSF3nmxESqrLjqPAgHpib+knNGzRw==} + /@sveltejs/kit@1.22.6(svelte@packages+svelte)(vite@4.4.9): + resolution: {integrity: sha512-SDKxI/QpsReCwIn5czjT53fKlPBybbmMk67d317gUqfeORroBAFN1Z6s/x0E1JYi+04i7kKllS+Sz9wVfmUkAQ==} engines: {node: ^16.14 || >=18} hasBin: true requiresBuild: true @@ -1989,29 +2253,29 @@ packages: svelte: ^3.54.0 || ^4.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.3(svelte@packages+svelte)(vite@4.4.8) + '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@packages+svelte)(vite@4.4.9) '@types/cookie': 0.5.1 cookie: 0.5.0 devalue: 4.3.2 esm-env: 1.0.0 kleur: 4.1.5 - magic-string: 0.30.2 + magic-string: 0.30.3 mime: 3.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.3 svelte: link:packages/svelte - undici: 5.22.1 - vite: 4.4.8(@types/node@20.4.7)(lightningcss@1.21.5)(sass@1.64.2) + undici: 5.23.0 + vite: 4.4.9(@types/node@20.5.3)(lightningcss@1.21.7)(sass@1.66.1) transitivePeerDependencies: - supports-color - /@sveltejs/repl@0.5.0(@codemirror/lang-html@6.4.5)(@codemirror/search@6.5.0)(@lezer/common@1.0.3)(@lezer/javascript@1.4.5)(@lezer/lr@1.3.9)(@sveltejs/kit@1.22.4)(svelte@packages+svelte): + /@sveltejs/repl@0.5.0(@codemirror/lang-html@6.4.5)(@codemirror/search@6.5.1)(@lezer/common@1.0.4)(@lezer/javascript@1.4.6)(@lezer/lr@1.3.10)(@sveltejs/kit@1.22.6)(svelte@packages+svelte): resolution: {integrity: sha512-SyrMn3moP74PY7OtQONom9X53SYREQ7p8CEgspeNK0VG9AYUWc2UPvDDRAHTK94TC7GoNWgOafDw04HJGrOl2g==} peerDependencies: svelte: ^3.54.0 || ^4.0.0-next.0 || ^4.0.0 dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.3) + '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4) '@codemirror/commands': 6.2.4 '@codemirror/lang-css': 6.2.0(@codemirror/view@6.14.1) '@codemirror/lang-javascript': 6.1.9 @@ -2023,13 +2287,13 @@ packages: '@codemirror/view': 6.14.1 '@jridgewell/sourcemap-codec': 1.4.15 '@lezer/highlight': 1.1.6 - '@neocodemirror/svelte': 0.0.15(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.4.0)(@codemirror/search@6.5.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1) - '@replit/codemirror-lang-svelte': 6.0.0(@codemirror/autocomplete@6.8.1)(@codemirror/lang-css@6.2.0)(@codemirror/lang-html@6.4.5)(@codemirror/lang-javascript@6.1.9)(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.3)(@lezer/highlight@1.1.6)(@lezer/javascript@1.4.5)(@lezer/lr@1.3.9) + '@neocodemirror/svelte': 0.0.15(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.4.0)(@codemirror/search@6.5.1)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1) + '@replit/codemirror-lang-svelte': 6.0.0(@codemirror/autocomplete@6.8.1)(@codemirror/lang-css@6.2.0)(@codemirror/lang-html@6.4.5)(@codemirror/lang-javascript@6.1.9)(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4)(@lezer/highlight@1.1.6)(@lezer/javascript@1.4.6)(@lezer/lr@1.3.10) '@rich_harris/svelte-split-pane': 1.1.1(svelte@packages+svelte) '@rollup/browser': 3.26.2 - '@sveltejs/site-kit': 5.2.2(@sveltejs/kit@1.22.4)(svelte@packages+svelte) + '@sveltejs/site-kit': 5.2.2(@sveltejs/kit@1.22.6)(svelte@packages+svelte) acorn: 8.10.0 - codemirror: 6.0.1(@lezer/common@1.0.3) + codemirror: 6.0.1(@lezer/common@1.0.4) esm-env: 1.0.0 estree-walker: 3.0.3 marked: 5.1.2 @@ -2045,31 +2309,31 @@ packages: - '@sveltejs/kit' dev: false - /@sveltejs/site-kit@5.2.2(@sveltejs/kit@1.22.4)(svelte@packages+svelte): + /@sveltejs/site-kit@5.2.2(@sveltejs/kit@1.22.6)(svelte@packages+svelte): resolution: {integrity: sha512-XLLxVUV/dYytCsUeODAkjtzlaIBSn1kdcH5U36OuN7gMsPEHDy5L/dsWjf1/vDln3JStH5lqZPEN8Fovm33KhA==} peerDependencies: '@sveltejs/kit': ^1.0.0 svelte: ^3.54.0 dependencies: - '@sveltejs/kit': 1.22.4(svelte@packages+svelte)(vite@4.4.8) + '@sveltejs/kit': 1.22.6(svelte@packages+svelte)(vite@4.4.9) esm-env: 1.0.0 svelte: link:packages/svelte svelte-local-storage-store: 0.4.0(svelte@packages+svelte) dev: false - /@sveltejs/site-kit@6.0.0-next.25(@sveltejs/kit@1.22.4)(svelte@packages+svelte): - resolution: {integrity: sha512-MZen4ZdjHoWVHn5DQdYBYprryhsyTHVT3XxW/hUp8K6dgFBXK5Cg/foHcxwzkepP6Gmabgi9eHC8e3PPGNKaAA==} + /@sveltejs/site-kit@6.0.0-next.32(@sveltejs/kit@1.22.6)(svelte@packages+svelte): + resolution: {integrity: sha512-paWcxEnx9XRcoHRjfTpf62Rk3RT69K1nKOtVYz7bvKAiB7hPVrUBaP/ENomq/zXk7pP3yjrxezarCGZO4VGEyg==} peerDependencies: '@sveltejs/kit': ^1.20.0 svelte: ^4.0.0 dependencies: - '@sveltejs/kit': 1.22.4(svelte@packages+svelte)(vite@4.4.8) + '@sveltejs/kit': 1.22.6(svelte@packages+svelte)(vite@4.4.9) esm-env: 1.0.0 svelte: link:packages/svelte - svelte-local-storage-store: 0.5.0(svelte@packages+svelte) + svelte-local-storage-store: 0.6.0(svelte@packages+svelte) dev: true - /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.3)(svelte@packages+svelte)(vite@4.4.8): + /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@packages+svelte)(vite@4.4.9): resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -2077,29 +2341,29 @@ packages: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.3(svelte@packages+svelte)(vite@4.4.8) + '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@packages+svelte)(vite@4.4.9) debug: 4.3.4 svelte: link:packages/svelte - vite: 4.4.8(@types/node@20.4.7)(lightningcss@1.21.5)(sass@1.64.2) + vite: 4.4.9(@types/node@20.5.3)(lightningcss@1.21.7)(sass@1.66.1) transitivePeerDependencies: - supports-color - /@sveltejs/vite-plugin-svelte@2.4.3(svelte@packages+svelte)(vite@4.4.8): - resolution: {integrity: sha512-NY2h+B54KHZO3kDURTdARqthn6D4YSIebtfW75NvZ/fwyk4G+AJw3V/i0OBjyN4406Ht9yZcnNWMuRUFnDNNiA==} + /@sveltejs/vite-plugin-svelte@2.4.5(svelte@packages+svelte)(vite@4.4.9): + resolution: {integrity: sha512-UJKsFNwhzCVuiZd06jM/psscyNJNDwjQC+qIeb7GBJK9iWeQCcIyfcPWDvbCudfcJggY9jtxJeeaZH7uny93FQ==} engines: {node: ^14.18.0 || >= 16} peerDependencies: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.3)(svelte@packages+svelte)(vite@4.4.8) + '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@packages+svelte)(vite@4.4.9) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.2 + magic-string: 0.30.3 svelte: link:packages/svelte - svelte-hmr: 0.15.2(svelte@packages+svelte) - vite: 4.4.8(@types/node@20.4.7)(lightningcss@1.21.5)(sass@1.64.2) - vitefu: 0.2.4(vite@4.4.8) + svelte-hmr: 0.15.3(svelte@packages+svelte) + vite: 4.4.9(@types/node@20.5.3)(lightningcss@1.21.7)(sass@1.66.1) + vitefu: 0.2.4(vite@4.4.9) transitivePeerDependencies: - supports-color @@ -2168,8 +2432,8 @@ packages: resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} dev: true - /@types/node@20.4.7: - resolution: {integrity: sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==} + /@types/node@20.5.3: + resolution: {integrity: sha512-ITI7rbWczR8a/S6qjAW7DMqxqFMjjTo61qZVWJ1ubPvbIQsL5D/TvwjYEalM8Kthpe3hTzOGrF2TGbAu2uyqeA==} /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -2198,7 +2462,7 @@ packages: /@types/websocket@1.0.5: resolution: {integrity: sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==} dependencies: - '@types/node': 20.4.7 + '@types/node': 20.5.3 dev: false /@typescript-eslint/eslint-plugin@5.60.0(@typescript-eslint/parser@5.62.0)(eslint@8.44.0)(typescript@5.1.6): @@ -2229,29 +2493,30 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@5.60.0(@typescript-eslint/parser@6.2.1)(eslint@8.46.0)(typescript@5.1.3): - resolution: {integrity: sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/eslint-plugin@6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)(typescript@5.1.3): + resolution: {integrity: sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 6.2.1(eslint@8.46.0)(typescript@5.1.3) - '@typescript-eslint/scope-manager': 5.60.0 - '@typescript-eslint/type-utils': 5.60.0(eslint@8.46.0)(typescript@5.1.3) - '@typescript-eslint/utils': 5.60.0(eslint@8.46.0)(typescript@5.1.3) + '@eslint-community/regexpp': 4.7.0 + '@typescript-eslint/parser': 6.4.1(eslint@8.47.0)(typescript@5.1.3) + '@typescript-eslint/scope-manager': 6.4.1 + '@typescript-eslint/type-utils': 6.4.1(eslint@8.47.0)(typescript@5.1.3) + '@typescript-eslint/utils': 6.4.1(eslint@8.47.0)(typescript@5.1.3) + '@typescript-eslint/visitor-keys': 6.4.1 debug: 4.3.4 - eslint: 8.46.0 - grapheme-splitter: 1.0.4 + eslint: 8.47.0 + graphemer: 1.4.0 ignore: 5.2.4 - natural-compare-lite: 1.4.0 - semver: 7.5.3 - tsutils: 3.21.0(typescript@5.1.3) + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.2(typescript@5.1.3) typescript: 5.1.3 transitivePeerDependencies: - supports-color @@ -2277,8 +2542,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.2.1(eslint@8.46.0)(typescript@5.1.3): - resolution: {integrity: sha512-Ld+uL1kYFU8e6btqBFpsHkwQ35rw30IWpdQxgOqOh4NfxSDH6uCkah1ks8R/RgQqI5hHPXMaLy9fbFseIe+dIg==} + /@typescript-eslint/parser@6.4.1(eslint@8.47.0)(typescript@5.1.3): + resolution: {integrity: sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2287,12 +2552,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.2.1 - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.1.3) - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/scope-manager': 6.4.1 + '@typescript-eslint/types': 6.4.1 + '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.1.3) + '@typescript-eslint/visitor-keys': 6.4.1 debug: 4.3.4 - eslint: 8.46.0 + eslint: 8.47.0 typescript: 5.1.3 transitivePeerDependencies: - supports-color @@ -2314,12 +2579,12 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.2.1: - resolution: {integrity: sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==} + /@typescript-eslint/scope-manager@6.4.1: + resolution: {integrity: sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/types': 6.4.1 + '@typescript-eslint/visitor-keys': 6.4.1 dev: true /@typescript-eslint/type-utils@5.60.0(eslint@8.44.0)(typescript@5.1.6): @@ -2342,21 +2607,21 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@5.60.0(eslint@8.46.0)(typescript@5.1.3): - resolution: {integrity: sha512-X7NsRQddORMYRFH7FWo6sA9Y/zbJ8s1x1RIAtnlj6YprbToTiQnM6vxcMu7iYhdunmoC0rUWlca13D5DVHkK2g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/type-utils@6.4.1(eslint@8.47.0)(typescript@5.1.3): + resolution: {integrity: sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: '*' + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.60.0(typescript@5.1.3) - '@typescript-eslint/utils': 5.60.0(eslint@8.46.0)(typescript@5.1.3) + '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.1.3) + '@typescript-eslint/utils': 6.4.1(eslint@8.47.0)(typescript@5.1.3) debug: 4.3.4 - eslint: 8.46.0 - tsutils: 3.21.0(typescript@5.1.3) + eslint: 8.47.0 + ts-api-utils: 1.0.2(typescript@5.1.3) typescript: 5.1.3 transitivePeerDependencies: - supports-color @@ -2372,32 +2637,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.2.1: - resolution: {integrity: sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==} + /@typescript-eslint/types@6.4.1: + resolution: {integrity: sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.60.0(typescript@5.1.3): - resolution: {integrity: sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.60.0 - '@typescript-eslint/visitor-keys': 5.60.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.3 - tsutils: 3.21.0(typescript@5.1.3) - typescript: 5.1.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree@5.60.0(typescript@5.1.6): resolution: {integrity: sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2440,8 +2684,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.2.1(typescript@5.1.3): - resolution: {integrity: sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==} + /@typescript-eslint/typescript-estree@6.4.1(typescript@5.1.3): + resolution: {integrity: sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -2449,13 +2693,13 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/types': 6.4.1 + '@typescript-eslint/visitor-keys': 6.4.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.3) + ts-api-utils: 1.0.2(typescript@5.1.3) typescript: 5.1.3 transitivePeerDependencies: - supports-color @@ -2481,21 +2725,20 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.60.0(eslint@8.46.0)(typescript@5.1.3): - resolution: {integrity: sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/utils@6.4.1(eslint@8.47.0)(typescript@5.1.3): + resolution: {integrity: sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.60.0 - '@typescript-eslint/types': 5.60.0 - '@typescript-eslint/typescript-estree': 5.60.0(typescript@5.1.3) - eslint: 8.46.0 - eslint-scope: 5.1.1 - semver: 7.5.3 + '@typescript-eslint/scope-manager': 6.4.1 + '@typescript-eslint/types': 6.4.1 + '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.1.3) + eslint: 8.47.0 + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript @@ -2514,15 +2757,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.2.1: - resolution: {integrity: sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==} + /@typescript-eslint/visitor-keys@6.4.1: + resolution: {integrity: sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.2.1 - eslint-visitor-keys: 3.4.2 + '@typescript-eslint/types': 6.4.1 + eslint-visitor-keys: 3.4.3 dev: true /@typescript/twoslash@3.1.0: @@ -2591,7 +2834,7 @@ packages: /@vitest/snapshot@0.33.0: resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==} dependencies: - magic-string: 0.30.2 + magic-string: 0.30.3 pathe: 1.1.1 pretty-format: 29.6.1 dev: true @@ -3011,7 +3254,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -3066,10 +3309,10 @@ packages: periscopic: 3.1.0 dev: false - /codemirror@6.0.1(@lezer/common@1.0.3): + /codemirror@6.0.1(@lezer/common@1.0.4): resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.3) + '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4) '@codemirror/commands': 6.2.4 '@codemirror/language': 6.8.0 '@codemirror/lint': 6.4.0 @@ -3151,7 +3394,7 @@ packages: /cross-fetch@3.1.8: resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} dependencies: - node-fetch: 2.6.12 + node-fetch: 2.6.13 transitivePeerDependencies: - encoding dev: false @@ -3625,6 +3868,36 @@ packages: '@esbuild/win32-arm64': 0.18.17 '@esbuild/win32-ia32': 0.18.17 '@esbuild/win32-x64': 0.18.17 + dev: true + + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -3658,13 +3931,13 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@8.10.0(eslint@8.46.0): - resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + /eslint-config-prettier@9.0.0(eslint@8.47.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.46.0 + eslint: 8.47.0 dev: true /eslint-plugin-svelte@2.32.2(eslint@8.44.0)(svelte@packages+svelte): @@ -3695,8 +3968,8 @@ packages: - ts-node dev: true - /eslint-plugin-svelte@2.32.4(eslint@8.46.0)(svelte@packages+svelte): - resolution: {integrity: sha512-VJ12i2Iogug1jvhwxSlognnfGj76P5gks/V4pUD4SCSVQOp14u47MNP0zAG8AQR3LT0Fi1iUvIFnY4l9z5Rwbg==} + /eslint-plugin-svelte@2.33.0(eslint@8.47.0)(svelte@packages+svelte): + resolution: {integrity: sha512-kk7Z4BfxVjFYJseFcOpS8kiKNio7KnAnhFagmM89h1wNSKlM7tIn+uguNQppKM9leYW+S+Us0Rjg2Qg3zsEcvg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0-0 @@ -3705,19 +3978,19 @@ packages: svelte: optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) '@jridgewell/sourcemap-codec': 1.4.15 debug: 4.3.4 - eslint: 8.46.0 + eslint: 8.47.0 esutils: 2.0.3 known-css-properties: 0.28.0 - postcss: 8.4.27 - postcss-load-config: 3.1.4(postcss@8.4.27) - postcss-safe-parser: 6.0.0(postcss@8.4.27) + postcss: 8.4.28 + postcss-load-config: 3.1.4(postcss@8.4.28) + postcss-safe-parser: 6.0.0(postcss@8.4.28) postcss-selector-parser: 6.0.13 semver: 7.5.4 svelte: link:packages/svelte - svelte-eslint-parser: 0.32.2(svelte@packages+svelte) + svelte-eslint-parser: 0.33.0(svelte@packages+svelte) transitivePeerDependencies: - supports-color - ts-node @@ -3748,17 +4021,17 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-unicorn@47.0.0(eslint@8.46.0): - resolution: {integrity: sha512-ivB3bKk7fDIeWOUmmMm9o3Ax9zbMz1Bsza/R2qm46ufw4T6VBFBaJIR1uN3pCKSmSXm8/9Nri8V+iUut1NhQGA==} + /eslint-plugin-unicorn@48.0.1(eslint@8.47.0): + resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} engines: {node: '>=16'} peerDependencies: - eslint: '>=8.38.0' + eslint: '>=8.44.0' dependencies: '@babel/helper-validator-identifier': 7.22.5 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) ci-info: 3.8.0 clean-regexp: 1.0.0 - eslint: 8.46.0 + eslint: 8.47.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -3768,8 +4041,7 @@ packages: read-pkg-up: 7.0.1 regexp-tree: 0.1.27 regjsparser: 0.10.0 - safe-regex: 2.1.1 - semver: 7.5.3 + semver: 7.5.4 strip-indent: 3.0.0 dev: true @@ -3802,8 +4074,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint-visitor-keys@3.4.2: - resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3855,15 +4127,15 @@ packages: - supports-color dev: true - /eslint@8.46.0: - resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} + /eslint@8.47.0: + resolution: {integrity: sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) - '@eslint-community/regexpp': 4.6.2 - '@eslint/eslintrc': 2.1.1 - '@eslint/js': 8.46.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) + '@eslint-community/regexpp': 4.7.0 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.47.0 '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -3874,7 +4146,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 @@ -3882,7 +4154,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.20.0 + globals: 13.21.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -3919,7 +4191,7 @@ packages: dependencies: acorn: 8.10.0 acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 dev: true /esprima@4.0.1: @@ -4171,6 +4443,14 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true + dev: true + optional: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true optional: true /function-bind@1.1.1: @@ -4292,6 +4572,13 @@ packages: type-fest: 0.20.2 dev: true + /globals@13.21.0: + resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -4475,7 +4762,7 @@ packages: resolution: {integrity: sha512-sNRVfUwkUcsVWNn5inTHDXWzpPRWPWbSgGkuQmlsFCWXAR2+K5R5vG5tC3Qs4LeJaMugKB8hGVm6rvZjFHQrUw==} engines: {node: '>=12.0.0'} dependencies: - sharp: 0.32.4 + sharp: 0.32.5 dev: true /immutable@4.3.2: @@ -4876,84 +5163,93 @@ packages: type-check: 0.4.0 dev: true - /lightningcss-darwin-arm64@1.21.5: - resolution: {integrity: sha512-z05hyLX85WY0UfhkFUOrWEFqD69lpVAmgl3aDzMKlIZJGygbhbegqb4PV8qfUrKKNBauut/qVNPKZglhTaDDxA==} + /lightningcss-darwin-arm64@1.21.7: + resolution: {integrity: sha512-tt7hIsFio9jZofTVHtCACz6rB6c9RyABMXfA9A/VcKOjS3sq+koX/QkRJWY06utwOImbJIXBC5hbg9t3RkPUAQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /lightningcss-darwin-x64@1.21.5: - resolution: {integrity: sha512-MSJhmej/U9MrdPxDk7+FWhO8+UqVoZUHG4VvKT5RQ4RJtqtANTiWiI97LvoVNMtdMnHaKs1Pkji6wHUFxjJsHQ==} + /lightningcss-darwin-x64@1.21.7: + resolution: {integrity: sha512-F4gS4bf7eWekfPT+TxJNm/pF+QRgZiTrTkQH6cw4/UWfdeZISfuhD5El2dm16giFnY0K5ylIwO+ZusgYNkGSXA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /lightningcss-linux-arm-gnueabihf@1.21.5: - resolution: {integrity: sha512-xN6+5/JsMrbZHL1lPl+MiNJ3Xza12ueBKPepiyDCFQzlhFRTj7D0LG+cfNTzPBTO8KcYQynLpl1iBB8LGp3Xtw==} + /lightningcss-freebsd-x64@1.21.7: + resolution: {integrity: sha512-RMfNzJWXCSfPnL55fcLWEAadcY6QUFT0S8NceNKYzp1KiCZtkJIy6RQ5SaVxPzRqd3iMsahUf5sfnG8N1UQSNQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + + /lightningcss-linux-arm-gnueabihf@1.21.7: + resolution: {integrity: sha512-biSRUDZNx7vubWP1jArw/qqfZKPGpkV/qzunasZzxmqijbZ43sW9faDQYxWNcxPWljJJdF/qs6qcurYFovWtrQ==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /lightningcss-linux-arm64-gnu@1.21.5: - resolution: {integrity: sha512-KfzFNhC4XTbmG3ma/xcTs/IhCwieW89XALIusKmnV0N618ZDXEB0XjWOYQRCXeK9mfqPdbTBpurEHV/XZtkniQ==} + /lightningcss-linux-arm64-gnu@1.21.7: + resolution: {integrity: sha512-PENY8QekqL9TG3AY/A7rkUBb5ymefGxea7Oe7+x7Hbw4Bz4Hpj5cec5OoMypMqFbURPmpi0fTWx4vSWUPzpDcA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /lightningcss-linux-arm64-musl@1.21.5: - resolution: {integrity: sha512-bc0GytQO5Mn9QM6szaZ+31fQHNdidgpM1sSCwzPItz8hg3wOvKl8039rU0veMJV3ZgC9z0ypNRceLrSHeRHmXw==} + /lightningcss-linux-arm64-musl@1.21.7: + resolution: {integrity: sha512-pfOipKvA/0X1OjRaZt3870vnV9UGBSjayIqHh0fGx/+aRz3O0MVFHE/60P2UWXpM3YGJEw/hMWtNkrFwqOge8A==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /lightningcss-linux-x64-gnu@1.21.5: - resolution: {integrity: sha512-JwMbgypPQgc2kW2av3OwzZ8cbrEuIiDiXPJdXRE6aVxu67yHauJawQLqJKTGUhiAhy6iLDG8Wg0a3/ziL+m+Kw==} + /lightningcss-linux-x64-gnu@1.21.7: + resolution: {integrity: sha512-dgcsis4TAA7s0ia4f31QHX+G4PWPwxk+wJaEQLaV0NdJs09O5hHoA8DpLEr8nrvc/tsRTyVNBP1rDtgzySjpXg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /lightningcss-linux-x64-musl@1.21.5: - resolution: {integrity: sha512-Ib8b6IQ/OR/VrPU6YBgy4T3QnuHY7DUa95O+nz+cwrTkMSN6fuHcTcIaz4t8TJ6HI5pl3uxUOZjmtls2pyQWow==} + /lightningcss-linux-x64-musl@1.21.7: + resolution: {integrity: sha512-A+9dXpxld3p4Cd6fxev2eqEvaauYtrgNpXV3t7ioCJy30Oj9nYiNGwiGusM+4MJVcEpUPGUGiuAqY4sWilRDwA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /lightningcss-win32-x64-msvc@1.21.5: - resolution: {integrity: sha512-A8cSi8lUpBeVmoF+DqqW7cd0FemDbCuKr490IXdjyeI+KL8adpSKUs8tcqO0OXPh1EoDqK7JNkD/dELmd4Iz5g==} + /lightningcss-win32-x64-msvc@1.21.7: + resolution: {integrity: sha512-07/8vogEq+C/mF99pdMhh/f19/xreq8N9Ca6AWeVHZIdODyF/pt6KdKSCWDZWIn+3CUxI8gCJWuUWyOc3xymvw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /lightningcss@1.21.5: - resolution: {integrity: sha512-/pEUPeih2EwIx9n4T82aOG6CInN83tl/mWlw6B5gWLf36UplQi1L+5p3FUHsdt4fXVfOkkh9KIaM3owoq7ss8A==} + /lightningcss@1.21.7: + resolution: {integrity: sha512-xITZyh5sLFwRPYUSw15T00Rm7gcQ1qOPuQwNOcvHsTm6nLWTQ723w7zl42wrC5t+xtdg6FPmnXHml1nZxxvp1w==} engines: {node: '>= 12.0.0'} dependencies: detect-libc: 1.0.3 optionalDependencies: - lightningcss-darwin-arm64: 1.21.5 - lightningcss-darwin-x64: 1.21.5 - lightningcss-linux-arm-gnueabihf: 1.21.5 - lightningcss-linux-arm64-gnu: 1.21.5 - lightningcss-linux-arm64-musl: 1.21.5 - lightningcss-linux-x64-gnu: 1.21.5 - lightningcss-linux-x64-musl: 1.21.5 - lightningcss-win32-x64-msvc: 1.21.5 + lightningcss-darwin-arm64: 1.21.7 + lightningcss-darwin-x64: 1.21.7 + lightningcss-freebsd-x64: 1.21.7 + lightningcss-linux-arm-gnueabihf: 1.21.7 + lightningcss-linux-arm64-gnu: 1.21.7 + lightningcss-linux-arm64-musl: 1.21.7 + lightningcss-linux-x64-gnu: 1.21.7 + lightningcss-linux-x64-musl: 1.21.7 + lightningcss-win32-x64-msvc: 1.21.7 /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} @@ -5066,8 +5362,8 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - /magic-string@0.30.2: - resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} + /magic-string@0.30.3: + resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -5095,8 +5391,8 @@ packages: hasBin: true dev: false - /marked@6.0.0: - resolution: {integrity: sha512-7E3m/xIlymrFL5gWswIT4CheIE3fDeh51NV09M4x8iOc7NDYlyERcQMLAIHcSlrvwliwbPQ4OGD+MpPSYiQcqw==} + /marked@7.0.4: + resolution: {integrity: sha512-t8eP0dXRJMtMvBojtkcsA7n48BkauktUKzfkPSCq85ZMTJ0v76Rke4DYz01omYpPTUh4p/f7HePgRo3ebG8+QQ==} engines: {node: '>= 16'} hasBin: true dev: true @@ -5292,8 +5588,8 @@ packages: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: false - /node-abi@3.45.0: - resolution: {integrity: sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==} + /node-abi@3.47.0: + resolution: {integrity: sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==} engines: {node: '>=10'} dependencies: semver: 7.5.4 @@ -5325,6 +5621,19 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 + dev: true + + /node-fetch@2.6.13: + resolution: {integrity: sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false /node-gyp-build@4.6.0: resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} @@ -5679,7 +5988,7 @@ packages: yaml: 1.10.2 dev: true - /postcss-load-config@3.1.4(postcss@8.4.27): + /postcss-load-config@3.1.4(postcss@8.4.28): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -5692,7 +6001,7 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.27 + postcss: 8.4.28 yaml: 1.10.2 dev: true @@ -5705,13 +6014,13 @@ packages: postcss: 8.4.24 dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.27): + /postcss-safe-parser@6.0.0(postcss@8.4.28): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 dependencies: - postcss: 8.4.27 + postcss: 8.4.28 dev: true /postcss-scss@4.0.6(postcss@8.4.24): @@ -5723,13 +6032,13 @@ packages: postcss: 8.4.24 dev: true - /postcss-scss@4.0.6(postcss@8.4.27): - resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} + /postcss-scss@4.0.7(postcss@8.4.28): + resolution: {integrity: sha512-xPv2GseoyXPa58Nro7M73ZntttusuCmZdeOojUFR5PZDz2BR62vfYx1w9TyOnp1+nYFowgOMipsCBhxzVkAEPw==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.4.19 dependencies: - postcss: 8.4.27 + postcss: 8.4.28 dev: true /postcss-selector-parser@6.0.13: @@ -5753,8 +6062,8 @@ packages: source-map-js: 1.0.2 dev: true - /postcss@8.4.27: - resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} + /postcss@8.4.28: + resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -5772,7 +6081,7 @@ packages: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.45.0 + node-abi: 3.47.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 @@ -5810,13 +6119,13 @@ packages: svelte: link:packages/svelte dev: true - /prettier-plugin-svelte@3.0.3(prettier@3.0.1)(svelte@packages+svelte): + /prettier-plugin-svelte@3.0.3(prettier@3.0.2)(svelte@packages+svelte): resolution: {integrity: sha512-dLhieh4obJEK1hnZ6koxF+tMUrZbV5YGvRpf2+OADyanjya5j0z1Llo8iGwiHmFWZVG/hLEw/AJD5chXd9r3XA==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 dependencies: - prettier: 3.0.1 + prettier: 3.0.2 svelte: link:packages/svelte dev: true @@ -5826,8 +6135,8 @@ packages: hasBin: true dev: true - /prettier@3.0.1: - resolution: {integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==} + /prettier@3.0.2: + resolution: {integrity: sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==} engines: {node: '>=14'} hasBin: true dev: true @@ -6056,7 +6365,7 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /rollup@3.26.2: @@ -6064,15 +6373,15 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true - /rollup@3.27.1: - resolution: {integrity: sha512-tXNDFwOkN6C2w5Blj1g6ForKeFw6c1mDu5jxoeDO3/pmYjgt+8yvIFjKzH5FQUq70OKZBkOt0zzv0THXL7vwzQ==} + /rollup@3.28.0: + resolution: {integrity: sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} @@ -6121,8 +6430,8 @@ packages: rimraf: 2.7.1 dev: true - /sass@1.64.2: - resolution: {integrity: sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==} + /sass@1.66.1: + resolution: {integrity: sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -6136,8 +6445,8 @@ packages: ultrahtml: 1.2.0 dev: true - /satori@0.10.2: - resolution: {integrity: sha512-38povLat5QMuKiKBudM/oIk+a0Z5tEfHh8oD/bsh58L0jlOXxfuhAVpDtlG3M0g5FGLajIV0LaKQftXtaYoSUQ==} + /satori@0.10.3: + resolution: {integrity: sha512-8tZPu7AGiRWimbOyja1s2HK0hEC4DacZ8cAKDITxlVI5tKQZbOuMiVgSB50CABwc0I4Imgtkq7o9Egj1WOJTKg==} engines: {node: '>=16'} dependencies: '@shuding/opentype.js': 1.4.0-beta.0 @@ -6196,8 +6505,8 @@ packages: /set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - /sharp@0.32.4: - resolution: {integrity: sha512-exUnZewqVZC6UXqXuQ8fyJJv0M968feBi04jb9GcUHrWtkRoAKnbJt8IfwT4NJs7FskArbJ14JAFGVuooszoGg==} + /sharp@0.32.5: + resolution: {integrity: sha512-0dap3iysgDkNaPOaOL4X/0akdu0ma62GcdC2NBQ+93eqpePdDdr2/LM0sFdDSMmN7yS+odyZtPsb7tx/cYBKnQ==} engines: {node: '>=14.15.0'} requiresBuild: true dependencies: @@ -6413,8 +6722,8 @@ packages: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - /streamx@2.15.0: - resolution: {integrity: sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==} + /streamx@2.15.1: + resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==} dependencies: fast-fifo: 1.3.0 queue-tick: 1.0.1 @@ -6511,6 +6820,10 @@ packages: resolution: {integrity: sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw==} dev: false + /style-mod@4.1.0: + resolution: {integrity: sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==} + dev: false + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -6530,20 +6843,20 @@ packages: engines: {node: '>= 0.4'} dev: true - /svelte-check@3.4.6(postcss@8.4.24)(sass@1.64.2)(svelte@packages+svelte): - resolution: {integrity: sha512-OBlY8866Zh1zHQTkBMPS6psPi7o2umTUyj6JWm4SacnIHXpWFm658pG32m3dKvKFL49V4ntAkfFHKo4ztH07og==} + /svelte-check@3.5.0(postcss@8.4.24)(sass@1.66.1)(svelte@packages+svelte): + resolution: {integrity: sha512-KHujbn4k17xKYLmtCwv0sKKM7uiHTYcQvXnvrCcNU6a7hcszh99zFTIoiu/Sp/ewAw5aJmillJ1Cs8gKLmcX4A==} hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 chokidar: 3.5.3 fast-glob: 3.3.1 import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 svelte: link:packages/svelte - svelte-preprocess: 5.0.4(postcss@8.4.24)(sass@1.64.2)(svelte@packages+svelte)(typescript@5.1.6) + svelte-preprocess: 5.0.4(postcss@8.4.24)(sass@1.66.1)(svelte@packages+svelte)(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - '@babel/core' @@ -6574,8 +6887,8 @@ packages: svelte: link:packages/svelte dev: true - /svelte-eslint-parser@0.32.2(svelte@packages+svelte): - resolution: {integrity: sha512-Ok9D3A4b23iLQsONrjqtXtYDu5ZZ/826Blaw2LeFZVTg1pwofKDG4mz3/GYTax8fQ0plRGHI6j+d9VQYy5Lo/A==} + /svelte-eslint-parser@0.33.0(svelte@packages+svelte): + resolution: {integrity: sha512-5awZ6Bs+Tb/zQwa41PSdcLynAVQTwW0HGyCBjtbAQ59taLZqDgQSMzRlDmapjZdDtzERm0oXDZNE0E+PKJ6ryg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: svelte: ^3.37.0 || ^4.0.0 @@ -6584,18 +6897,18 @@ packages: optional: true dependencies: eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 espree: 9.6.1 - postcss: 8.4.27 - postcss-scss: 4.0.6(postcss@8.4.27) + postcss: 8.4.28 + postcss-scss: 4.0.7(postcss@8.4.28) svelte: link:packages/svelte dev: true - /svelte-hmr@0.15.2(svelte@packages+svelte): - resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} + /svelte-hmr@0.15.3(svelte@packages+svelte): + resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: - svelte: ^3.19.0 || ^4.0.0-next.0 + svelte: ^3.19.0 || ^4.0.0 dependencies: svelte: link:packages/svelte @@ -6616,8 +6929,8 @@ packages: svelte: link:packages/svelte dev: false - /svelte-local-storage-store@0.5.0(svelte@packages+svelte): - resolution: {integrity: sha512-SEDrpapeia6fUqta+r1NvSLlJYPkZ4pBcl15EYIOSPNzy6vhpoXu8cnzUDmZxsWl7fZGAHxrVH9UyZCbyO4W+g==} + /svelte-local-storage-store@0.6.0(svelte@packages+svelte): + resolution: {integrity: sha512-UbCY/yT/YUadU5IX/gZkoRQnA+ebFZHKKQjlJvfWHnBj3CPe9sNn8ndxYz/xy4LUzGjuBLq8+wH5RYK54ba3wA==} engines: {node: '>=0.14'} peerDependencies: svelte: ^3.48.0 || ^4.0.0 @@ -6625,7 +6938,7 @@ packages: svelte: link:packages/svelte dev: true - /svelte-preprocess@5.0.4(postcss@8.4.24)(sass@1.64.2)(svelte@packages+svelte)(typescript@5.1.6): + /svelte-preprocess@5.0.4(postcss@8.4.24)(sass@1.66.1)(svelte@packages+svelte)(typescript@5.1.6): resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} engines: {node: '>= 14.10.0'} requiresBuild: true @@ -6667,7 +6980,7 @@ packages: detect-indent: 6.1.0 magic-string: 0.27.0 postcss: 8.4.24 - sass: 1.64.2 + sass: 1.66.1 sorcery: 0.11.0 strip-indent: 3.0.0 svelte: link:packages/svelte @@ -6711,7 +7024,7 @@ packages: dependencies: b4a: 1.6.4 fast-fifo: 1.3.0 - streamx: 2.15.0 + streamx: 2.15.1 dev: true /tar@6.1.15: @@ -6827,8 +7140,8 @@ packages: typescript: 5.1.3 dev: true - /ts-api-utils@1.0.1(typescript@5.1.3): - resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} + /ts-api-utils@1.0.2(typescript@5.1.3): + resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' @@ -6840,16 +7153,6 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tsutils@3.21.0(typescript@5.1.3): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.1.3 - dev: true - /tsutils@3.21.0(typescript@5.1.6): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -6970,8 +7273,8 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /undici@5.22.1: - resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==} + /undici@5.23.0: + resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} engines: {node: '>=14.0'} dependencies: busboy: 1.6.0 @@ -7042,11 +7345,11 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-imagetools@5.0.7: - resolution: {integrity: sha512-8g7RU+liA4uWuujSe3hdMTCNWimMJsdLIU5uB+/SUBQ+j0TcaMKnQZ6n4LCBF2w30ml1X8WNFGOcTblquWrgGQ==} + /vite-imagetools@5.0.8: + resolution: {integrity: sha512-oFNfc58iLz1lHFsIKQy+wp0RNcZjiaDeHYTexYowpf4RYx9tZ97eWEcw8lQ1jDT8AnOso6XZi5iGjLNAeTR9Tw==} engines: {node: '>=12.0.0'} dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.2) + '@rollup/pluginutils': 5.0.3 imagetools-core: 4.0.5 transitivePeerDependencies: - rollup @@ -7062,7 +7365,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.8(@types/node@14.18.51) + vite: 4.4.9(@types/node@14.18.51) transitivePeerDependencies: - '@types/node' - less @@ -7074,8 +7377,8 @@ packages: - terser dev: true - /vite@4.4.8(@types/node@14.18.51): - resolution: {integrity: sha512-LONawOUUjxQridNWGQlNizfKH89qPigK36XhMI7COMGztz8KNY0JHim7/xDd71CZwGT4HtSRgI7Hy+RlhG0Gvg==} + /vite@4.4.9(@types/node@14.18.51): + resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -7103,15 +7406,15 @@ packages: optional: true dependencies: '@types/node': 14.18.51 - esbuild: 0.18.11 - postcss: 8.4.27 - rollup: 3.26.2 + esbuild: 0.18.20 + postcss: 8.4.28 + rollup: 3.28.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true - /vite@4.4.8(@types/node@20.4.7)(lightningcss@1.21.5)(sass@1.64.2): - resolution: {integrity: sha512-LONawOUUjxQridNWGQlNizfKH89qPigK36XhMI7COMGztz8KNY0JHim7/xDd71CZwGT4HtSRgI7Hy+RlhG0Gvg==} + /vite@4.4.9(@types/node@20.5.3)(lightningcss@1.21.7)(sass@1.66.1): + resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -7138,16 +7441,16 @@ packages: terser: optional: true dependencies: - '@types/node': 20.4.7 - esbuild: 0.18.17 - lightningcss: 1.21.5 - postcss: 8.4.27 - rollup: 3.27.1 - sass: 1.64.2 + '@types/node': 20.5.3 + esbuild: 0.18.20 + lightningcss: 1.21.7 + postcss: 8.4.28 + rollup: 3.28.0 + sass: 1.66.1 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 - /vitefu@0.2.4(vite@4.4.8): + /vitefu@0.2.4(vite@4.4.9): resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} peerDependencies: vite: ^3.0.0 || ^4.0.0 @@ -7155,7 +7458,7 @@ packages: vite: optional: true dependencies: - vite: 4.4.8(@types/node@20.4.7)(lightningcss@1.21.5)(sass@1.64.2) + vite: 4.4.9(@types/node@20.5.3)(lightningcss@1.21.7)(sass@1.66.1) /vitest@0.33.0(happy-dom@9.20.3)(jsdom@21.1.2)(playwright@1.35.1): resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} @@ -7204,7 +7507,7 @@ packages: happy-dom: 9.20.3 jsdom: 21.1.2 local-pkg: 0.4.3 - magic-string: 0.30.2 + magic-string: 0.30.3 pathe: 1.1.1 picocolors: 1.0.0 playwright: 1.35.1 @@ -7212,7 +7515,7 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.6.0 - vite: 4.4.8(@types/node@14.18.51) + vite: 4.4.9(@types/node@14.18.51) vite-node: 0.33.0(@types/node@14.18.51) why-is-node-running: 2.2.2 transitivePeerDependencies: diff --git a/sites/svelte.dev/package.json b/sites/svelte.dev/package.json index b74cb730bb..5e6fd4fcca 100644 --- a/sites/svelte.dev/package.json +++ b/sites/svelte.dev/package.json @@ -18,7 +18,7 @@ }, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", - "@supabase/supabase-js": "^2.31.0", + "@supabase/supabase-js": "^2.33.1", "@sveltejs/repl": "0.5.0", "cookie": "^0.5.0", "devalue": "^4.3.2", @@ -29,32 +29,32 @@ "devDependencies": { "@resvg/resvg-js": "^2.4.1", "@sveltejs/adapter-vercel": "^3.0.3", - "@sveltejs/kit": "^1.22.4", - "@sveltejs/site-kit": "6.0.0-next.25", - "@sveltejs/vite-plugin-svelte": "^2.4.3", + "@sveltejs/kit": "^1.22.6", + "@sveltejs/site-kit": "6.0.0-next.32", + "@sveltejs/vite-plugin-svelte": "^2.4.5", "@types/cookie": "^0.5.1", - "@types/node": "^20.4.7", + "@types/node": "^20.5.3", "browserslist": "^4.21.10", "degit": "^2.8.4", "dotenv": "^16.3.1", "jimp": "^0.22.10", - "lightningcss": "^1.21.5", - "magic-string": "^0.30.2", - "marked": "^6.0.0", - "prettier": "^3.0.1", + "lightningcss": "^1.21.7", + "magic-string": "^0.30.3", + "marked": "^7.0.4", + "prettier": "^3.0.2", "prettier-plugin-svelte": "^3.0.3", - "sass": "^1.64.2", - "satori": "^0.10.2", + "sass": "^1.66.1", + "satori": "^0.10.3", "satori-html": "^0.3.2", "shelljs": "^0.8.5", "shiki": "^0.14.3", "shiki-twoslash": "^3.1.2", "svelte": "workspace:*", - "svelte-check": "^3.4.6", + "svelte-check": "^3.5.0", "svelte-preprocess": "^5.0.4", "tiny-glob": "^0.2.9", "typescript": "^5.1.6", - "vite": "^4.4.8", - "vite-imagetools": "^5.0.7" + "vite": "^4.4.9", + "vite-imagetools": "^5.0.8" } } diff --git a/sites/svelte.dev/src/lib/server/docs/index.js b/sites/svelte.dev/src/lib/server/docs/index.js index 29457886ea..4a4f9d6e42 100644 --- a/sites/svelte.dev/src/lib/server/docs/index.js +++ b/sites/svelte.dev/src/lib/server/docs/index.js @@ -76,7 +76,7 @@ export async function get_docs_data(base = CONTENT_BASE_PATHS.DOCS) { slug: page_slug, content: page_content, category: category_title, - sections: get_sections(page_content), + sections: await get_sections(page_content), path: `${app_base}/docs/${page_slug}`, file: `${category_dir}/${filename}` }); @@ -99,9 +99,9 @@ export function get_docs_list(docs_data) { })); } -const titled = (str) => +const titled = async (str) => removeMarkdown( - escape(markedTransform(str, { paragraph: (txt) => txt })) + escape(await markedTransform(str, { paragraph: (txt) => txt })) .replace(/<\/?code>/g, '') .replace(/'/g, "'") .replace(/"/g, '"') @@ -111,7 +111,7 @@ const titled = (str) => ); /** @param {string} markdown */ -function get_sections(markdown) { +async function get_sections(markdown) { const lines = markdown.split('\n'); const root = /** @type {import('./types').Section} */ ({ title: 'Root', @@ -122,11 +122,11 @@ function get_sections(markdown) { }); let currentNodes = [root]; - lines.forEach((line) => { + for (const line of lines) { const match = line.match(/^(#{2,4})\s(.*)/); if (match) { const level = match[1].length - 2; - const text = titled(match[2]); + const text = await titled(match[2]); const slug = normalizeSlugify(text); // Prepare new node @@ -149,7 +149,7 @@ function get_sections(markdown) { // Add non-heading line to the text of the current section currentNodes[currentNodes.length - 1].text += line + '\n'; } - }); + } return root.sections; } diff --git a/sites/svelte.dev/src/routes/content.json/content.server.js b/sites/svelte.dev/src/routes/content.json/content.server.js index 5dc2355fda..162b115a16 100644 --- a/sites/svelte.dev/src/routes/content.json/content.server.js +++ b/sites/svelte.dev/src/routes/content.json/content.server.js @@ -47,7 +47,7 @@ export async function content() { blocks.push({ breadcrumbs: [...breadcrumbs, removeMarkdown(remove_TYPE(metadata.title) ?? '')], href: get_href([slug]), - content: plaintext(intro), + content: await plaintext(intro), rank }); @@ -67,7 +67,7 @@ export async function content() { remove_TYPE(removeMarkdown(h2)) ], href: get_href([slug, normalizeSlugify(h2)]), - content: plaintext(intro), + content: await plaintext(intro), rank }); @@ -83,7 +83,7 @@ export async function content() { removeMarkdown(remove_TYPE(h3)) ], href: get_href([slug, normalizeSlugify(h2) + '-' + normalizeSlugify(h3)]), - content: plaintext(lines.join('\n').trim()), + content: await plaintext(lines.join('\n').trim()), rank }); } @@ -99,37 +99,39 @@ function remove_TYPE(str) { } /** @param {string} markdown */ -function plaintext(markdown) { +async function plaintext(markdown) { /** @param {unknown} text */ const block = (text) => `${text}\n`; /** @param {string} text */ const inline = (text) => text; - return markedTransform(markdown, { - code: (source) => source.split('// ---cut---\n').pop(), - blockquote: block, - html: () => '\n', - heading: (text) => `${text}\n`, - hr: () => '', - list: block, - listitem: block, - checkbox: block, - paragraph: (text) => `${text}\n\n`, - table: block, - tablerow: block, - tablecell: (text, opts) => { - return text + ' '; - }, - strong: inline, - em: inline, - codespan: inline, - br: () => '', - del: inline, - link: (href, title, text) => text, - image: (href, title, text) => text, - text: inline - }) + return ( + await markedTransform(markdown, { + code: (source) => source.split('// ---cut---\n').pop(), + blockquote: block, + html: () => '\n', + heading: (text) => `${text}\n`, + hr: () => '', + list: block, + listitem: block, + checkbox: block, + paragraph: (text) => `${text}\n\n`, + table: block, + tablerow: block, + tablecell: (text, opts) => { + return text + ' '; + }, + strong: inline, + em: inline, + codespan: inline, + br: () => '', + del: inline, + link: (href, title, text) => text, + image: (href, title, text) => text, + text: inline + }) + ) .replace(/</g, '<') .replace(/>/g, '>') .replace(/&#(\d+);/g, (match, code) => { From 2f5d573a9d2861ed4283cad28b7aa1b73368fe6a Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 22 Aug 2023 12:02:09 -0700 Subject: [PATCH 14/65] site: preload fonts (#9132) Co-authored-by: Puru Vijay --- sites/svelte.dev/src/hooks.server.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 sites/svelte.dev/src/hooks.server.js diff --git a/sites/svelte.dev/src/hooks.server.js b/sites/svelte.dev/src/hooks.server.js new file mode 100644 index 0000000000..06ef665cfb --- /dev/null +++ b/sites/svelte.dev/src/hooks.server.js @@ -0,0 +1,6 @@ +/** @type {import('@sveltejs/kit').Handle} */ +export async function handle({ event, resolve }) { + return await resolve(event, { + preload: ({ type }) => type === 'js' || type === 'css' || type === 'font' + }); +} From 2d0738244e1eff84b62dc774421966a187802172 Mon Sep 17 00:00:00 2001 From: Paolo Ricciuti Date: Tue, 22 Aug 2023 21:22:21 +0200 Subject: [PATCH 15/65] feat: add vim mode to repl (#9135) * feat: add vim mode to repl * fix adding url search params --------- Co-authored-by: Puru Vijay --- pnpm-lock.yaml | 270 +++++++++--------- sites/svelte.dev/package.json | 2 +- .../src/routes/(authed)/repl/+page.js | 12 +- .../src/routes/(authed)/repl/[id]/+page.js | 18 ++ .../routes/(authed)/repl/[id]/+page.svelte | 3 + 5 files changed, 165 insertions(+), 140 deletions(-) create mode 100644 sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.js diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 570597454f..6e3f4dabbf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,7 +104,7 @@ importers: version: 15.1.0(rollup@3.26.2) '@sveltejs/eslint-config': specifier: ^6.0.4 - version: 6.0.4(@typescript-eslint/eslint-plugin@6.4.1)(@typescript-eslint/parser@6.4.1)(eslint-config-prettier@9.0.0)(eslint-plugin-svelte@2.33.0)(eslint-plugin-unicorn@48.0.1)(eslint@8.47.0)(typescript@5.1.3) + version: 6.0.4(@typescript-eslint/eslint-plugin@5.60.0)(@typescript-eslint/parser@6.4.1)(eslint-config-prettier@9.0.0)(eslint-plugin-svelte@2.33.0)(eslint-plugin-unicorn@47.0.0)(eslint@8.47.0)(typescript@5.1.3) '@types/aria-query': specifier: ^5.0.1 version: 5.0.1 @@ -157,8 +157,8 @@ importers: specifier: ^2.33.1 version: 2.33.1 '@sveltejs/repl': - specifier: 0.5.0 - version: 0.5.0(@codemirror/lang-html@6.4.5)(@codemirror/search@6.5.1)(@lezer/common@1.0.4)(@lezer/javascript@1.4.6)(@lezer/lr@1.3.10)(@sveltejs/kit@1.22.6)(svelte@packages+svelte) + specifier: 0.6.0 + version: 0.6.0(@codemirror/lang-html@6.4.5)(@codemirror/search@6.5.1)(@lezer/common@1.0.4)(@lezer/javascript@1.4.6)(@lezer/lr@1.3.10)(@sveltejs/kit@1.22.6)(svelte@packages+svelte) cookie: specifier: ^0.5.0 version: 0.5.0 @@ -499,7 +499,7 @@ packages: prettier: 2.8.8 dev: true - /@codemirror/autocomplete@6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.3): + /@codemirror/autocomplete@6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4): resolution: {integrity: sha512-HpphvDcTdOx+9R3eUw9hZK9JA77jlaBF0kOt2McbyfvY0rX9pnMoO8rkkZc0GzSbzhIY4m5xJ0uHHgjfqHNmXQ==} peerDependencies: '@codemirror/language': ^6.0.0 @@ -509,21 +509,7 @@ packages: dependencies: '@codemirror/language': 6.8.0 '@codemirror/state': 6.2.1 - '@codemirror/view': 6.14.1 - '@lezer/common': 1.0.3 - dev: false - - /@codemirror/autocomplete@6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4): - resolution: {integrity: sha512-HpphvDcTdOx+9R3eUw9hZK9JA77jlaBF0kOt2McbyfvY0rX9pnMoO8rkkZc0GzSbzhIY4m5xJ0uHHgjfqHNmXQ==} - peerDependencies: - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 - '@lezer/common': ^1.0.0 - dependencies: - '@codemirror/language': 6.8.0 - '@codemirror/state': 6.2.1 - '@codemirror/view': 6.14.1 + '@codemirror/view': 6.16.0 '@lezer/common': 1.0.4 dev: false @@ -532,17 +518,17 @@ packages: dependencies: '@codemirror/language': 6.8.0 '@codemirror/state': 6.2.1 - '@codemirror/view': 6.14.1 - '@lezer/common': 1.0.3 + '@codemirror/view': 6.16.0 + '@lezer/common': 1.0.4 dev: false - /@codemirror/lang-css@6.2.0(@codemirror/view@6.14.1): + /@codemirror/lang-css@6.2.0(@codemirror/view@6.16.0): resolution: {integrity: sha512-oyIdJM29AyRPM3+PPq1I2oIk8NpUfEN3kAM05XWDDs6o3gSneIKaVJifT2P+fqONLou2uIgXynFyMUDQvo/szA==} dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.3) + '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) '@codemirror/language': 6.8.0 '@codemirror/state': 6.2.1 - '@lezer/common': 1.0.3 + '@lezer/common': 1.0.4 '@lezer/css': 1.1.3 transitivePeerDependencies: - '@codemirror/view' @@ -551,13 +537,13 @@ packages: /@codemirror/lang-html@6.4.5: resolution: {integrity: sha512-dUCSxkIw2G+chaUfw3Gfu5kkN83vJQN8gfQDp9iEHsIZluMJA0YJveT12zg/28BJx+uPsbQ6VimKCgx3oJrZxA==} dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.3) - '@codemirror/lang-css': 6.2.0(@codemirror/view@6.14.1) + '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) + '@codemirror/lang-css': 6.2.0(@codemirror/view@6.16.0) '@codemirror/lang-javascript': 6.1.9 '@codemirror/language': 6.8.0 '@codemirror/state': 6.2.1 - '@codemirror/view': 6.14.1 - '@lezer/common': 1.0.3 + '@codemirror/view': 6.16.0 + '@lezer/common': 1.0.4 '@lezer/css': 1.1.3 '@lezer/html': 1.3.6 dev: false @@ -565,13 +551,13 @@ packages: /@codemirror/lang-javascript@6.1.9: resolution: {integrity: sha512-z3jdkcqOEBT2txn2a87A0jSy6Te3679wg/U8QzMeftFt+4KA6QooMwfdFzJiuC3L6fXKfTXZcDocoaxMYfGz0w==} dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.3) + '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) '@codemirror/language': 6.8.0 '@codemirror/lint': 6.4.0 '@codemirror/state': 6.2.1 - '@codemirror/view': 6.14.1 - '@lezer/common': 1.0.3 - '@lezer/javascript': 1.4.4 + '@codemirror/view': 6.16.0 + '@lezer/common': 1.0.4 + '@lezer/javascript': 1.4.6 dev: false /@codemirror/lang-json@6.0.1: @@ -584,12 +570,12 @@ packages: /@codemirror/lang-markdown@6.2.0: resolution: {integrity: sha512-deKegEQVzfBAcLPqsJEa+IxotqPVwWZi90UOEvQbfa01NTAw8jNinrykuYPTULGUj+gha0ZG2HBsn4s5d64Qrg==} dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.3) + '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) '@codemirror/lang-html': 6.4.5 '@codemirror/language': 6.8.0 '@codemirror/state': 6.2.1 - '@codemirror/view': 6.14.1 - '@lezer/common': 1.0.3 + '@codemirror/view': 6.16.0 + '@lezer/common': 1.0.4 '@lezer/markdown': 1.0.5 dev: false @@ -597,26 +583,18 @@ packages: resolution: {integrity: sha512-r1paAyWOZkfY0RaYEZj3Kul+MiQTEbDvYqf8gPGaRvNneHXCmfSaAVFjwRUPlgxS8yflMxw2CTu6uCMp8R8A2g==} dependencies: '@codemirror/state': 6.2.1 - '@codemirror/view': 6.14.1 - '@lezer/common': 1.0.3 + '@codemirror/view': 6.16.0 + '@lezer/common': 1.0.4 '@lezer/highlight': 1.1.6 - '@lezer/lr': 1.3.9 - style-mod: 4.0.3 + '@lezer/lr': 1.3.10 + style-mod: 4.1.0 dev: false /@codemirror/lint@6.4.0: resolution: {integrity: sha512-6VZ44Ysh/Zn07xrGkdtNfmHCbGSHZzFBdzWi0pbd7chAQ/iUcpLGX99NYRZTa7Ugqg4kEHCqiHhcZnH0gLIgSg==} dependencies: '@codemirror/state': 6.2.1 - '@codemirror/view': 6.14.1 - crelt: 1.0.6 - dev: false - - /@codemirror/search@6.5.0: - resolution: {integrity: sha512-64/M40YeJPToKvGO6p3fijo2vwUEj4nACEAXElCaYQ50HrXSvRaK+NHEhSh73WFBGdvIdhrV+lL9PdJy2RfCYA==} - dependencies: - '@codemirror/state': 6.2.1 - '@codemirror/view': 6.14.1 + '@codemirror/view': 6.16.0 crelt: 1.0.6 dev: false @@ -632,14 +610,6 @@ packages: resolution: {integrity: sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==} dev: false - /@codemirror/view@6.14.1: - resolution: {integrity: sha512-ofcsI7lRFo4N0rfnd+V3Gh2boQU3DmaaSKhDOvXUWjeOeuupMXer2e/3i9TUFN7aEIntv300EFBWPEiYVm2svg==} - dependencies: - '@codemirror/state': 6.2.1 - style-mod: 4.0.3 - w3c-keyname: 2.2.8 - dev: false - /@codemirror/view@6.16.0: resolution: {integrity: sha512-1Z2HkvkC3KR/oEZVuW9Ivmp8TWLzGEd8T8TA04TTwPvqogfkHBdYSlflytDOqmkUxM2d1ywTg7X2dU5mC+SXvg==} dependencies: @@ -1714,10 +1684,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@lezer/common@1.0.3: - resolution: {integrity: sha512-JH4wAXCgUOcCGNekQPLhVeUtIqjH0yPBs7vvUdSjyQama9618IOKFJwkv2kcqdhF0my8hQEgCTEJU0GIgnahvA==} - dev: false - /@lezer/common@1.0.4: resolution: {integrity: sha512-lZHlk8p67x4aIDtJl6UQrXSOP6oi7dQR3W/geFVrENdA1JDaAJWldnVqVjPMJupbTKbzDfFcePfKttqVidS/dg==} dev: false @@ -1726,28 +1692,21 @@ packages: resolution: {integrity: sha512-SjSM4pkQnQdJDVc80LYzEaMiNy9txsFbI7HsMgeVF28NdLaAdHNtQ+kB/QqDUzRBV/75NTXjJ/R5IdC8QQGxMg==} dependencies: '@lezer/highlight': 1.1.6 - '@lezer/lr': 1.3.9 + '@lezer/lr': 1.3.10 dev: false /@lezer/highlight@1.1.6: resolution: {integrity: sha512-cmSJYa2us+r3SePpRCjN5ymCqCPv+zyXmDl0ciWtVaNiORT/MxM7ZgOMQZADD0o51qOaOg24qc/zBViOIwAjJg==} dependencies: - '@lezer/common': 1.0.3 + '@lezer/common': 1.0.4 dev: false /@lezer/html@1.3.6: resolution: {integrity: sha512-Kk9HJARZTc0bAnMQUqbtuhFVsB4AnteR2BFUWfZV7L/x1H0aAKz6YabrfJ2gk/BEgjh9L3hg5O4y2IDZRBdzuQ==} dependencies: - '@lezer/common': 1.0.3 - '@lezer/highlight': 1.1.6 - '@lezer/lr': 1.3.9 - dev: false - - /@lezer/javascript@1.4.4: - resolution: {integrity: sha512-0BiBjpEcrt2IXrIzEAsdTLylrVhGHRqVQL3baTBx1sf4qewjIvhG1/pTUumu7W/7YR0AASjLQOQxFmo5EvNmzQ==} - dependencies: + '@lezer/common': 1.0.4 '@lezer/highlight': 1.1.6 - '@lezer/lr': 1.3.9 + '@lezer/lr': 1.3.10 dev: false /@lezer/javascript@1.4.6: @@ -1761,7 +1720,7 @@ packages: resolution: {integrity: sha512-nkVC27qiEZEjySbi6gQRuMwa2sDu2PtfjSgz0A4QF81QyRGm3kb2YRzLcOPcTEtmcwvrX/cej7mlhbwViA4WJw==} dependencies: '@lezer/highlight': 1.1.6 - '@lezer/lr': 1.3.9 + '@lezer/lr': 1.3.10 dev: false /@lezer/lr@1.3.10: @@ -1770,16 +1729,10 @@ packages: '@lezer/common': 1.0.4 dev: false - /@lezer/lr@1.3.9: - resolution: {integrity: sha512-XPz6dzuTHlnsbA5M2DZgjflNQ+9Hi5Swhic0RULdp3oOs3rh6bqGZolosVqN/fQIT8uNiepzINJDnS39oweTHQ==} - dependencies: - '@lezer/common': 1.0.3 - dev: false - /@lezer/markdown@1.0.5: resolution: {integrity: sha512-J0LRA0l21Ec6ZroaOxjxsWWm+swCOFHcnOU85Z7aH9nj3eJx5ORmtzVkWzs9e21SZrdvyIzM1gt+YF/HnqbvnA==} dependencies: - '@lezer/common': 1.0.3 + '@lezer/common': 1.0.4 '@lezer/highlight': 1.1.6 dev: false @@ -1821,7 +1774,7 @@ packages: - supports-color dev: true - /@neocodemirror/svelte@0.0.15(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.4.0)(@codemirror/search@6.5.1)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1): + /@neocodemirror/svelte@0.0.15(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.4.0)(@codemirror/search@6.5.1)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0): resolution: {integrity: sha512-MCux+QCR40CboJu/TFwnqK7gYQ3fvtvHX8F/mk85DRH7vMoG3VDjJhqneAITX5IzohWKeP36hzcV+oHC2LYJqA==} peerDependencies: '@codemirror/autocomplete': ^6.7.1 @@ -1832,13 +1785,13 @@ packages: '@codemirror/state': ^6.2.0 '@codemirror/view': ^6.12.0 dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4) + '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) '@codemirror/commands': 6.2.4 '@codemirror/language': 6.8.0 '@codemirror/lint': 6.4.0 '@codemirror/search': 6.5.1 '@codemirror/state': 6.2.1 - '@codemirror/view': 6.14.1 + '@codemirror/view': 6.16.0 csstype: 3.1.2 nanostores: 0.8.1 dev: false @@ -1878,7 +1831,7 @@ packages: /@polka/url@1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} - /@replit/codemirror-lang-svelte@6.0.0(@codemirror/autocomplete@6.8.1)(@codemirror/lang-css@6.2.0)(@codemirror/lang-html@6.4.5)(@codemirror/lang-javascript@6.1.9)(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4)(@lezer/highlight@1.1.6)(@lezer/javascript@1.4.6)(@lezer/lr@1.3.10): + /@replit/codemirror-lang-svelte@6.0.0(@codemirror/autocomplete@6.8.1)(@codemirror/lang-css@6.2.0)(@codemirror/lang-html@6.4.5)(@codemirror/lang-javascript@6.1.9)(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4)(@lezer/highlight@1.1.6)(@lezer/javascript@1.4.6)(@lezer/lr@1.3.10): resolution: {integrity: sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==} peerDependencies: '@codemirror/autocomplete': ^6.0.0 @@ -1893,19 +1846,35 @@ packages: '@lezer/javascript': ^1.2.0 '@lezer/lr': ^1.0.0 dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4) - '@codemirror/lang-css': 6.2.0(@codemirror/view@6.14.1) + '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) + '@codemirror/lang-css': 6.2.0(@codemirror/view@6.16.0) '@codemirror/lang-html': 6.4.5 '@codemirror/lang-javascript': 6.1.9 '@codemirror/language': 6.8.0 '@codemirror/state': 6.2.1 - '@codemirror/view': 6.14.1 + '@codemirror/view': 6.16.0 '@lezer/common': 1.0.4 '@lezer/highlight': 1.1.6 '@lezer/javascript': 1.4.6 '@lezer/lr': 1.3.10 dev: false + /@replit/codemirror-vim@6.0.14(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/search@6.5.1)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0): + resolution: {integrity: sha512-wwhqhvL76FdRTdwfUWpKCbv0hkp2fvivfMosDVlL/popqOiNLtUhL02ThgHZH8mus/NkVr5Mj582lyFZqQrjOA==} + peerDependencies: + '@codemirror/commands': ^6.0.0 + '@codemirror/language': ^6.1.0 + '@codemirror/search': ^6.2.0 + '@codemirror/state': ^6.0.1 + '@codemirror/view': ^6.0.3 + dependencies: + '@codemirror/commands': 6.2.4 + '@codemirror/language': 6.8.0 + '@codemirror/search': 6.5.1 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.16.0 + dev: false + /@resvg/resvg-js-android-arm-eabi@2.4.1: resolution: {integrity: sha512-AA6f7hS0FAPpvQMhBCf6f1oD1LdlqNXKCxAAPpKh6tR11kqV0YIB9zOlIYgITM14mq2YooLFl6XIbbvmY+jwUw==} engines: {node: '>= 10'} @@ -2224,7 +2193,7 @@ packages: - supports-color dev: true - /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@6.4.1)(@typescript-eslint/parser@6.4.1)(eslint-config-prettier@9.0.0)(eslint-plugin-svelte@2.33.0)(eslint-plugin-unicorn@48.0.1)(eslint@8.47.0)(typescript@5.1.3): + /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@5.60.0)(@typescript-eslint/parser@6.4.1)(eslint-config-prettier@9.0.0)(eslint-plugin-svelte@2.33.0)(eslint-plugin-unicorn@47.0.0)(eslint@8.47.0)(typescript@5.1.3): resolution: {integrity: sha512-U9pwmDs+DbmsnCgTfu6Bacdwqn0DuI1IQNSiQqTgzVyYfaaj+zy9ZoQCiJfxFBGXHkklyXuRHp0KMx346N0lcQ==} peerDependencies: '@typescript-eslint/eslint-plugin': '>= 5' @@ -2235,12 +2204,12 @@ packages: eslint-plugin-unicorn: '>= 47' typescript: '>= 4' dependencies: - '@typescript-eslint/eslint-plugin': 6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)(typescript@5.1.3) + '@typescript-eslint/eslint-plugin': 5.60.0(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)(typescript@5.1.3) '@typescript-eslint/parser': 6.4.1(eslint@8.47.0)(typescript@5.1.3) eslint: 8.47.0 eslint-config-prettier: 9.0.0(eslint@8.47.0) eslint-plugin-svelte: 2.33.0(eslint@8.47.0)(svelte@packages+svelte) - eslint-plugin-unicorn: 48.0.1(eslint@8.47.0) + eslint-plugin-unicorn: 47.0.0(eslint@8.47.0) typescript: 5.1.3 dev: true @@ -2270,25 +2239,26 @@ packages: transitivePeerDependencies: - supports-color - /@sveltejs/repl@0.5.0(@codemirror/lang-html@6.4.5)(@codemirror/search@6.5.1)(@lezer/common@1.0.4)(@lezer/javascript@1.4.6)(@lezer/lr@1.3.10)(@sveltejs/kit@1.22.6)(svelte@packages+svelte): - resolution: {integrity: sha512-SyrMn3moP74PY7OtQONom9X53SYREQ7p8CEgspeNK0VG9AYUWc2UPvDDRAHTK94TC7GoNWgOafDw04HJGrOl2g==} + /@sveltejs/repl@0.6.0(@codemirror/lang-html@6.4.5)(@codemirror/search@6.5.1)(@lezer/common@1.0.4)(@lezer/javascript@1.4.6)(@lezer/lr@1.3.10)(@sveltejs/kit@1.22.6)(svelte@packages+svelte): + resolution: {integrity: sha512-NADKN0NZhLlSatTSh5CCsdzgf2KHJFRef/8krA/TVWAWos5kSwmZ5fF0UImuqs61Pu/SiMXksaWNTGTiOtr4fQ==} peerDependencies: svelte: ^3.54.0 || ^4.0.0-next.0 || ^4.0.0 dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4) + '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) '@codemirror/commands': 6.2.4 - '@codemirror/lang-css': 6.2.0(@codemirror/view@6.14.1) + '@codemirror/lang-css': 6.2.0(@codemirror/view@6.16.0) '@codemirror/lang-javascript': 6.1.9 '@codemirror/lang-json': 6.0.1 '@codemirror/lang-markdown': 6.2.0 '@codemirror/language': 6.8.0 '@codemirror/lint': 6.4.0 '@codemirror/state': 6.2.1 - '@codemirror/view': 6.14.1 + '@codemirror/view': 6.16.0 '@jridgewell/sourcemap-codec': 1.4.15 '@lezer/highlight': 1.1.6 - '@neocodemirror/svelte': 0.0.15(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.4.0)(@codemirror/search@6.5.1)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1) - '@replit/codemirror-lang-svelte': 6.0.0(@codemirror/autocomplete@6.8.1)(@codemirror/lang-css@6.2.0)(@codemirror/lang-html@6.4.5)(@codemirror/lang-javascript@6.1.9)(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4)(@lezer/highlight@1.1.6)(@lezer/javascript@1.4.6)(@lezer/lr@1.3.10) + '@neocodemirror/svelte': 0.0.15(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.4.0)(@codemirror/search@6.5.1)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0) + '@replit/codemirror-lang-svelte': 6.0.0(@codemirror/autocomplete@6.8.1)(@codemirror/lang-css@6.2.0)(@codemirror/lang-html@6.4.5)(@codemirror/lang-javascript@6.1.9)(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4)(@lezer/highlight@1.1.6)(@lezer/javascript@1.4.6)(@lezer/lr@1.3.10) + '@replit/codemirror-vim': 6.0.14(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/search@6.5.1)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0) '@rich_harris/svelte-split-pane': 1.1.1(svelte@packages+svelte) '@rollup/browser': 3.26.2 '@sveltejs/site-kit': 5.2.2(@sveltejs/kit@1.22.6)(svelte@packages+svelte) @@ -2493,30 +2463,29 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)(typescript@5.1.3): - resolution: {integrity: sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/eslint-plugin@5.60.0(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)(typescript@5.1.3): + resolution: {integrity: sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.7.0 + '@eslint-community/regexpp': 4.5.1 '@typescript-eslint/parser': 6.4.1(eslint@8.47.0)(typescript@5.1.3) - '@typescript-eslint/scope-manager': 6.4.1 - '@typescript-eslint/type-utils': 6.4.1(eslint@8.47.0)(typescript@5.1.3) - '@typescript-eslint/utils': 6.4.1(eslint@8.47.0)(typescript@5.1.3) - '@typescript-eslint/visitor-keys': 6.4.1 + '@typescript-eslint/scope-manager': 5.60.0 + '@typescript-eslint/type-utils': 5.60.0(eslint@8.47.0)(typescript@5.1.3) + '@typescript-eslint/utils': 5.60.0(eslint@8.47.0)(typescript@5.1.3) debug: 4.3.4 eslint: 8.47.0 - graphemer: 1.4.0 + grapheme-splitter: 1.0.4 ignore: 5.2.4 - natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@5.1.3) + natural-compare-lite: 1.4.0 + semver: 7.5.3 + tsutils: 3.21.0(typescript@5.1.3) typescript: 5.1.3 transitivePeerDependencies: - supports-color @@ -2607,21 +2576,21 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@6.4.1(eslint@8.47.0)(typescript@5.1.3): - resolution: {integrity: sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/type-utils@5.60.0(eslint@8.47.0)(typescript@5.1.3): + resolution: {integrity: sha512-X7NsRQddORMYRFH7FWo6sA9Y/zbJ8s1x1RIAtnlj6YprbToTiQnM6vxcMu7iYhdunmoC0rUWlca13D5DVHkK2g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: '*' typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.1.3) - '@typescript-eslint/utils': 6.4.1(eslint@8.47.0)(typescript@5.1.3) + '@typescript-eslint/typescript-estree': 5.60.0(typescript@5.1.3) + '@typescript-eslint/utils': 5.60.0(eslint@8.47.0)(typescript@5.1.3) debug: 4.3.4 eslint: 8.47.0 - ts-api-utils: 1.0.2(typescript@5.1.3) + tsutils: 3.21.0(typescript@5.1.3) typescript: 5.1.3 transitivePeerDependencies: - supports-color @@ -2642,6 +2611,27 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true + /@typescript-eslint/typescript-estree@5.60.0(typescript@5.1.3): + resolution: {integrity: sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.60.0 + '@typescript-eslint/visitor-keys': 5.60.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.3 + tsutils: 3.21.0(typescript@5.1.3) + typescript: 5.1.3 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/typescript-estree@5.60.0(typescript@5.1.6): resolution: {integrity: sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2725,20 +2715,21 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.4.1(eslint@8.47.0)(typescript@5.1.3): - resolution: {integrity: sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/utils@5.60.0(eslint@8.47.0)(typescript@5.1.3): + resolution: {integrity: sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.4.1 - '@typescript-eslint/types': 6.4.1 - '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.1.3) + '@typescript-eslint/scope-manager': 5.60.0 + '@typescript-eslint/types': 5.60.0 + '@typescript-eslint/typescript-estree': 5.60.0(typescript@5.1.3) eslint: 8.47.0 - semver: 7.5.4 + eslint-scope: 5.1.1 + semver: 7.5.3 transitivePeerDependencies: - supports-color - typescript @@ -3312,13 +3303,13 @@ packages: /codemirror@6.0.1(@lezer/common@1.0.4): resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.1)(@lezer/common@1.0.4) + '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) '@codemirror/commands': 6.2.4 '@codemirror/language': 6.8.0 '@codemirror/lint': 6.4.0 - '@codemirror/search': 6.5.0 + '@codemirror/search': 6.5.1 '@codemirror/state': 6.2.1 - '@codemirror/view': 6.14.1 + '@codemirror/view': 6.16.0 transitivePeerDependencies: - '@lezer/common' dev: false @@ -4021,11 +4012,11 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-unicorn@48.0.1(eslint@8.47.0): - resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} + /eslint-plugin-unicorn@47.0.0(eslint@8.47.0): + resolution: {integrity: sha512-ivB3bKk7fDIeWOUmmMm9o3Ax9zbMz1Bsza/R2qm46ufw4T6VBFBaJIR1uN3pCKSmSXm8/9Nri8V+iUut1NhQGA==} engines: {node: '>=16'} peerDependencies: - eslint: '>=8.44.0' + eslint: '>=8.38.0' dependencies: '@babel/helper-validator-identifier': 7.22.5 '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) @@ -4041,7 +4032,8 @@ packages: read-pkg-up: 7.0.1 regexp-tree: 0.1.27 regjsparser: 0.10.0 - semver: 7.5.4 + safe-regex: 2.1.1 + semver: 7.5.3 strip-indent: 3.0.0 dev: true @@ -6816,10 +6808,6 @@ packages: peek-readable: 4.1.0 dev: true - /style-mod@4.0.3: - resolution: {integrity: sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw==} - dev: false - /style-mod@4.1.0: resolution: {integrity: sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==} dev: false @@ -7153,6 +7141,16 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true + /tsutils@3.21.0(typescript@5.1.3): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.1.3 + dev: true + /tsutils@3.21.0(typescript@5.1.6): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} diff --git a/sites/svelte.dev/package.json b/sites/svelte.dev/package.json index 5e6fd4fcca..28c8d0e23c 100644 --- a/sites/svelte.dev/package.json +++ b/sites/svelte.dev/package.json @@ -19,7 +19,7 @@ "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "@supabase/supabase-js": "^2.33.1", - "@sveltejs/repl": "0.5.0", + "@sveltejs/repl": "0.6.0", "cookie": "^0.5.0", "devalue": "^4.3.2", "do-not-zip": "^1.0.0", diff --git a/sites/svelte.dev/src/routes/(authed)/repl/+page.js b/sites/svelte.dev/src/routes/(authed)/repl/+page.js index 4a98d35911..12eff1cdd3 100644 --- a/sites/svelte.dev/src/routes/(authed)/repl/+page.js +++ b/sites/svelte.dev/src/routes/(authed)/repl/+page.js @@ -5,6 +5,7 @@ export function load({ url }) { const gist = query.get('gist'); const example = query.get('example'); const version = query.get('version'); + const vim = query.get('vim'); // redirect to v2 REPL if appropriate if (/^[^>]?[12]/.test(version)) { @@ -12,7 +13,12 @@ export function load({ url }) { } const id = gist || example || 'hello-world'; - const q = version ? `?version=${version}` : ``; - - throw redirect(301, `/repl/${id}${q}`); + // we need to filter out null values + const q = new URLSearchParams( + Object.entries({ + version, + vim + }).filter(([, value]) => value !== null) + ).toString(); + throw redirect(301, `/repl/${id}?${q}`); } diff --git a/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.js b/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.js new file mode 100644 index 0000000000..b130a6663c --- /dev/null +++ b/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.js @@ -0,0 +1,18 @@ +import { browser } from '$app/environment'; + +export function load({ data, url }) { + // initialize vim with the search param + const vim_search_params = url.searchParams.get('vim'); + let vim = vim_search_params !== null && vim_search_params !== 'false'; + // when in the browser check if there's a local storage entry and eventually override + // vim if there's not a search params otherwise update the local storage + if (browser) { + const vim_local_storage = window.localStorage.getItem('svelte:vim-enabled'); + if (vim_search_params !== null) { + window.localStorage.setItem('svelte:vim-enabled', vim.toString()); + } else if (vim_local_storage) { + vim = vim_local_storage !== 'false'; + } + } + return { ...data, vim }; +} diff --git a/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.svelte b/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.svelte index 47fdc9bab7..61d559b452 100644 --- a/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.svelte +++ b/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.svelte @@ -61,6 +61,8 @@ : `https://unpkg.com/svelte@${version}`; $: relaxed = data.gist.relaxed || (data.user && data.user.id === data.gist.owner); + + $: vim = data.vim; @@ -87,6 +89,7 @@ bind:this={repl} {svelteUrl} {relaxed} + {vim} injectedJS={mapbox_setup} showModified showAst From 3d3680cd11ac747d227ed46a4db4dbc4f9ecffc9 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 22 Aug 2023 15:00:33 -0700 Subject: [PATCH 16/65] chore: move playground (#9131) --- .../basic}/.gitignore | 0 .../basic}/README.md | 0 .../basic}/compile.js | 0 .../basic}/jsconfig.json | 0 .../basic}/package.json | 0 .../basic}/src/App.svelte | 0 .../basic}/src/entry-client.js | 0 .../basic}/src/entry-server.js | 0 .../basic}/src/lib/Counter.svelte | 0 .../basic}/src/template.html | 0 .../playground => playgrounds/basic}/start.js | 0 pnpm-lock.yaml | 40 ++++++++----------- pnpm-workspace.yaml | 3 +- 13 files changed, 18 insertions(+), 25 deletions(-) rename {packages/playground => playgrounds/basic}/.gitignore (100%) rename {packages/playground => playgrounds/basic}/README.md (100%) rename {packages/playground => playgrounds/basic}/compile.js (100%) rename {packages/playground => playgrounds/basic}/jsconfig.json (100%) rename {packages/playground => playgrounds/basic}/package.json (100%) rename {packages/playground => playgrounds/basic}/src/App.svelte (100%) rename {packages/playground => playgrounds/basic}/src/entry-client.js (100%) rename {packages/playground => playgrounds/basic}/src/entry-server.js (100%) rename {packages/playground => playgrounds/basic}/src/lib/Counter.svelte (100%) rename {packages/playground => playgrounds/basic}/src/template.html (100%) rename {packages/playground => playgrounds/basic}/start.js (100%) diff --git a/packages/playground/.gitignore b/playgrounds/basic/.gitignore similarity index 100% rename from packages/playground/.gitignore rename to playgrounds/basic/.gitignore diff --git a/packages/playground/README.md b/playgrounds/basic/README.md similarity index 100% rename from packages/playground/README.md rename to playgrounds/basic/README.md diff --git a/packages/playground/compile.js b/playgrounds/basic/compile.js similarity index 100% rename from packages/playground/compile.js rename to playgrounds/basic/compile.js diff --git a/packages/playground/jsconfig.json b/playgrounds/basic/jsconfig.json similarity index 100% rename from packages/playground/jsconfig.json rename to playgrounds/basic/jsconfig.json diff --git a/packages/playground/package.json b/playgrounds/basic/package.json similarity index 100% rename from packages/playground/package.json rename to playgrounds/basic/package.json diff --git a/packages/playground/src/App.svelte b/playgrounds/basic/src/App.svelte similarity index 100% rename from packages/playground/src/App.svelte rename to playgrounds/basic/src/App.svelte diff --git a/packages/playground/src/entry-client.js b/playgrounds/basic/src/entry-client.js similarity index 100% rename from packages/playground/src/entry-client.js rename to playgrounds/basic/src/entry-client.js diff --git a/packages/playground/src/entry-server.js b/playgrounds/basic/src/entry-server.js similarity index 100% rename from packages/playground/src/entry-server.js rename to playgrounds/basic/src/entry-server.js diff --git a/packages/playground/src/lib/Counter.svelte b/playgrounds/basic/src/lib/Counter.svelte similarity index 100% rename from packages/playground/src/lib/Counter.svelte rename to playgrounds/basic/src/lib/Counter.svelte diff --git a/packages/playground/src/template.html b/playgrounds/basic/src/template.html similarity index 100% rename from packages/playground/src/template.html rename to playgrounds/basic/src/template.html diff --git a/packages/playground/start.js b/playgrounds/basic/start.js similarity index 100% rename from packages/playground/start.js rename to playgrounds/basic/start.js diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6e3f4dabbf..e73d479834 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,18 +36,6 @@ importers: specifier: ^2.10.1 version: 2.10.1(prettier@2.8.8)(svelte@packages+svelte) - packages/playground: - devDependencies: - rollup: - specifier: ^3.25.1 - version: 3.25.1 - rollup-plugin-serve: - specifier: ^2.0.2 - version: 2.0.2 - svelte: - specifier: workspace:* - version: link:../svelte - packages/svelte: dependencies: '@ampproject/remapping': @@ -148,6 +136,18 @@ importers: specifier: ^0.33.0 version: 0.33.0(happy-dom@9.20.3)(jsdom@21.1.2)(playwright@1.35.1) + playgrounds/basic: + devDependencies: + rollup: + specifier: ^3.25.1 + version: 3.26.2 + rollup-plugin-serve: + specifier: ^2.0.2 + version: 2.0.2 + svelte: + specifier: workspace:* + version: link:../../packages/svelte + sites/svelte.dev: dependencies: '@jridgewell/sourcemap-codec': @@ -2062,7 +2062,7 @@ packages: rollup: 3.26.2 dev: true - /@rollup/plugin-virtual@3.0.1(rollup@3.26.2): + /@rollup/plugin-virtual@3.0.1(rollup@3.28.0): resolution: {integrity: sha512-fK8O0IL5+q+GrsMLuACVNk2x21g3yaw+sG2qn16SnUd3IlBsQyvWxLMGHmCmXRMecPjGRSZ/1LmZB4rjQm68og==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2071,7 +2071,7 @@ packages: rollup: optional: true dependencies: - rollup: 3.26.2 + rollup: 3.28.0 dev: true /@rollup/pluginutils@4.2.1: @@ -2894,9 +2894,9 @@ packages: resolution: {integrity: sha512-gq+fjT3Ilrhb88Jf+vYMjdO/+3znYfa7vJ4IMLPFsBPUxglnr40Ed3yCLrW6IABdJAedB94b2BkqR6I04lh3dg==} hasBin: true dependencies: - '@rollup/plugin-virtual': 3.0.1(rollup@3.26.2) + '@rollup/plugin-virtual': 3.0.1(rollup@3.28.0) acorn: 8.9.0 - rollup: 3.26.2 + rollup: 3.28.0 dev: true /agent-base@6.0.2: @@ -6352,14 +6352,6 @@ packages: opener: 1.5.2 dev: true - /rollup@3.25.1: - resolution: {integrity: sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true - /rollup@3.26.2: resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c8e214f996..c73122314a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ packages: - - 'sites/*' - 'packages/*' + - 'playgrounds/*' + - 'sites/*' From d6f09814523a8aace7dcbb44bd5d2cf07ac7de54 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Wed, 23 Aug 2023 02:11:17 -0700 Subject: [PATCH 17/65] site: turn off edge serving for REPL (#9136) Our core web vitals have really taken a hit since enabling edge serving. I ran various configs against pagespeed.web.dev and the traditional serverless functions do the best. That's at least partially because I believe serverless functions default to running in us-east-1 where our supabase instance is located. Therefore try going back to Serverless for a while to see the impact. --- sites/svelte.dev/src/routes/(authed)/+layout.server.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sites/svelte.dev/src/routes/(authed)/+layout.server.js b/sites/svelte.dev/src/routes/(authed)/+layout.server.js index 6271b50b3b..98ebf9dff7 100644 --- a/sites/svelte.dev/src/routes/(authed)/+layout.server.js +++ b/sites/svelte.dev/src/routes/(authed)/+layout.server.js @@ -2,9 +2,7 @@ import * as session from '$lib/db/session'; /** @type {import('@sveltejs/adapter-vercel').Config} */ export const config = { - // regions: ['pdx1', 'sfo1', 'cle1', 'iad1'], - regions: 'all', - runtime: 'edge' + runtime: 'nodejs18.x' // see https://github.com/sveltejs/svelte/pull/9136 }; export async function load({ request }) { From 3c9e661f4a19740b717c9d0de90c1612548d7f84 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 24 Aug 2023 00:01:20 -0700 Subject: [PATCH 18/65] fix: update paths for playground (#9139) --- playgrounds/basic/start.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/playgrounds/basic/start.js b/playgrounds/basic/start.js index ace479ac9f..6cdcfb623a 100644 --- a/playgrounds/basic/start.js +++ b/playgrounds/basic/start.js @@ -3,9 +3,10 @@ import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { watch } from 'rollup'; import serve from 'rollup-plugin-serve'; -import * as svelte from '../svelte/src/compiler/index.js'; +import * as svelte from '../../packages/svelte/src/compiler/index.js'; const __dirname = fileURLToPath(new URL('.', import.meta.url)); +const runtime_path = path.resolve(__dirname, '../../packages/svelte/src/runtime'); /** @returns {import('rollup').Plugin}*/ function create_plugin(ssr = false) { @@ -13,12 +14,9 @@ function create_plugin(ssr = false) { name: 'custom-svelte-ssr-' + ssr, resolveId(id) { if (id === 'svelte') { - return path.resolve( - __dirname, - ssr ? '../svelte/src/runtime/ssr.js' : '../svelte/src/runtime/index.js' - ); + return path.resolve(runtime_path, ssr ? 'ssr.js' : 'index.js'); } else if (id.startsWith('svelte/')) { - return path.resolve(__dirname, `../svelte/src/runtime/${id.slice(7)}/index.js`); + return path.resolve(runtime_path, `${id.slice(7)}/index.js`); } }, transform(code, id) { From bd64f07e985d827b8d475f54e1377a77c2f17677 Mon Sep 17 00:00:00 2001 From: Teo Date: Thu, 24 Aug 2023 17:17:39 +0300 Subject: [PATCH 19/65] fix: take custom attribute name into account when reflecting property (#9140) fixes #9134 --- .changeset/tame-tomatoes-warn.md | 5 ++++ .../svelte/src/runtime/internal/Component.js | 2 +- .../reflect-attributes-add-remove/main.svelte | 23 +++++++++++++++++++ .../reflect-attributes-add-remove/test.js | 19 +++++++++++++++ 4 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 .changeset/tame-tomatoes-warn.md create mode 100644 packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes-add-remove/main.svelte create mode 100644 packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes-add-remove/test.js diff --git a/.changeset/tame-tomatoes-warn.md b/.changeset/tame-tomatoes-warn.md new file mode 100644 index 0000000000..eafba88208 --- /dev/null +++ b/.changeset/tame-tomatoes-warn.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: take custom attribute name into account when reflecting property diff --git a/packages/svelte/src/runtime/internal/Component.js b/packages/svelte/src/runtime/internal/Component.js index bc5b117c2f..2bfdb6fd48 100644 --- a/packages/svelte/src/runtime/internal/Component.js +++ b/packages/svelte/src/runtime/internal/Component.js @@ -283,7 +283,7 @@ if (typeof HTMLElement === 'function') { 'toAttribute' ); if (attribute_value == null) { - this.removeAttribute(key); + this.removeAttribute(this.$$p_d[key].attribute || key); } else { this.setAttribute(this.$$p_d[key].attribute || key, attribute_value); } diff --git a/packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes-add-remove/main.svelte b/packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes-add-remove/main.svelte new file mode 100644 index 0000000000..c5c80c16a3 --- /dev/null +++ b/packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes-add-remove/main.svelte @@ -0,0 +1,23 @@ + + + + +
+ +
Hidden Text
+
+ + diff --git a/packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes-add-remove/test.js b/packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes-add-remove/test.js new file mode 100644 index 0000000000..d973039983 --- /dev/null +++ b/packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes-add-remove/test.js @@ -0,0 +1,19 @@ +import * as assert from 'assert.js'; +import { tick } from 'svelte'; +import './main.svelte'; + +export default async function (target) { + const element = document.createElement('custom-element'); + target.appendChild(element); + await tick(); + + const el = target.querySelector('custom-element'); + el.shadowRoot.querySelector('button').click(); + await tick(); + + assert.equal(el.getAttribute('aria-expanded'), ''); + el.shadowRoot.querySelector('button').click(); + await tick(); + + assert.equal(el.getAttribute('aria-expanded'), null); +} From 213db5d20ad1c3e7065171a3f146c1df873dccd9 Mon Sep 17 00:00:00 2001 From: gtmnayan <50981692+gtm-nayan@users.noreply.github.com> Date: Fri, 25 Aug 2023 21:49:08 +0545 Subject: [PATCH 20/65] docs: fix easings example glitch (#9114) Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .../examples/11-easing/00-easing/App.svelte | 4 ++++ .../11-easing/00-easing/Controls.svelte | 21 +++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/documentation/examples/11-easing/00-easing/App.svelte b/documentation/examples/11-easing/00-easing/App.svelte index 39b6f4ea78..c3814bb8bd 100644 --- a/documentation/examples/11-easing/00-easing/App.svelte +++ b/documentation/examples/11-easing/00-easing/App.svelte @@ -68,6 +68,10 @@ From b62fc8c8fd2640c9b99168f01b9d958cb2f7574f Mon Sep 17 00:00:00 2001 From: Yeom suyun <60684815+Artxe2@users.noreply.github.com> Date: Sat, 16 Sep 2023 03:12:53 +0900 Subject: [PATCH 30/65] chore: eslint rule for naming convention (#9208) --- packages/svelte/package.json | 3 +- packages/svelte/scripts/.eslintrc.json | 6 ++ packages/svelte/scripts/compile-test.js | 4 +- packages/svelte/scripts/generate-dts.js | 12 +-- packages/svelte/scripts/globals-extractor.js | 4 +- packages/svelte/src/.eslintrc.json | 6 ++ .../svelte/src/compiler/compile/Component.js | 4 +- .../src/compiler/compile/create_module.js | 20 ++--- .../src/compiler/compile/nodes/Binding.js | 4 +- .../src/compiler/compile/nodes/EachBlock.js | 8 +- .../src/compiler/compile/nodes/Element.js | 2 +- .../compile/nodes/shared/get_const_tags.js | 4 +- .../compile/render_dom/wrappers/Window.js | 16 ++-- .../parse/read/css-tree-cq/css_tree_parse.js | 8 +- .../css-tree-cq/node/query_feature_range.js | 6 +- packages/svelte/src/runtime/internal/dom.js | 68 ++++++++-------- packages/svelte/test/.eslintrc.json | 4 +- .../compiler-errors/compiler-errors.test.js | 4 +- .../css/samples/custom-css-hash/_config.js | 4 +- packages/svelte/test/helpers.js | 9 ++- .../svelte/test/hydration/hydration.test.js | 4 +- .../samples/dynamic-text-nil/_config.js | 8 +- packages/svelte/test/parser/parser.test.js | 16 ++-- .../svelte/test/runtime-browser/assert.js | 10 +-- .../test/runtime-browser/browser.test.js | 8 +- .../reflect-attributes/test.js | 20 ++--- .../svelte/test/runtime-browser/driver.js | 4 +- .../_config.js | 16 ++-- .../_config.js | 16 ++-- .../_config.js | 40 +++++----- .../_config.js | 40 +++++----- .../_config.js | 40 +++++----- .../_config.js | 80 +++++++++---------- .../svelte/test/runtime/runtime.shared.js | 18 ++--- .../samples/$$rest-without-props/_config.js | 10 +-- .../test/runtime/samples/$$rest/_config.js | 10 +-- .../samples/action-function/_config.js | 8 +- .../runtime/samples/action-update/_config.js | 4 +- .../test/runtime/samples/action/_config.js | 8 +- .../samples/await-function-promise/_config.js | 6 +- .../runtime/samples/await-in-each/_config.js | 6 +- .../samples/await-then-catch-event/_config.js | 6 +- .../samples/await-then-catch-if/_config.js | 8 +- .../samples/await-then-catch-order/_config.js | 6 +- .../runtime/samples/await-then-if/_config.js | 6 +- .../_config.js | 6 +- .../binding-input-group-each-7/_config.js | 8 +- .../_config.js | 16 ++-- .../_config.js | 12 +-- .../samples/binding-input-number-2/_config.js | 8 +- .../component-binding-deep-b/_config.js | 4 +- .../_config.js | 4 +- .../_config.js | 4 +- .../component-slot-fallback-2/_config.js | 4 +- .../component-slot-fallback-5/_config.js | 6 +- .../dynamic-element-animation-2/_config.js | 26 +++--- .../_config.js | 4 +- .../_config.js | 6 +- .../each-blocks-assignment-2/_config.js | 4 +- .../samples/each-blocks-assignment/_config.js | 18 ++--- .../event-handler-dynamic-hash/_config.js | 6 +- .../event-handler-dynamic-invalid/_config.js | 8 +- .../samples/event-handler-dynamic/_config.js | 6 +- .../event-handler-each-modifier/_config.js | 14 ++-- .../samples/flush-before-bindings/_config.js | 6 +- .../fragment-trailing-whitespace/_config.js | 12 ++- .../samples/if-block-else-update/_config.js | 10 +-- .../test/runtime/samples/nbsp-div/_config.js | 18 ++--- .../samples/noscript-removal/_config.js | 4 +- .../samples/props-reactive-slot/_config.js | 4 +- .../samples/raw-mustache-as-root/_config.js | 6 +- .../raw-mustache-inside-head/_config.js | 6 +- .../raw-mustache-inside-slot/_config.js | 6 +- .../reactive-import-statement/_config.js | 6 +- .../spread-element-input-value/_config.js | 16 ++-- .../spread-element-input-value/utils.js | 4 +- .../_config.js | 4 +- .../_config.js | 10 +-- .../_config.js | 10 +-- .../store-resubscribe-export/_config.js | 12 +-- .../svg-foreignobject-namespace/_config.js | 4 +- .../samples/textarea-content/_config.js | 35 ++++---- .../this-in-function-expressions/_config.js | 4 +- .../window-bind-scroll-update/_config.js | 6 +- .../test/server-side-rendering/ssr-1.test.js | 16 ++-- .../test/server-side-rendering/ssr-2.test.js | 10 +-- .../samples/compile-option-dev/test.js | 8 +- .../sourcemaps/samples/each-block/test.js | 4 +- .../samples/preprocessed-markup/test.js | 12 +-- .../samples/preprocessed-multiple/test.js | 12 +-- .../samples/preprocessed-script/test.js | 12 +-- .../samples/preprocessed-styles/test.js | 12 +-- .../samples/sourcemap-names/test.js | 6 +- .../svelte/test/sourcemaps/sourcemaps.test.js | 35 ++++---- packages/svelte/test/stats/stats.test.js | 18 ++--- packages/svelte/test/store/store.test.js | 18 ++--- packages/svelte/test/tsconfig.json | 7 +- packages/svelte/test/vars/vars.test.js | 16 ++-- pnpm-lock.yaml | 9 +++ 99 files changed, 585 insertions(+), 551 deletions(-) create mode 100644 packages/svelte/scripts/.eslintrc.json create mode 100644 packages/svelte/src/.eslintrc.json diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 357bfba31b..5599dbeaf1 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -83,7 +83,7 @@ "posttest": "agadoo src/internal/index.js", "prepublishOnly": "pnpm build", "types": "node ./scripts/generate-dts.js", - "lint": "prettier . --cache --plugin-search-dir=. --check && eslint \"{src,test}/**/*.{ts,js}\" --cache" + "lint": "prettier . --cache --plugin-search-dir=. --check && eslint \"{scripts,src,test}/**/*.js\" --cache --fix" }, "repository": { "type": "git", @@ -129,6 +129,7 @@ "agadoo": "^3.0.0", "dts-buddy": "^0.1.7", "esbuild": "^0.18.11", + "eslint-plugin-lube": "^0.1.7", "happy-dom": "^9.20.3", "jsdom": "^21.1.2", "kleur": "^4.1.5", diff --git a/packages/svelte/scripts/.eslintrc.json b/packages/svelte/scripts/.eslintrc.json new file mode 100644 index 0000000000..9138b8ea0b --- /dev/null +++ b/packages/svelte/scripts/.eslintrc.json @@ -0,0 +1,6 @@ +{ + "plugins": ["lube"], + "rules": { + "lube/svelte-naming-convention": ["error", { "fixSameNames": true }] + } +} diff --git a/packages/svelte/scripts/compile-test.js b/packages/svelte/scripts/compile-test.js index 9a83708b38..9c9d0efcd5 100644 --- a/packages/svelte/scripts/compile-test.js +++ b/packages/svelte/scripts/compile-test.js @@ -1,8 +1,8 @@ // Compile all Svelte files in a directory to JS and CSS files // Usage: node scripts/compile-test.js -import { mkdirSync, readFileSync, writeFileSync } from 'fs'; -import path from 'path'; +import { mkdirSync, readFileSync, writeFileSync } from 'node:fs'; +import path from 'node:path'; import glob from 'tiny-glob/sync.js'; import { compile } from '../src/compiler/index.js'; diff --git a/packages/svelte/scripts/generate-dts.js b/packages/svelte/scripts/generate-dts.js index 0ecf7127df..9342eae75f 100644 --- a/packages/svelte/scripts/generate-dts.js +++ b/packages/svelte/scripts/generate-dts.js @@ -1,18 +1,18 @@ -import * as fs from 'fs'; +import * as fs from 'node:fs'; import { createBundle } from 'dts-buddy'; // It may look weird, but the imports MUST be ending with index.js to be properly resolved in all TS modes for (const name of ['action', 'animate', 'easing', 'motion', 'store', 'transition']) { - fs.writeFileSync(`${name}.d.ts`, `import './types/index.js';`); + fs.writeFileSync(`${name}.d.ts`, "import './types/index.js';"); } -fs.writeFileSync('index.d.ts', `import './types/index.js';`); -fs.writeFileSync('compiler.d.ts', `import './types/index.js';`); +fs.writeFileSync('index.d.ts', "import './types/index.js';"); +fs.writeFileSync('compiler.d.ts', "import './types/index.js';"); // TODO: some way to mark these as deprecated fs.mkdirSync('./types/compiler', { recursive: true }); -fs.writeFileSync('./types/compiler/preprocess.d.ts', `import '../index.js';`); -fs.writeFileSync('./types/compiler/interfaces.d.ts', `import '../index.js';`); +fs.writeFileSync('./types/compiler/preprocess.d.ts', "import '../index.js';"); +fs.writeFileSync('./types/compiler/interfaces.d.ts', "import '../index.js';"); await createBundle({ output: 'types/index.d.ts', diff --git a/packages/svelte/scripts/globals-extractor.js b/packages/svelte/scripts/globals-extractor.js index c35a39a84f..bd94cc501f 100644 --- a/packages/svelte/scripts/globals-extractor.js +++ b/packages/svelte/scripts/globals-extractor.js @@ -6,8 +6,8 @@ Please run `node scripts/globals-extractor.js` at the project root. see: https://github.com/microsoft/TypeScript/tree/main/lib ---------------------------------------------------------------------- */ -import http from 'https'; -import fs from 'fs'; +import http from 'node:https'; +import fs from 'node:fs'; const GLOBAL_TS_PATH = './src/compiler/utils/globals.js'; diff --git a/packages/svelte/src/.eslintrc.json b/packages/svelte/src/.eslintrc.json new file mode 100644 index 0000000000..9138b8ea0b --- /dev/null +++ b/packages/svelte/src/.eslintrc.json @@ -0,0 +1,6 @@ +{ + "plugins": ["lube"], + "rules": { + "lube/svelte-naming-convention": ["error", { "fixSameNames": true }] + } +} diff --git a/packages/svelte/src/compiler/compile/Component.js b/packages/svelte/src/compiler/compile/Component.js index 7598e60967..4071006836 100644 --- a/packages/svelte/src/compiler/compile/Component.js +++ b/packages/svelte/src/compiler/compile/Component.js @@ -1555,8 +1555,8 @@ export default class Component { }, []) ); if (cycle && cycle.length) { - const declarationList = lookup.get(cycle[0]); - const declaration = declarationList[0]; + const declaration_list = lookup.get(cycle[0]); + const declaration = declaration_list[0]; return this.error(declaration.node, compiler_errors.cyclical_reactive_declaration(cycle)); } diff --git a/packages/svelte/src/compiler/compile/create_module.js b/packages/svelte/src/compiler/compile/create_module.js index 7c9ff37109..30a088c7ec 100644 --- a/packages/svelte/src/compiler/compile/create_module.js +++ b/packages/svelte/src/compiler/compile/create_module.js @@ -4,7 +4,7 @@ import { b } from 'code-red'; * @param {any} program * @param {import('estree').Identifier} name * @param {string} banner - * @param {any} sveltePath + * @param {any} svelte_path * @param {Array<{ name: string; alias: import('estree').Identifier }>} helpers * @param {Array<{ name: string; alias: import('estree').Identifier }>} globals * @param {import('estree').ImportDeclaration[]} imports @@ -15,21 +15,21 @@ export default function create_module( program, name, banner, - sveltePath = 'svelte', + svelte_path = 'svelte', helpers, globals, imports, module_exports, exports_from ) { - const internal_path = `${sveltePath}/internal`; + const internal_path = `${svelte_path}/internal`; helpers.sort((a, b) => (a.name < b.name ? -1 : 1)); globals.sort((a, b) => (a.name < b.name ? -1 : 1)); return esm( program, name, banner, - sveltePath, + svelte_path, internal_path, helpers, globals, @@ -41,11 +41,11 @@ export default function create_module( /** * @param {any} source - * @param {any} sveltePath + * @param {any} svelte_path */ -function edit_source(source, sveltePath) { +function edit_source(source, svelte_path) { return source === 'svelte' || source.startsWith('svelte/') - ? source.replace('svelte', sveltePath) + ? source.replace('svelte', svelte_path) : source; } @@ -84,7 +84,7 @@ function get_internal_globals(globals, helpers) { * @param {any} program * @param {import('estree').Identifier} name * @param {string} banner - * @param {string} sveltePath + * @param {string} svelte_path * @param {string} internal_path * @param {Array<{ name: string; alias: import('estree').Identifier }>} helpers * @param {Array<{ name: string; alias: import('estree').Identifier }>} globals @@ -96,7 +96,7 @@ function esm( program, name, banner, - sveltePath, + svelte_path, internal_path, helpers, globals, @@ -118,7 +118,7 @@ function esm( /** @param {any} node */ function rewrite_import(node) { - const value = edit_source(node.source.value, sveltePath); + const value = edit_source(node.source.value, svelte_path); if (node.source.value !== value) { node.source.value = value; node.source.raw = null; diff --git a/packages/svelte/src/compiler/compile/nodes/Binding.js b/packages/svelte/src/compiler/compile/nodes/Binding.js index 0c69ada0d7..d43ea98766 100644 --- a/packages/svelte/src/compiler/compile/nodes/Binding.js +++ b/packages/svelte/src/compiler/compile/nodes/Binding.js @@ -98,7 +98,7 @@ export default class Binding extends Node { this.is_readonly = regex_dimensions.test(this.name) || regex_box_size.test(this.name) || - (isElement(parent) && + (is_element(parent) && ((parent.is_media_node() && read_only_media_attributes.has(this.name)) || (parent.name === 'input' && type === 'file'))) /* TODO others? */; } @@ -127,6 +127,6 @@ export default class Binding extends Node { * @param {import('./shared/Node.js').default} node * @returns {node is import('./Element.js').default} */ -function isElement(node) { +function is_element(node) { return !!(/** @type {any} */ (node).is_media_node); } diff --git a/packages/svelte/src/compiler/compile/nodes/EachBlock.js b/packages/svelte/src/compiler/compile/nodes/EachBlock.js index 3effb263b6..e54f0af139 100644 --- a/packages/svelte/src/compiler/compile/nodes/EachBlock.js +++ b/packages/svelte/src/compiler/compile/nodes/EachBlock.js @@ -84,7 +84,9 @@ export default class EachBlock extends AbstractBlock { this.has_animation = false; [this.const_tags, this.children] = get_const_tags(info.children, component, this, this); if (this.has_animation) { - this.children = this.children.filter((child) => !isEmptyNode(child) && !isCommentNode(child)); + this.children = this.children.filter( + (child) => !is_empty_node(child) && !is_comment_node(child) + ); if (this.children.length !== 1) { const child = this.children.find( (child) => !!(/** @type {import('./Element.js').default} */ (child).animation) @@ -102,11 +104,11 @@ export default class EachBlock extends AbstractBlock { } /** @param {import('./interfaces.js').INode} node */ -function isEmptyNode(node) { +function is_empty_node(node) { return node.type === 'Text' && node.data.trim() === ''; } /** @param {import('./interfaces.js').INode} node */ -function isCommentNode(node) { +function is_comment_node(node) { return node.type === 'Comment'; } diff --git a/packages/svelte/src/compiler/compile/nodes/Element.js b/packages/svelte/src/compiler/compile/nodes/Element.js index 654c2c48f0..0ee4f26d5f 100644 --- a/packages/svelte/src/compiler/compile/nodes/Element.js +++ b/packages/svelte/src/compiler/compile/nodes/Element.js @@ -875,7 +875,7 @@ export default class Element extends Node { ) { const interactive_handlers = handlers .map((handler) => handler.name) - .filter((handlerName) => a11y_interactive_handlers.has(handlerName)); + .filter((handler_name) => a11y_interactive_handlers.has(handler_name)); if (interactive_handlers.length > 0) { component.warn( this, diff --git a/packages/svelte/src/compiler/compile/nodes/shared/get_const_tags.js b/packages/svelte/src/compiler/compile/nodes/shared/get_const_tags.js index 8001420664..b766089359 100644 --- a/packages/svelte/src/compiler/compile/nodes/shared/get_const_tags.js +++ b/packages/svelte/src/compiler/compile/nodes/shared/get_const_tags.js @@ -73,8 +73,8 @@ function sort_consts_nodes(consts_nodes, component) { }, []) ); if (cycle && cycle.length) { - const nodeList = lookup.get(cycle[0]); - const node = nodeList[0]; + const node_list = lookup.get(cycle[0]); + const node = node_list[0]; component.error(node.node, compiler_errors.cyclical_const_tags(cycle)); } diff --git a/packages/svelte/src/compiler/compile/render_dom/wrappers/Window.js b/packages/svelte/src/compiler/compile/render_dom/wrappers/Window.js index ff59cb23d3..7b0ffa982e 100644 --- a/packages/svelte/src/compiler/compile/render_dom/wrappers/Window.js +++ b/packages/svelte/src/compiler/compile/render_dom/wrappers/Window.js @@ -94,14 +94,14 @@ export default class WindowWrapper extends Wrapper { bindings.scrollX && bindings.scrollY ? x`"${bindings.scrollX}" in this._state || "${bindings.scrollY}" in this._state` : x`"${bindings.scrollX || bindings.scrollY}" in this._state`; - const scrollX = bindings.scrollX && x`this._state.${bindings.scrollX}`; - const scrollY = bindings.scrollY && x`this._state.${bindings.scrollY}`; + const scroll_x = bindings.scrollX && x`this._state.${bindings.scrollX}`; + const scroll_y = bindings.scrollY && x`this._state.${bindings.scrollY}`; renderer.meta_bindings.push(b` if (${condition}) { - @_scrollTo(${scrollX || '@_window.pageXOffset'}, ${scrollY || '@_window.pageYOffset'}); + @_scrollTo(${scroll_x || '@_window.pageXOffset'}, ${scroll_y || '@_window.pageYOffset'}); } - ${scrollX && `${scrollX} = @_window.pageXOffset;`} - ${scrollY && `${scrollY} = @_window.pageYOffset;`} + ${scroll_x && `${scroll_x} = @_window.pageXOffset;`} + ${scroll_y && `${scroll_y} = @_window.pageYOffset;`} `); block.event_listeners.push(x` @listen(@_window, "${event}", () => { @@ -132,17 +132,17 @@ export default class WindowWrapper extends Wrapper { // special case... might need to abstract this out if we add more special cases if (bindings.scrollX || bindings.scrollY) { const condition = renderer.dirty([bindings.scrollX, bindings.scrollY].filter(Boolean)); - const scrollX = bindings.scrollX + const scroll_x = bindings.scrollX ? renderer.reference(bindings.scrollX) : x`@_window.pageXOffset`; - const scrollY = bindings.scrollY + const scroll_y = bindings.scrollY ? renderer.reference(bindings.scrollY) : x`@_window.pageYOffset`; block.chunks.update.push(b` if (${condition} && !${scrolling}) { ${scrolling} = true; @_clearTimeout(${scrolling_timeout}); - @_scrollTo(${scrollX}, ${scrollY}); + @_scrollTo(${scroll_x}, ${scroll_y}); ${scrolling_timeout} = @_setTimeout(${clear_scrolling}, 100); } `); diff --git a/packages/svelte/src/compiler/parse/read/css-tree-cq/css_tree_parse.js b/packages/svelte/src/compiler/parse/read/css-tree-cq/css_tree_parse.js index bacb4cc334..0e019ca0d2 100644 --- a/packages/svelte/src/compiler/parse/read/css-tree-cq/css_tree_parse.js +++ b/packages/svelte/src/compiler/parse/read/css-tree-cq/css_tree_parse.js @@ -8,7 +8,7 @@ import * as node from './node/index.js'; * * The new nodes are located in `./node`. */ -const cqSyntax = fork({ +const cq_syntax = fork({ atrule: { // extend or override at-rule dictionary container: { @@ -16,8 +16,8 @@ const cqSyntax = fork({ prelude() { return this.createSingleNodeList(this.ContainerQuery()); }, - block(isStyleBlock = false) { - return this.Block(isStyleBlock); + block(is_style_block = false) { + return this.Block(is_style_block); } } } @@ -25,4 +25,4 @@ const cqSyntax = fork({ node }); -export const parse = cqSyntax.parse; +export const parse = cq_syntax.parse; diff --git a/packages/svelte/src/compiler/parse/read/css-tree-cq/node/query_feature_range.js b/packages/svelte/src/compiler/parse/read/css-tree-cq/node/query_feature_range.js index ee8f14abea..8553693d66 100644 --- a/packages/svelte/src/compiler/parse/read/css-tree-cq/node/query_feature_range.js +++ b/packages/svelte/src/compiler/parse/read/css-tree-cq/node/query_feature_range.js @@ -16,7 +16,7 @@ export const structure = { value: ['Identifier', 'Number', 'Comparison', 'Dimension', 'QueryCSSFunction', 'Ratio', null] }; -function lookup_non_WS_type_and_value(offset, type, referenceStr) { +function lookup_non_ws_type_and_value(offset, type, reference_str) { let current_type; do { @@ -26,7 +26,7 @@ function lookup_non_WS_type_and_value(offset, type, referenceStr) { } } while (current_type !== 0); // NULL -> 0 - return current_type === type ? this.lookupValue(offset - 1, referenceStr) : false; + return current_type === type ? this.lookupValue(offset - 1, reference_str) : false; } export function parse() { @@ -40,7 +40,7 @@ export function parse() { while (!this.eof && this.tokenType !== RightParenthesis) { switch (this.tokenType) { case Number: - if (lookup_non_WS_type_and_value.call(this, 1, Delim, '/')) { + if (lookup_non_ws_type_and_value.call(this, 1, Delim, '/')) { child = this.Ratio(); } else { child = this.Number(); diff --git a/packages/svelte/src/runtime/internal/dom.js b/packages/svelte/src/runtime/internal/dom.js index 18a5d5d278..9e1fd7e261 100644 --- a/packages/svelte/src/runtime/internal/dom.js +++ b/packages/svelte/src/runtime/internal/dom.js @@ -1,5 +1,7 @@ -import { ResizeObserverSingleton } from './ResizeObserverSingleton.js'; import { contenteditable_truthy_values, has_prop } from './utils.js'; + +import { ResizeObserverSingleton } from './ResizeObserverSingleton.js'; + // Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM // at the end of hydration without touching the remaining nodes. let is_hydrating = false; @@ -50,14 +52,14 @@ function init_hydrate(target) { let children = /** @type {ArrayLike} */ (target.childNodes); // If target is , there may be children without claim_order if (target.nodeName === 'HEAD') { - const myChildren = []; + const my_children = []; for (let i = 0; i < children.length; i++) { const node = children[i]; if (node.claim_order !== undefined) { - myChildren.push(node); + my_children.push(node); } } - children = myChildren; + children = my_children; } /* * Reorder claimed children optimally. @@ -87,15 +89,15 @@ function init_hydrate(target) { // Find the largest subsequence length such that it ends in a value less than our current value // upper_bound returns first greater value, so we subtract one // with fast path for when we are on the current longest subsequence - const seqLen = + const seq_len = (longest > 0 && children[m[longest]].claim_order <= current ? longest + 1 : upper_bound(1, longest, (idx) => children[m[idx]].claim_order, current)) - 1; - p[i] = m[seqLen] + 1; - const newLen = seqLen + 1; + p[i] = m[seq_len] + 1; + const new_len = seq_len + 1; // We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence. - m[newLen] = i; - longest = Math.max(newLen, longest); + m[new_len] = i; + longest = Math.max(new_len, longest); } // The longest increasing subsequence of nodes (initially reversed) @@ -108,28 +110,28 @@ function init_hydrate(target) { /** * @type {NodeEx2[]} */ - const toMove = []; + const to_move = []; let last = children.length - 1; for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) { lis.push(children[cur - 1]); for (; last >= cur; last--) { - toMove.push(children[last]); + to_move.push(children[last]); } last--; } for (; last >= 0; last--) { - toMove.push(children[last]); + to_move.push(children[last]); } lis.reverse(); // We sort the nodes being moved to guarantee that their insertion order matches the claim order - toMove.sort((a, b) => a.claim_order - b.claim_order); + to_move.sort((a, b) => a.claim_order - b.claim_order); // Finally, we move the nodes - for (let i = 0, j = 0; i < toMove.length; i++) { - while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) { + for (let i = 0, j = 0; i < to_move.length; i++) { + while (j < lis.length && to_move[i].claim_order >= lis[j].claim_order) { j++; } const anchor = j < lis.length ? lis[j] : null; - target.insertBefore(toMove[i], anchor); + target.insertBefore(to_move[i], anchor); } } @@ -624,26 +626,26 @@ function init_claim_info(nodes) { * @template {ChildNodeEx} R * @param {ChildNodeArray} nodes * @param {(node: ChildNodeEx) => node is R} predicate - * @param {(node: ChildNodeEx) => ChildNodeEx | undefined} processNode - * @param {() => R} createNode - * @param {boolean} dontUpdateLastIndex + * @param {(node: ChildNodeEx) => ChildNodeEx | undefined} process_node + * @param {() => R} create_node + * @param {boolean} dont_update_last_index * @returns {R} */ -function claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) { +function claim_node(nodes, predicate, process_node, create_node, dont_update_last_index = false) { // Try to find nodes in an order such that we lengthen the longest increasing subsequence init_claim_info(nodes); - const resultNode = (() => { + const result_node = (() => { // We first try to find an element after the previous one for (let i = nodes.claim_info.last_index; i < nodes.length; i++) { const node = nodes[i]; if (predicate(node)) { - const replacement = processNode(node); + const replacement = process_node(node); if (replacement === undefined) { nodes.splice(i, 1); } else { nodes[i] = replacement; } - if (!dontUpdateLastIndex) { + if (!dont_update_last_index) { nodes.claim_info.last_index = i; } return node; @@ -654,13 +656,13 @@ function claim_node(nodes, predicate, processNode, createNode, dontUpdateLastInd for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) { const node = nodes[i]; if (predicate(node)) { - const replacement = processNode(node); + const replacement = process_node(node); if (replacement === undefined) { nodes.splice(i, 1); } else { nodes[i] = replacement; } - if (!dontUpdateLastIndex) { + if (!dont_update_last_index) { nodes.claim_info.last_index = i; } else if (replacement === undefined) { // Since we spliced before the last_index, we decrease it @@ -670,11 +672,11 @@ function claim_node(nodes, predicate, processNode, createNode, dontUpdateLastInd } } // If we can't find any matching node, we create a new one - return createNode(); + return create_node(); })(); - resultNode.claim_order = nodes.claim_info.total_claimed; + result_node.claim_order = nodes.claim_info.total_claimed; nodes.claim_info.total_claimed += 1; - return resultNode; + return result_node; } /** @@ -736,13 +738,13 @@ export function claim_text(nodes, data) { (node) => node.nodeType === 3, /** @param {Text} node */ (node) => { - const dataStr = '' + data; - if (node.data.startsWith(dataStr)) { - if (node.data.length !== dataStr.length) { - return node.splitText(dataStr.length); + const data_str = '' + data; + if (node.data.startsWith(data_str)) { + if (node.data.length !== data_str.length) { + return node.splitText(data_str.length); } } else { - node.data = dataStr; + node.data = data_str; } }, () => text(data), diff --git a/packages/svelte/test/.eslintrc.json b/packages/svelte/test/.eslintrc.json index 89ee14da16..6075b89ae6 100644 --- a/packages/svelte/test/.eslintrc.json +++ b/packages/svelte/test/.eslintrc.json @@ -1,6 +1,8 @@ { + "plugins": ["lube"], "rules": { "no-console": "off", - "@typescript-eslint/no-var-requires": "off" + "@typescript-eslint/no-var-requires": "off", + "lube/svelte-naming-convention": ["error", { "fixSameNames": true }] } } diff --git a/packages/svelte/test/compiler-errors/compiler-errors.test.js b/packages/svelte/test/compiler-errors/compiler-errors.test.js index 065e9cc01d..e97e556087 100644 --- a/packages/svelte/test/compiler-errors/compiler-errors.test.js +++ b/packages/svelte/test/compiler-errors/compiler-errors.test.js @@ -20,14 +20,14 @@ describe('compiler-errors', () => { it_fn(dir, () => { const cwd = path.resolve(`${__dirname}/samples/${dir}`); - const compileOptions = Object.assign({}, config.compileOptions || {}, { + const compile_options = Object.assign({}, config.compileOptions || {}, { immutable: config.immutable, accessors: 'accessors' in config ? config.accessors : true, generate: 'dom' }); try { - compile(fs.readFileSync(`${cwd}/main.svelte`, 'utf-8'), compileOptions); + compile(fs.readFileSync(`${cwd}/main.svelte`, 'utf-8'), compile_options); } catch (error) { if (typeof config.error === 'function') { config.error(assert, error); diff --git a/packages/svelte/test/css/samples/custom-css-hash/_config.js b/packages/svelte/test/css/samples/custom-css-hash/_config.js index e6a60f059d..3d55fa1b3c 100644 --- a/packages/svelte/test/css/samples/custom-css-hash/_config.js +++ b/packages/svelte/test/css/samples/custom-css-hash/_config.js @@ -2,11 +2,11 @@ export default { compileOptions: { filename: 'src/components/FooSwitcher.svelte', cssHash({ hash, css, name, filename }) { - const minFilename = filename + const min_filename = filename .split('/') .map((i) => i.charAt(0).toLowerCase()) .join(''); - return `sv-${name}-${minFilename}-${hash(css)}`; + return `sv-${name}-${min_filename}-${hash(css)}`; } } }; diff --git a/packages/svelte/test/helpers.js b/packages/svelte/test/helpers.js index b5ee539be8..c306cae8ba 100644 --- a/packages/svelte/test/helpers.js +++ b/packages/svelte/test/helpers.js @@ -1,10 +1,11 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; -import glob from 'tiny-glob/sync'; -import colors from 'kleur'; + import { assert } from 'vitest'; +import colors from 'kleur'; import { compile } from 'svelte/compiler'; import { fileURLToPath } from 'node:url'; +import glob from 'tiny-glob/sync'; export function try_load_json(file) { try { @@ -158,8 +159,8 @@ export function create_loader(compileOptions, cwd) { ) .replace( /^import (\w+, )?{([^}]+)} from ['"](.+)['"];?/gm, - (_, default_, names, source) => { - const d = default_ ? `default: ${default_}` : ''; + (_, _default, names, source) => { + const d = _default ? `default: ${_default}` : ''; return `const { ${d} ${names.replaceAll( ' as ', ': ' diff --git a/packages/svelte/test/hydration/hydration.test.js b/packages/svelte/test/hydration/hydration.test.js index 48e9f3b751..fc12802e82 100644 --- a/packages/svelte/test/hydration/hydration.test.js +++ b/packages/svelte/test/hydration/hydration.test.js @@ -18,12 +18,12 @@ describe('hydration', async () => { it_fn(dir, async () => { const cwd = path.resolve(`${__dirname}/samples/${dir}`); - const compileOptions = Object.assign({}, config.compileOptions, { + const compile_options = Object.assign({}, config.compileOptions, { accessors: 'accessors' in config ? config.accessors : true, hydratable: true }); - const { default: SvelteComponent } = await create_loader(compileOptions, cwd)('main.svelte'); + const { default: SvelteComponent } = await create_loader(compile_options, cwd)('main.svelte'); const target = window.document.body; const head = window.document.head; diff --git a/packages/svelte/test/hydration/samples/dynamic-text-nil/_config.js b/packages/svelte/test/hydration/samples/dynamic-text-nil/_config.js index 35583f7fca..13196cbbe9 100644 --- a/packages/svelte/test/hydration/samples/dynamic-text-nil/_config.js +++ b/packages/svelte/test/hydration/samples/dynamic-text-nil/_config.js @@ -2,12 +2,12 @@ export default { props: {}, snapshot(target) { - const nullText = target.querySelectorAll('p')[0].textContent; - const undefinedText = target.querySelectorAll('p')[1].textContent; + const null_text = target.querySelectorAll('p')[0].textContent; + const undefined_text = target.querySelectorAll('p')[1].textContent; return { - nullText, - undefinedText + nullText: null_text, + undefinedText: undefined_text }; } }; diff --git a/packages/svelte/test/parser/parser.test.js b/packages/svelte/test/parser/parser.test.js index 67a621582a..7826e00251 100644 --- a/packages/svelte/test/parser/parser.test.js +++ b/packages/svelte/test/parser/parser.test.js @@ -26,8 +26,8 @@ describe('parse', () => { .trimEnd() .replace(/\r/g, ''); - const expectedOutput = try_load_json(`${__dirname}/samples/${dir}/output.json`); - const expectedError = try_load_json(`${__dirname}/samples/${dir}/error.json`); + const expected_output = try_load_json(`${__dirname}/samples/${dir}/output.json`); + const expected_error = try_load_json(`${__dirname}/samples/${dir}/error.json`); try { const { ast } = svelte.compile( @@ -42,16 +42,16 @@ describe('parse', () => { JSON.stringify(ast, null, '\t') ); - assert.deepEqual(ast.html, expectedOutput.html); - assert.deepEqual(ast.css, expectedOutput.css); - assert.deepEqual(ast.instance, expectedOutput.instance); - assert.deepEqual(ast.module, expectedOutput.module); + assert.deepEqual(ast.html, expected_output.html); + assert.deepEqual(ast.css, expected_output.css); + assert.deepEqual(ast.instance, expected_output.instance); + assert.deepEqual(ast.module, expected_output.module); } catch (err) { if (err.name !== 'ParseError') throw err; - if (!expectedError) throw err; + if (!expected_error) throw err; const { code, message, pos, start } = err; - assert.deepEqual({ code, message, pos, start }, expectedError); + assert.deepEqual({ code, message, pos, start }, expected_error); } }); }); diff --git a/packages/svelte/test/runtime-browser/assert.js b/packages/svelte/test/runtime-browser/assert.js index 55058d2057..3b7863b519 100644 --- a/packages/svelte/test/runtime-browser/assert.js +++ b/packages/svelte/test/runtime-browser/assert.js @@ -33,10 +33,10 @@ export function ok(condition, message) { } export function htmlEqual(actual, expected, message) { - return deepEqual(normalizeHtml(window, actual), normalizeHtml(window, expected), message); + return deepEqual(normalize_html(window, actual), normalize_html(window, expected), message); } -function normalizeHtml(window, html) { +function normalize_html(window, html) { try { const node = window.document.createElement('div'); node.innerHTML = html @@ -44,7 +44,7 @@ function normalizeHtml(window, html) { .replace(/>[\s\r\n]+<') .trim(); - normalizeStyles(node); + normalize_styles(node); return node.innerHTML.replace(/<\/?noscript\/?>/g, ''); } catch (err) { @@ -52,14 +52,14 @@ function normalizeHtml(window, html) { } } -function normalizeStyles(node) { +function normalize_styles(node) { if (node.nodeType === 1) { if (node.hasAttribute('style')) { node.style = node.style.cssText; } for (const child of node.childNodes) { - normalizeStyles(child); + normalize_styles(child); } } } diff --git a/packages/svelte/test/runtime-browser/browser.test.js b/packages/svelte/test/runtime-browser/browser.test.js index 00ecaa6522..01f2cdb9b1 100644 --- a/packages/svelte/test/runtime-browser/browser.test.js +++ b/packages/svelte/test/runtime-browser/browser.test.js @@ -93,7 +93,7 @@ async function run_browser_test(dir) { globalName: 'test' }); - function assertWarnings() { + function assert_warnings() { if (config.warnings) { assert.deepStrictEqual( warnings.map((w) => ({ @@ -112,7 +112,7 @@ async function run_browser_test(dir) { } } - assertWarnings(); + assert_warnings(); try { const page = await browser.newPage(); @@ -191,7 +191,7 @@ async function run_custom_elements_test(dir) { globalName: 'test' }); - function assertWarnings() { + function assert_warnings() { if (expected_warnings) { assert.deepStrictEqual( warnings.map((w) => ({ @@ -205,7 +205,7 @@ async function run_custom_elements_test(dir) { ); } } - assertWarnings(); + assert_warnings(); const page = await browser.newPage(); page.on('console', (type) => { diff --git a/packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes/test.js b/packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes/test.js index c66f9f3b97..e869e7bff9 100644 --- a/packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes/test.js +++ b/packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes/test.js @@ -6,25 +6,25 @@ export default async function (target) { target.innerHTML = ''; await tick(); await tick(); - const ceRoot = target.querySelector('custom-element').shadowRoot; - const div = ceRoot.querySelector('div'); - const p = ceRoot.querySelector('p'); - const button = ceRoot.querySelector('button'); + const ce_root = target.querySelector('custom-element').shadowRoot; + const div = ce_root.querySelector('div'); + const p = ce_root.querySelector('p'); + const button = ce_root.querySelector('button'); assert.equal(getComputedStyle(div).color, 'rgb(255, 0, 0)'); assert.equal(getComputedStyle(p).color, 'rgb(255, 255, 255)'); - const innerRoot = ceRoot.querySelector('my-widget').shadowRoot; - const innerDiv = innerRoot.querySelector('div'); - const innerP = innerRoot.querySelector('p'); + const inner_root = ce_root.querySelector('my-widget').shadowRoot; + const inner_div = inner_root.querySelector('div'); + const inner_p = inner_root.querySelector('p'); - assert.equal(getComputedStyle(innerDiv).color, 'rgb(255, 0, 0)'); - assert.equal(getComputedStyle(innerP).color, 'rgb(255, 255, 255)'); + assert.equal(getComputedStyle(inner_div).color, 'rgb(255, 0, 0)'); + assert.equal(getComputedStyle(inner_p).color, 'rgb(255, 255, 255)'); button.click(); await tick(); await tick(); assert.equal(getComputedStyle(div).color, 'rgb(0, 0, 0)'); - assert.equal(getComputedStyle(innerDiv).color, 'rgb(0, 0, 0)'); + assert.equal(getComputedStyle(inner_div).color, 'rgb(0, 0, 0)'); } diff --git a/packages/svelte/test/runtime-browser/driver.js b/packages/svelte/test/runtime-browser/driver.js index 286ddbe62d..349181a2dc 100644 --- a/packages/svelte/test/runtime-browser/driver.js +++ b/packages/svelte/test/runtime-browser/driver.js @@ -30,7 +30,7 @@ export default async function (target) { const component = new SvelteComponent(options); - const waitUntil = async (fn, ms = 500) => { + const wait_until = async (fn, ms = 500) => { const start = new Date().getTime(); do { if (fn()) return; @@ -48,7 +48,7 @@ export default async function (target) { component, target, window, - waitUntil + waitUntil: wait_until }); component.$destroy(); diff --git a/packages/svelte/test/runtime-browser/samples/component-css-custom-properties-dynamic-svg/_config.js b/packages/svelte/test/runtime-browser/samples/component-css-custom-properties-dynamic-svg/_config.js index a17e6e939d..4b2c5b8c34 100644 --- a/packages/svelte/test/runtime-browser/samples/component-css-custom-properties-dynamic-svg/_config.js +++ b/packages/svelte/test/runtime-browser/samples/component-css-custom-properties-dynamic-svg/_config.js @@ -45,14 +45,14 @@ export default { ` ); - const circleColor1 = target.querySelector('#svg-1 circle'); - const rectColor1 = target.querySelector('#svg-1 rect'); - const circleColor2 = target.querySelector('#svg-2 circle'); - const rectColor2 = target.querySelector('#svg-2 rect'); + const circle_color1 = target.querySelector('#svg-1 circle'); + const rect_color1 = target.querySelector('#svg-1 rect'); + const circle_color2 = target.querySelector('#svg-2 circle'); + const rect_color2 = target.querySelector('#svg-2 rect'); - assert.htmlEqual(window.getComputedStyle(circleColor1).fill, 'rgb(255, 0, 0)'); - assert.htmlEqual(window.getComputedStyle(rectColor1).fill, 'rgb(255, 255, 0)'); - assert.htmlEqual(window.getComputedStyle(circleColor2).fill, 'rgb(0, 255, 255)'); - assert.htmlEqual(window.getComputedStyle(rectColor2).fill, 'rgb(0, 0, 0)'); + assert.htmlEqual(window.getComputedStyle(circle_color1).fill, 'rgb(255, 0, 0)'); + assert.htmlEqual(window.getComputedStyle(rect_color1).fill, 'rgb(255, 255, 0)'); + assert.htmlEqual(window.getComputedStyle(circle_color2).fill, 'rgb(0, 255, 255)'); + assert.htmlEqual(window.getComputedStyle(rect_color2).fill, 'rgb(0, 0, 0)'); } }; diff --git a/packages/svelte/test/runtime-browser/samples/component-css-custom-properties/_config.js b/packages/svelte/test/runtime-browser/samples/component-css-custom-properties/_config.js index 9c3b7cbdea..04c0f0a20b 100644 --- a/packages/svelte/test/runtime-browser/samples/component-css-custom-properties/_config.js +++ b/packages/svelte/test/runtime-browser/samples/component-css-custom-properties/_config.js @@ -14,14 +14,14 @@ export default { `, test({ target, window, assert }) { - const railColor1 = target.querySelector('#slider-1 p'); - const trackColor1 = target.querySelector('#slider-1 span'); - const railColor2 = target.querySelector('#slider-2 p'); - const trackColor2 = target.querySelector('#slider-2 span'); + const rail_color1 = target.querySelector('#slider-1 p'); + const track_color1 = target.querySelector('#slider-1 span'); + const rail_color2 = target.querySelector('#slider-2 p'); + const track_color2 = target.querySelector('#slider-2 span'); - assert.htmlEqual(window.getComputedStyle(railColor1).color, 'rgb(0, 0, 0)'); - assert.htmlEqual(window.getComputedStyle(trackColor1).color, 'rgb(255, 0, 0)'); - assert.htmlEqual(window.getComputedStyle(railColor2).color, 'rgb(0, 255, 0)'); - assert.htmlEqual(window.getComputedStyle(trackColor2).color, 'rgb(0, 0, 255)'); + assert.htmlEqual(window.getComputedStyle(rail_color1).color, 'rgb(0, 0, 0)'); + assert.htmlEqual(window.getComputedStyle(track_color1).color, 'rgb(255, 0, 0)'); + assert.htmlEqual(window.getComputedStyle(rail_color2).color, 'rgb(0, 255, 0)'); + assert.htmlEqual(window.getComputedStyle(track_color2).color, 'rgb(0, 0, 255)'); } }; diff --git a/packages/svelte/test/runtime-browser/samples/svelte-component-css-custom-properties/_config.js b/packages/svelte/test/runtime-browser/samples/svelte-component-css-custom-properties/_config.js index 8e423af308..53ff398e8f 100644 --- a/packages/svelte/test/runtime-browser/samples/svelte-component-css-custom-properties/_config.js +++ b/packages/svelte/test/runtime-browser/samples/svelte-component-css-custom-properties/_config.js @@ -18,31 +18,31 @@ export default { `, test({ target, window, assert, component }) { function assert_slider_1() { - const railColor1 = target.querySelector('#component1 p'); - const trackColor1 = target.querySelector('#component1 span'); - const railColor2 = target.querySelector('#component2 p'); - const trackColor2 = target.querySelector('#component2 span'); + const rail_color1 = target.querySelector('#component1 p'); + const track_color1 = target.querySelector('#component1 span'); + const rail_color2 = target.querySelector('#component2 p'); + const track_color2 = target.querySelector('#component2 span'); - assert.equal(window.getComputedStyle(railColor1).color, 'rgb(0, 0, 0)'); - assert.equal(window.getComputedStyle(trackColor1).color, 'rgb(255, 0, 0)'); - assert.equal(window.getComputedStyle(railColor2).color, 'rgb(0, 255, 0)'); - assert.equal(window.getComputedStyle(trackColor2).color, 'rgb(0, 0, 255)'); - assert.equal(railColor1.textContent, 'Slider1'); - assert.equal(railColor2.textContent, 'Slider1'); + assert.equal(window.getComputedStyle(rail_color1).color, 'rgb(0, 0, 0)'); + assert.equal(window.getComputedStyle(track_color1).color, 'rgb(255, 0, 0)'); + assert.equal(window.getComputedStyle(rail_color2).color, 'rgb(0, 255, 0)'); + assert.equal(window.getComputedStyle(track_color2).color, 'rgb(0, 0, 255)'); + assert.equal(rail_color1.textContent, 'Slider1'); + assert.equal(rail_color2.textContent, 'Slider1'); } function assert_slider_2() { - const railColor1 = target.querySelector('#component1 p'); - const trackColor1 = target.querySelector('#component1 span'); - const railColor2 = target.querySelector('#component2 p'); - const trackColor2 = target.querySelector('#component2 span'); + const rail_color1 = target.querySelector('#component1 p'); + const track_color1 = target.querySelector('#component1 span'); + const rail_color2 = target.querySelector('#component2 p'); + const track_color2 = target.querySelector('#component2 span'); - assert.equal(window.getComputedStyle(railColor1).color, 'rgb(0, 0, 0)'); - assert.equal(window.getComputedStyle(trackColor1).color, 'rgb(255, 0, 0)'); - assert.equal(window.getComputedStyle(railColor2).color, 'rgb(0, 255, 0)'); - assert.equal(window.getComputedStyle(trackColor2).color, 'rgb(0, 0, 255)'); - assert.equal(railColor1.textContent, 'Slider2'); - assert.equal(railColor2.textContent, 'Slider2'); + assert.equal(window.getComputedStyle(rail_color1).color, 'rgb(0, 0, 0)'); + assert.equal(window.getComputedStyle(track_color1).color, 'rgb(255, 0, 0)'); + assert.equal(window.getComputedStyle(rail_color2).color, 'rgb(0, 255, 0)'); + assert.equal(window.getComputedStyle(track_color2).color, 'rgb(0, 0, 255)'); + assert.equal(rail_color1.textContent, 'Slider2'); + assert.equal(rail_color2.textContent, 'Slider2'); } assert_slider_1(); diff --git a/packages/svelte/test/runtime-browser/samples/svelte-component-css-custom-properties2/_config.js b/packages/svelte/test/runtime-browser/samples/svelte-component-css-custom-properties2/_config.js index 6bc789035d..6c3656f630 100644 --- a/packages/svelte/test/runtime-browser/samples/svelte-component-css-custom-properties2/_config.js +++ b/packages/svelte/test/runtime-browser/samples/svelte-component-css-custom-properties2/_config.js @@ -20,31 +20,31 @@ export default { `, test({ target, window, assert, component }) { function assert_slider_1() { - const railColor1 = target.querySelector('#component1 p'); - const trackColor1 = target.querySelector('#component1 span'); - const railColor2 = target.querySelector('#component2 p'); - const trackColor2 = target.querySelector('#component2 span'); + const rail_color1 = target.querySelector('#component1 p'); + const track_color1 = target.querySelector('#component1 span'); + const rail_color2 = target.querySelector('#component2 p'); + const track_color2 = target.querySelector('#component2 span'); - assert.equal(window.getComputedStyle(railColor1).color, 'rgb(0, 0, 0)'); - assert.equal(window.getComputedStyle(trackColor1).color, 'rgb(255, 0, 0)'); - assert.equal(window.getComputedStyle(railColor2).color, 'rgb(0, 255, 0)'); - assert.equal(window.getComputedStyle(trackColor2).color, 'rgb(0, 0, 255)'); - assert.equal(railColor1.textContent, 'Slider1'); - assert.equal(railColor2.textContent, 'Slider1'); + assert.equal(window.getComputedStyle(rail_color1).color, 'rgb(0, 0, 0)'); + assert.equal(window.getComputedStyle(track_color1).color, 'rgb(255, 0, 0)'); + assert.equal(window.getComputedStyle(rail_color2).color, 'rgb(0, 255, 0)'); + assert.equal(window.getComputedStyle(track_color2).color, 'rgb(0, 0, 255)'); + assert.equal(rail_color1.textContent, 'Slider1'); + assert.equal(rail_color2.textContent, 'Slider1'); } function assert_slider_2() { - const railColor1 = target.querySelector('#component1 p'); - const trackColor1 = target.querySelector('#component1 span'); - const railColor2 = target.querySelector('#component2 p'); - const trackColor2 = target.querySelector('#component2 span'); + const rail_color1 = target.querySelector('#component1 p'); + const track_color1 = target.querySelector('#component1 span'); + const rail_color2 = target.querySelector('#component2 p'); + const track_color2 = target.querySelector('#component2 span'); - assert.equal(window.getComputedStyle(railColor1).color, 'rgb(0, 0, 0)'); - assert.equal(window.getComputedStyle(trackColor1).color, 'rgb(255, 0, 0)'); - assert.equal(window.getComputedStyle(railColor2).color, 'rgb(0, 255, 0)'); - assert.equal(window.getComputedStyle(trackColor2).color, 'rgb(0, 0, 255)'); - assert.equal(railColor1.textContent, 'Slider2'); - assert.equal(railColor2.textContent, 'Slider2'); + assert.equal(window.getComputedStyle(rail_color1).color, 'rgb(0, 0, 0)'); + assert.equal(window.getComputedStyle(track_color1).color, 'rgb(255, 0, 0)'); + assert.equal(window.getComputedStyle(rail_color2).color, 'rgb(0, 255, 0)'); + assert.equal(window.getComputedStyle(track_color2).color, 'rgb(0, 0, 255)'); + assert.equal(rail_color1.textContent, 'Slider2'); + assert.equal(rail_color2.textContent, 'Slider2'); } assert_slider_1(); diff --git a/packages/svelte/test/runtime-browser/samples/svelte-self-css-custom-properties/_config.js b/packages/svelte/test/runtime-browser/samples/svelte-self-css-custom-properties/_config.js index f3023db3c4..7350db32ca 100644 --- a/packages/svelte/test/runtime-browser/samples/svelte-self-css-custom-properties/_config.js +++ b/packages/svelte/test/runtime-browser/samples/svelte-self-css-custom-properties/_config.js @@ -22,26 +22,26 @@ export default { `, test({ target, window, assert }) { - const railColor1 = target.querySelector('#component1 p'); - const trackColor1 = target.querySelector('#component1 span'); - const railColor2 = target.querySelector('#component2 p'); - const trackColor2 = target.querySelector('#component2 span'); - const nestRailColor1 = target.querySelector('#nest-component1 p'); - const nestTrackColor1 = target.querySelector('#nest-component1 span'); - const nestRailColor2 = target.querySelector('#nest-component2 p'); - const nestTrackColor2 = target.querySelector('#nest-component2 span'); + const rail_color1 = target.querySelector('#component1 p'); + const track_color1 = target.querySelector('#component1 span'); + const rail_color2 = target.querySelector('#component2 p'); + const track_color2 = target.querySelector('#component2 span'); + const nest_rail_color1 = target.querySelector('#nest-component1 p'); + const nest_track_color1 = target.querySelector('#nest-component1 span'); + const nest_rail_color2 = target.querySelector('#nest-component2 p'); + const nest_track_color2 = target.querySelector('#nest-component2 span'); - assert.equal(window.getComputedStyle(railColor1).color, 'rgb(0, 0, 0)'); - assert.equal(window.getComputedStyle(trackColor1).color, 'rgb(255, 0, 0)'); - assert.equal(window.getComputedStyle(railColor2).color, 'rgb(0, 255, 0)'); - assert.equal(window.getComputedStyle(trackColor2).color, 'rgb(0, 0, 255)'); - assert.equal(window.getComputedStyle(nestRailColor1).color, 'rgb(255, 255, 0)'); - assert.equal(window.getComputedStyle(nestTrackColor1).color, 'rgb(255, 0, 255)'); - assert.equal(window.getComputedStyle(nestRailColor2).color, 'rgb(0, 255, 255)'); - assert.equal(window.getComputedStyle(nestTrackColor2).color, 'rgb(255, 255, 255)'); - assert.equal(railColor1.textContent, 'Slider1'); - assert.equal(railColor2.textContent, 'Slider2'); - assert.equal(nestRailColor1.textContent, 'Slider1'); - assert.equal(nestRailColor2.textContent, 'Slider2'); + assert.equal(window.getComputedStyle(rail_color1).color, 'rgb(0, 0, 0)'); + assert.equal(window.getComputedStyle(track_color1).color, 'rgb(255, 0, 0)'); + assert.equal(window.getComputedStyle(rail_color2).color, 'rgb(0, 255, 0)'); + assert.equal(window.getComputedStyle(track_color2).color, 'rgb(0, 0, 255)'); + assert.equal(window.getComputedStyle(nest_rail_color1).color, 'rgb(255, 255, 0)'); + assert.equal(window.getComputedStyle(nest_track_color1).color, 'rgb(255, 0, 255)'); + assert.equal(window.getComputedStyle(nest_rail_color2).color, 'rgb(0, 255, 255)'); + assert.equal(window.getComputedStyle(nest_track_color2).color, 'rgb(255, 255, 255)'); + assert.equal(rail_color1.textContent, 'Slider1'); + assert.equal(rail_color2.textContent, 'Slider2'); + assert.equal(nest_rail_color1.textContent, 'Slider1'); + assert.equal(nest_rail_color2.textContent, 'Slider2'); } }; diff --git a/packages/svelte/test/runtime-browser/samples/svelte-self-css-custom-properties2/_config.js b/packages/svelte/test/runtime-browser/samples/svelte-self-css-custom-properties2/_config.js index 6a976a141c..58ff163f9b 100644 --- a/packages/svelte/test/runtime-browser/samples/svelte-self-css-custom-properties2/_config.js +++ b/packages/svelte/test/runtime-browser/samples/svelte-self-css-custom-properties2/_config.js @@ -25,51 +25,51 @@ export default { `, test({ target, window, assert, component }) { function assert_slider_1() { - const railColor1 = target.querySelector('#component1 p'); - const trackColor1 = target.querySelector('#component1 span'); - const railColor2 = target.querySelector('#component2 p'); - const trackColor2 = target.querySelector('#component2 span'); - const nestRailColor1 = target.querySelector('#nest-component1 p'); - const nestTrackColor1 = target.querySelector('#nest-component1 span'); - const nestRailColor2 = target.querySelector('#nest-component2 p'); - const nestTrackColor2 = target.querySelector('#nest-component2 span'); + const rail_color1 = target.querySelector('#component1 p'); + const track_color1 = target.querySelector('#component1 span'); + const rail_color2 = target.querySelector('#component2 p'); + const track_color2 = target.querySelector('#component2 span'); + const nest_rail_color1 = target.querySelector('#nest-component1 p'); + const nest_track_color1 = target.querySelector('#nest-component1 span'); + const nest_rail_color2 = target.querySelector('#nest-component2 p'); + const nest_track_color2 = target.querySelector('#nest-component2 span'); - assert.equal(window.getComputedStyle(railColor1).color, 'rgb(0, 0, 0)'); - assert.equal(window.getComputedStyle(trackColor1).color, 'rgb(255, 0, 0)'); - assert.equal(window.getComputedStyle(railColor2).color, 'rgb(0, 255, 0)'); - assert.equal(window.getComputedStyle(trackColor2).color, 'rgb(0, 0, 255)'); - assert.equal(window.getComputedStyle(nestRailColor1).color, 'rgb(255, 255, 0)'); - assert.equal(window.getComputedStyle(nestTrackColor1).color, 'rgb(255, 0, 255)'); - assert.equal(window.getComputedStyle(nestRailColor2).color, 'rgb(255, 255, 0)'); - assert.equal(window.getComputedStyle(nestTrackColor2).color, 'rgb(255, 0, 255)'); - assert.equal(railColor1.textContent, 'Slider1'); - assert.equal(railColor2.textContent, 'Slider1'); - assert.equal(nestRailColor1.textContent, 'Slider1'); - assert.equal(nestRailColor2.textContent, 'Slider1'); + assert.equal(window.getComputedStyle(rail_color1).color, 'rgb(0, 0, 0)'); + assert.equal(window.getComputedStyle(track_color1).color, 'rgb(255, 0, 0)'); + assert.equal(window.getComputedStyle(rail_color2).color, 'rgb(0, 255, 0)'); + assert.equal(window.getComputedStyle(track_color2).color, 'rgb(0, 0, 255)'); + assert.equal(window.getComputedStyle(nest_rail_color1).color, 'rgb(255, 255, 0)'); + assert.equal(window.getComputedStyle(nest_track_color1).color, 'rgb(255, 0, 255)'); + assert.equal(window.getComputedStyle(nest_rail_color2).color, 'rgb(255, 255, 0)'); + assert.equal(window.getComputedStyle(nest_track_color2).color, 'rgb(255, 0, 255)'); + assert.equal(rail_color1.textContent, 'Slider1'); + assert.equal(rail_color2.textContent, 'Slider1'); + assert.equal(nest_rail_color1.textContent, 'Slider1'); + assert.equal(nest_rail_color2.textContent, 'Slider1'); } function assert_slider_2() { - const railColor1 = target.querySelector('#component1 p'); - const trackColor1 = target.querySelector('#component1 span'); - const railColor2 = target.querySelector('#component2 p'); - const trackColor2 = target.querySelector('#component2 span'); - const nestRailColor1 = target.querySelector('#nest-component1 p'); - const nestTrackColor1 = target.querySelector('#nest-component1 span'); - const nestRailColor2 = target.querySelector('#nest-component2 p'); - const nestTrackColor2 = target.querySelector('#nest-component2 span'); + const rail_color1 = target.querySelector('#component1 p'); + const track_color1 = target.querySelector('#component1 span'); + const rail_color2 = target.querySelector('#component2 p'); + const track_color2 = target.querySelector('#component2 span'); + const nest_rail_color1 = target.querySelector('#nest-component1 p'); + const nest_track_color1 = target.querySelector('#nest-component1 span'); + const nest_rail_color2 = target.querySelector('#nest-component2 p'); + const nest_track_color2 = target.querySelector('#nest-component2 span'); - assert.equal(window.getComputedStyle(railColor1).color, 'rgb(0, 0, 0)'); - assert.equal(window.getComputedStyle(trackColor1).color, 'rgb(255, 0, 0)'); - assert.equal(window.getComputedStyle(railColor2).color, 'rgb(0, 255, 0)'); - assert.equal(window.getComputedStyle(trackColor2).color, 'rgb(0, 0, 255)'); - assert.equal(window.getComputedStyle(nestRailColor1).color, 'rgb(0, 255, 255)'); - assert.equal(window.getComputedStyle(nestTrackColor1).color, 'rgb(255, 255, 255)'); - assert.equal(window.getComputedStyle(nestRailColor2).color, 'rgb(0, 255, 255)'); - assert.equal(window.getComputedStyle(nestTrackColor2).color, 'rgb(255, 255, 255)'); - assert.equal(railColor1.textContent, 'Slider2'); - assert.equal(railColor2.textContent, 'Slider2'); - assert.equal(nestRailColor1.textContent, 'Slider2'); - assert.equal(nestRailColor2.textContent, 'Slider2'); + assert.equal(window.getComputedStyle(rail_color1).color, 'rgb(0, 0, 0)'); + assert.equal(window.getComputedStyle(track_color1).color, 'rgb(255, 0, 0)'); + assert.equal(window.getComputedStyle(rail_color2).color, 'rgb(0, 255, 0)'); + assert.equal(window.getComputedStyle(track_color2).color, 'rgb(0, 0, 255)'); + assert.equal(window.getComputedStyle(nest_rail_color1).color, 'rgb(0, 255, 255)'); + assert.equal(window.getComputedStyle(nest_track_color1).color, 'rgb(255, 255, 255)'); + assert.equal(window.getComputedStyle(nest_rail_color2).color, 'rgb(0, 255, 255)'); + assert.equal(window.getComputedStyle(nest_track_color2).color, 'rgb(255, 255, 255)'); + assert.equal(rail_color1.textContent, 'Slider2'); + assert.equal(rail_color2.textContent, 'Slider2'); + assert.equal(nest_rail_color1.textContent, 'Slider2'); + assert.equal(nest_rail_color2.textContent, 'Slider2'); } assert_slider_1(); diff --git a/packages/svelte/test/runtime/runtime.shared.js b/packages/svelte/test/runtime/runtime.shared.js index b02dfb81ff..09b990b514 100644 --- a/packages/svelte/test/runtime/runtime.shared.js +++ b/packages/svelte/test/runtime/runtime.shared.js @@ -55,18 +55,18 @@ async function run_test(dir) { const cwd = path.resolve(`${__dirname}/samples/${dir}`); - const compileOptions = Object.assign({}, config.compileOptions || {}, { + const compile_options = Object.assign({}, config.compileOptions || {}, { hydratable: hydrate, immutable: config.immutable, accessors: 'accessors' in config ? config.accessors : true }); - const load = create_loader(compileOptions, cwd); + const load = create_loader(compile_options, cwd); let mod; let SvelteComponent; - let unintendedError = null; + let unintended_error = null; if (config.expect_unhandled_rejections) { listeners.forEach((listener) => { @@ -111,7 +111,7 @@ async function run_test(dir) { let snapshot = undefined; if (hydrate && from_ssr_html) { - const load_ssr = create_loader({ ...compileOptions, generate: 'ssr' }, cwd); + const load_ssr = create_loader({ ...compile_options, generate: 'ssr' }, cwd); // ssr into target if (config.before_test) config.before_test(); @@ -152,14 +152,14 @@ async function run_test(dir) { console.warn = warn; if (config.error) { - unintendedError = true; + unintended_error = true; assert.fail('Expected a runtime error'); } if (config.warnings) { assert.deepEqual(warnings, config.warnings); } else if (warnings.length) { - unintendedError = true; + unintended_error = true; assert.fail('Received unexpected warnings'); } @@ -183,7 +183,7 @@ async function run_test(dir) { snapshot, window, raf, - compileOptions, + compileOptions: compile_options, load }); } @@ -201,7 +201,7 @@ async function run_test(dir) { await test() .catch((err) => { - if (config.error && !unintendedError) { + if (config.error && !unintended_error) { if (typeof config.error === 'function') { config.error(assert, err); } else { @@ -217,7 +217,7 @@ async function run_test(dir) { mkdirp(path.dirname(out)); // file could be in subdirectory, therefore don't use dir const { js } = compile(fs.readFileSync(`${cwd}/${file}`, 'utf-8').replace(/\r/g, ''), { - ...compileOptions, + ...compile_options, filename: file }); fs.writeFileSync(out, js.code); diff --git a/packages/svelte/test/runtime/samples/$$rest-without-props/_config.js b/packages/svelte/test/runtime/samples/$$rest-without-props/_config.js index 9412aa99df..fb1d4f23ce 100644 --- a/packages/svelte/test/runtime/samples/$$rest-without-props/_config.js +++ b/packages/svelte/test/runtime/samples/$$rest-without-props/_config.js @@ -10,9 +10,9 @@ export default { `, async test({ assert, target, window }) { const [btn1, btn2, btn3, btn4] = target.querySelectorAll('button'); - const clickEvent = new window.MouseEvent('click'); + const click_event = new window.MouseEvent('click'); - await btn1.dispatchEvent(clickEvent); + await btn1.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -24,7 +24,7 @@ export default { ` ); - await btn2.dispatchEvent(clickEvent); + await btn2.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -36,7 +36,7 @@ export default { ` ); - await btn3.dispatchEvent(clickEvent); + await btn3.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -48,7 +48,7 @@ export default { ` ); - await btn4.dispatchEvent(clickEvent); + await btn4.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/$$rest/_config.js b/packages/svelte/test/runtime/samples/$$rest/_config.js index 4d050059fc..473ad9f9bc 100644 --- a/packages/svelte/test/runtime/samples/$$rest/_config.js +++ b/packages/svelte/test/runtime/samples/$$rest/_config.js @@ -12,9 +12,9 @@ export default { async test({ assert, target, window }) { const [btn1, btn2, btn3, btn4] = target.querySelectorAll('button'); - const clickEvent = new window.MouseEvent('click'); + const click_event = new window.MouseEvent('click'); - await btn1.dispatchEvent(clickEvent); + await btn1.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -27,7 +27,7 @@ export default { ` ); - await btn2.dispatchEvent(clickEvent); + await btn2.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -40,7 +40,7 @@ export default { ` ); - await btn3.dispatchEvent(clickEvent); + await btn3.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -53,7 +53,7 @@ export default { ` ); - await btn4.dispatchEvent(clickEvent); + await btn4.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/action-function/_config.js b/packages/svelte/test/runtime/samples/action-function/_config.js index f8cf390550..1bc45788e5 100644 --- a/packages/svelte/test/runtime/samples/action-function/_config.js +++ b/packages/svelte/test/runtime/samples/action-function/_config.js @@ -5,10 +5,10 @@ export default { async test({ assert, target, window }) { const button = target.querySelector('button'); - const eventEnter = new window.MouseEvent('mouseenter'); - const eventLeave = new window.MouseEvent('mouseleave'); + const event_enter = new window.MouseEvent('mouseenter'); + const event_leave = new window.MouseEvent('mouseleave'); - await button.dispatchEvent(eventEnter); + await button.dispatchEvent(event_enter); assert.htmlEqual( target.innerHTML, ` @@ -17,7 +17,7 @@ export default { ` ); - await button.dispatchEvent(eventLeave); + await button.dispatchEvent(event_leave); assert.htmlEqual( target.innerHTML, ` diff --git a/packages/svelte/test/runtime/samples/action-update/_config.js b/packages/svelte/test/runtime/samples/action-update/_config.js index 0de4397418..f8ce663a8f 100644 --- a/packages/svelte/test/runtime/samples/action-update/_config.js +++ b/packages/svelte/test/runtime/samples/action-update/_config.js @@ -7,7 +7,7 @@ export default { const button = target.querySelector('button'); const enter = new window.MouseEvent('mouseenter'); const leave = new window.MouseEvent('mouseleave'); - const ctrlPress = new window.KeyboardEvent('keydown', { ctrlKey: true }); + const ctrl_press = new window.KeyboardEvent('keydown', { ctrlKey: true }); await button.dispatchEvent(enter); assert.htmlEqual( @@ -18,7 +18,7 @@ export default { ` ); - await window.dispatchEvent(ctrlPress); + await window.dispatchEvent(ctrl_press); assert.htmlEqual( target.innerHTML, ` diff --git a/packages/svelte/test/runtime/samples/action/_config.js b/packages/svelte/test/runtime/samples/action/_config.js index f8cf390550..1bc45788e5 100644 --- a/packages/svelte/test/runtime/samples/action/_config.js +++ b/packages/svelte/test/runtime/samples/action/_config.js @@ -5,10 +5,10 @@ export default { async test({ assert, target, window }) { const button = target.querySelector('button'); - const eventEnter = new window.MouseEvent('mouseenter'); - const eventLeave = new window.MouseEvent('mouseleave'); + const event_enter = new window.MouseEvent('mouseenter'); + const event_leave = new window.MouseEvent('mouseleave'); - await button.dispatchEvent(eventEnter); + await button.dispatchEvent(event_enter); assert.htmlEqual( target.innerHTML, ` @@ -17,7 +17,7 @@ export default { ` ); - await button.dispatchEvent(eventLeave); + await button.dispatchEvent(event_leave); assert.htmlEqual( target.innerHTML, ` diff --git a/packages/svelte/test/runtime/samples/await-function-promise/_config.js b/packages/svelte/test/runtime/samples/await-function-promise/_config.js index 01fe60cd0b..44cf13160b 100644 --- a/packages/svelte/test/runtime/samples/await-function-promise/_config.js +++ b/packages/svelte/test/runtime/samples/await-function-promise/_config.js @@ -1,8 +1,8 @@ -const realPromise = Promise.resolve(42); +const real_promise = Promise.resolve(42); const promise = () => {}; -promise.then = realPromise.then.bind(realPromise); -promise.catch = realPromise.catch.bind(realPromise); +promise.then = real_promise.then.bind(real_promise); +promise.catch = real_promise.catch.bind(real_promise); export default { get props() { diff --git a/packages/svelte/test/runtime/samples/await-in-each/_config.js b/packages/svelte/test/runtime/samples/await-in-each/_config.js index 0e4109ea49..73dbb01e87 100644 --- a/packages/svelte/test/runtime/samples/await-in-each/_config.js +++ b/packages/svelte/test/runtime/samples/await-in-each/_config.js @@ -1,13 +1,13 @@ let fulfil; -const thePromise = new Promise((f) => { +const the_promise = new Promise((f) => { fulfil = f; }); const items = [ { title: 'a title', - data: thePromise + data: the_promise } ]; @@ -23,7 +23,7 @@ export default { test({ assert, target }) { fulfil(42); - return thePromise.then(() => { + return the_promise.then(() => { assert.htmlEqual( target.innerHTML, ` diff --git a/packages/svelte/test/runtime/samples/await-then-catch-event/_config.js b/packages/svelte/test/runtime/samples/await-then-catch-event/_config.js index 2705eb7e17..32189e2389 100644 --- a/packages/svelte/test/runtime/samples/await-then-catch-event/_config.js +++ b/packages/svelte/test/runtime/samples/await-then-catch-event/_config.js @@ -28,10 +28,10 @@ export default { assert.equal(component.clicked, 42); - const thePromise = Promise.resolve(43); - component.thePromise = thePromise; + const the_promise = Promise.resolve(43); + component.thePromise = the_promise; - return thePromise; + return the_promise; }) .then(() => { const { button } = component; diff --git a/packages/svelte/test/runtime/samples/await-then-catch-if/_config.js b/packages/svelte/test/runtime/samples/await-then-catch-if/_config.js index 42683c56f8..f6a3e2b981 100644 --- a/packages/svelte/test/runtime/samples/await-then-catch-if/_config.js +++ b/packages/svelte/test/runtime/samples/await-then-catch-if/_config.js @@ -1,12 +1,12 @@ let fulfil; -const thePromise = new Promise((f) => { +const the_promise = new Promise((f) => { fulfil = f; }); export default { get props() { - return { show: true, thePromise }; + return { show: true, thePromise: the_promise }; }, html: ` @@ -16,7 +16,7 @@ export default { test({ assert, component, target }) { fulfil(42); - return thePromise.then(() => { + return the_promise.then(() => { assert.htmlEqual( target.innerHTML, ` @@ -35,7 +35,7 @@ export default { component.show = true; - return thePromise.then(() => { + return the_promise.then(() => { assert.htmlEqual( target.innerHTML, ` diff --git a/packages/svelte/test/runtime/samples/await-then-catch-order/_config.js b/packages/svelte/test/runtime/samples/await-then-catch-order/_config.js index 275d250233..b588d2e150 100644 --- a/packages/svelte/test/runtime/samples/await-then-catch-order/_config.js +++ b/packages/svelte/test/runtime/samples/await-then-catch-order/_config.js @@ -1,12 +1,12 @@ let fulfil; -const thePromise = new Promise((f) => { +const the_promise = new Promise((f) => { fulfil = f; }); export default { get props() { - return { thePromise }; + return { thePromise: the_promise }; }, html: ` @@ -16,7 +16,7 @@ export default { test({ assert, target }) { fulfil(42); - return thePromise.then(() => { + return the_promise.then(() => { assert.htmlEqual( target.innerHTML, ` diff --git a/packages/svelte/test/runtime/samples/await-then-if/_config.js b/packages/svelte/test/runtime/samples/await-then-if/_config.js index b32ba04715..38bf183971 100644 --- a/packages/svelte/test/runtime/samples/await-then-if/_config.js +++ b/packages/svelte/test/runtime/samples/await-then-if/_config.js @@ -1,12 +1,12 @@ let fulfil; -const thePromise = new Promise((f) => { +const the_promise = new Promise((f) => { fulfil = f; }); export default { get props() { - return { thePromise }; + return { thePromise: the_promise }; }, html: ` @@ -16,7 +16,7 @@ export default { async test({ assert, target }) { fulfil([]); - await thePromise; + await the_promise; assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/binding-input-checkbox-with-event-in-each/_config.js b/packages/svelte/test/runtime/samples/binding-input-checkbox-with-event-in-each/_config.js index 85e78d35dc..fb5aa27b91 100644 --- a/packages/svelte/test/runtime/samples/binding-input-checkbox-with-event-in-each/_config.js +++ b/packages/svelte/test/runtime/samples/binding-input-checkbox-with-event-in-each/_config.js @@ -15,12 +15,12 @@ export default { test({ assert, component, target, window }) { const { cats } = component; - const newCats = cats.slice(); - newCats.push({ + const new_cats = cats.slice(); + new_cats.push({ name: 'cat ' + cats.length, checked: false }); - component.cats = newCats; + component.cats = new_cats; let inputs = target.querySelectorAll('input'); assert.equal(inputs.length, 3); diff --git a/packages/svelte/test/runtime/samples/binding-input-group-each-7/_config.js b/packages/svelte/test/runtime/samples/binding-input-group-each-7/_config.js index 7535001f67..3de0231f10 100644 --- a/packages/svelte/test/runtime/samples/binding-input-group-each-7/_config.js +++ b/packages/svelte/test/runtime/samples/binding-input-group-each-7/_config.js @@ -23,7 +23,7 @@ export default { async test({ assert, target, window }) { const inputs = target.querySelectorAll('input'); const checked = new Set(); - const checkInbox = async (i) => { + const check_inbox = async (i) => { checked.add(i); inputs[i].checked = true; await inputs[i].dispatchEvent(event); @@ -35,17 +35,17 @@ export default { const event = new window.Event('change'); - await checkInbox(2); + await check_inbox(2); for (let i = 0; i < 18; i++) { assert.equal(inputs[i].checked, checked.has(i)); } - await checkInbox(12); + await check_inbox(12); for (let i = 0; i < 18; i++) { assert.equal(inputs[i].checked, checked.has(i)); } - await checkInbox(8); + await check_inbox(8); for (let i = 0; i < 18; i++) { assert.equal(inputs[i].checked, checked.has(i)); } diff --git a/packages/svelte/test/runtime/samples/binding-input-group-if-gh-8372-1/_config.js b/packages/svelte/test/runtime/samples/binding-input-group-if-gh-8372-1/_config.js index bdc4da2d57..29d7b14bca 100644 --- a/packages/svelte/test/runtime/samples/binding-input-group-if-gh-8372-1/_config.js +++ b/packages/svelte/test/runtime/samples/binding-input-group-if-gh-8372-1/_config.js @@ -1,8 +1,8 @@ export default { async test({ assert, target, component, window }) { const button = target.querySelector('button'); - const clickEvent = new window.Event('click'); - const changeEvent = new window.Event('change'); + const click_event = new window.Event('click'); + const change_event = new window.Event('change'); const [input1, input2] = target.querySelectorAll('input[type="checkbox"]'); function validate_inputs(v1, v2) { @@ -17,24 +17,24 @@ export default { validate_inputs(true, true); input1.checked = false; - await input1.dispatchEvent(changeEvent); + await input1.dispatchEvent(change_event); assert.deepEqual(component.test, ['b']); input2.checked = false; - await input2.dispatchEvent(changeEvent); + await input2.dispatchEvent(change_event); assert.deepEqual(component.test, []); input1.checked = true; input2.checked = true; - await input1.dispatchEvent(changeEvent); - await input2.dispatchEvent(changeEvent); + await input1.dispatchEvent(change_event); + await input2.dispatchEvent(change_event); assert.deepEqual(component.test, ['b', 'a']); - await button.dispatchEvent(clickEvent); + await button.dispatchEvent(click_event); assert.deepEqual(component.test, ['b', 'a']); // should it be ['a'] only? valid arguments for both outcomes input1.checked = false; - await input1.dispatchEvent(changeEvent); + await input1.dispatchEvent(change_event); assert.deepEqual(component.test, []); } }; diff --git a/packages/svelte/test/runtime/samples/binding-input-group-if-gh-8372-2/_config.js b/packages/svelte/test/runtime/samples/binding-input-group-if-gh-8372-2/_config.js index a8d5a7137f..86f391496e 100644 --- a/packages/svelte/test/runtime/samples/binding-input-group-if-gh-8372-2/_config.js +++ b/packages/svelte/test/runtime/samples/binding-input-group-if-gh-8372-2/_config.js @@ -1,8 +1,8 @@ export default { async test({ assert, target, component, window }) { const button = target.querySelector('button'); - const clickEvent = new window.Event('click'); - const changeEvent = new window.Event('change'); + const click_event = new window.Event('click'); + const change_event = new window.Event('change'); const [input1, input2] = target.querySelectorAll('input[type="radio"]'); function validate_inputs(v1, v2) { @@ -17,18 +17,18 @@ export default { validate_inputs(false, true); input1.checked = true; - await input1.dispatchEvent(changeEvent); + await input1.dispatchEvent(change_event); assert.deepEqual(component.test, 'a'); input2.checked = true; - await input2.dispatchEvent(changeEvent); + await input2.dispatchEvent(change_event); assert.deepEqual(component.test, 'b'); - await button.dispatchEvent(clickEvent); + await button.dispatchEvent(click_event); assert.deepEqual(component.test, 'b'); // should it be undefined? valid arguments for both outcomes input1.checked = true; - await input1.dispatchEvent(changeEvent); + await input1.dispatchEvent(change_event); assert.deepEqual(component.test, 'a'); } }; diff --git a/packages/svelte/test/runtime/samples/binding-input-number-2/_config.js b/packages/svelte/test/runtime/samples/binding-input-number-2/_config.js index 4411eac0b2..d65df9b819 100644 --- a/packages/svelte/test/runtime/samples/binding-input-number-2/_config.js +++ b/packages/svelte/test/runtime/samples/binding-input-number-2/_config.js @@ -1,25 +1,25 @@ export default { test({ assert, target, window, component }) { const input = target.querySelector('input'); - const inputEvent = new window.InputEvent('input'); + const input_event = new window.InputEvent('input'); assert.equal(component.value, 5); assert.equal(input.value, '5'); input.value = '5.'; - input.dispatchEvent(inputEvent); + input.dispatchEvent(input_event); // input type number has value === "" if ends with dot/comma assert.equal(component.value, undefined); assert.equal(input.value, ''); input.value = '5.5'; - input.dispatchEvent(inputEvent); + input.dispatchEvent(input_event); assert.equal(component.value, 5.5); assert.equal(input.value, '5.5'); input.value = '5.50'; - input.dispatchEvent(inputEvent); + input.dispatchEvent(input_event); assert.equal(component.value, 5.5); assert.equal(input.value, '5.50'); diff --git a/packages/svelte/test/runtime/samples/component-binding-deep-b/_config.js b/packages/svelte/test/runtime/samples/component-binding-deep-b/_config.js index 1b0e09f735..fea5ea4151 100644 --- a/packages/svelte/test/runtime/samples/component-binding-deep-b/_config.js +++ b/packages/svelte/test/runtime/samples/component-binding-deep-b/_config.js @@ -9,13 +9,13 @@ const components = [ } ]; -const selectedComponent = components[0]; +const selected_component = components[0]; export default { skip: true, // doesn't reflect real-world bug, maybe a JSDOM quirk get props() { - return { components, selectedComponent }; + return { components, selectedComponent: selected_component }; }, html: ` diff --git a/packages/svelte/test/runtime/samples/component-event-handler-dynamic/_config.js b/packages/svelte/test/runtime/samples/component-event-handler-dynamic/_config.js index 415b860828..775899740e 100644 --- a/packages/svelte/test/runtime/samples/component-event-handler-dynamic/_config.js +++ b/packages/svelte/test/runtime/samples/component-event-handler-dynamic/_config.js @@ -5,13 +5,13 @@ export default { `, async test({ assert, component, target, window }) { - const [updateButton, button] = target.querySelectorAll('button'); + const [update_button, button] = target.querySelectorAll('button'); const event = new window.MouseEvent('click'); await button.dispatchEvent(event); assert.equal(component.count, 1); - await updateButton.dispatchEvent(event); + await update_button.dispatchEvent(event); await button.dispatchEvent(event); assert.equal(component.count, 11); } diff --git a/packages/svelte/test/runtime/samples/component-event-handler-modifier-once-dynamic/_config.js b/packages/svelte/test/runtime/samples/component-event-handler-modifier-once-dynamic/_config.js index 8796e0faf6..47b6c07edc 100644 --- a/packages/svelte/test/runtime/samples/component-event-handler-modifier-once-dynamic/_config.js +++ b/packages/svelte/test/runtime/samples/component-event-handler-modifier-once-dynamic/_config.js @@ -5,10 +5,10 @@ export default { `, async test({ assert, component, target, window }) { - const [updateButton, button] = target.querySelectorAll('button'); + const [update_button, button] = target.querySelectorAll('button'); const event = new window.MouseEvent('click'); - await updateButton.dispatchEvent(event); + await update_button.dispatchEvent(event); await button.dispatchEvent(event); assert.equal(component.count, 10); diff --git a/packages/svelte/test/runtime/samples/component-slot-fallback-2/_config.js b/packages/svelte/test/runtime/samples/component-slot-fallback-2/_config.js index 7c86357a8e..67e464818b 100644 --- a/packages/svelte/test/runtime/samples/component-slot-fallback-2/_config.js +++ b/packages/svelte/test/runtime/samples/component-slot-fallback-2/_config.js @@ -3,7 +3,7 @@ export default { ssrHtml: ' ', async test({ assert, target, component, window }) { - const [input1, input2, inputFallback] = target.querySelectorAll('input'); + const [input1, input2, input_fallback] = target.querySelectorAll('input'); assert.equal(component.getSubscriberCount(), 3); @@ -13,7 +13,7 @@ export default { await input1.dispatchEvent(new window.Event('input')); assert.equal(input1.value, 'ab'); assert.equal(input2.value, 'ab'); - assert.equal(inputFallback.value, 'ab'); + assert.equal(input_fallback.value, 'ab'); component.props = 'hello'; diff --git a/packages/svelte/test/runtime/samples/component-slot-fallback-5/_config.js b/packages/svelte/test/runtime/samples/component-slot-fallback-5/_config.js index 07d09a3be9..1463dcb560 100644 --- a/packages/svelte/test/runtime/samples/component-slot-fallback-5/_config.js +++ b/packages/svelte/test/runtime/samples/component-slot-fallback-5/_config.js @@ -6,9 +6,9 @@ export default { async test({ assert, target, window }) { const btn = target.querySelector('button'); - const clickEvent = new window.MouseEvent('click'); + const click_event = new window.MouseEvent('click'); - await btn.dispatchEvent(clickEvent); + await btn.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -18,7 +18,7 @@ export default { ` ); - await btn.dispatchEvent(clickEvent); + await btn.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/dynamic-element-animation-2/_config.js b/packages/svelte/test/runtime/samples/dynamic-element-animation-2/_config.js index d8399cac37..306b282f7a 100644 --- a/packages/svelte/test/runtime/samples/dynamic-element-animation-2/_config.js +++ b/packages/svelte/test/runtime/samples/dynamic-element-animation-2/_config.js @@ -1,6 +1,6 @@ -let originalDivGetBoundingClientRect; -let originalSpanGetBoundingClientRect; -let originalParagraphGetBoundingClientRect; +let original_div_get_bounding_client_rect; +let original_span_get_bounding_client_rect; +let original_paragraph_get_bounding_client_rect; export default { skip_if_ssr: true, @@ -26,16 +26,16 @@ export default { `, before_test() { - originalDivGetBoundingClientRect = window.HTMLDivElement.prototype.getBoundingClientRect; - originalSpanGetBoundingClientRect = window.HTMLSpanElement.prototype.getBoundingClientRect; - originalParagraphGetBoundingClientRect = + original_div_get_bounding_client_rect = window.HTMLDivElement.prototype.getBoundingClientRect; + original_span_get_bounding_client_rect = window.HTMLSpanElement.prototype.getBoundingClientRect; + original_paragraph_get_bounding_client_rect = window.HTMLParagraphElement.prototype.getBoundingClientRect; - window.HTMLDivElement.prototype.getBoundingClientRect = fakeGetBoundingClientRect; - window.HTMLSpanElement.prototype.getBoundingClientRect = fakeGetBoundingClientRect; - window.HTMLParagraphElement.prototype.getBoundingClientRect = fakeGetBoundingClientRect; + window.HTMLDivElement.prototype.getBoundingClientRect = fake_get_bounding_client_rect; + window.HTMLSpanElement.prototype.getBoundingClientRect = fake_get_bounding_client_rect; + window.HTMLParagraphElement.prototype.getBoundingClientRect = fake_get_bounding_client_rect; - function fakeGetBoundingClientRect() { + function fake_get_bounding_client_rect() { const index = [...this.parentNode.children].indexOf(this); const top = index * 30; @@ -48,10 +48,10 @@ export default { } }, after_test() { - window.HTMLDivElement.prototype.getBoundingClientRect = originalDivGetBoundingClientRect; - window.HTMLSpanElement.prototype.getBoundingClientRect = originalSpanGetBoundingClientRect; + window.HTMLDivElement.prototype.getBoundingClientRect = original_div_get_bounding_client_rect; + window.HTMLSpanElement.prototype.getBoundingClientRect = original_span_get_bounding_client_rect; window.HTMLParagraphElement.prototype.getBoundingClientRect = - originalParagraphGetBoundingClientRect; + original_paragraph_get_bounding_client_rect; }, async test({ assert, component, raf }) { diff --git a/packages/svelte/test/runtime/samples/each-block-destructured-default-binding/_config.js b/packages/svelte/test/runtime/samples/each-block-destructured-default-binding/_config.js index 2ba27bff03..a27d56a306 100644 --- a/packages/svelte/test/runtime/samples/each-block-destructured-default-binding/_config.js +++ b/packages/svelte/test/runtime/samples/each-block-destructured-default-binding/_config.js @@ -13,10 +13,10 @@ export default { assert.equal(input1.value, ''); assert.equal(input2.value, 'hello'); - const inputEvent = new window.InputEvent('input'); + const input_event = new window.InputEvent('input'); input2.value = 'world'; - input2.dispatchEvent(inputEvent); + input2.dispatchEvent(input_event); assert.equal(input2.value, 'world'); assert.equal(component.array[1].value, 'world'); } diff --git a/packages/svelte/test/runtime/samples/each-block-keyed-random-permute/_config.js b/packages/svelte/test/runtime/samples/each-block-keyed-random-permute/_config.js index 454ef48d0f..4fcea8d68f 100644 --- a/packages/svelte/test/runtime/samples/each-block-keyed-random-permute/_config.js +++ b/packages/svelte/test/runtime/samples/each-block-keyed-random-permute/_config.js @@ -1,6 +1,6 @@ const VALUES = Array.from('abcdefghijklmnopqrstuvwxyz'); -function toObjects(array) { +function to_objects(array) { return array.split('').map((x) => ({ id: x })); } @@ -17,7 +17,7 @@ function permute() { export default { get props() { - return { values: toObjects('abc') }; + return { values: to_objects('abc') }; }, html: '(a)(b)(c)', @@ -29,7 +29,7 @@ export default { .split('') .map((x) => `(${x})`) .join(''); - component.values = toObjects(sequence); + component.values = to_objects(sequence); assert.htmlEqual( target.innerHTML, expected, diff --git a/packages/svelte/test/runtime/samples/each-blocks-assignment-2/_config.js b/packages/svelte/test/runtime/samples/each-blocks-assignment-2/_config.js index 93f06956d0..4f62f6b66b 100644 --- a/packages/svelte/test/runtime/samples/each-blocks-assignment-2/_config.js +++ b/packages/svelte/test/runtime/samples/each-blocks-assignment-2/_config.js @@ -6,8 +6,8 @@ export default { async test({ assert, target, window }) { const button = target.querySelector('button'); - const clickEvent = new window.MouseEvent('click'); - await button.dispatchEvent(clickEvent); + const click_event = new window.MouseEvent('click'); + await button.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/each-blocks-assignment/_config.js b/packages/svelte/test/runtime/samples/each-blocks-assignment/_config.js index 5e22381e9e..11591cf026 100644 --- a/packages/svelte/test/runtime/samples/each-blocks-assignment/_config.js +++ b/packages/svelte/test/runtime/samples/each-blocks-assignment/_config.js @@ -9,10 +9,10 @@ export default { `, async test({ assert, target, window }) { - let [incrementBtn, ...buttons] = target.querySelectorAll('button'); + let [increment_btn, ...buttons] = target.querySelectorAll('button'); - const clickEvent = new window.MouseEvent('click'); - await buttons[0].dispatchEvent(clickEvent); + const click_event = new window.MouseEvent('click'); + await buttons[0].dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -27,7 +27,7 @@ export default { ` ); - await buttons[0].dispatchEvent(clickEvent); + await buttons[0].dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -42,8 +42,8 @@ export default { ` ); - await buttons[2].dispatchEvent(clickEvent); - await buttons[2].dispatchEvent(clickEvent); + await buttons[2].dispatchEvent(click_event); + await buttons[2].dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -58,7 +58,7 @@ export default { ` ); - await incrementBtn.dispatchEvent(clickEvent); + await increment_btn.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -75,9 +75,9 @@ export default { ` ); - [incrementBtn, ...buttons] = target.querySelectorAll('button'); + [increment_btn, ...buttons] = target.querySelectorAll('button'); - await buttons[3].dispatchEvent(clickEvent); + await buttons[3].dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/event-handler-dynamic-hash/_config.js b/packages/svelte/test/runtime/samples/event-handler-dynamic-hash/_config.js index 44990524fd..db34d02d12 100644 --- a/packages/svelte/test/runtime/samples/event-handler-dynamic-hash/_config.js +++ b/packages/svelte/test/runtime/samples/event-handler-dynamic-hash/_config.js @@ -9,7 +9,7 @@ export default { `, async test({ assert, target, window }) { - const [updateButton1, updateButton2, button] = target.querySelectorAll('button'); + const [update_button1, update_button2, button] = target.querySelectorAll('button'); const event = new window.MouseEvent('click'); let err = ''; @@ -32,7 +32,7 @@ export default { ` ); - await updateButton1.dispatchEvent(event); + await update_button1.dispatchEvent(event); await button.dispatchEvent(event); assert.htmlEqual( target.innerHTML, @@ -46,7 +46,7 @@ export default { ` ); - await updateButton2.dispatchEvent(event); + await update_button2.dispatchEvent(event); await button.dispatchEvent(event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/event-handler-dynamic-invalid/_config.js b/packages/svelte/test/runtime/samples/event-handler-dynamic-invalid/_config.js index cac6d60f2e..6043d2ba28 100644 --- a/packages/svelte/test/runtime/samples/event-handler-dynamic-invalid/_config.js +++ b/packages/svelte/test/runtime/samples/event-handler-dynamic-invalid/_config.js @@ -4,7 +4,7 @@ export default { `, async test({ assert, target, window }) { - const [buttonUndef, buttonNull, buttonInvalid] = target.querySelectorAll('button'); + const [button_undef, button_null, button_invalid] = target.querySelectorAll('button'); const event = new window.MouseEvent('click'); let err = ''; @@ -14,13 +14,13 @@ export default { }); // All three should not throw if proper checking is done in runtime code - await buttonUndef.dispatchEvent(event); + await button_undef.dispatchEvent(event); assert.equal(err, '', err); - await buttonNull.dispatchEvent(event); + await button_null.dispatchEvent(event); assert.equal(err, '', err); - await buttonInvalid.dispatchEvent(event); + await button_invalid.dispatchEvent(event); assert.equal(err, '', err); } }; diff --git a/packages/svelte/test/runtime/samples/event-handler-dynamic/_config.js b/packages/svelte/test/runtime/samples/event-handler-dynamic/_config.js index 44990524fd..db34d02d12 100644 --- a/packages/svelte/test/runtime/samples/event-handler-dynamic/_config.js +++ b/packages/svelte/test/runtime/samples/event-handler-dynamic/_config.js @@ -9,7 +9,7 @@ export default { `, async test({ assert, target, window }) { - const [updateButton1, updateButton2, button] = target.querySelectorAll('button'); + const [update_button1, update_button2, button] = target.querySelectorAll('button'); const event = new window.MouseEvent('click'); let err = ''; @@ -32,7 +32,7 @@ export default { ` ); - await updateButton1.dispatchEvent(event); + await update_button1.dispatchEvent(event); await button.dispatchEvent(event); assert.htmlEqual( target.innerHTML, @@ -46,7 +46,7 @@ export default { ` ); - await updateButton2.dispatchEvent(event); + await update_button2.dispatchEvent(event); await button.dispatchEvent(event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/event-handler-each-modifier/_config.js b/packages/svelte/test/runtime/samples/event-handler-each-modifier/_config.js index e96cd1a987..72da7a8537 100644 --- a/packages/svelte/test/runtime/samples/event-handler-each-modifier/_config.js +++ b/packages/svelte/test/runtime/samples/event-handler-each-modifier/_config.js @@ -10,21 +10,21 @@ export default { assert.equal(component.updated, 4); const [item1, item2] = target.childNodes; - const [item1Btn1, item1Btn2] = item1.querySelectorAll('button'); - const [item2Btn1, item2Btn2] = item2.querySelectorAll('button'); + const [item1_btn1, item1_btn2] = item1.querySelectorAll('button'); + const [item2_btn1, item2_btn2] = item2.querySelectorAll('button'); - const clickEvent = new window.MouseEvent('click'); + const click_event = new window.MouseEvent('click'); - await item1Btn1.dispatchEvent(clickEvent); + await item1_btn1.dispatchEvent(click_event); assert.equal(component.getNormalCount(), 1); - await item1Btn2.dispatchEvent(clickEvent); + await item1_btn2.dispatchEvent(click_event); assert.equal(component.getModifierCount(), 1); - await item2Btn1.dispatchEvent(clickEvent); + await item2_btn1.dispatchEvent(click_event); assert.equal(component.getNormalCount(), 2); - await item2Btn2.dispatchEvent(clickEvent); + await item2_btn2.dispatchEvent(click_event); assert.equal(component.getModifierCount(), 2); } }; diff --git a/packages/svelte/test/runtime/samples/flush-before-bindings/_config.js b/packages/svelte/test/runtime/samples/flush-before-bindings/_config.js index 4f20299771..6848fbd50c 100644 --- a/packages/svelte/test/runtime/samples/flush-before-bindings/_config.js +++ b/packages/svelte/test/runtime/samples/flush-before-bindings/_config.js @@ -11,11 +11,11 @@ export default { `, test({ assert, component }) { - const visibleThings = component.visibleThings; - assert.deepEqual(visibleThings, ['first thing', 'second thing']); + const visible_things = component.visibleThings; + assert.deepEqual(visible_things, ['first thing', 'second thing']); const snapshots = component.snapshots; - assert.deepEqual(snapshots, [visibleThings]); + assert.deepEqual(snapshots, [visible_things]); // TODO minimise the number of recomputations during oncreate // assert.equal(counter.count, 1); diff --git a/packages/svelte/test/runtime/samples/fragment-trailing-whitespace/_config.js b/packages/svelte/test/runtime/samples/fragment-trailing-whitespace/_config.js index d2c59af0de..142cab9229 100644 --- a/packages/svelte/test/runtime/samples/fragment-trailing-whitespace/_config.js +++ b/packages/svelte/test/runtime/samples/fragment-trailing-whitespace/_config.js @@ -7,10 +7,14 @@ export default { }, async test({ assert, target }) { - const firstSpanList = target.children[0]; - assert.htmlEqualWithOptions(firstSpanList.innerHTML, expected, { withoutNormalizeHtml: true }); + const first_span_list = target.children[0]; + assert.htmlEqualWithOptions(first_span_list.innerHTML, expected, { + withoutNormalizeHtml: true + }); - const secondSpanList = target.children[1]; - assert.htmlEqualWithOptions(secondSpanList.innerHTML, expected, { withoutNormalizeHtml: true }); + const second_span_list = target.children[1]; + assert.htmlEqualWithOptions(second_span_list.innerHTML, expected, { + withoutNormalizeHtml: true + }); } }; diff --git a/packages/svelte/test/runtime/samples/if-block-else-update/_config.js b/packages/svelte/test/runtime/samples/if-block-else-update/_config.js index 3ba36906ad..cbbf65aa2c 100644 --- a/packages/svelte/test/runtime/samples/if-block-else-update/_config.js +++ b/packages/svelte/test/runtime/samples/if-block-else-update/_config.js @@ -2,9 +2,9 @@ export default { async test({ assert, target, window }) { const [btn1, btn2] = target.querySelectorAll('button'); - const clickEvent = new window.MouseEvent('click'); + const click_event = new window.MouseEvent('click'); - await btn2.dispatchEvent(clickEvent); + await btn2.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, ` @@ -17,7 +17,7 @@ export default { ` ); - await btn1.dispatchEvent(clickEvent); + await btn1.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, ` @@ -30,7 +30,7 @@ export default { ` ); - await btn2.dispatchEvent(clickEvent); + await btn2.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, ` @@ -43,7 +43,7 @@ export default { ` ); - await btn1.dispatchEvent(clickEvent); + await btn1.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, ` diff --git a/packages/svelte/test/runtime/samples/nbsp-div/_config.js b/packages/svelte/test/runtime/samples/nbsp-div/_config.js index 5489360934..d79db8ee81 100644 --- a/packages/svelte/test/runtime/samples/nbsp-div/_config.js +++ b/packages/svelte/test/runtime/samples/nbsp-div/_config.js @@ -4,14 +4,14 @@ export default {
 hello   hello
`, test({ assert, target }) { - const divList = target.querySelectorAll('div'); - assert.equal(divList[0].textContent.charCodeAt(0), 160); - assert.equal(divList[1].textContent.charCodeAt(0), 160); - assert.equal(divList[1].textContent.charCodeAt(6), 160); - assert.equal(divList[1].textContent.charCodeAt(7), 160); - assert.equal(divList[2].textContent.charCodeAt(0), 160); - assert.equal(divList[2].textContent.charCodeAt(6), 160); - assert.equal(divList[2].textContent.charCodeAt(7), 32); //normal space - assert.equal(divList[2].textContent.charCodeAt(8), 160); + const div_list = target.querySelectorAll('div'); + assert.equal(div_list[0].textContent.charCodeAt(0), 160); + assert.equal(div_list[1].textContent.charCodeAt(0), 160); + assert.equal(div_list[1].textContent.charCodeAt(6), 160); + assert.equal(div_list[1].textContent.charCodeAt(7), 160); + assert.equal(div_list[2].textContent.charCodeAt(0), 160); + assert.equal(div_list[2].textContent.charCodeAt(6), 160); + assert.equal(div_list[2].textContent.charCodeAt(7), 32); //normal space + assert.equal(div_list[2].textContent.charCodeAt(8), 160); } }; diff --git a/packages/svelte/test/runtime/samples/noscript-removal/_config.js b/packages/svelte/test/runtime/samples/noscript-removal/_config.js index a60a4f87b0..69dea81cbd 100644 --- a/packages/svelte/test/runtime/samples/noscript-removal/_config.js +++ b/packages/svelte/test/runtime/samples/noscript-removal/_config.js @@ -14,7 +14,7 @@ export default { // it's okay not to remove the node during hydration // will not be seen by user anyway - removeNoScript(target); + remove_no_script(target); assert.htmlEqual( target.innerHTML, @@ -26,7 +26,7 @@ export default { } }; -function removeNoScript(target) { +function remove_no_script(target) { target.querySelectorAll('noscript').forEach((elem) => { elem.parentNode.removeChild(elem); }); diff --git a/packages/svelte/test/runtime/samples/props-reactive-slot/_config.js b/packages/svelte/test/runtime/samples/props-reactive-slot/_config.js index 6129866605..47effe0d82 100644 --- a/packages/svelte/test/runtime/samples/props-reactive-slot/_config.js +++ b/packages/svelte/test/runtime/samples/props-reactive-slot/_config.js @@ -6,9 +6,9 @@ export default { async test({ assert, target, window }) { const btn = target.querySelector('button'); - const clickEvent = new window.MouseEvent('click'); + const click_event = new window.MouseEvent('click'); - await btn.dispatchEvent(clickEvent); + await btn.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/raw-mustache-as-root/_config.js b/packages/svelte/test/runtime/samples/raw-mustache-as-root/_config.js index a38c0b1c81..2f54fd6ab9 100644 --- a/packages/svelte/test/runtime/samples/raw-mustache-as-root/_config.js +++ b/packages/svelte/test/runtime/samples/raw-mustache-as-root/_config.js @@ -6,9 +6,9 @@ export default { `, async test({ assert, target, window }) { const btn = target.querySelector('button'); - const clickEvent = new window.MouseEvent('click'); + const click_event = new window.MouseEvent('click'); - await btn.dispatchEvent(clickEvent); + await btn.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -19,7 +19,7 @@ export default { ` ); - await btn.dispatchEvent(clickEvent); + await btn.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/raw-mustache-inside-head/_config.js b/packages/svelte/test/runtime/samples/raw-mustache-inside-head/_config.js index f478d186be..eb0df14136 100644 --- a/packages/svelte/test/runtime/samples/raw-mustache-inside-head/_config.js +++ b/packages/svelte/test/runtime/samples/raw-mustache-inside-head/_config.js @@ -1,7 +1,7 @@ export default { async test({ assert, target, window }) { const btn = target.querySelector('button'); - const clickEvent = new window.MouseEvent('click'); + const click_event = new window.MouseEvent('click'); assert.equal( window.document.head.innerHTML.includes( @@ -10,7 +10,7 @@ export default { true ); - await btn.dispatchEvent(clickEvent); + await btn.dispatchEvent(click_event); assert.equal( window.document.head.innerHTML.includes( @@ -19,7 +19,7 @@ export default { true ); - await btn.dispatchEvent(clickEvent); + await btn.dispatchEvent(click_event); assert.equal( window.document.head.innerHTML.includes( diff --git a/packages/svelte/test/runtime/samples/raw-mustache-inside-slot/_config.js b/packages/svelte/test/runtime/samples/raw-mustache-inside-slot/_config.js index a38c0b1c81..2f54fd6ab9 100644 --- a/packages/svelte/test/runtime/samples/raw-mustache-inside-slot/_config.js +++ b/packages/svelte/test/runtime/samples/raw-mustache-inside-slot/_config.js @@ -6,9 +6,9 @@ export default { `, async test({ assert, target, window }) { const btn = target.querySelector('button'); - const clickEvent = new window.MouseEvent('click'); + const click_event = new window.MouseEvent('click'); - await btn.dispatchEvent(clickEvent); + await btn.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -19,7 +19,7 @@ export default { ` ); - await btn.dispatchEvent(clickEvent); + await btn.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/reactive-import-statement/_config.js b/packages/svelte/test/runtime/samples/reactive-import-statement/_config.js index 1160919839..59856dca94 100644 --- a/packages/svelte/test/runtime/samples/reactive-import-statement/_config.js +++ b/packages/svelte/test/runtime/samples/reactive-import-statement/_config.js @@ -13,9 +13,9 @@ export default { }, async test({ assert, target, window }) { const btn = target.querySelector('button'); - const clickEvent = new window.MouseEvent('click'); + const click_event = new window.MouseEvent('click'); - await btn.dispatchEvent(clickEvent); + await btn.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, @@ -28,7 +28,7 @@ export default { ` ); - await btn.dispatchEvent(clickEvent); + await btn.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/spread-element-input-value/_config.js b/packages/svelte/test/runtime/samples/spread-element-input-value/_config.js index 64ae0fe469..c09bf7e7fa 100644 --- a/packages/svelte/test/runtime/samples/spread-element-input-value/_config.js +++ b/packages/svelte/test/runtime/samples/spread-element-input-value/_config.js @@ -11,8 +11,8 @@ export default { // and we determine if svelte does not set the `input.value` again by // spying on the setter of `input.value` - const spy1 = spyOnValueSetter(input1, input1.value); - const spy2 = spyOnValueSetter(input2, input2.value); + const spy1 = spy_on_value_setter(input1, input1.value); + const spy2 = spy_on_value_setter(input2, input2.value); const event = new window.Event('input'); @@ -38,25 +38,25 @@ export default { } }; -function spyOnValueSetter(input, initialValue) { - let value = initialValue; - let isSet = false; +function spy_on_value_setter(input, initial_value) { + let value = initial_value; + let is_set = false; Object.defineProperty(input, 'value', { get() { return value; }, set(_value) { value = _value; - isSet = true; + is_set = true; } }); return { isSetCalled() { - return isSet; + return is_set; }, reset() { - isSet = false; + is_set = false; } }; } diff --git a/packages/svelte/test/runtime/samples/spread-element-input-value/utils.js b/packages/svelte/test/runtime/samples/spread-element-input-value/utils.js index ee941bda55..2fc48fe6ae 100644 --- a/packages/svelte/test/runtime/samples/spread-element-input-value/utils.js +++ b/packages/svelte/test/runtime/samples/spread-element-input-value/utils.js @@ -1,6 +1,6 @@ -export function omit(obj, ...keysToOmit) { +export function omit(obj, ...keys_to_omit) { return Object.keys(obj).reduce((acc, key) => { - if (keysToOmit.indexOf(key) === -1) acc[key] = obj[key]; + if (keys_to_omit.indexOf(key) === -1) acc[key] = obj[key]; return acc; }, {}); } diff --git a/packages/svelte/test/runtime/samples/store-auto-subscribe-event-callback/_config.js b/packages/svelte/test/runtime/samples/store-auto-subscribe-event-callback/_config.js index 58b1740f0f..ba0556644d 100644 --- a/packages/svelte/test/runtime/samples/store-auto-subscribe-event-callback/_config.js +++ b/packages/svelte/test/runtime/samples/store-auto-subscribe-event-callback/_config.js @@ -9,9 +9,9 @@ export default { const input = target.querySelector('input'); input.value = 'foo'; - const inputEvent = new window.InputEvent('input'); + const input_event = new window.InputEvent('input'); - await input.dispatchEvent(inputEvent); + await input.dispatchEvent(input_event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/store-invalidation-while-update-1/_config.js b/packages/svelte/test/runtime/samples/store-invalidation-while-update-1/_config.js index eaa5b3c92b..00e41c98d7 100644 --- a/packages/svelte/test/runtime/samples/store-invalidation-while-update-1/_config.js +++ b/packages/svelte/test/runtime/samples/store-invalidation-while-update-1/_config.js @@ -16,11 +16,11 @@ export default { const input = target.querySelector('input'); const button = target.querySelector('button'); - const inputEvent = new window.InputEvent('input'); - const clickEvent = new window.MouseEvent('click'); + const input_event = new window.InputEvent('input'); + const click_event = new window.MouseEvent('click'); input.value = 'foo'; - await input.dispatchEvent(inputEvent); + await input.dispatchEvent(input_event); assert.htmlEqual( target.innerHTML, @@ -32,7 +32,7 @@ export default { ` ); - await button.dispatchEvent(clickEvent); + await button.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, ` @@ -44,7 +44,7 @@ export default { ); input.value = 'bar'; - await input.dispatchEvent(inputEvent); + await input.dispatchEvent(input_event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/store-invalidation-while-update-2/_config.js b/packages/svelte/test/runtime/samples/store-invalidation-while-update-2/_config.js index 8c318b0faf..882eb46931 100644 --- a/packages/svelte/test/runtime/samples/store-invalidation-while-update-2/_config.js +++ b/packages/svelte/test/runtime/samples/store-invalidation-while-update-2/_config.js @@ -16,11 +16,11 @@ export default { const input = target.querySelector('input'); const button = target.querySelector('button'); - const inputEvent = new window.InputEvent('input'); - const clickEvent = new window.MouseEvent('click'); + const input_event = new window.InputEvent('input'); + const click_event = new window.MouseEvent('click'); input.value = 'foo'; - await input.dispatchEvent(inputEvent); + await input.dispatchEvent(input_event); assert.htmlEqual( target.innerHTML, @@ -32,7 +32,7 @@ export default { ` ); - await button.dispatchEvent(clickEvent); + await button.dispatchEvent(click_event); assert.htmlEqual( target.innerHTML, ` @@ -44,7 +44,7 @@ export default { ); input.value = 'bar'; - await input.dispatchEvent(inputEvent); + await input.dispatchEvent(input_event); assert.htmlEqual( target.innerHTML, diff --git a/packages/svelte/test/runtime/samples/store-resubscribe-export/_config.js b/packages/svelte/test/runtime/samples/store-resubscribe-export/_config.js index b4615a27d1..44c0fb2403 100644 --- a/packages/svelte/test/runtime/samples/store-resubscribe-export/_config.js +++ b/packages/svelte/test/runtime/samples/store-resubscribe-export/_config.js @@ -1,11 +1,11 @@ -let unsubscribeCalled = false; +let unsubscribe_called = false; -const fakeStore = (val) => ({ +const fake_store = (val) => ({ subscribe: (cb) => { cb(val); return { unsubscribe: () => { - unsubscribeCalled = true; + unsubscribe_called = true; } }; } @@ -13,17 +13,17 @@ const fakeStore = (val) => ({ export default { get props() { - return { foo: fakeStore(1) }; + return { foo: fake_store(1) }; }, html: `

1

`, async test({ assert, component, target }) { - component.foo = fakeStore(5); + component.foo = fake_store(5); assert.htmlEqual(target.innerHTML, '

5

'); - assert.ok(unsubscribeCalled); + assert.ok(unsubscribe_called); } }; diff --git a/packages/svelte/test/runtime/samples/svg-foreignobject-namespace/_config.js b/packages/svelte/test/runtime/samples/svg-foreignobject-namespace/_config.js index 950e35e79d..05a7d7d8ec 100644 --- a/packages/svelte/test/runtime/samples/svg-foreignobject-namespace/_config.js +++ b/packages/svelte/test/runtime/samples/svg-foreignobject-namespace/_config.js @@ -8,8 +8,8 @@ export default { `, test({ assert, target }) { - const foreignObject = target.querySelector('foreignObject'); - assert.equal(foreignObject.namespaceURI, 'http://www.w3.org/2000/svg'); + const foreign_object = target.querySelector('foreignObject'); + assert.equal(foreign_object.namespaceURI, 'http://www.w3.org/2000/svg'); const p = target.querySelector('p'); assert.equal(p.namespaceURI, 'http://www.w3.org/1999/xhtml'); diff --git a/packages/svelte/test/runtime/samples/textarea-content/_config.js b/packages/svelte/test/runtime/samples/textarea-content/_config.js index 7d4f8f9493..fd04d5acbe 100644 --- a/packages/svelte/test/runtime/samples/textarea-content/_config.js +++ b/packages/svelte/test/runtime/samples/textarea-content/_config.js @@ -18,50 +18,53 @@ multiple leading newlines
{ it_fn(dir, async () => { const { test } = await import(`./samples/${dir}/test.js`); - const inputFile = path.resolve(`${__dirname}/samples/${dir}/input.svelte`); - const outputName = '_actual'; - const outputBase = path.resolve(`${__dirname}/samples/${dir}/${outputName}`); + const input_file = path.resolve(`${__dirname}/samples/${dir}/input.svelte`); + const output_name = '_actual'; + const output_base = path.resolve(`${__dirname}/samples/${dir}/${output_name}`); - const inputCode = fs.readFileSync(inputFile, 'utf-8'); + const input_code = fs.readFileSync(input_file, 'utf-8'); const input = { - code: inputCode, - locate: getLocator(inputCode), - locate_1: getLocator(inputCode, { offsetLine: 1 }) + code: input_code, + locate: getLocator(input_code), + locate_1: getLocator(input_code, { offsetLine: 1 }) }; const preprocessed = await svelte.preprocess( input.code, @@ -46,8 +46,8 @@ describe('sourcemaps', async () => { filename: 'input.svelte', // filenames for sourcemaps sourcemap: preprocessed.map, - outputFilename: `${outputName}.js`, - cssOutputFilename: `${outputName}.css`, + outputFilename: `${output_name}.js`, + cssOutputFilename: `${output_name}.css`, ...(config.compile_options || {}) }); @@ -55,22 +55,25 @@ describe('sourcemaps', async () => { match.replace(/\d/g, 'x') ); - fs.writeFileSync(`${outputBase}.svelte`, preprocessed.code); + fs.writeFileSync(`${output_base}.svelte`, preprocessed.code); if (preprocessed.map) { fs.writeFileSync( - `${outputBase}.svelte.map`, + `${output_base}.svelte.map`, // TODO encode mappings for output - svelte.preprocess returns decoded mappings JSON.stringify(preprocessed.map, null, 2) ); } - fs.writeFileSync(`${outputBase}.js`, `${js.code}\n//# sourceMappingURL=${outputName}.js.map`); - fs.writeFileSync(`${outputBase}.js.map`, JSON.stringify(js.map, null, 2)); + fs.writeFileSync( + `${output_base}.js`, + `${js.code}\n//# sourceMappingURL=${output_name}.js.map` + ); + fs.writeFileSync(`${output_base}.js.map`, JSON.stringify(js.map, null, 2)); if (css.code) { fs.writeFileSync( - `${outputBase}.css`, - `${css.code}\n/*# sourceMappingURL=${outputName}.css.map */` + `${output_base}.css`, + `${css.code}\n/*# sourceMappingURL=${output_name}.css.map */` ); - fs.writeFileSync(`${outputBase}.css.map`, JSON.stringify(css.map, null, ' ')); + fs.writeFileSync(`${output_base}.css.map`, JSON.stringify(css.map, null, ' ')); } if (js.map) { diff --git a/packages/svelte/test/stats/stats.test.js b/packages/svelte/test/stats/stats.test.js index 4abb771c4c..bebd2b7ebd 100644 --- a/packages/svelte/test/stats/stats.test.js +++ b/packages/svelte/test/stats/stats.test.js @@ -17,7 +17,7 @@ describe('stats', () => { const filename = `${__dirname}/samples/${dir}/input.svelte`; const input = fs.readFileSync(filename, 'utf-8').replace(/\s+$/, ''); - const expectedError = try_load_json(`${__dirname}/samples/${dir}/error.json`); + const expected_error = try_load_json(`${__dirname}/samples/${dir}/error.json`); let result; let error; @@ -29,19 +29,19 @@ describe('stats', () => { error = e; } - if (error || expectedError) { - if (error && !expectedError) { + if (error || expected_error) { + if (error && !expected_error) { throw error; } - if (expectedError && !error) { - throw new Error(`Expected an error: ${expectedError.message}`); + if (expected_error && !error) { + throw new Error(`Expected an error: ${expected_error.message}`); } - assert.equal(error.message, expectedError.message); - assert.deepEqual(error.start, expectedError.start); - assert.deepEqual(error.end, expectedError.end); - assert.equal(error.pos, expectedError.pos); + assert.equal(error.message, expected_error.message); + assert.deepEqual(error.start, expected_error.start); + assert.deepEqual(error.end, expected_error.end); + assert.equal(error.pos, expected_error.pos); } }); }); diff --git a/packages/svelte/test/store/store.test.js b/packages/svelte/test/store/store.test.js index 1f7d90e50c..82b284de00 100644 --- a/packages/svelte/test/store/store.test.js +++ b/packages/svelte/test/store/store.test.js @@ -293,7 +293,7 @@ describe('store', () => { it('passes optional set and update functions', () => { const number = writable(1); - const evensAndSquaresOf4 = derived( + const evens_and_squares_of4 = derived( number, (n, set, update) => { if (n % 2 === 0) set(n); @@ -304,7 +304,7 @@ describe('store', () => { const values = []; - const unsubscribe = evensAndSquaresOf4.subscribe((value) => { + const unsubscribe = evens_and_squares_of4.subscribe((value) => { values.push(value); }); @@ -542,18 +542,18 @@ describe('store', () => { describe('readonly', () => { it('makes a store readonly', () => { - const writableStore = writable(1); - const readableStore = readonly(writableStore); + const writable_store = writable(1); + const readable_store = readonly(writable_store); - assert.equal(get(readableStore), get(writableStore)); + assert.equal(get(readable_store), get(writable_store)); - writableStore.set(2); + writable_store.set(2); - assert.equal(get(readableStore), 2); - assert.equal(get(readableStore), get(writableStore)); + assert.equal(get(readable_store), 2); + assert.equal(get(readable_store), get(writable_store)); // @ts-ignore - assert.throws(() => readableStore.set(3)); + assert.throws(() => readable_store.set(3)); }); }); }); diff --git a/packages/svelte/test/tsconfig.json b/packages/svelte/test/tsconfig.json index c5f45fe821..71b9d4c6dd 100644 --- a/packages/svelte/test/tsconfig.json +++ b/packages/svelte/test/tsconfig.json @@ -1,15 +1,10 @@ { "extends": "../tsconfig.json", - "include": ["."], "exclude": ["./**/_output/**/*"], "compilerOptions": { "allowJs": true, "checkJs": true, - "noEmit": true, - "paths": { - "svelte": [".."], - "svelte/*": ["../*"] - } + "noEmit": true } } diff --git a/packages/svelte/test/vars/vars.test.js b/packages/svelte/test/vars/vars.test.js index 9e786377ac..3cbcb964f1 100644 --- a/packages/svelte/test/vars/vars.test.js +++ b/packages/svelte/test/vars/vars.test.js @@ -20,7 +20,7 @@ describe('vars', () => { .trimEnd() .replace(/\r/g, ''); - const expectedError = try_load_json(`${__dirname}/samples/${dir}/error.json`); + const expected_error = try_load_json(`${__dirname}/samples/${dir}/error.json`); /** * @type {{ options: any, test: (assert: typeof import('vitest').assert, vars: any[]) => void }}} @@ -31,19 +31,19 @@ describe('vars', () => { const { vars } = compile(input, { ...options, generate }); test(assert, vars); } catch (error) { - if (expectedError) { - assert.equal(error.message, expectedError.message); - assert.deepEqual(error.start, expectedError.start); - assert.deepEqual(error.end, expectedError.end); - assert.equal(error.pos, expectedError.pos); + if (expected_error) { + assert.equal(error.message, expected_error.message); + assert.deepEqual(error.start, expected_error.start); + assert.deepEqual(error.end, expected_error.end); + assert.equal(error.pos, expected_error.pos); return; } else { throw error; } } - if (expectedError) { - assert.fail(`Expected an error: ${JSON.stringify(expectedError)}`); + if (expected_error) { + assert.fail(`Expected an error: ${JSON.stringify(expected_error)}`); } }); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 117a8e0338..b0e4a0553f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -111,6 +111,9 @@ importers: esbuild: specifier: ^0.18.11 version: 0.18.11 + eslint-plugin-lube: + specifier: ^0.1.7 + version: 0.1.7 happy-dom: specifier: ^9.20.3 version: 9.20.3 @@ -3932,6 +3935,12 @@ packages: eslint: 8.47.0 dev: true + /eslint-plugin-lube@0.1.7: + resolution: {integrity: sha512-jqeRZAG3vQWZR6Hue2tSx4bQUfpDYqeSOFf3MlqpUycb5q6av1bhnmfDkxHgsLQoK4Pt7H+puI0cYc/iEvFwfw==} + dependencies: + '@types/estree': 1.0.1 + dev: true + /eslint-plugin-svelte@2.32.2(eslint@8.44.0)(svelte@packages+svelte): resolution: {integrity: sha512-Jgbop2fNZsoxxkklZAIbDNhwAPynvnCtUXLsEC6O2qax7N/pfe2cNqT0ZoBbubXKJitQQDEyVDQ1rZs4ZWcrTA==} engines: {node: ^14.17.0 || >=16.0.0} From 9073241daa0836fc608ebdcfba8ceeb89a92b3f8 Mon Sep 17 00:00:00 2001 From: Jack Farley Date: Sat, 16 Sep 2023 11:26:19 +1200 Subject: [PATCH 31/65] docs: mention escaping of curly braces (#8560) --- documentation/docs/02-template-syntax/02-basic-markup.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/documentation/docs/02-template-syntax/02-basic-markup.md b/documentation/docs/02-template-syntax/02-basic-markup.md index dbdc55c060..e6192230d4 100644 --- a/documentation/docs/02-template-syntax/02-basic-markup.md +++ b/documentation/docs/02-template-syntax/02-basic-markup.md @@ -106,11 +106,13 @@ An element or component can have multiple spread attributes, interspersed with r ## Text expressions +A JavaScript expression can be included as text by surrounding it with curly braces. + ```svelte {expression} ``` -Text can also contain JavaScript expressions: +Curly braces can be included in a Svelte template by using their [HTML entity](https://developer.mozilla.org/docs/Glossary/Entity) strings: `{`, `{`, or `{` for `{` and `}`, `}`, or `}` for `}`. > If you're using a regular expression (`RegExp`) [literal notation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#literal_notation_and_constructor), you'll need to wrap it in parentheses. From 16504d1f5203b6bada19d22175335791e880de16 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Fri, 15 Sep 2023 19:34:49 -0400 Subject: [PATCH 32/65] docs: add FAQ about why you can't keep unused styles (#9193) --- documentation/docs/05-misc/01-faq.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/documentation/docs/05-misc/01-faq.md b/documentation/docs/05-misc/01-faq.md index dd55458647..a5c2330f46 100644 --- a/documentation/docs/05-misc/01-faq.md +++ b/documentation/docs/05-misc/01-faq.md @@ -131,6 +131,17 @@ If you need hash-based routing on the client side, check out [svelte-spa-router] You can see a [community-maintained list of routers on sveltesociety.dev](https://sveltesociety.dev/components#routers). +## Can I tell Svelte not to remove my unused styles? + +No. Svelte removes the styles from the component and warns you about them in order to prevent issues that would otherwise arise. + +Svelte's component style scoping works by generating a class unique to the given component, adding it to the relevant elements in the component that are under Svelte's control, and then adding it to each of the selectors in that component's styles. When the compiler can't see what elements a style selector applies to, there would be two bad options for keeping it: + +- If it keeps the selector and adds the scoping class to it, the selector will likely not match the expected elements in the component, and they definitely won't if they were created by a child component or `{@html ...}`. +- If it keeps the selector without adding the scoping class to it, the given style will become a global style, affecting your entire page. + +If you need to style something that Svelte can't identify at compile time, you will need to explicitly opt into global styles by using `:global(...)`. But also keep in mind that you can wrap `:global(...)` around only part of a selector. `.foo :global(.bar) { ... }` will style any `.bar` elements that appear within the component's `.foo` elements. As long as there's some parent element in the current component to start from, partially global selectors like this will almost always be able to get you what you want. + ## Is Svelte v2 still available? New features aren't being added to it, and bugs will probably only be fixed if they are extremely nasty or present some sort of security vulnerability. From 1a28d58b5d2bda54cae70718f7ac36e45e25b9f7 Mon Sep 17 00:00:00 2001 From: Puru Vijay <47742487+PuruVJ@users.noreply.github.com> Date: Sat, 16 Sep 2023 20:00:16 +0530 Subject: [PATCH 33/65] feat: Copy code button (#8995) * Push * Bump site-kit * Add headers to primary snippets * Update deps * Bump deos * redploy * Back to normal * Push * Bump deps * site: fix rendering of promise in deprecation warning (#9191) * copy: true * Bump site-kit * Use cache --- .../02-template-syntax/03-logic-blocks.md | 13 + .../02-template-syntax/04-special-tags.md | 4 + .../05-element-directives.md | 43 +- .../06-component-directives.md | 17 +- .../02-template-syntax/07-special-elements.md | 1 - .../docs/03-runtime/02-svelte-store.md | 22 +- .../docs/03-runtime/04-svelte-transition.md | 18 + .../docs/03-runtime/05-svelte-animate.md | 1 + .../docs/03-runtime/07-svelte-action.md | 3 - .../04-compiler-and-api/01-svelte-compiler.md | 5 +- .../02-client-side-component-api.md | 3 + documentation/docs/05-misc/03-typescript.md | 14 +- pnpm-lock.yaml | 674 ++++++++++-------- sites/svelte.dev/package.json | 28 +- sites/svelte.dev/src/routes/+page.svelte | 2 +- .../src/routes/blog/[slug]/+page.svelte | 3 +- .../src/routes/content.json/content.server.js | 24 +- .../src/routes/docs/[slug]/+page.svelte | 3 +- .../svelte.dev/src/routes/nav.json/+server.js | 23 +- 19 files changed, 537 insertions(+), 364 deletions(-) diff --git a/documentation/docs/02-template-syntax/03-logic-blocks.md b/documentation/docs/02-template-syntax/03-logic-blocks.md index 43e7511bf5..98bfc3ea18 100644 --- a/documentation/docs/02-template-syntax/03-logic-blocks.md +++ b/documentation/docs/02-template-syntax/03-logic-blocks.md @@ -5,14 +5,17 @@ title: Logic blocks ## {#if ...} ```svelte + {#if expression}...{/if} ``` ```svelte + {#if expression}...{:else if expression}...{/if} ``` ```svelte + {#if expression}...{:else}...{/if} ``` @@ -41,22 +44,27 @@ Additional conditions can be added with `{:else if expression}`, optionally endi ## {#each ...} ```svelte + {#each expression as name}...{/each} ``` ```svelte + {#each expression as name, index}...{/each} ``` ```svelte + {#each expression as name (key)}...{/each} ``` ```svelte + {#each expression as name, index (key)}...{/each} ``` ```svelte + {#each expression as name}...{:else}...{/each} ``` @@ -125,18 +133,22 @@ Since Svelte 4 it is possible to iterate over iterables like `Map` or `Set`. Ite ## {#await ...} ```svelte + {#await expression}...{:then name}...{:catch name}...{/await} ``` ```svelte + {#await expression}...{:then name}...{/await} ``` ```svelte + {#await expression then name}...{/await} ``` ```svelte + {#await expression catch name}...{/await} ``` @@ -186,6 +198,7 @@ Similarly, if you only want to show the error state, you can omit the `then` blo ## {#key ...} ```svelte + {#key expression}...{/key} ``` diff --git a/documentation/docs/02-template-syntax/04-special-tags.md b/documentation/docs/02-template-syntax/04-special-tags.md index f70ab4d092..4145d8d6d6 100644 --- a/documentation/docs/02-template-syntax/04-special-tags.md +++ b/documentation/docs/02-template-syntax/04-special-tags.md @@ -5,6 +5,7 @@ title: Special tags ## {@html ...} ```svelte + {@html expression} ``` @@ -24,10 +25,12 @@ The expression should be valid standalone HTML — `{@html "
"}content{@html ## {@debug ...} ```svelte + {@debug} ``` ```svelte + {@debug var1, var2, ..., varN} ``` @@ -65,6 +68,7 @@ The `{@debug}` tag without any arguments will insert a `debugger` statement that ## {@const ...} ```svelte + {@const assignment} ``` diff --git a/documentation/docs/02-template-syntax/05-element-directives.md b/documentation/docs/02-template-syntax/05-element-directives.md index ee24c97e51..f9ff1821c8 100644 --- a/documentation/docs/02-template-syntax/05-element-directives.md +++ b/documentation/docs/02-template-syntax/05-element-directives.md @@ -7,10 +7,12 @@ As well as attributes, elements can have _directives_, which control the element ## on:_eventname_ ```svelte + on:eventname={handler} ``` ```svelte + on:eventname|modifiers={handler} ``` @@ -72,7 +74,6 @@ If the `on:` directive is used without a value, the component will _forward_ the It's possible to have multiple event listeners for the same event: ```svelte - - + - + ``` Listening for component events looks the same as listening for DOM events: @@ -44,6 +40,7 @@ As with DOM events, if the `on:` directive is used without a value, the event wi ## --style-props ```svelte + --style-props="anycssvalue" ``` @@ -78,7 +75,6 @@ For SVG namespace, the example above desugars into using `` instead: Svelte's CSS Variables support allows for easily themeable components: ```svelte - From 68b40effb24c05eafd6b05fceb4a094b373f2522 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Wed, 20 Sep 2023 17:02:36 +0200 Subject: [PATCH 46/65] site: runes banner (#9228) * site: runes banner * well I should get the title right, shouldnt I? * padding * fix typo * tweak --- documentation/blog/2023-09-20-runes.md | 2 +- pnpm-lock.yaml | 66 +++++++++++++++------- sites/svelte.dev/package.json | 2 +- sites/svelte.dev/src/routes/+layout.svelte | 18 +++++- 4 files changed, 65 insertions(+), 23 deletions(-) diff --git a/documentation/blog/2023-09-20-runes.md b/documentation/blog/2023-09-20-runes.md index 3ae3699434..3e3448885e 100644 --- a/documentation/blog/2023-09-20-runes.md +++ b/documentation/blog/2023-09-20-runes.md @@ -124,7 +124,7 @@ export function createCounter() { return { - subscribe, - increment: () => update((n) => n + 1) -+ get count { return count }, ++ get count() { return count }, + increment: () => count += 1 }; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a3d645c02..8407e35ddc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -188,8 +188,8 @@ importers: specifier: ^1.24.1 version: 1.25.0(svelte@packages+svelte)(vite@4.4.9) '@sveltejs/site-kit': - specifier: 6.0.0-next.46 - version: 6.0.0-next.46(@sveltejs/kit@1.25.0)(svelte@packages+svelte) + specifier: 6.0.0-next.47 + version: 6.0.0-next.47(@sveltejs/kit@1.25.0)(svelte@packages+svelte) '@sveltejs/vite-plugin-svelte': specifier: ^2.4.6 version: 2.4.6(svelte@packages+svelte)(vite@4.4.9) @@ -502,8 +502,8 @@ packages: prettier: 2.8.8 dev: true - /@codemirror/autocomplete@6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4): - resolution: {integrity: sha512-HpphvDcTdOx+9R3eUw9hZK9JA77jlaBF0kOt2McbyfvY0rX9pnMoO8rkkZc0GzSbzhIY4m5xJ0uHHgjfqHNmXQ==} + /@codemirror/autocomplete@6.9.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4): + resolution: {integrity: sha512-yma56tqD7khIZK4gy4X5lX3/k5ArMiCGat7HEWRF/8L2kqOjVdp2qKZqpcJjwTIjSj6fqKAHqi7IjtH3QFE+Bw==} peerDependencies: '@codemirror/language': ^6.0.0 '@codemirror/state': ^6.0.0 @@ -516,6 +516,20 @@ packages: '@lezer/common': 1.0.4 dev: false + /@codemirror/autocomplete@6.9.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0)(@lezer/common@1.0.4): + resolution: {integrity: sha512-yma56tqD7khIZK4gy4X5lX3/k5ArMiCGat7HEWRF/8L2kqOjVdp2qKZqpcJjwTIjSj6fqKAHqi7IjtH3QFE+Bw==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + dependencies: + '@codemirror/language': 6.8.0 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.19.0 + '@lezer/common': 1.0.4 + dev: false + /@codemirror/autocomplete@6.9.1(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0)(@lezer/common@1.0.4): resolution: {integrity: sha512-yma56tqD7khIZK4gy4X5lX3/k5ArMiCGat7HEWRF/8L2kqOjVdp2qKZqpcJjwTIjSj6fqKAHqi7IjtH3QFE+Bw==} peerDependencies: @@ -542,7 +556,19 @@ packages: /@codemirror/lang-css@6.2.0(@codemirror/view@6.16.0): resolution: {integrity: sha512-oyIdJM29AyRPM3+PPq1I2oIk8NpUfEN3kAM05XWDDs6o3gSneIKaVJifT2P+fqONLou2uIgXynFyMUDQvo/szA==} dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) + '@codemirror/autocomplete': 6.9.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0)(@lezer/common@1.0.4) + '@codemirror/language': 6.8.0 + '@codemirror/state': 6.2.1 + '@lezer/common': 1.0.4 + '@lezer/css': 1.1.3 + transitivePeerDependencies: + - '@codemirror/view' + dev: false + + /@codemirror/lang-css@6.2.0(@codemirror/view@6.19.0): + resolution: {integrity: sha512-oyIdJM29AyRPM3+PPq1I2oIk8NpUfEN3kAM05XWDDs6o3gSneIKaVJifT2P+fqONLou2uIgXynFyMUDQvo/szA==} + dependencies: + '@codemirror/autocomplete': 6.9.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0)(@lezer/common@1.0.4) '@codemirror/language': 6.8.0 '@codemirror/state': 6.2.1 '@lezer/common': 1.0.4 @@ -566,7 +592,7 @@ packages: /@codemirror/lang-html@6.4.5: resolution: {integrity: sha512-dUCSxkIw2G+chaUfw3Gfu5kkN83vJQN8gfQDp9iEHsIZluMJA0YJveT12zg/28BJx+uPsbQ6VimKCgx3oJrZxA==} dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) + '@codemirror/autocomplete': 6.9.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) '@codemirror/lang-css': 6.2.0(@codemirror/view@6.16.0) '@codemirror/lang-javascript': 6.1.9 '@codemirror/language': 6.8.0 @@ -594,7 +620,7 @@ packages: /@codemirror/lang-javascript@6.1.9: resolution: {integrity: sha512-z3jdkcqOEBT2txn2a87A0jSy6Te3679wg/U8QzMeftFt+4KA6QooMwfdFzJiuC3L6fXKfTXZcDocoaxMYfGz0w==} dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) + '@codemirror/autocomplete': 6.9.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) '@codemirror/language': 6.8.0 '@codemirror/lint': 6.4.0 '@codemirror/state': 6.2.1 @@ -625,7 +651,7 @@ packages: /@codemirror/lang-markdown@6.2.0: resolution: {integrity: sha512-deKegEQVzfBAcLPqsJEa+IxotqPVwWZi90UOEvQbfa01NTAw8jNinrykuYPTULGUj+gha0ZG2HBsn4s5d64Qrg==} dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) + '@codemirror/autocomplete': 6.9.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) '@codemirror/lang-html': 6.4.5 '@codemirror/language': 6.8.0 '@codemirror/state': 6.2.1 @@ -1882,7 +1908,7 @@ packages: - supports-color dev: true - /@neocodemirror/svelte@0.0.15(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.4.0)(@codemirror/search@6.5.3)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0): + /@neocodemirror/svelte@0.0.15(@codemirror/autocomplete@6.9.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.4.0)(@codemirror/search@6.5.3)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0): resolution: {integrity: sha512-MCux+QCR40CboJu/TFwnqK7gYQ3fvtvHX8F/mk85DRH7vMoG3VDjJhqneAITX5IzohWKeP36hzcV+oHC2LYJqA==} peerDependencies: '@codemirror/autocomplete': ^6.7.1 @@ -1893,7 +1919,7 @@ packages: '@codemirror/state': ^6.2.0 '@codemirror/view': ^6.12.0 dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) + '@codemirror/autocomplete': 6.9.1(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0)(@lezer/common@1.0.4) '@codemirror/commands': 6.2.4 '@codemirror/language': 6.8.0 '@codemirror/lint': 6.4.0 @@ -1939,7 +1965,7 @@ packages: /@polka/url@1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} - /@replit/codemirror-lang-svelte@6.0.0(@codemirror/autocomplete@6.8.1)(@codemirror/lang-css@6.2.0)(@codemirror/lang-html@6.4.6)(@codemirror/lang-javascript@6.1.9)(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4)(@lezer/highlight@1.1.6)(@lezer/javascript@1.4.7)(@lezer/lr@1.3.10): + /@replit/codemirror-lang-svelte@6.0.0(@codemirror/autocomplete@6.9.1)(@codemirror/lang-css@6.2.0)(@codemirror/lang-html@6.4.6)(@codemirror/lang-javascript@6.1.9)(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4)(@lezer/highlight@1.1.6)(@lezer/javascript@1.4.7)(@lezer/lr@1.3.10): resolution: {integrity: sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==} peerDependencies: '@codemirror/autocomplete': ^6.0.0 @@ -1954,8 +1980,8 @@ packages: '@lezer/javascript': ^1.2.0 '@lezer/lr': ^1.0.0 dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) - '@codemirror/lang-css': 6.2.0(@codemirror/view@6.16.0) + '@codemirror/autocomplete': 6.9.1(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0)(@lezer/common@1.0.4) + '@codemirror/lang-css': 6.2.0(@codemirror/view@6.19.0) '@codemirror/lang-html': 6.4.6 '@codemirror/lang-javascript': 6.1.9 '@codemirror/language': 6.8.0 @@ -2351,9 +2377,9 @@ packages: peerDependencies: svelte: ^3.54.0 || ^4.0.0-next.0 || ^4.0.0 dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) + '@codemirror/autocomplete': 6.9.1(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0)(@lezer/common@1.0.4) '@codemirror/commands': 6.2.4 - '@codemirror/lang-css': 6.2.0(@codemirror/view@6.16.0) + '@codemirror/lang-css': 6.2.0(@codemirror/view@6.19.0) '@codemirror/lang-javascript': 6.1.9 '@codemirror/lang-json': 6.0.1 '@codemirror/lang-markdown': 6.2.0 @@ -2363,8 +2389,8 @@ packages: '@codemirror/view': 6.16.0 '@jridgewell/sourcemap-codec': 1.4.15 '@lezer/highlight': 1.1.6 - '@neocodemirror/svelte': 0.0.15(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.4.0)(@codemirror/search@6.5.3)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0) - '@replit/codemirror-lang-svelte': 6.0.0(@codemirror/autocomplete@6.8.1)(@codemirror/lang-css@6.2.0)(@codemirror/lang-html@6.4.6)(@codemirror/lang-javascript@6.1.9)(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4)(@lezer/highlight@1.1.6)(@lezer/javascript@1.4.7)(@lezer/lr@1.3.10) + '@neocodemirror/svelte': 0.0.15(@codemirror/autocomplete@6.9.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.4.0)(@codemirror/search@6.5.3)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0) + '@replit/codemirror-lang-svelte': 6.0.0(@codemirror/autocomplete@6.9.1)(@codemirror/lang-css@6.2.0)(@codemirror/lang-html@6.4.6)(@codemirror/lang-javascript@6.1.9)(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4)(@lezer/highlight@1.1.6)(@lezer/javascript@1.4.7)(@lezer/lr@1.3.10) '@replit/codemirror-vim': 6.0.14(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/search@6.5.3)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0) '@rich_harris/svelte-split-pane': 1.1.1(svelte@packages+svelte) '@rollup/browser': 3.26.2 @@ -2398,8 +2424,8 @@ packages: svelte-local-storage-store: 0.4.0(svelte@packages+svelte) dev: false - /@sveltejs/site-kit@6.0.0-next.46(@sveltejs/kit@1.25.0)(svelte@packages+svelte): - resolution: {integrity: sha512-VgFKJ6G3gXqlbnjVeZTD6MPWidhZuu93D2WdfsOd4DLL6eFKaCbF60qZXtmWF2hLj7+WDk8+NAwj3V+UZ84k8A==} + /@sveltejs/site-kit@6.0.0-next.47(@sveltejs/kit@1.25.0)(svelte@packages+svelte): + resolution: {integrity: sha512-vHKtz71e4bKH0gja//rSd/1rR8qHNCtdtXzjJ2nSdeACaZ5Daql7Q4JJ+0D9OM3Q9t/uj3XAFUPAmEaFENn5kA==} peerDependencies: '@sveltejs/kit': ^1.20.0 svelte: ^4.0.0 @@ -3410,7 +3436,7 @@ packages: /codemirror@6.0.1(@lezer/common@1.0.4): resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} dependencies: - '@codemirror/autocomplete': 6.8.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) + '@codemirror/autocomplete': 6.9.1(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) '@codemirror/commands': 6.2.4 '@codemirror/language': 6.8.0 '@codemirror/lint': 6.4.0 diff --git a/sites/svelte.dev/package.json b/sites/svelte.dev/package.json index fa02b14b30..d245e11dd6 100644 --- a/sites/svelte.dev/package.json +++ b/sites/svelte.dev/package.json @@ -30,7 +30,7 @@ "@resvg/resvg-js": "^2.4.1", "@sveltejs/adapter-vercel": "^3.0.3", "@sveltejs/kit": "^1.24.1", - "@sveltejs/site-kit": "6.0.0-next.46", + "@sveltejs/site-kit": "6.0.0-next.47", "@sveltejs/vite-plugin-svelte": "^2.4.6", "@types/cookie": "^0.5.2", "@types/node": "^20.5.9", diff --git a/sites/svelte.dev/src/routes/+layout.svelte b/sites/svelte.dev/src/routes/+layout.svelte index 9906d6a1b0..cd3de32c8f 100644 --- a/sites/svelte.dev/src/routes/+layout.svelte +++ b/sites/svelte.dev/src/routes/+layout.svelte @@ -32,7 +32,11 @@
- + + +
@@ -84,4 +92,12 @@ height: 100%; width: 100%; } + + .banner-bottom { + text-align: center; + background: var(--sk-theme-1-variant); + color: white; + text-decoration: underline; + padding: 8px; + } From 666d70ac2bfcf444b540e6311076047becd2a53b Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Wed, 20 Sep 2023 10:23:27 -0700 Subject: [PATCH 47/65] chore: update PR template with note about rewrite (#9231) --- .github/PULL_REQUEST_TEMPLATE.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 83e0b253b3..49d60aecaa 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,3 +1,6 @@ +## Svelte compiler rewrite + +Please note that [the Svelte codebase is currently being rewritten](https://svelte.dev/blog/runes). Thus, it's best to hold off on new features or refactorings for the time being. ### Before submitting the PR, please make sure you do the following From fa89421301f949c83d9e5e34a1f6e215137cdf4c Mon Sep 17 00:00:00 2001 From: Irshad Ali Date: Thu, 21 Sep 2023 14:35:41 +0530 Subject: [PATCH 48/65] fix(repl): runes bottom banner overlapping fixed (#9238) --------- Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> Co-authored-by: Simon Holthausen --- pnpm-lock.yaml | 8 ++++---- sites/svelte.dev/package.json | 2 +- .../svelte.dev/src/routes/(authed)/repl/[id]/+page.svelte | 4 ++-- sites/svelte.dev/src/routes/blog/+page.svelte | 2 +- sites/svelte.dev/src/routes/docs/+layout.svelte | 2 +- sites/svelte.dev/src/routes/examples/[slug]/+page.svelte | 2 +- sites/svelte.dev/src/routes/tutorial/[slug]/+page.svelte | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8407e35ddc..9cc6d0c937 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -188,8 +188,8 @@ importers: specifier: ^1.24.1 version: 1.25.0(svelte@packages+svelte)(vite@4.4.9) '@sveltejs/site-kit': - specifier: 6.0.0-next.47 - version: 6.0.0-next.47(@sveltejs/kit@1.25.0)(svelte@packages+svelte) + specifier: 6.0.0-next.50 + version: 6.0.0-next.50(@sveltejs/kit@1.25.0)(svelte@packages+svelte) '@sveltejs/vite-plugin-svelte': specifier: ^2.4.6 version: 2.4.6(svelte@packages+svelte)(vite@4.4.9) @@ -2424,8 +2424,8 @@ packages: svelte-local-storage-store: 0.4.0(svelte@packages+svelte) dev: false - /@sveltejs/site-kit@6.0.0-next.47(@sveltejs/kit@1.25.0)(svelte@packages+svelte): - resolution: {integrity: sha512-vHKtz71e4bKH0gja//rSd/1rR8qHNCtdtXzjJ2nSdeACaZ5Daql7Q4JJ+0D9OM3Q9t/uj3XAFUPAmEaFENn5kA==} + /@sveltejs/site-kit@6.0.0-next.50(@sveltejs/kit@1.25.0)(svelte@packages+svelte): + resolution: {integrity: sha512-kgJVREVGuhhNO1YfQwJelFsBqfJiPhP7J4ytGUg05FaYlNQn3jb+BMUo027fSRpLgAjCqoo0IzIwX6CSSqqyJg==} peerDependencies: '@sveltejs/kit': ^1.20.0 svelte: ^4.0.0 diff --git a/sites/svelte.dev/package.json b/sites/svelte.dev/package.json index d245e11dd6..2a5e1fe050 100644 --- a/sites/svelte.dev/package.json +++ b/sites/svelte.dev/package.json @@ -30,7 +30,7 @@ "@resvg/resvg-js": "^2.4.1", "@sveltejs/adapter-vercel": "^3.0.3", "@sveltejs/kit": "^1.24.1", - "@sveltejs/site-kit": "6.0.0-next.47", + "@sveltejs/site-kit": "6.0.0-next.50", "@sveltejs/vite-plugin-svelte": "^2.4.6", "@types/cookie": "^0.5.2", "@types/node": "^20.5.9", diff --git a/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.svelte b/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.svelte index 61d559b452..c867ff332f 100644 --- a/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.svelte +++ b/sites/svelte.dev/src/routes/(authed)/repl/[id]/+page.svelte @@ -104,8 +104,8 @@