Files
react-native-devtools-frontend/node_modules/postcss-syntax/patch-postcss.js
T
Alex Rudenko 6c0f161c95 Revert "Update stylelint to 14.0.1"
This reverts commit 1e08ee816b.

Reason for revert: tree is closed due to errors https://ci.chromium.org/ui/p/devtools-frontend/builders/ci/Stand-alone%20Linux/8169/overview

Original change's description:
> Update stylelint to 14.0.1
>
> This also upgrades PostCSS to 8.3.11.
>
> DISABLE_THIRD_PARTY_CHECK=Updating Stylelint configuration
> R=​szuend@chromium.org
>
> Bug: none
> Change-Id: I606540b03509d7c6e73f3d490327cd4174e03d31
> Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3259541
> Reviewed-by: Simon Zünd <szuend@chromium.org>
> Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>

Bug: none
Change-Id: Icb1c02b41dbccc3b4fc5760f5dd0b78eca078b61
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3263399
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Owners-Override: Alex Rudenko <alexrudenko@chromium.org>
Commit-Queue: Alex Rudenko <alexrudenko@chromium.org>
2021-11-05 06:32:31 +00:00

78 lines
1.6 KiB
JavaScript

"use strict";
const path = require("path");
const patched = {};
function isPromise (obj) {
return typeof obj === "object" && typeof obj.then === "function";
}
function runDocument (plugin) {
const result = this.result;
result.lastPlugin = plugin;
const promise = result.root.nodes.map(root => {
try {
return plugin(root, result);
} catch (error) {
this.handleError(error, plugin);
throw error;
}
});
if (promise.some(isPromise)) {
return Promise.all(promise);
}
}
function patchDocument (Document, LazyResult) {
LazyResult = LazyResult.prototype;
const runRoot = LazyResult.run;
LazyResult.run = function run () {
return (this.result.root instanceof Document ? runDocument : runRoot).apply(this, arguments);
};
}
function patchNode (Node) {
Node = Node.prototype;
const NodeToString = Node.toString;
Node.toString = function toString (stringifier) {
return NodeToString.call(this, stringifier || this.root().source.syntax);
};
}
function patch (Document) {
let fn;
let file;
if (Document) {
patch();
fn = patchDocument.bind(this, Document);
file = "lazy-result";
} else {
fn = patchNode;
file = "node";
}
findPostcss().map(dir => (
[dir + "lib", file].join(path.sep)
)).filter(file => (
!patched[file]
)).forEach(file => {
try {
fn(require(file));
} catch (ex) {
//
}
patched[file] = true;
});
}
function findPostcss () {
const result = {};
for (const file in require.cache) {
if (/^(.+?(\\|\/))postcss(\2)/.test(file)) {
result[RegExp.lastMatch] = true;
}
}
return Object.keys(result);
}
module.exports = patch;