From 4ae1b890607ced9e17b8dbda305b5f922d58eab0 Mon Sep 17 00:00:00 2001 From: Will Binns-Smith Date: Tue, 3 May 2022 00:45:24 -0700 Subject: [PATCH 1/8] Update @parcel/css to 1.8.2 (#8044) --- .../test/integration/less-url-quotes/index.js | 1 + .../integration/less-url-quotes/index.less | 4 + packages/core/integration-tests/test/less.js | 23 +++- packages/optimizers/css/package.json | 2 +- packages/transformers/css/package.json | 2 +- yarn.lock | 104 +++++++++--------- 6 files changed, 81 insertions(+), 55 deletions(-) create mode 100644 packages/core/integration-tests/test/integration/less-url-quotes/index.js create mode 100644 packages/core/integration-tests/test/integration/less-url-quotes/index.less diff --git a/packages/core/integration-tests/test/integration/less-url-quotes/index.js b/packages/core/integration-tests/test/integration/less-url-quotes/index.js new file mode 100644 index 00000000000..ff9c98996d0 --- /dev/null +++ b/packages/core/integration-tests/test/integration/less-url-quotes/index.js @@ -0,0 +1 @@ +require('./index.less'); diff --git a/packages/core/integration-tests/test/integration/less-url-quotes/index.less b/packages/core/integration-tests/test/integration/less-url-quotes/index.less new file mode 100644 index 00000000000..57cca665dfa --- /dev/null +++ b/packages/core/integration-tests/test/integration/less-url-quotes/index.less @@ -0,0 +1,4 @@ +.index { + // Note the literal space after "xml" + background: url("data:image/svg+xml,%3C%3Fxml version%3D%221.0%22%3F%3E%3Csvg%3E%3C%2Fsvg%3E"); +} diff --git a/packages/core/integration-tests/test/less.js b/packages/core/integration-tests/test/less.js index cf89b1c7cae..a75a20fa1ed 100644 --- a/packages/core/integration-tests/test/less.js +++ b/packages/core/integration-tests/test/less.js @@ -262,6 +262,27 @@ describe('less', function () { let css = await outputFS.readFile(path.join(distDir, 'index.css'), 'utf8'); - assert(css.includes('url(#default#VML)')); + assert(css.includes('url("#default#VML")')); + }); + + it('preserves quotes around data urls that require them', async () => { + let b = await bundle( + path.join(__dirname, '/integration/less-url-quotes/index.less'), + ); + + assertBundles(b, [ + { + name: 'index.css', + assets: ['index.less'], + }, + ]); + + let css = await outputFS.readFile(path.join(distDir, 'index.css'), 'utf8'); + assert( + css.includes( + // Note the literal space after "xml" + 'background: url("data:image/svg+xml,%3C%3Fxml version%3D%221.0%22%3F%3E%3Csvg%3E%3C%2Fsvg%3E")', + ), + ); }); }); diff --git a/packages/optimizers/css/package.json b/packages/optimizers/css/package.json index 624467c42db..4e136b7cf84 100644 --- a/packages/optimizers/css/package.json +++ b/packages/optimizers/css/package.json @@ -20,7 +20,7 @@ "parcel": "^2.5.0" }, "dependencies": { - "@parcel/css": "^1.8.1", + "@parcel/css": "^1.8.2", "@parcel/diagnostic": "2.5.0", "@parcel/plugin": "2.5.0", "@parcel/source-map": "^2.0.0", diff --git a/packages/transformers/css/package.json b/packages/transformers/css/package.json index 8392199e07b..a0b689d6608 100644 --- a/packages/transformers/css/package.json +++ b/packages/transformers/css/package.json @@ -20,7 +20,7 @@ "parcel": "^2.5.0" }, "dependencies": { - "@parcel/css": "^1.8.1", + "@parcel/css": "^1.8.2", "@parcel/diagnostic": "2.5.0", "@parcel/plugin": "2.5.0", "@parcel/source-map": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index d28916e8ec5..2e46ab7f141 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2056,61 +2056,61 @@ dependencies: "@octokit/openapi-types" "^6.2.0" -"@parcel/css-darwin-arm64@1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@parcel/css-darwin-arm64/-/css-darwin-arm64-1.8.1.tgz#1d7694185626f956504cc6f099317455145bb880" - integrity sha512-PbpIlqLMAhWZlimKCdNP/ZfGNJUlEWgNeTcO2LDjPIK5JK6oTAJHfP/PPzjLS8mu+JIznZ//9MnVOUi1xcjXMA== - -"@parcel/css-darwin-x64@1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@parcel/css-darwin-x64/-/css-darwin-x64-1.8.1.tgz#40ce6bff78c7aecc32759faa9b52954247bc2ec1" - integrity sha512-R4FrwXQGAgW3/YRCSRCBNcV6mz+OKqYuyrVnZBmKTLDuTGhZHCF12qLL7SV5jYsKXBDauYAXDv/SOFIwlikVXg== - -"@parcel/css-linux-arm-gnueabihf@1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-arm-gnueabihf/-/css-linux-arm-gnueabihf-1.8.1.tgz#f540f8a92ed99ec6b07408aeef443804a8c7aba5" - integrity sha512-MVRlPGipRrs+f6nURR6cJbFw85YSXkPbR6l/0Hm1vyFlNn0HmRDCEWZFPwvvSavibU968Wgc5yKaC78D6Ecgsw== - -"@parcel/css-linux-arm64-gnu@1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-arm64-gnu/-/css-linux-arm64-gnu-1.8.1.tgz#4a63ea53eea93d2858bf2096fdad5ddeb3e65ee8" - integrity sha512-s6UpF9CjUMeeCELx0Cu+HtR8RKycm516b1mJlQC8hsPtAyDYlByW4tSDwC3By4Fqf3xCan6IH/oaq0ujS0Iqew== - -"@parcel/css-linux-arm64-musl@1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-arm64-musl/-/css-linux-arm64-musl-1.8.1.tgz#7fe489a92cd74139b904216813a4002ae44300cf" - integrity sha512-Tp3Pe2tx7mltPrZ1ZDV8PLkgYcwQOigrH9YjPPOaf8iFptDpHOv1y2cs1eSgnvP+5kBdIXd7H87kGSC7OosuXg== - -"@parcel/css-linux-x64-gnu@1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-x64-gnu/-/css-linux-x64-gnu-1.8.1.tgz#6a1d733eca71367735d8a7f841f779a03d30272e" - integrity sha512-8yqXRlei4qBFSv9R8yru6yB2ak7frA/z6rMB2E5lNN8kMhpB1E0xKYMhsTZdMOV5A/gkPZlP3sHZG4qQ3GOLgQ== - -"@parcel/css-linux-x64-musl@1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-x64-musl/-/css-linux-x64-musl-1.8.1.tgz#603245a11222fad815f8fa704fe59d15f0abdd46" - integrity sha512-S1Qf9tZzX7AnmqKRhR/qpFYsqSCxYSz5KdekdxIijPEMxyI5tpWp6g2adGYxrCuV0E5EpcpmXlBT6d6+8FrgPg== - -"@parcel/css-win32-x64-msvc@1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@parcel/css-win32-x64-msvc/-/css-win32-x64-msvc-1.8.1.tgz#175a909ae80cd7634f1c9ffa84063b85161df22b" - integrity sha512-tZ5s2zM/63mEdpdnE82xtfDDR7tAN32REii1EU5LOdfpB2PIw902p30fvklj1pOFBji/v/JdpAdLIYc4W7Gb6w== - -"@parcel/css@^1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@parcel/css/-/css-1.8.1.tgz#d5a756c18eefcc407267c5675c8e66edf206c483" - integrity sha512-TOfe+msei+NuPPKb60Kc+nPuCThl07L3Fut67nfot1OXy2hKYr/eF7AiAguCaIlRXkjEtXRR4S7fO24dLZ1C9g== +"@parcel/css-darwin-arm64@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@parcel/css-darwin-arm64/-/css-darwin-arm64-1.8.2.tgz#ac26b249e9f2ade2b674f51b8b1684901cf79449" + integrity sha512-p5etxX3kPCuEQcipjqH9yc5j0x5/Yc++uB4MvG/sFbRgL2gI2zUuRo9sIgqA21boOP8lE4bQgz1ovPD/W1hj+Q== + +"@parcel/css-darwin-x64@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@parcel/css-darwin-x64/-/css-darwin-x64-1.8.2.tgz#cf976783475e93f3feea09404bb946181b12bef6" + integrity sha512-c3xi5DXRZYec5db4KPTxp69eHbomOuasgZNiuPPOi80k7jlOwfzCFQs0h6/KwWvTcJrKEFsLl8BKJU/aX7mETw== + +"@parcel/css-linux-arm-gnueabihf@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@parcel/css-linux-arm-gnueabihf/-/css-linux-arm-gnueabihf-1.8.2.tgz#e87ce228a81a5147e4d10c4b0c041beb4b28ad2a" + integrity sha512-+ih3+mMpwbwtOjr/XW5pP0frsV1PMN+Qz7jCAM84h8xX+8UE/1IR0UVi3EPa8wQiIlcVcEwszQ1MV2UHacvo/A== + +"@parcel/css-linux-arm64-gnu@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@parcel/css-linux-arm64-gnu/-/css-linux-arm64-gnu-1.8.2.tgz#bedae0a7ff3f52003a6c4df0b20b65bced9dcc3a" + integrity sha512-jIoyXbjJ1trUHXtyJhi3hlF1ck6xM4CDyaY5N6eN+3+ovkdw6wxog9IiheYJ1jf9ellYevLvTF5kiYE9MiP04A== + +"@parcel/css-linux-arm64-musl@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@parcel/css-linux-arm64-musl/-/css-linux-arm64-musl-1.8.2.tgz#be3b912c0127745dda70757e18d7e7628118076d" + integrity sha512-QVTc5a+HatoywIei3djKYmp3s5dbI2Q3QaYZf3gqhyjOkeC7bm6j5eeNzFO+wa5xtga5jdHkIuTRrJ/wCojKKw== + +"@parcel/css-linux-x64-gnu@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@parcel/css-linux-x64-gnu/-/css-linux-x64-gnu-1.8.2.tgz#b38a07f461fd45657676326ee50ee5b6abccfd2b" + integrity sha512-9r2tSfa6i3ZQ3a6C9XufJWuTv3LB7JYzxzEqsI35SSA8D/DrfAHMaIhqog5wSxKZRWmQxckh2wdT96eIIGHSGA== + +"@parcel/css-linux-x64-musl@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@parcel/css-linux-x64-musl/-/css-linux-x64-musl-1.8.2.tgz#e7ce666f76943bfb73998e0b3908c2636f239f99" + integrity sha512-5SetLWkxXRQ3NU6QwwbGf9tOmGW2m1cGt07Moybbe4RCXOY6R5wAYUtauZUp7pD/fJlE9mHge4jnNHKpVO9pvw== + +"@parcel/css-win32-x64-msvc@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@parcel/css-win32-x64-msvc/-/css-win32-x64-msvc-1.8.2.tgz#cbef99d007d19511c1d6bd0b0124d988f180d343" + integrity sha512-/EdW5Ejlnkvc/AYrAi/FmLNvM6a6eAx+A4Y7oW+8JSMvk6bYa2zmXi7XLU/QOQuH2VQa/3gIIMA+sYjPndvDpw== + +"@parcel/css@^1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@parcel/css/-/css-1.8.2.tgz#98647159c8f1c7ce23675cd3c742dacbd55f73f5" + integrity sha512-3vTyKHy2LnZ3YJEut+UQPVIxsaY/mdGk7cDXtmvH4xR48Pd6rYzChHCMl4Ru2DUkCBpr0KCQRPZTdYcsJhUmIA== dependencies: detect-libc "^1.0.3" optionalDependencies: - "@parcel/css-darwin-arm64" "1.8.1" - "@parcel/css-darwin-x64" "1.8.1" - "@parcel/css-linux-arm-gnueabihf" "1.8.1" - "@parcel/css-linux-arm64-gnu" "1.8.1" - "@parcel/css-linux-arm64-musl" "1.8.1" - "@parcel/css-linux-x64-gnu" "1.8.1" - "@parcel/css-linux-x64-musl" "1.8.1" - "@parcel/css-win32-x64-msvc" "1.8.1" + "@parcel/css-darwin-arm64" "1.8.2" + "@parcel/css-darwin-x64" "1.8.2" + "@parcel/css-linux-arm-gnueabihf" "1.8.2" + "@parcel/css-linux-arm64-gnu" "1.8.2" + "@parcel/css-linux-arm64-musl" "1.8.2" + "@parcel/css-linux-x64-gnu" "1.8.2" + "@parcel/css-linux-x64-musl" "1.8.2" + "@parcel/css-win32-x64-msvc" "1.8.2" "@parcel/source-map@^2.0.0": version "2.0.0" From 8d792d440d0f1e04cc0d1b030738cfeb23bc135e Mon Sep 17 00:00:00 2001 From: Alexey Masalov Date: Tue, 3 May 2022 11:30:46 +0300 Subject: [PATCH 2/8] support for `oauth2` field in mv3 (#8037) --- packages/transformers/webextension/src/schema.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/transformers/webextension/src/schema.js b/packages/transformers/webextension/src/schema.js index e72edc25185..8bfa8710c22 100644 --- a/packages/transformers/webextension/src/schema.js +++ b/packages/transformers/webextension/src/schema.js @@ -406,6 +406,14 @@ const commonProps = { additionalProperties: false, }, version_name: string, + oauth2: { + type: 'object', + properties: { + client_id: string, + scopes: arrStr, + }, + additionalProperties: false, + }, }; export const MV3Schema = ({ From 851480d67e295f869dbf8f66080c2765e11fcf3b Mon Sep 17 00:00:00 2001 From: Commandtechno <68407783+Commandtechno@users.noreply.github.com> Date: Tue, 3 May 2022 12:18:04 -0500 Subject: [PATCH 3/8] fix(image transformer): Update supported formats (#8028) --- packages/configs/default/index.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/configs/default/index.json b/packages/configs/default/index.json index e6d9a21e2a9..3b7aedf3717 100644 --- a/packages/configs/default/index.json +++ b/packages/configs/default/index.json @@ -39,7 +39,7 @@ "script:*.vue": ["@parcel/transformer-vue"], "style:*.vue": ["@parcel/transformer-vue"], "custom:*.vue": ["@parcel/transformer-vue"], - "*.{png,jpg,jpeg,webp}": ["@parcel/transformer-image"], + "*.{png,jpg,jpeg,webp,gif,tiff,avif,heic,heif}": ["@parcel/transformer-image"], "*.svg": ["@parcel/transformer-svg"], "*.{xml,rss,atom}": ["@parcel/transformer-xml"], "url:*": ["...", "@parcel/transformer-raw"] From 019b7cbfc3c436b3b2741cfc68ed29d8d6c4d7bd Mon Sep 17 00:00:00 2001 From: Antoine Bellion Date: Wed, 4 May 2022 10:14:34 +0200 Subject: [PATCH 4/8] Allow to define the "compilerOptions" of the VueTransformer (#8031) --- packages/transformers/vue/src/VueTransformer.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/transformers/vue/src/VueTransformer.js b/packages/transformers/vue/src/VueTransformer.js index d7c8de30485..8abca2defc3 100644 --- a/packages/transformers/vue/src/VueTransformer.js +++ b/packages/transformers/vue/src/VueTransformer.js @@ -43,6 +43,7 @@ export default (new Transformer({ return { customBlocks: contents.customBlocks || {}, filePath: conf && conf.filePath, + compilerOptions: contents.compilerOptions || {}, }; }, canReuseAST({ast}) { @@ -230,6 +231,7 @@ async function processPipeline({ scoped: styles.some(style => style.scoped), isFunctional, id, + compilerOptions: config.compilerOptions, }); if (templateComp.errors.length) { throw new ThrowableDiagnostic({ From 9556a229186b0120cf588d2205021094aa887c89 Mon Sep 17 00:00:00 2001 From: Vladimir Zhuravlev Date: Wed, 4 May 2022 09:39:57 +0000 Subject: [PATCH 5/8] Add "key" and "update_url" to webextension manifest schema (#8043) --- packages/transformers/webextension/src/schema.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/transformers/webextension/src/schema.js b/packages/transformers/webextension/src/schema.js index 8bfa8710c22..030b16d45ca 100644 --- a/packages/transformers/webextension/src/schema.js +++ b/packages/transformers/webextension/src/schema.js @@ -94,6 +94,8 @@ const commonProps = { properties: {}, }, }, + key: string, + update_url: string, chrome_settings_overrides: { type: 'object', properties: { From bb923d69f02612d65bc5f430a1cd2f7b21895252 Mon Sep 17 00:00:00 2001 From: Commandtechno <68407783+Commandtechno@users.noreply.github.com> Date: Thu, 5 May 2022 03:10:07 -0500 Subject: [PATCH 6/8] Allow animated images (#8018) --- packages/transformers/image/src/ImageTransformer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/transformers/image/src/ImageTransformer.js b/packages/transformers/image/src/ImageTransformer.js index b067a992962..46eb5404ff9 100644 --- a/packages/transformers/image/src/ImageTransformer.js +++ b/packages/transformers/image/src/ImageTransformer.js @@ -89,7 +89,7 @@ export default (new Transformer({ true, ); - let imagePipeline = sharp(inputBuffer); + let imagePipeline = sharp(inputBuffer, {animated: true}); imagePipeline.withMetadata(); From a71a2aecce48d96f32cd7f22e2398731d781fa0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=B1=AA?= <504595380@qq.com> Date: Fri, 6 May 2022 17:49:01 +0800 Subject: [PATCH 7/8] chore: should log unsupported type not zero and toLocaleString's option typo (#8002) --- packages/core/graph/src/AdjacencyList.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/graph/src/AdjacencyList.js b/packages/core/graph/src/AdjacencyList.js index 5db0b5a320a..12843c4338b 100644 --- a/packages/core/graph/src/AdjacencyList.js +++ b/packages/core/graph/src/AdjacencyList.js @@ -246,7 +246,7 @@ export default class AdjacencyList { to: NodeId, type: TEdgeType | NullEdgeType = 1, ): boolean { - assert(type > 0, `Unsupported edge type ${0}`); + assert(type > 0, `Unsupported edge type ${type}`); let hash = this.#edges.hash(from, to, type); let edge = this.#edges.addressOf(hash, from, to, type); @@ -600,7 +600,7 @@ export class SharedTypeMap get bufferSize(): string { return `${(this.data.byteLength / 1024 / 1024).toLocaleString(undefined, { - minmumFractionDigits: 2, + minimumFractionDigits: 2, maximumFractionDigits: 2, })} mb`; } From 504e54651a06993707d230941d46c702be60edc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=B1=AA?= <504595380@qq.com> Date: Sat, 7 May 2022 06:04:58 +0800 Subject: [PATCH 8/8] fix: getNodeIdsConnected should remove duplicate values (#8054) * fix: getNodeIdsConnectedTo and getNodeIdsConnectedFrom should remove duplicate values * feat: use seen set Co-authored-by: Eric Eldredge --- packages/core/graph/src/AdjacencyList.js | 15 ++++++++++++--- packages/core/graph/test/AdjacencyList.test.js | 12 ++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/packages/core/graph/src/AdjacencyList.js b/packages/core/graph/src/AdjacencyList.js index 12843c4338b..d68b2463f6a 100644 --- a/packages/core/graph/src/AdjacencyList.js +++ b/packages/core/graph/src/AdjacencyList.js @@ -439,14 +439,18 @@ export default class AdjacencyList { (Array.isArray(type) ? type.includes(this.#nodes.typeOf(node)) : type === this.#nodes.typeOf(node)); - let nodes = []; + let seen = new Set(); let node = this.#nodes.head(from); while (node !== null) { if (matches(node)) { let edge = this.#nodes.firstOut(node); while (edge !== null) { - nodes.push(this.#edges.to(edge)); + let to = this.#edges.to(edge); + if (!seen.has(to)) { + nodes.push(to); + seen.add(to); + } edge = this.#edges.nextOut(edge); } } @@ -473,12 +477,17 @@ export default class AdjacencyList { : type === this.#nodes.typeOf(node)); let nodes = []; + let seen = new Set(); let node = this.#nodes.head(to); while (node !== null) { if (matches(node)) { let edge = this.#nodes.firstIn(node); while (edge !== null) { - nodes.push(this.#edges.from(edge)); + let from = this.#edges.from(edge); + if (!seen.has(from)) { + nodes.push(from); + seen.add(from); + } edge = this.#edges.nextIn(edge); } } diff --git a/packages/core/graph/test/AdjacencyList.test.js b/packages/core/graph/test/AdjacencyList.test.js index 4814422083e..32108771f98 100644 --- a/packages/core/graph/test/AdjacencyList.test.js +++ b/packages/core/graph/test/AdjacencyList.test.js @@ -57,6 +57,18 @@ describe('AdjacencyList', () => { assert.deepEqual(graph.getNodeIdsConnectedTo(node1), [0, 2, 4, 5, 6]); }); + it('getNodeIdsConnectedTo and getNodeIdsConnectedFrom should remove duplicate values', () => { + let graph = new AdjacencyList(); + let a = graph.addNode(); + let b = graph.addNode(); + let c = graph.addNode(); + graph.addEdge(a, b); + graph.addEdge(a, c); + graph.addEdge(a, b, 2); + assert.deepEqual(graph.getNodeIdsConnectedFrom(a, -1), [b, c]); + assert.deepEqual(graph.getNodeIdsConnectedTo(b, -1), [a]); + }); + it('removeEdge should remove an edge of a specific type from the graph', () => { let graph = new AdjacencyList(); let a = graph.addNode();