From e8b4997bb53134d96c736833ecffeee083b5689d Mon Sep 17 00:00:00 2001 From: Tan Li Hau Date: Fri, 14 Oct 2022 13:15:04 +0800 Subject: [PATCH 01/61] [fix] duplicate meta tags during hydration (#7941) --- src/compiler/compile/render_ssr/handlers/Head.ts | 9 ++++++++- test/server-side-rendering/index.ts | 4 +++- .../samples/head-meta-hydrate-duplicate/_config.js | 3 ++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/compiler/compile/render_ssr/handlers/Head.ts b/src/compiler/compile/render_ssr/handlers/Head.ts index f4bb3fa118..95648e1aca 100644 --- a/src/compiler/compile/render_ssr/handlers/Head.ts +++ b/src/compiler/compile/render_ssr/handlers/Head.ts @@ -1,6 +1,7 @@ import Renderer, { RenderOptions } from '../Renderer'; import Head from '../../nodes/Head'; import { x } from 'code-red'; +import { Node } from 'estree'; export default function(node: Head, renderer: Renderer, options: RenderOptions) { const head_options = { @@ -11,6 +12,12 @@ export default function(node: Head, renderer: Renderer, options: RenderOptions) renderer.push(); renderer.render(node.children, head_options); const result = renderer.pop(); + let expression: Node = result; + if (options.hydratable) { + const start_comment = `HEAD_${node.id}_START`; + const end_comment = `HEAD_${node.id}_END`; + expression = x`'' + ${expression} + ''`; + } - renderer.add_expression(x`$$result.head += '' + ${result} + '', ""`); + renderer.add_expression(x`$$result.head += ${expression}, ""`); } diff --git a/test/server-side-rendering/index.ts b/test/server-side-rendering/index.ts index 2a4e0596e7..a5458be109 100644 --- a/test/server-side-rendering/index.ts +++ b/test/server-side-rendering/index.ts @@ -117,7 +117,9 @@ describe('ssr', () => { fs.writeFileSync(`${dir}/_actual-head.html`, head); try { - assert.htmlEqual( + (compileOptions.hydratable + ? assert.htmlEqualWithComments + : assert.htmlEqual)( head, fs.readFileSync(`${dir}/_expected-head.html`, 'utf-8') ); diff --git a/test/server-side-rendering/samples/head-meta-hydrate-duplicate/_config.js b/test/server-side-rendering/samples/head-meta-hydrate-duplicate/_config.js index ae9b250f86..f1f4fff921 100644 --- a/test/server-side-rendering/samples/head-meta-hydrate-duplicate/_config.js +++ b/test/server-side-rendering/samples/head-meta-hydrate-duplicate/_config.js @@ -1,5 +1,6 @@ export default { compileOptions: { hydratable: true - } + }, + withoutNormalizeHtml: true }; From a6169f65ebf84634908d23c20f1e562742dd338b Mon Sep 17 00:00:00 2001 From: Yuichiro Yamashita Date: Fri, 14 Oct 2022 14:15:28 +0900 Subject: [PATCH 02/61] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index da06afc1fb..3099d542d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Support `|important` modifier to style directive ([#7489](https://github.com/sveltejs/svelte/pull/7489)) * Warn when using `` without `rel="noreferrer"` ([#6188](https://github.com/sveltejs/svelte/issues/6188)) * Throw helpful compiler error for attempting to update `const` variable ([#4895](https://github.com/sveltejs/svelte/issues/4895)) +* Refix hydration with `{@html}` and components in `` ([#7941](https://github.com/sveltejs/svelte/pull/7941)) ## 3.51.0 From 244d74d4a752e8ec768a9323d88257dcf9bee202 Mon Sep 17 00:00:00 2001 From: Tan Li Hau Date: Fri, 14 Oct 2022 20:08:25 +0800 Subject: [PATCH 03/61] [feat] pre-build before testing in CI (#7933) --- .github/workflows/ci.yml | 59 ++++++++++++++++++++++++++++++++++++++-- .mocharc.js | 6 ++-- .mocharc.unit.js | 15 ++++++++++ package.json | 12 ++++---- scripts/skip_in_ci.js | 7 +++++ 5 files changed, 88 insertions(+), 11 deletions(-) create mode 100644 .mocharc.unit.js create mode 100644 scripts/skip_in_ci.js diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 548b8492ca..e878e8eb02 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,7 +3,42 @@ on: [push, pull_request] permissions: contents: read # to fetch code (actions/checkout) jobs: + Setup: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macOS-latest] + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v2 + with: + node-version: 16 + cache: npm + - run: npm install + env: + SKIP_PREPARE: true + - run: npm run build + env: + PUBLISH: true + - uses: actions/cache@v3 + with: + # cache key based on OS as the full path for each OS may be different + # and windows is not able to reuse the cache from ubuntu + key: output-${{ github.run_id }}-${{ matrix.os }} + path: | + index.* + compiler.* + ssr.* + action/ + animate/ + easing/ + internal/ + motion/ + store/ + transition/ + types/ Tests: + needs: Setup runs-on: ${{ matrix.os }} timeout-minutes: 15 strategy: @@ -16,8 +51,25 @@ jobs: with: node-version: ${{ matrix.node-version }} cache: npm + - uses: actions/cache@v3 + with: + key: output-${{ github.run_id }}-${{ matrix.os }} + path: | + index.* + compiler.* + ssr.* + action/ + animate/ + easing/ + internal/ + motion/ + store/ + transition/ + types/ - run: npm install - - run: npm test + env: + SKIP_PREPARE: true + - run: npm run test:integration env: CI: true Lint: @@ -40,4 +92,7 @@ jobs: - uses: actions/setup-node@v3 with: cache: npm - - run: 'npm i && npm run test:unit' + - run: npm install + env: + SKIP_PREPARE: true + - run: npm run test:unit diff --git a/.mocharc.js b/.mocharc.js index e55f26099e..449f81ecd6 100644 --- a/.mocharc.js +++ b/.mocharc.js @@ -1,7 +1,7 @@ +const is_unit_test = process.env.UNIT_TEST; + module.exports = { - file: [ - 'test/test.ts' - ], + file: is_unit_test ? [] : ['test/test.ts'], require: [ 'sucrase/register' ] diff --git a/.mocharc.unit.js b/.mocharc.unit.js new file mode 100644 index 0000000000..387d70e7e0 --- /dev/null +++ b/.mocharc.unit.js @@ -0,0 +1,15 @@ +module.exports = { + spec: [ + 'src/**/__test__.ts', + ], + require: [ + 'sucrase/register' + ], + recursive: true, +}; + +// add coverage options when running 'npx c8 mocha' +if (process.env.NODE_V8_COVERAGE) { + module.exports.fullTrace = true; + module.exports.require.push('source-map-support/register'); +} diff --git a/package.json b/package.json index bf6b9e7754..c9a67c9311 100644 --- a/package.json +++ b/package.json @@ -86,15 +86,15 @@ }, "types": "types/runtime/index.d.ts", "scripts": { - "test": "mocha --exit", - "test:unit": "mocha --require sucrase/register --recursive src/**/__test__.ts --exit", - "quicktest": "mocha", + "test": "npm run test:unit && npm run test:integration", + "test:integration": "mocha --exit", + "test:unit": "mocha --config .mocharc.unit.js --exit", + "quicktest": "mocha --exit", "build": "rollup -c && npm run tsd", - "prepare": "npm run build", + "prepare": "node scripts/skip_in_ci.js npm run build", "dev": "rollup -cw", - "pretest": "npm run build", "posttest": "agadoo internal/index.mjs", - "prepublishOnly": "node check_publish_env.js && npm run lint && npm test", + "prepublishOnly": "node check_publish_env.js && npm run lint && npm run build && npm test", "tsd": "node ./generate-type-definitions.js", "lint": "eslint \"{src,test}/**/*.{ts,js}\"" }, diff --git a/scripts/skip_in_ci.js b/scripts/skip_in_ci.js new file mode 100644 index 0000000000..d845d000ab --- /dev/null +++ b/scripts/skip_in_ci.js @@ -0,0 +1,7 @@ +if (process.env.SKIP_PREPARE) { + console.log('Skipped "prepare" script'); +} else { + const { execSync } = require("child_process"); + const command = process.argv.slice(2).join(" "); + execSync(command, { stdio: "inherit" }); +} From ef849217c43e157863dd0a7996ad56e1084b150b Mon Sep 17 00:00:00 2001 From: Conduitry Date: Sat, 15 Oct 2022 09:57:24 -0400 Subject: [PATCH 04/61] -> v3.52.0 --- CHANGELOG.md | 8 ++++---- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3099d542d8..41eebe64d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,11 @@ # Svelte changelog -## Unreleased +## 3.52.0 -* Support `|important` modifier to style directive ([#7489](https://github.com/sveltejs/svelte/pull/7489)) +* Throw compile-time error when attempting to update `const` variable ([#4895](https://github.com/sveltejs/svelte/issues/4895)) * Warn when using `` without `rel="noreferrer"` ([#6188](https://github.com/sveltejs/svelte/issues/6188)) -* Throw helpful compiler error for attempting to update `const` variable ([#4895](https://github.com/sveltejs/svelte/issues/4895)) -* Refix hydration with `{@html}` and components in `` ([#7941](https://github.com/sveltejs/svelte/pull/7941)) +* Support `style:foo|important` modifier ([#7365](https://github.com/sveltejs/svelte/issues/7365)) +* Fix hydration regression with `{@html}` and components in `` ([#7941](https://github.com/sveltejs/svelte/pull/7941)) ## 3.51.0 diff --git a/package-lock.json b/package-lock.json index dec2c8ef0e..cc2e097814 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "svelte", - "version": "3.51.0", + "version": "3.52.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "svelte", - "version": "3.49.0", + "version": "3.52.0", "license": "MIT", "devDependencies": { "@ampproject/remapping": "^0.3.0", diff --git a/package.json b/package.json index c9a67c9311..30afca4209 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "svelte", - "version": "3.51.0", + "version": "3.52.0", "description": "Cybernetically enhanced web apps", "module": "index.mjs", "main": "index", From caca8a53401e975d23672255393dd778a58a48ff Mon Sep 17 00:00:00 2001 From: Yuichiro Yamashita Date: Sun, 16 Oct 2022 13:55:23 +0900 Subject: [PATCH 05/61] [chore] Improve CI (#7945) * stop to use cache * update on.push.branches * rename --- .github/workflows/ci.yml | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e878e8eb02..948f5d3bac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,5 +1,8 @@ name: CI -on: [push, pull_request] +on: + push: + branches: [ master ] + pull_request: permissions: contents: read # to fetch code (actions/checkout) jobs: @@ -9,8 +12,8 @@ jobs: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] steps: - - uses: actions/checkout@v1 - - uses: actions/setup-node@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 with: node-version: 16 cache: npm @@ -20,11 +23,11 @@ jobs: - run: npm run build env: PUBLISH: true - - uses: actions/cache@v3 + - name: Upload build assets + id: upload-artifact + uses: actions/upload-artifact@v3 with: - # cache key based on OS as the full path for each OS may be different - # and windows is not able to reuse the cache from ubuntu - key: output-${{ github.run_id }}-${{ matrix.os }} + name: build-assets path: | index.* compiler.* @@ -51,21 +54,11 @@ jobs: with: node-version: ${{ matrix.node-version }} cache: npm - - uses: actions/cache@v3 + - name: Download build assets + uses: actions/download-artifact@v3 + id: download-artifact with: - key: output-${{ github.run_id }}-${{ matrix.os }} - path: | - index.* - compiler.* - ssr.* - action/ - animate/ - easing/ - internal/ - motion/ - store/ - transition/ - types/ + name: build-assets - run: npm install env: SKIP_PREPARE: true From 1de2c025350511c4be27a784d7a295b17727692f Mon Sep 17 00:00:00 2001 From: Yuri Date: Sun, 16 Oct 2022 04:25:39 -0400 Subject: [PATCH 06/61] Ensure onmouseleave event fires in Hoverable example (#7873) Fixes the browser-quirk-related issue described in #6520 and #7867, based on a [suggestion](https://github.com/sveltejs/svelte/issues/7867#issuecomment-1248993436) by @Prinzhorn. Tested in the editable example area on the Svelte site: https://svelte.dev/examples/slot-props --- .../examples/15-composition/03-slot-props/App.svelte | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/site/content/examples/15-composition/03-slot-props/App.svelte b/site/content/examples/15-composition/03-slot-props/App.svelte index 299cd336a6..5525867932 100644 --- a/site/content/examples/15-composition/03-slot-props/App.svelte +++ b/site/content/examples/15-composition/03-slot-props/App.svelte @@ -43,4 +43,8 @@ background-color: #ff3e00; color: white; } - \ No newline at end of file + + p { + pointer-events: none; + } + From 8921c04a21e60bf6773cded17e79fde016c1018a Mon Sep 17 00:00:00 2001 From: Sid Date: Sun, 16 Oct 2022 14:28:34 +0530 Subject: [PATCH 07/61] [chore] Upgrade css-tree version to 2.1.0 (#7572) * chore: upgrade to css-tree major version * fix: handle whitespace token for new ast * fix: css syntax error * remove @types/css-tree * import css-tree/parser instead of file path import Co-authored-by: tanhauhau --- package-lock.json | 181 ++++++++++++++++------- package.json | 4 +- src/compiler/compile/css/Selector.ts | 2 +- src/compiler/parse/read/style.ts | 3 +- test/parser/samples/error-css/error.json | 2 +- 5 files changed, 133 insertions(+), 59 deletions(-) diff --git a/package-lock.json b/package-lock.json index cc2e097814..1e4763cac4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@ampproject/remapping": "^0.3.0", "@rollup/plugin-commonjs": "^11.0.0", "@rollup/plugin-json": "^4.0.1", - "@rollup/plugin-node-resolve": "^6.0.0", + "@rollup/plugin-node-resolve": "^11.2.1", "@rollup/plugin-replace": "^2.3.0", "@rollup/plugin-sucrase": "^3.1.0", "@rollup/plugin-typescript": "^2.0.1", @@ -28,7 +28,7 @@ "aria-query": "^5.0.0", "axobject-query": "^3.0.1", "code-red": "^0.2.5", - "css-tree": "^1.1.2", + "css-tree": "^2.1.0", "eslint": "^8.0.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-svelte3": "^4.0.0", @@ -209,21 +209,54 @@ } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-6.0.0.tgz", - "integrity": "sha512-GqWz1CfXOsqpeVMcoM315+O7zMxpRsmhWyhJoxLFHVSp9S64/u02i7len/FnbTNbmgYs+sZyilasijH8UiuboQ==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", "dev": true, "dependencies": { - "@rollup/pluginutils": "^3.0.0", - "@types/resolve": "0.0.8", + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", "is-module": "^1.0.0", - "resolve": "^1.11.1" + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" }, "engines": { "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, "node_modules/@rollup/plugin-replace": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.0.tgz", @@ -331,9 +364,9 @@ "dev": true }, "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, "dependencies": { "@types/node": "*" @@ -1077,25 +1110,17 @@ "dev": true }, "node_modules/css-tree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", - "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dev": true, "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, "node_modules/cssom": { @@ -1177,6 +1202,15 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -3108,9 +3142,9 @@ } }, "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "dev": true }, "node_modules/merge2": { @@ -4055,6 +4089,15 @@ "node": ">= 8" } }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-support": { "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", @@ -4884,16 +4927,42 @@ } }, "@rollup/plugin-node-resolve": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-6.0.0.tgz", - "integrity": "sha512-GqWz1CfXOsqpeVMcoM315+O7zMxpRsmhWyhJoxLFHVSp9S64/u02i7len/FnbTNbmgYs+sZyilasijH8UiuboQ==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.0.0", - "@types/resolve": "0.0.8", + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", "is-module": "^1.0.0", - "resolve": "^1.11.1" + "resolve": "^1.19.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } } }, "@rollup/plugin-replace": { @@ -4997,9 +5066,9 @@ "dev": true }, "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, "requires": { "@types/node": "*" @@ -5545,21 +5614,13 @@ "dev": true }, "css-tree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", - "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dev": true, "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" } }, "cssom": { @@ -5626,6 +5687,12 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -7103,9 +7170,9 @@ } }, "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "dev": true }, "merge2": { @@ -7837,6 +7904,12 @@ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, "source-map-support": { "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", diff --git a/package.json b/package.json index 30afca4209..245c9b1834 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "@ampproject/remapping": "^0.3.0", "@rollup/plugin-commonjs": "^11.0.0", "@rollup/plugin-json": "^4.0.1", - "@rollup/plugin-node-resolve": "^6.0.0", + "@rollup/plugin-node-resolve": "^11.2.1", "@rollup/plugin-replace": "^2.3.0", "@rollup/plugin-sucrase": "^3.1.0", "@rollup/plugin-typescript": "^2.0.1", @@ -134,7 +134,7 @@ "aria-query": "^5.0.0", "axobject-query": "^3.0.1", "code-red": "^0.2.5", - "css-tree": "^1.1.2", + "css-tree": "^2.1.0", "eslint": "^8.0.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-svelte3": "^4.0.0", diff --git a/src/compiler/compile/css/Selector.ts b/src/compiler/compile/css/Selector.ts index 28cf5ba6af..07e2dc439e 100644 --- a/src/compiler/compile/css/Selector.ts +++ b/src/compiler/compile/css/Selector.ts @@ -212,7 +212,7 @@ function apply_selector(blocks: Block[], node: Element, to_encapsulate: Array<{ } if (block.combinator) { - if (block.combinator.type === 'WhiteSpace') { + if (block.combinator.type === 'Combinator' && block.combinator.name === ' ') { for (const ancestor_block of blocks) { if (ancestor_block.global) { continue; diff --git a/src/compiler/parse/read/style.ts b/src/compiler/parse/read/style.ts index 1e21dddc67..d7ba83c6e5 100644 --- a/src/compiler/parse/read/style.ts +++ b/src/compiler/parse/read/style.ts @@ -1,4 +1,5 @@ -import parse from 'css-tree/lib/parser/index.js'; +// @ts-ignore +import parse from 'css-tree/parser'; import { walk } from 'estree-walker'; import { Parser } from '../index'; import { Node } from 'estree'; diff --git a/test/parser/samples/error-css/error.json b/test/parser/samples/error-css/error.json index 90f7a091d2..78bea3030c 100644 --- a/test/parser/samples/error-css/error.json +++ b/test/parser/samples/error-css/error.json @@ -1,6 +1,6 @@ { "code": "css-syntax-error", - "message": "LeftCurlyBracket is expected", + "message": "\"{\" is expected", "start": { "line": 2, "column": 16, From f9e5b3e995a488ff5ef21b4258a5954ea6667dbf Mon Sep 17 00:00:00 2001 From: Tan Li Hau Date: Sun, 16 Oct 2022 17:01:12 +0800 Subject: [PATCH 08/61] Update CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41eebe64d1..cc41f14a88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Svelte changelog +## Unreleased +* Upgraded `css-tree` to `2.1.0` ([#7572](https://github.com/sveltejs/svelte/pull/7572)) + ## 3.52.0 * Throw compile-time error when attempting to update `const` variable ([#4895](https://github.com/sveltejs/svelte/issues/4895)) From 0a7cf0e73e386e46a692e06d540703c435d4d003 Mon Sep 17 00:00:00 2001 From: Josiah Nieves <23145687+jtn7@users.noreply.github.com> Date: Sun, 16 Oct 2022 22:45:03 -0400 Subject: [PATCH 09/61] [docs] fix typo "bellow" vs "below" (#7955) --- site/content/docs/02-component-format.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/docs/02-component-format.md b/site/content/docs/02-component-format.md index 5212b001ac..268444ab7d 100644 --- a/site/content/docs/02-component-format.md +++ b/site/content/docs/02-component-format.md @@ -209,7 +209,7 @@ It is important to note that the reactive blocks are ordered via simple static a ``` -Moving the line `$: yDependent = y` bellow `$: setY(x)` will cause `yDependent` to be updated when `x` is updated. +Moving the line `$: yDependent = y` below `$: setY(x)` will cause `yDependent` to be updated when `x` is updated. --- From 146e7a6310627d4599bb60760d573dffa5d1d2ce Mon Sep 17 00:00:00 2001 From: Neagu Mihai <74415486+devneagu@users.noreply.github.com> Date: Thu, 20 Oct 2022 21:04:35 +0300 Subject: [PATCH 10/61] fix: Remove Security Message (#7959) --- site/content/examples/03-logic/03-each-blocks/App.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/examples/03-logic/03-each-blocks/App.svelte b/site/content/examples/03-logic/03-each-blocks/App.svelte index 3ecbe5ca2f..7d08b79ab8 100644 --- a/site/content/examples/03-logic/03-each-blocks/App.svelte +++ b/site/content/examples/03-logic/03-each-blocks/App.svelte @@ -11,7 +11,7 @@