From 277be9deb924655b24c97e8e22e15ccfd4cb166c Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 28 Feb 2023 08:08:11 -0800 Subject: [PATCH 1/7] chore: upgrade magic-string --- package-lock.json | 56 ++++++++--------------------------------------- package.json | 2 +- 2 files changed, 10 insertions(+), 48 deletions(-) diff --git a/package-lock.json b/package-lock.json index b8aea534af8c..5b7ef9f02681 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,7 @@ "jsdom": "^15.2.1", "kleur": "^4.1.5", "locate-character": "^2.0.5", - "magic-string": "^0.25.3", + "magic-string": "^0.25.9", "mocha": "^7.0.0", "periscopic": "^3.0.4", "puppeteer": "^2.0.0", @@ -234,15 +234,6 @@ "@types/estree": "*" } }, - "node_modules/@rollup/plugin-commonjs/node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, "node_modules/@rollup/plugin-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.0.1.tgz", @@ -311,15 +302,6 @@ "rollup-pluginutils": "^2.6.0" } }, - "node_modules/@rollup/plugin-replace/node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, "node_modules/@rollup/plugin-sucrase": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-sucrase/-/plugin-sucrase-3.1.0.tgz", @@ -3532,12 +3514,12 @@ } }, "node_modules/magic-string": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", - "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, "dependencies": { - "sourcemap-codec": "^1.4.4" + "sourcemap-codec": "^1.4.8" } }, "node_modules/mdn-data": { @@ -5438,15 +5420,6 @@ "requires": { "@types/estree": "*" } - }, - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } } } }, @@ -5506,17 +5479,6 @@ "requires": { "magic-string": "^0.25.2", "rollup-pluginutils": "^2.6.0" - }, - "dependencies": { - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - } } }, "@rollup/plugin-sucrase": { @@ -7961,12 +7923,12 @@ } }, "magic-string": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", - "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, "requires": { - "sourcemap-codec": "^1.4.4" + "sourcemap-codec": "^1.4.8" } }, "mdn-data": { diff --git a/package.json b/package.json index 975f171fe643..1060da1cdec1 100644 --- a/package.json +++ b/package.json @@ -148,7 +148,7 @@ "jsdom": "^15.2.1", "kleur": "^4.1.5", "locate-character": "^2.0.5", - "magic-string": "^0.25.3", + "magic-string": "^0.25.9", "mocha": "^7.0.0", "periscopic": "^3.0.4", "puppeteer": "^2.0.0", From b338975587d2164d6d329533486f42f4fe17e791 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 28 Feb 2023 11:22:13 -0800 Subject: [PATCH 2/7] update test --- test/sourcemaps/samples/compile-option-dev/test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/sourcemaps/samples/compile-option-dev/test.js b/test/sourcemaps/samples/compile-option-dev/test.js index f169ab8832b1..6898466e2cba 100644 --- a/test/sourcemaps/samples/compile-option-dev/test.js +++ b/test/sourcemaps/samples/compile-option-dev/test.js @@ -20,8 +20,8 @@ export async function test({ assert, css, js }) { [ // TODO how to get line + column numbers? [css, '--keep-me', 13, 2], - [css, '--done-replace-once', 6, 5], - [css, '--done-replace-twice', 9, 5] + [css, '--done-replace-once', 6, 4], + [css, '--done-replace-twice', 9, 4] ] .forEach(([where, content, line, column]) => { assert.deepEqual( From 96fba7b196ff05248d66acf00429cab0cbe581d4 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 28 Feb 2023 15:13:43 -0800 Subject: [PATCH 3/7] add TODOs --- test/sourcemaps/samples/compile-option-dev/test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/sourcemaps/samples/compile-option-dev/test.js b/test/sourcemaps/samples/compile-option-dev/test.js index 6898466e2cba..2a6e0bd7673e 100644 --- a/test/sourcemaps/samples/compile-option-dev/test.js +++ b/test/sourcemaps/samples/compile-option-dev/test.js @@ -18,8 +18,10 @@ export async function test({ assert, css, js }) { // TODO make util fn + move to test index.js const sourcefile = 'input.svelte'; [ - // TODO how to get line + column numbers? + // TODO: get line and col num from input.svelte rather than hardcoding here + // TODO: this should be line 12 [css, '--keep-me', 13, 2], + // TODO: these should be col 2 [css, '--done-replace-once', 6, 4], [css, '--done-replace-twice', 9, 4] ] From 5c1884606428427075f1921243142b067d88a91b Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 28 Feb 2023 15:17:37 -0800 Subject: [PATCH 4/7] expand comments --- test/sourcemaps/samples/compile-option-dev/test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/sourcemaps/samples/compile-option-dev/test.js b/test/sourcemaps/samples/compile-option-dev/test.js index 2a6e0bd7673e..aafc159f57e8 100644 --- a/test/sourcemaps/samples/compile-option-dev/test.js +++ b/test/sourcemaps/samples/compile-option-dev/test.js @@ -19,9 +19,9 @@ export async function test({ assert, css, js }) { const sourcefile = 'input.svelte'; [ // TODO: get line and col num from input.svelte rather than hardcoding here - // TODO: this should be line 12 + // TODO: this should be line 12 (source maps are 0-indexed) [css, '--keep-me', 13, 2], - // TODO: these should be col 2 + // TODO: these should be col 2 (each tab is 1 col) [css, '--done-replace-once', 6, 4], [css, '--done-replace-twice', 9, 4] ] From 0ce8177387077278f434888a7dcbff0a4d460313 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 2 Mar 2023 08:03:32 -0800 Subject: [PATCH 5/7] try latest version --- package-lock.json | 59 +++++++++++++++++++++++++++++++++++++++-------- package.json | 2 +- 2 files changed, 51 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5b7ef9f02681..099ed941e45b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,7 @@ "jsdom": "^15.2.1", "kleur": "^4.1.5", "locate-character": "^2.0.5", - "magic-string": "^0.25.9", + "magic-string": "^0.30.0", "mocha": "^7.0.0", "periscopic": "^3.0.4", "puppeteer": "^2.0.0", @@ -234,6 +234,15 @@ "@types/estree": "*" } }, + "node_modules/@rollup/plugin-commonjs/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, "node_modules/@rollup/plugin-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.0.1.tgz", @@ -302,6 +311,15 @@ "rollup-pluginutils": "^2.6.0" } }, + "node_modules/@rollup/plugin-replace/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, "node_modules/@rollup/plugin-sucrase": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-sucrase/-/plugin-sucrase-3.1.0.tgz", @@ -3514,12 +3532,15 @@ } }, "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", "dev": true, "dependencies": { - "sourcemap-codec": "^1.4.8" + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" } }, "node_modules/mdn-data": { @@ -5420,6 +5441,15 @@ "requires": { "@types/estree": "*" } + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } } } }, @@ -5479,6 +5509,17 @@ "requires": { "magic-string": "^0.25.2", "rollup-pluginutils": "^2.6.0" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } } }, "@rollup/plugin-sucrase": { @@ -7923,12 +7964,12 @@ } }, "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", "dev": true, "requires": { - "sourcemap-codec": "^1.4.8" + "@jridgewell/sourcemap-codec": "^1.4.13" } }, "mdn-data": { diff --git a/package.json b/package.json index 1060da1cdec1..a76b44135b0b 100644 --- a/package.json +++ b/package.json @@ -148,7 +148,7 @@ "jsdom": "^15.2.1", "kleur": "^4.1.5", "locate-character": "^2.0.5", - "magic-string": "^0.25.9", + "magic-string": "^0.30.0", "mocha": "^7.0.0", "periscopic": "^3.0.4", "puppeteer": "^2.0.0", From b194b23c47b5b7588331ab87b56eb83cb85c15fc Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 2 Mar 2023 08:23:07 -0800 Subject: [PATCH 6/7] overwrite -> update --- src/compiler/compile/css/Selector.ts | 4 ++-- src/compiler/compile/css/Stylesheet.ts | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/compiler/compile/css/Selector.ts b/src/compiler/compile/css/Selector.ts index 5feb59ec0ccb..0daf30a75688 100644 --- a/src/compiler/compile/css/Selector.ts +++ b/src/compiler/compile/css/Selector.ts @@ -76,7 +76,7 @@ export default class Selector { this.blocks.forEach((block, i) => { if (i > 0) { if (block.start - c > 1) { - code.overwrite(c, block.start, block.combinator.name || ' '); + code.update(c, block.start, block.combinator.name || ' '); } } @@ -112,7 +112,7 @@ export default class Selector { } if (selector.type === 'TypeSelector' && selector.name === '*') { - code.overwrite(selector.start, selector.end, attr); + code.update(selector.start, selector.end, attr); } else { code.appendLeft(selector.end, attr); } diff --git a/src/compiler/compile/css/Stylesheet.ts b/src/compiler/compile/css/Stylesheet.ts index 9a3cbe9d135f..8f54830e6af2 100644 --- a/src/compiler/compile/css/Stylesheet.ts +++ b/src/compiler/compile/css/Stylesheet.ts @@ -35,7 +35,7 @@ function minify_declarations( declarations.forEach((declaration, i) => { const separator = i > 0 ? ';' : ''; if ((declaration.node.start - c) > separator.length) { - code.overwrite(c, declaration.node.start, separator); + code.update(c, declaration.node.start, separator); } declaration.minify(code); c = declaration.node.end; @@ -75,7 +75,7 @@ class Rule { if (selector.used) { const separator = started ? ',' : ''; if ((selector.node.start - c) > separator.length) { - code.overwrite(c, selector.node.start, separator); + code.update(c, selector.node.start, separator); } selector.minify(code); @@ -133,7 +133,7 @@ class Declaration { if (block.type === 'Identifier') { const name = block.name; if (keyframes.has(name)) { - code.overwrite(block.start, block.end, keyframes.get(name)); + code.update(block.start, block.end, keyframes.get(name)); } } }); @@ -156,7 +156,7 @@ class Declaration { while (regex_whitespace.test(code.original[start])) start += 1; if (start - c > 1) { - code.overwrite(c, start, ':'); + code.update(c, start, ':'); } } } @@ -204,7 +204,7 @@ class Atrule { code.remove(c, this.node.block.start); } else if (this.node.name === 'supports') { let c = this.node.start + 9; - if (this.node.prelude.start - c > 1) code.overwrite(c, this.node.prelude.start, ' '); + if (this.node.prelude.start - c > 1) code.update(c, this.node.prelude.start, ' '); this.node.prelude.children.forEach((query: CssNode) => { // TODO minify queries c = query.end; @@ -213,7 +213,7 @@ class Atrule { } else { let c = this.node.start + this.node.name.length + 1; if (this.node.prelude) { - if (this.node.prelude.start - c > 1) code.overwrite(c, this.node.prelude.start, ' '); + if (this.node.prelude.start - c > 1) code.update(c, this.node.prelude.start, ' '); c = this.node.prelude.end; } if (this.node.block && this.node.block.start - c > 0) { @@ -255,7 +255,7 @@ class Atrule { }); }); } else { - code.overwrite(start, end, keyframes.get(name)); + code.update(start, end, keyframes.get(name)); } } }); From 84d36ab6f07c67f919d2f298027c7323ea3192ad Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 2 Mar 2023 08:34:38 -0800 Subject: [PATCH 7/7] update comments --- test/sourcemaps/samples/compile-option-dev/test.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/sourcemaps/samples/compile-option-dev/test.js b/test/sourcemaps/samples/compile-option-dev/test.js index aafc159f57e8..eec81fc93e5c 100644 --- a/test/sourcemaps/samples/compile-option-dev/test.js +++ b/test/sourcemaps/samples/compile-option-dev/test.js @@ -19,9 +19,10 @@ export async function test({ assert, css, js }) { const sourcefile = 'input.svelte'; [ // TODO: get line and col num from input.svelte rather than hardcoding here - // TODO: this should be line 12 (source maps are 0-indexed) [css, '--keep-me', 13, 2], - // TODO: these should be col 2 (each tab is 1 col) + // TODO: these should be 7, 2 and 10, 2 + // we use locate_1 which means lines are 1-indexed and cols are 0-indexed + // each tab is 1 col [css, '--done-replace-once', 6, 4], [css, '--done-replace-twice', 9, 4] ]