mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-09 15:05:44 +01:00
Merge with 2.0.0-m3
This commit is contained in:
@@ -127,7 +127,7 @@ public class AuthenticationFilter extends HttpFilter
|
|||||||
logger.trace("user is already authenticated");
|
logger.trace("user is already authenticated");
|
||||||
processChain(request, response, chain, subject);
|
processChain(request, response, chain, subject);
|
||||||
}
|
}
|
||||||
else if (isAnonymousAccessEnabled())
|
else if (isAnonymousAccessEnabled() && !HttpUtil.isWUIRequest(request))
|
||||||
{
|
{
|
||||||
logger.trace("anonymous access granted");
|
logger.trace("anonymous access granted");
|
||||||
subject.login(new AnonymousToken());
|
subject.login(new AnonymousToken());
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package sonia.scm.it;
|
package sonia.scm.it;
|
||||||
|
|
||||||
import org.apache.http.HttpStatus;
|
import org.apache.http.HttpStatus;
|
||||||
|
import org.assertj.core.api.AbstractCharSequenceAssert;
|
||||||
import org.assertj.core.util.Lists;
|
import org.assertj.core.util.Lists;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
@@ -28,6 +29,7 @@ import java.util.stream.Collectors;
|
|||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
import static sonia.scm.it.utils.RestUtil.ADMIN_PASSWORD;
|
import static sonia.scm.it.utils.RestUtil.ADMIN_PASSWORD;
|
||||||
import static sonia.scm.it.utils.RestUtil.ADMIN_USERNAME;
|
import static sonia.scm.it.utils.RestUtil.ADMIN_USERNAME;
|
||||||
|
|
||||||
@@ -94,8 +96,7 @@ public class DiffITCase {
|
|||||||
String gitDiff = getDiff(RepositoryUtil.createAndCommitFile(gitRepositoryClient, ADMIN_USERNAME, "a.txt", "content of a"), gitRepositoryResponse);
|
String gitDiff = getDiff(RepositoryUtil.createAndCommitFile(gitRepositoryClient, ADMIN_USERNAME, "a.txt", "content of a"), gitRepositoryResponse);
|
||||||
|
|
||||||
String expected = getGitDiffWithoutIndexLine(gitDiff);
|
String expected = getGitDiffWithoutIndexLine(gitDiff);
|
||||||
assertThat(svnDiff)
|
assertDiffsAreEqual(svnDiff, expected);
|
||||||
.isEqualTo(expected);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -107,8 +108,7 @@ public class DiffITCase {
|
|||||||
String gitDiff = getDiff(RepositoryUtil.removeAndCommitFile(gitRepositoryClient, ADMIN_USERNAME, "a.txt"), gitRepositoryResponse);
|
String gitDiff = getDiff(RepositoryUtil.removeAndCommitFile(gitRepositoryClient, ADMIN_USERNAME, "a.txt"), gitRepositoryResponse);
|
||||||
|
|
||||||
String expected = getGitDiffWithoutIndexLine(gitDiff);
|
String expected = getGitDiffWithoutIndexLine(gitDiff);
|
||||||
assertThat(svnDiff)
|
assertDiffsAreEqual(svnDiff, expected);
|
||||||
.isEqualTo(expected);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -120,8 +120,7 @@ public class DiffITCase {
|
|||||||
String gitDiff = getDiff(RepositoryUtil.updateAndCommitFile(gitRepositoryClient, ADMIN_USERNAME, "a.txt", "the updated content of a"), gitRepositoryResponse);
|
String gitDiff = getDiff(RepositoryUtil.updateAndCommitFile(gitRepositoryClient, ADMIN_USERNAME, "a.txt", "the updated content of a"), gitRepositoryResponse);
|
||||||
|
|
||||||
String expected = getGitDiffWithoutIndexLine(gitDiff);
|
String expected = getGitDiffWithoutIndexLine(gitDiff);
|
||||||
assertThat(svnDiff)
|
assertDiffsAreEqual(svnDiff, expected);
|
||||||
.isEqualTo(expected);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -161,21 +160,17 @@ public class DiffITCase {
|
|||||||
String fileContent = getFileContent("/diff/largefile/original/SvnDiffGenerator_forTest");
|
String fileContent = getFileContent("/diff/largefile/original/SvnDiffGenerator_forTest");
|
||||||
String svnDiff = getDiff(RepositoryUtil.updateAndCommitFile(svnRepositoryClient, ADMIN_USERNAME, fileName, fileContent), svnRepositoryResponse);
|
String svnDiff = getDiff(RepositoryUtil.updateAndCommitFile(svnRepositoryClient, ADMIN_USERNAME, fileName, fileContent), svnRepositoryResponse);
|
||||||
String gitDiff = getDiff(RepositoryUtil.updateAndCommitFile(gitRepositoryClient, ADMIN_USERNAME, fileName, fileContent), gitRepositoryResponse);
|
String gitDiff = getDiff(RepositoryUtil.updateAndCommitFile(gitRepositoryClient, ADMIN_USERNAME, fileName, fileContent), gitRepositoryResponse);
|
||||||
assertThat(svnDiff)
|
assertDiffsAreEqual(svnDiff, getGitDiffWithoutIndexLine(gitDiff));
|
||||||
.isEqualTo(getGitDiffWithoutIndexLine(gitDiff));
|
|
||||||
|
|
||||||
fileContent = getFileContent("/diff/largefile/modified/v1/SvnDiffGenerator_forTest");
|
fileContent = getFileContent("/diff/largefile/modified/v1/SvnDiffGenerator_forTest");
|
||||||
svnDiff = getDiff(RepositoryUtil.updateAndCommitFile(svnRepositoryClient, ADMIN_USERNAME, fileName, fileContent), svnRepositoryResponse);
|
svnDiff = getDiff(RepositoryUtil.updateAndCommitFile(svnRepositoryClient, ADMIN_USERNAME, fileName, fileContent), svnRepositoryResponse);
|
||||||
gitDiff = getDiff(RepositoryUtil.updateAndCommitFile(gitRepositoryClient, ADMIN_USERNAME, fileName, fileContent), gitRepositoryResponse);
|
gitDiff = getDiff(RepositoryUtil.updateAndCommitFile(gitRepositoryClient, ADMIN_USERNAME, fileName, fileContent), gitRepositoryResponse);
|
||||||
assertThat(svnDiff)
|
assertDiffsAreEqual(svnDiff, getGitDiffWithoutIndexLine(gitDiff));
|
||||||
.isEqualTo(getGitDiffWithoutIndexLine(gitDiff));
|
|
||||||
|
|
||||||
fileContent = getFileContent("/diff/largefile/modified/v2/SvnDiffGenerator_forTest");
|
fileContent = getFileContent("/diff/largefile/modified/v2/SvnDiffGenerator_forTest");
|
||||||
svnDiff = getDiff(RepositoryUtil.updateAndCommitFile(svnRepositoryClient, ADMIN_USERNAME, fileName, fileContent), svnRepositoryResponse);
|
svnDiff = getDiff(RepositoryUtil.updateAndCommitFile(svnRepositoryClient, ADMIN_USERNAME, fileName, fileContent), svnRepositoryResponse);
|
||||||
gitDiff = getDiff(RepositoryUtil.updateAndCommitFile(gitRepositoryClient, ADMIN_USERNAME, fileName, fileContent), gitRepositoryResponse);
|
gitDiff = getDiff(RepositoryUtil.updateAndCommitFile(gitRepositoryClient, ADMIN_USERNAME, fileName, fileContent), gitRepositoryResponse);
|
||||||
assertThat(svnDiff)
|
assertDiffsAreEqual(svnDiff, getGitDiffWithoutIndexLine(gitDiff));
|
||||||
.isEqualTo(getGitDiffWithoutIndexLine(gitDiff));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -196,8 +191,7 @@ public class DiffITCase {
|
|||||||
Changeset commit1 = RepositoryUtil.addFileAndCommit(gitRepositoryClient, fileName, ADMIN_USERNAME, "");
|
Changeset commit1 = RepositoryUtil.addFileAndCommit(gitRepositoryClient, fileName, ADMIN_USERNAME, "");
|
||||||
String svnDiff = getDiff(commit, svnRepositoryResponse);
|
String svnDiff = getDiff(commit, svnRepositoryResponse);
|
||||||
String gitDiff = getDiff(commit1, gitRepositoryResponse);
|
String gitDiff = getDiff(commit1, gitRepositoryResponse);
|
||||||
assertThat(svnDiff)
|
assertDiffsAreEqual(svnDiff, getGitDiffWithoutIndexLine(gitDiff));
|
||||||
.isEqualTo(getGitDiffWithoutIndexLine(gitDiff));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,8 +212,7 @@ public class DiffITCase {
|
|||||||
String gitDiff = getDiff(RepositoryUtil.addFileAndCommit(gitRepositoryClient, newFileName, ADMIN_USERNAME, "renamed file"), gitRepositoryResponse);
|
String gitDiff = getDiff(RepositoryUtil.addFileAndCommit(gitRepositoryClient, newFileName, ADMIN_USERNAME, "renamed file"), gitRepositoryResponse);
|
||||||
|
|
||||||
String expected = getGitDiffWithoutIndexLine(gitDiff);
|
String expected = getGitDiffWithoutIndexLine(gitDiff);
|
||||||
assertThat(svnDiff)
|
assertDiffsAreEqual(svnDiff, expected);
|
||||||
.isEqualTo(expected);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFileContent(String name) throws URISyntaxException, IOException {
|
public String getFileContent(String name) throws URISyntaxException, IOException {
|
||||||
@@ -242,6 +235,12 @@ public class DiffITCase {
|
|||||||
return gitDiff.replaceAll(".*(index.*\n)", "");
|
return gitDiff.replaceAll(".*(index.*\n)", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void assertDiffsAreEqual(String svnDiff, String gitDiff) {
|
||||||
|
assertThat(svnDiff)
|
||||||
|
.as("diffs are different\n\nsvn:\n==================================================\n\n%s\n\ngit:\n==================================================\n\n%s)", svnDiff, gitDiff)
|
||||||
|
.isEqualTo(gitDiff);
|
||||||
|
}
|
||||||
|
|
||||||
private String getDiff(Changeset svnChangeset, ScmRequests.RepositoryResponse<ScmRequests.IndexResponse> svnRepositoryResponse) {
|
private String getDiff(Changeset svnChangeset, ScmRequests.RepositoryResponse<ScmRequests.IndexResponse> svnRepositoryResponse) {
|
||||||
return svnRepositoryResponse.requestChangesets()
|
return svnRepositoryResponse.requestChangesets()
|
||||||
.requestDiffInGitFormat(svnChangeset.getId())
|
.requestDiffInGitFormat(svnChangeset.getId())
|
||||||
|
|||||||
@@ -213,8 +213,14 @@ public class GitBrowseCommand extends AbstractGitCommand
|
|||||||
|
|
||||||
if (lfsPointer.isPresent()) {
|
if (lfsPointer.isPresent()) {
|
||||||
BlobStore lfsBlobStore = lfsBlobStoreFactory.getLfsBlobStore(repository);
|
BlobStore lfsBlobStore = lfsBlobStoreFactory.getLfsBlobStore(repository);
|
||||||
Blob blob = lfsBlobStore.get(lfsPointer.get().getOid().getName());
|
String oid = lfsPointer.get().getOid().getName();
|
||||||
|
Blob blob = lfsBlobStore.get(oid);
|
||||||
|
if (blob == null) {
|
||||||
|
logger.error("lfs blob for lob id {} not found in lfs store of repository {}", oid, repository.getNamespaceAndName());
|
||||||
|
file.setLength(-1);
|
||||||
|
} else {
|
||||||
file.setLength(blob.getSize());
|
file.setLength(blob.getSize());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
file.setLength(loader.getSize());
|
file.setLength(loader.getSize());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,7 +145,12 @@ public class GitCatCommand extends AbstractGitCommand implements CatCommand {
|
|||||||
|
|
||||||
private Loader loadFromLfsStore(TreeWalk treeWalk, RevWalk revWalk, LfsPointer lfsPointer) throws IOException {
|
private Loader loadFromLfsStore(TreeWalk treeWalk, RevWalk revWalk, LfsPointer lfsPointer) throws IOException {
|
||||||
BlobStore lfsBlobStore = lfsBlobStoreFactory.getLfsBlobStore(repository);
|
BlobStore lfsBlobStore = lfsBlobStoreFactory.getLfsBlobStore(repository);
|
||||||
Blob blob = lfsBlobStore.get(lfsPointer.getOid().getName());
|
String oid = lfsPointer.getOid().getName();
|
||||||
|
Blob blob = lfsBlobStore.get(oid);
|
||||||
|
if (blob == null) {
|
||||||
|
logger.error("lfs blob for lob id {} not found in lfs store of repository {}", oid, repository.getNamespaceAndName());
|
||||||
|
throw notFound(entity("LFS", oid).in(repository));
|
||||||
|
}
|
||||||
GitUtil.release(revWalk);
|
GitUtil.release(revWalk);
|
||||||
GitUtil.release(treeWalk);
|
GitUtil.release(treeWalk);
|
||||||
return new BlobLoader(blob);
|
return new BlobLoader(blob);
|
||||||
|
|||||||
@@ -33,13 +33,18 @@ package sonia.scm.repository.spi;
|
|||||||
|
|
||||||
import org.eclipse.jgit.diff.DiffEntry;
|
import org.eclipse.jgit.diff.DiffEntry;
|
||||||
import org.eclipse.jgit.diff.DiffFormatter;
|
import org.eclipse.jgit.diff.DiffFormatter;
|
||||||
|
import org.eclipse.jgit.util.QuotedString;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.api.DiffCommandBuilder;
|
import sonia.scm.repository.api.DiffCommandBuilder;
|
||||||
|
|
||||||
|
import java.io.BufferedOutputStream;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Sebastian Sdorra
|
* @author Sebastian Sdorra
|
||||||
*/
|
*/
|
||||||
public class GitDiffCommand extends AbstractGitCommand implements DiffCommand {
|
public class GitDiffCommand extends AbstractGitCommand implements DiffCommand {
|
||||||
@@ -56,7 +61,7 @@ public class GitDiffCommand extends AbstractGitCommand implements DiffCommand {
|
|||||||
Differ.Diff diff = Differ.diff(repository, request);
|
Differ.Diff diff = Differ.diff(repository, request);
|
||||||
|
|
||||||
return output -> {
|
return output -> {
|
||||||
try (DiffFormatter formatter = new DiffFormatter(output)) {
|
try (DiffFormatter formatter = new DiffFormatter(new DequoteOutputStream(output))) {
|
||||||
formatter.setRepository(repository);
|
formatter.setRepository(repository);
|
||||||
|
|
||||||
for (DiffEntry e : diff.getEntries()) {
|
for (DiffEntry e : diff.getEntries()) {
|
||||||
@@ -70,4 +75,116 @@ public class GitDiffCommand extends AbstractGitCommand implements DiffCommand {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class DequoteOutputStream extends OutputStream {
|
||||||
|
|
||||||
|
private static final String[] DEQUOTE_STARTS = {
|
||||||
|
"--- ",
|
||||||
|
"+++ ",
|
||||||
|
"diff --git "
|
||||||
|
};
|
||||||
|
|
||||||
|
private final OutputStream target;
|
||||||
|
|
||||||
|
private boolean afterNL = true;
|
||||||
|
private boolean writeToBuffer = false;
|
||||||
|
private int numberOfPotentialBeginning = -1;
|
||||||
|
private int potentialBeginningCharCount = 0;
|
||||||
|
private boolean inPotentialQuotedLine = false;
|
||||||
|
|
||||||
|
private final ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
||||||
|
|
||||||
|
DequoteOutputStream(OutputStream target) {
|
||||||
|
this.target = new BufferedOutputStream(target);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(int i) throws IOException {
|
||||||
|
if (i == (int) '\n') {
|
||||||
|
handleNewLine(i);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (afterNL) {
|
||||||
|
afterNL = false;
|
||||||
|
if (foundPotentialBeginning(i)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
numberOfPotentialBeginning = -1;
|
||||||
|
inPotentialQuotedLine = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inPotentialQuotedLine && i == '"') {
|
||||||
|
handleQuote();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (numberOfPotentialBeginning > -1 && checkForFurtherBeginning(i)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (writeToBuffer) {
|
||||||
|
buffer.write(i);
|
||||||
|
} else {
|
||||||
|
target.write(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkForFurtherBeginning(int i) throws IOException {
|
||||||
|
if (i == DEQUOTE_STARTS[numberOfPotentialBeginning].charAt(potentialBeginningCharCount)) {
|
||||||
|
if (potentialBeginningCharCount + 1 < DEQUOTE_STARTS[numberOfPotentialBeginning].length()) {
|
||||||
|
++potentialBeginningCharCount;
|
||||||
|
} else {
|
||||||
|
inPotentialQuotedLine = true;
|
||||||
|
}
|
||||||
|
target.write(i);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
numberOfPotentialBeginning = -1;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean foundPotentialBeginning(int i) throws IOException {
|
||||||
|
for (int n = 0; n < DEQUOTE_STARTS.length; ++n) {
|
||||||
|
if (i == DEQUOTE_STARTS[n].charAt(0)) {
|
||||||
|
numberOfPotentialBeginning = n;
|
||||||
|
potentialBeginningCharCount = 1;
|
||||||
|
target.write(i);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleQuote() throws IOException {
|
||||||
|
if (writeToBuffer) {
|
||||||
|
buffer.write('"');
|
||||||
|
dequoteBuffer();
|
||||||
|
} else {
|
||||||
|
writeToBuffer = true;
|
||||||
|
buffer.reset();
|
||||||
|
buffer.write('"');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleNewLine(int i) throws IOException {
|
||||||
|
afterNL = true;
|
||||||
|
if (writeToBuffer) {
|
||||||
|
dequoteBuffer();
|
||||||
|
}
|
||||||
|
target.write(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dequoteBuffer() throws IOException {
|
||||||
|
byte[] bytes = buffer.toByteArray();
|
||||||
|
String dequote = QuotedString.GIT_PATH.dequote(bytes, 0, bytes.length);
|
||||||
|
target.write(dequote.getBytes(UTF_8));
|
||||||
|
writeToBuffer = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void flush() throws IOException {
|
||||||
|
target.flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package sonia.scm.repository.spi;
|
||||||
|
|
||||||
|
import org.assertj.core.api.Assertions;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class GitDiffCommand_DequoteOutputStreamTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldDequoteText() throws IOException {
|
||||||
|
String s = "diff --git \"a/file \\303\\272\\303\\274\\303\\276\\303\\253\\303\\251\\303\\245\\303\\253\\303\\245\\303\\251 a\" \"b/file \\303\\272\\303\\274\\303\\276\\303\\253\\303\\251\\303\\245\\303\\253\\303\\245\\303\\251 b\"\n" +
|
||||||
|
"new file mode 100644\n" +
|
||||||
|
"index 0000000..8cb0607\n" +
|
||||||
|
"--- /dev/null\n" +
|
||||||
|
"+++ \"b/\\303\\272\\303\\274\\303\\276\\303\\253\\303\\251\\303\\245\\303\\253\\303\\245\\303\\251 \\303\\245g\\303\\260f\\303\\237\"\n" +
|
||||||
|
"@@ -0,0 +1 @@\n" +
|
||||||
|
"+String s = \"quotes shall be kept\";";
|
||||||
|
|
||||||
|
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
||||||
|
GitDiffCommand.DequoteOutputStream stream = new GitDiffCommand.DequoteOutputStream(buffer);
|
||||||
|
byte[] bytes = s.getBytes();
|
||||||
|
stream.write(bytes, 0, bytes.length);
|
||||||
|
stream.flush();
|
||||||
|
|
||||||
|
Assertions.assertThat(buffer.toString()).isEqualTo("diff --git a/file úüþëéåëåé a b/file úüþëéåëåé b\n" +
|
||||||
|
"new file mode 100644\n" +
|
||||||
|
"index 0000000..8cb0607\n" +
|
||||||
|
"--- /dev/null\n" +
|
||||||
|
"+++ b/úüþëéåëåé ågðfß\n" +
|
||||||
|
"@@ -0,0 +1 @@\n" +
|
||||||
|
"+String s = \"quotes shall be kept\";");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -77,7 +77,9 @@ public class HgBrowseCommand extends AbstractCommand implements BrowseCommand
|
|||||||
String revision = MoreObjects.firstNonNull(request.getRevision(), "tip");
|
String revision = MoreObjects.firstNonNull(request.getRevision(), "tip");
|
||||||
Changeset c = LogCommand.on(getContext().open()).rev(revision).limit(1).single();
|
Changeset c = LogCommand.on(getContext().open()).rev(revision).limit(1).single();
|
||||||
|
|
||||||
|
if (c != null) {
|
||||||
cmd.rev(c.getNode());
|
cmd.rev(c.getNode());
|
||||||
|
}
|
||||||
|
|
||||||
if (!Strings.isNullOrEmpty(request.getPath()))
|
if (!Strings.isNullOrEmpty(request.getPath()))
|
||||||
{
|
{
|
||||||
@@ -100,6 +102,6 @@ public class HgBrowseCommand extends AbstractCommand implements BrowseCommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
FileObject file = cmd.execute();
|
FileObject file = cmd.execute();
|
||||||
return new BrowserResult(c.getNode(), revision, file);
|
return new BrowserResult(c == null? "tip": c.getNode(), revision, file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { apiClient, createUrl } from "./apiclient";
|
import { apiClient, createUrl, extractXsrfTokenFromCookie } from "./apiclient";
|
||||||
import fetchMock from "fetch-mock";
|
import fetchMock from "fetch-mock";
|
||||||
import { BackendError } from "./errors";
|
import { BackendError } from "./errors";
|
||||||
|
|
||||||
@@ -70,3 +70,22 @@ describe("error handling tests", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("extract xsrf token", () => {
|
||||||
|
it("should return undefined if no cookie exists", () => {
|
||||||
|
const token = extractXsrfTokenFromCookie(undefined);
|
||||||
|
expect(token).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return undefined without X-Bearer-Token exists", () => {
|
||||||
|
const token = extractXsrfTokenFromCookie("a=b; c=d; e=f");
|
||||||
|
expect(token).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return xsrf token", () => {
|
||||||
|
const cookie =
|
||||||
|
"a=b; X-Bearer-Token=eyJhbGciOiJIUzI1NiJ9.eyJ4c3JmIjoiYjE0NDRmNWEtOWI5Mi00ZDA0LWFkMzMtMTAxYjY3MWQ1YTc0Iiwic3ViIjoic2NtYWRtaW4iLCJqdGkiOiI2RFJpQVphNWwxIiwiaWF0IjoxNTc0MDcyNDQ4LCJleHAiOjE1NzQwNzYwNDgsInNjbS1tYW5hZ2VyLnJlZnJlc2hFeHBpcmF0aW9uIjoxNTc0MTE1NjQ4OTU5LCJzY20tbWFuYWdlci5wYXJlbnRUb2tlbklkIjoiNkRSaUFaYTVsMSJ9.VUJtKeWUn3xtHCEbG51r7ceXZ8CF3cmN8J-eb9EDY_U; c=d";
|
||||||
|
const token = extractXsrfTokenFromCookie(cookie);
|
||||||
|
expect(token).toBe("b1444f5a-9b92-4d04-ad33-101b671d5a74");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
@@ -2,13 +2,46 @@ import { contextPath } from "./urls";
|
|||||||
import { createBackendError, ForbiddenError, isBackendError, UnauthorizedError } from "./errors";
|
import { createBackendError, ForbiddenError, isBackendError, UnauthorizedError } from "./errors";
|
||||||
import { BackendErrorContent } from "./errors";
|
import { BackendErrorContent } from "./errors";
|
||||||
|
|
||||||
|
const extractXsrfTokenFromJwt = (jwt: string) => {
|
||||||
|
const parts = jwt.split(".");
|
||||||
|
if (parts.length === 3) {
|
||||||
|
return JSON.parse(atob(parts[1])).xsrf;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// @VisibleForTesting
|
||||||
|
export const extractXsrfTokenFromCookie = (cookieString?: string) => {
|
||||||
|
if (cookieString) {
|
||||||
|
const cookies = cookieString.split(";");
|
||||||
|
for (const c of cookies) {
|
||||||
|
const parts = c.trim().split("=");
|
||||||
|
if (parts[0] === "X-Bearer-Token") {
|
||||||
|
return extractXsrfTokenFromJwt(parts[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const extractXsrfToken = () => {
|
||||||
|
return extractXsrfTokenFromCookie(document.cookie);
|
||||||
|
};
|
||||||
|
|
||||||
const applyFetchOptions: (p: RequestInit) => RequestInit = o => {
|
const applyFetchOptions: (p: RequestInit) => RequestInit = o => {
|
||||||
o.credentials = "same-origin";
|
const headers: { [key: string]: string } = {
|
||||||
o.headers = {
|
|
||||||
Cache: "no-cache",
|
Cache: "no-cache",
|
||||||
// identify the request as ajax request
|
// identify the request as ajax request
|
||||||
"X-Requested-With": "XMLHttpRequest"
|
"X-Requested-With": "XMLHttpRequest",
|
||||||
|
// identify the web interface
|
||||||
|
"X-SCM-Client": "WUI"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const xsrf = extractXsrfToken();
|
||||||
|
if (xsrf) {
|
||||||
|
headers["X-XSRF-Token"] = xsrf;
|
||||||
|
}
|
||||||
|
|
||||||
|
o.credentials = "same-origin";
|
||||||
|
o.headers = headers;
|
||||||
return o;
|
return o;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -47,23 +80,24 @@ class ApiClient {
|
|||||||
return fetch(createUrl(url), applyFetchOptions({})).then(handleFailure);
|
return fetch(createUrl(url), applyFetchOptions({})).then(handleFailure);
|
||||||
}
|
}
|
||||||
|
|
||||||
post(url: string, payload: any, contentType = "application/json") {
|
post(url: string, payload?: any, contentType = "application/json", additionalHeaders = new Headers()) {
|
||||||
return this.httpRequestWithJSONBody("POST", url, contentType, payload);
|
return this.httpRequestWithJSONBody("POST", url, contentType, additionalHeaders, payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
postBinary(url: string, fileAppender: (p: FormData) => void) {
|
postBinary(url: string, fileAppender: (p: FormData) => void, additionalHeaders = new Headers()) {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
fileAppender(formData);
|
fileAppender(formData);
|
||||||
|
|
||||||
const options: RequestInit = {
|
const options: RequestInit = {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body: formData
|
body: formData,
|
||||||
|
headers: additionalHeaders
|
||||||
};
|
};
|
||||||
return this.httpRequestWithBinaryBody(options, url);
|
return this.httpRequestWithBinaryBody(options, url);
|
||||||
}
|
}
|
||||||
|
|
||||||
put(url: string, payload: any, contentType = "application/json") {
|
put(url: string, payload: any, contentType = "application/json", additionalHeaders = new Headers()) {
|
||||||
return this.httpRequestWithJSONBody("PUT", url, contentType, payload);
|
return this.httpRequestWithJSONBody("PUT", url, contentType, additionalHeaders, payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
head(url: string) {
|
head(url: string) {
|
||||||
@@ -82,11 +116,20 @@ class ApiClient {
|
|||||||
return fetch(createUrl(url), options).then(handleFailure);
|
return fetch(createUrl(url), options).then(handleFailure);
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRequestWithJSONBody(method: string, url: string, contentType: string, payload: any): Promise<Response> {
|
httpRequestWithJSONBody(
|
||||||
|
method: string,
|
||||||
|
url: string,
|
||||||
|
contentType: string,
|
||||||
|
additionalHeaders: Headers,
|
||||||
|
payload?: any
|
||||||
|
): Promise<Response> {
|
||||||
const options: RequestInit = {
|
const options: RequestInit = {
|
||||||
method: method,
|
method: method,
|
||||||
body: JSON.stringify(payload)
|
headers: additionalHeaders
|
||||||
};
|
};
|
||||||
|
if (payload) {
|
||||||
|
options.body = JSON.stringify(payload);
|
||||||
|
}
|
||||||
return this.httpRequestWithBinaryBody(options, url, contentType);
|
return this.httpRequestWithBinaryBody(options, url, contentType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ export type ButtonProps = {
|
|||||||
|
|
||||||
type Props = ButtonProps &
|
type Props = ButtonProps &
|
||||||
RouteComponentProps & {
|
RouteComponentProps & {
|
||||||
|
title?: string;
|
||||||
type?: "button" | "submit" | "reset";
|
type?: "button" | "submit" | "reset";
|
||||||
color?: string;
|
color?: string;
|
||||||
};
|
};
|
||||||
@@ -38,7 +39,19 @@ class Button extends React.Component<Props> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { label, loading, disabled, type, color, className, icon, fullWidth, reducedMobile, children } = this.props;
|
const {
|
||||||
|
label,
|
||||||
|
title,
|
||||||
|
loading,
|
||||||
|
disabled,
|
||||||
|
type,
|
||||||
|
color,
|
||||||
|
className,
|
||||||
|
icon,
|
||||||
|
fullWidth,
|
||||||
|
reducedMobile,
|
||||||
|
children
|
||||||
|
} = this.props;
|
||||||
const loadingClass = loading ? "is-loading" : "";
|
const loadingClass = loading ? "is-loading" : "";
|
||||||
const fullWidthClass = fullWidth ? "is-fullwidth" : "";
|
const fullWidthClass = fullWidth ? "is-fullwidth" : "";
|
||||||
const reducedMobileClass = reducedMobile ? "is-reduced-mobile" : "";
|
const reducedMobileClass = reducedMobile ? "is-reduced-mobile" : "";
|
||||||
@@ -46,6 +59,7 @@ class Button extends React.Component<Props> {
|
|||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
type={type}
|
type={type}
|
||||||
|
title={title}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
onClick={this.onClick}
|
onClick={this.onClick}
|
||||||
className={classNames("button", "is-" + color, loadingClass, fullWidthClass, reducedMobileClass, className)}
|
className={classNames("button", "is-" + color, loadingClass, fullWidthClass, reducedMobileClass, className)}
|
||||||
@@ -63,6 +77,7 @@ class Button extends React.Component<Props> {
|
|||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
type={type}
|
type={type}
|
||||||
|
title={title}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
onClick={this.onClick}
|
onClick={this.onClick}
|
||||||
className={classNames("button", "is-" + color, loadingClass, fullWidthClass, className)}
|
className={classNames("button", "is-" + color, loadingClass, fullWidthClass, className)}
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ const buttonStory = (name: string, storyFn: () => ReactElement) => {
|
|||||||
.addDecorator(SpacingDecorator)
|
.addDecorator(SpacingDecorator)
|
||||||
.add("Default", storyFn);
|
.add("Default", storyFn);
|
||||||
};
|
};
|
||||||
|
|
||||||
buttonStory("AddButton", () => <AddButton>Add</AddButton>);
|
buttonStory("AddButton", () => <AddButton>Add</AddButton>);
|
||||||
buttonStory("CreateButton", () => <CreateButton>Create</CreateButton>);
|
buttonStory("CreateButton", () => <CreateButton>Create</CreateButton>);
|
||||||
buttonStory("DeleteButton", () => <DeleteButton>Delete</DeleteButton>);
|
buttonStory("DeleteButton", () => <DeleteButton>Delete</DeleteButton>);
|
||||||
|
|||||||
@@ -14,8 +14,10 @@
|
|||||||
"cache-loader": "^4.1.0",
|
"cache-loader": "^4.1.0",
|
||||||
"css-loader": "^3.2.0",
|
"css-loader": "^3.2.0",
|
||||||
"file-loader": "^4.2.0",
|
"file-loader": "^4.2.0",
|
||||||
|
"mini-css-extract-plugin": "^0.8.0",
|
||||||
"mustache": "^3.1.0",
|
"mustache": "^3.1.0",
|
||||||
"node-sass": "^4.12.0",
|
"node-sass": "^4.12.0",
|
||||||
|
"optimize-css-assets-webpack-plugin": "^5.0.3",
|
||||||
"sass-loader": "^8.0.0",
|
"sass-loader": "^8.0.0",
|
||||||
"script-loader": "^0.7.2",
|
"script-loader": "^0.7.2",
|
||||||
"style-loader": "^1.0.0",
|
"style-loader": "^1.0.0",
|
||||||
|
|||||||
@@ -1,19 +1,52 @@
|
|||||||
const path = require("path");
|
const path = require("path");
|
||||||
const createIndexMiddleware = require("./middleware/IndexMiddleware");
|
const createIndexMiddleware = require("./middleware/IndexMiddleware");
|
||||||
const createContextPathMiddleware = require("./middleware/ContextPathMiddleware");
|
const createContextPathMiddleware = require("./middleware/ContextPathMiddleware");
|
||||||
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||||||
|
const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
|
||||||
|
|
||||||
const root = path.resolve(process.cwd(), "scm-ui");
|
const root = path.resolve(process.cwd(), "scm-ui");
|
||||||
|
|
||||||
module.exports = [
|
module.exports = [
|
||||||
{
|
{
|
||||||
context: root,
|
context: root,
|
||||||
entry: {
|
entry: "./ui-styles/src/scm.scss",
|
||||||
webapp: [
|
module: {
|
||||||
path.resolve(__dirname, "webpack-public-path.js"),
|
rules: [
|
||||||
"./ui-styles/src/scm.scss",
|
{
|
||||||
"./ui-webapp/src/index.tsx"
|
test: /\.(css|scss|sass)$/i,
|
||||||
|
use: [
|
||||||
|
{
|
||||||
|
loader: MiniCssExtractPlugin.loader
|
||||||
|
},
|
||||||
|
"css-loader",
|
||||||
|
"sass-loader"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
test: /\.(png|svg|jpg|gif|woff2?|eot|ttf)$/,
|
||||||
|
use: ["file-loader"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new MiniCssExtractPlugin({
|
||||||
|
filename: "ui-styles.css",
|
||||||
|
ignoreOrder: false
|
||||||
|
})
|
||||||
|
],
|
||||||
|
optimization: {
|
||||||
|
minimizer: [new OptimizeCSSAssetsPlugin({})]
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
path: path.join(root, "target", "assets"),
|
||||||
|
filename: "ui-styles.bundle.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
context: root,
|
||||||
|
entry: {
|
||||||
|
webapp: [path.resolve(__dirname, "webpack-public-path.js"), "./ui-webapp/src/index.tsx"]
|
||||||
|
},
|
||||||
devtool: "cheap-module-eval-source-map",
|
devtool: "cheap-module-eval-source-map",
|
||||||
target: "web",
|
target: "web",
|
||||||
node: {
|
node: {
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
<base href="{{ contextPath }}">
|
<base href="{{ contextPath }}">
|
||||||
<title>SCM-Manager</title>
|
<title>SCM-Manager</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="{{ contextPath }}/assets/ui-styles.css">
|
||||||
<script>
|
<script>
|
||||||
var modernBrowser = (
|
var modernBrowser = (
|
||||||
'fetch' in window &&
|
'fetch' in window &&
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ public final class SingleView {
|
|||||||
MustacheTemplateEngine.class);
|
MustacheTemplateEngine.class);
|
||||||
bind(TemplateEngineFactory.class);
|
bind(TemplateEngineFactory.class);
|
||||||
|
|
||||||
serve("/images/*", "/styles/*", "/favicon.ico").with(StaticResourceServlet.class);
|
serve("/images/*", "/assets/*", "/favicon.ico").with(StaticResourceServlet.class);
|
||||||
serve("/*").with(SingleViewServlet.class);
|
serve("/*").with(SingleViewServlet.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class MigrationWizardModule extends ServletModule {
|
|||||||
LOG.info("= Open SCM-Manager in a browser to start the wizard. =");
|
LOG.info("= Open SCM-Manager in a browser to start the wizard. =");
|
||||||
LOG.info("= =");
|
LOG.info("= =");
|
||||||
LOG.info("==========================================================");
|
LOG.info("==========================================================");
|
||||||
serve("/images/*", "/styles/*", "/favicon.ico").with(StaticResourceServlet.class);
|
serve("/images/*", "/assets/*", "/favicon.ico").with(StaticResourceServlet.class);
|
||||||
serve("/*").with(MigrationWizardServlet.class);
|
serve("/*").with(MigrationWizardServlet.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package sonia.scm.user;
|
||||||
|
|
||||||
|
import com.github.legman.Subscribe;
|
||||||
|
import sonia.scm.ContextEntry;
|
||||||
|
import sonia.scm.EagerSingleton;
|
||||||
|
import sonia.scm.HandlerEventType;
|
||||||
|
import sonia.scm.SCMContext;
|
||||||
|
import sonia.scm.config.ScmConfiguration;
|
||||||
|
import sonia.scm.plugin.Extension;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
@EagerSingleton
|
||||||
|
@Extension
|
||||||
|
public class AnonymousUserDeletionEventHandler {
|
||||||
|
|
||||||
|
private ScmConfiguration scmConfiguration;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public AnonymousUserDeletionEventHandler(ScmConfiguration scmConfiguration) {
|
||||||
|
this.scmConfiguration = scmConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe(async = false)
|
||||||
|
public void onEvent(UserEvent event) {
|
||||||
|
if (isAnonymousUserDeletionNotAllowed(event)) {
|
||||||
|
throw new AnonymousUserDeletionException(ContextEntry.ContextBuilder.entity(User.class, event.getItem().getId()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isAnonymousUserDeletionNotAllowed(UserEvent event) {
|
||||||
|
return event.getEventType() == HandlerEventType.BEFORE_DELETE
|
||||||
|
&& event.getItem().getName().equals(SCMContext.USER_ANONYMOUS)
|
||||||
|
&& scmConfiguration.isAnonymousAccessEnabled();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package sonia.scm.user;
|
||||||
|
|
||||||
|
import sonia.scm.ContextEntry;
|
||||||
|
import sonia.scm.ExceptionWithContext;
|
||||||
|
|
||||||
|
public class AnonymousUserDeletionException extends ExceptionWithContext {
|
||||||
|
|
||||||
|
private static final String CODE = "1yRiASshD1";
|
||||||
|
|
||||||
|
public AnonymousUserDeletionException(ContextEntry.ContextBuilder context) {
|
||||||
|
super(context.build(), "_anonymous user can not be deleted if anonymous access is enabled");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCode() {
|
||||||
|
return CODE;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -191,6 +191,10 @@
|
|||||||
"78RhWxTIw1": {
|
"78RhWxTIw1": {
|
||||||
"displayName": "Der Default-Branch kann nicht gelöscht werden",
|
"displayName": "Der Default-Branch kann nicht gelöscht werden",
|
||||||
"description": "Der Default-Branch kann nicht gelöscht werden. Bitte wählen Sie zuerst einen neuen Default-Branch."
|
"description": "Der Default-Branch kann nicht gelöscht werden. Bitte wählen Sie zuerst einen neuen Default-Branch."
|
||||||
|
},
|
||||||
|
"1yRiASshD1": {
|
||||||
|
"displayName": "Fehler beim Löschen des anonymen Nutzers",
|
||||||
|
"description": "Der anonyme Nutzer kann nicht gelöscht werden, solange der anonyme Zugriff in den Einstellungen aktiviert ist."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"namespaceStrategies": {
|
"namespaceStrategies": {
|
||||||
|
|||||||
@@ -191,6 +191,10 @@
|
|||||||
"78RhWxTIw1": {
|
"78RhWxTIw1": {
|
||||||
"displayName": "Default branch cannot be deleted",
|
"displayName": "Default branch cannot be deleted",
|
||||||
"description": "The default branch of a repository cannot be deleted. Please select another default branch first."
|
"description": "The default branch of a repository cannot be deleted. Please select another default branch first."
|
||||||
|
},
|
||||||
|
"1yRiASshD1": {
|
||||||
|
"displayName": "Error deleting the anonymous user",
|
||||||
|
"description": "The anonymous user cannot be deleted since the anonymous access is still enabled in the configuration."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"namespaceStrategies": {
|
"namespaceStrategies": {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>{{$title}}SCM-Manager{{/title}}</title>
|
<title>{{$title}}SCM-Manager{{/title}}</title>
|
||||||
<link rel="stylesheet" type="text/css" href="{{ contextPath }}/styles/scm.css">
|
<link rel="stylesheet" type="text/css" href="{{ contextPath }}/assets/ui-styles.css">
|
||||||
<link rel="shortcut icon" href="{{ contextPath }}/favicon.ico">
|
<link rel="shortcut icon" href="{{ contextPath }}/favicon.ico">
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package sonia.scm.user;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import sonia.scm.HandlerEventType;
|
||||||
|
import sonia.scm.SCMContext;
|
||||||
|
import sonia.scm.config.ScmConfiguration;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
|
||||||
|
class AnonymousUserDeletionEventHandlerTest {
|
||||||
|
|
||||||
|
private ScmConfiguration scmConfiguration;
|
||||||
|
|
||||||
|
private AnonymousUserDeletionEventHandler hook;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void initConfig() {
|
||||||
|
scmConfiguration = new ScmConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldThrowAnonymousUserDeletionExceptionIfAnonymousAccessIsEnabled() {
|
||||||
|
scmConfiguration.setAnonymousAccessEnabled(true);
|
||||||
|
|
||||||
|
hook = new AnonymousUserDeletionEventHandler(scmConfiguration);
|
||||||
|
UserEvent deletionEvent = new UserEvent(HandlerEventType.BEFORE_DELETE, SCMContext.ANONYMOUS);
|
||||||
|
|
||||||
|
assertThrows(AnonymousUserDeletionException.class, () -> hook.onEvent(deletionEvent));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldNotThrowAnonymousUserDeletionException() {
|
||||||
|
scmConfiguration.setAnonymousAccessEnabled(false);
|
||||||
|
|
||||||
|
hook = new AnonymousUserDeletionEventHandler(scmConfiguration);
|
||||||
|
UserEvent deletionEvent = new UserEvent(HandlerEventType.BEFORE_DELETE, SCMContext.ANONYMOUS);
|
||||||
|
|
||||||
|
hook.onEvent(deletionEvent);
|
||||||
|
}
|
||||||
|
}
|
||||||
569
yarn.lock
569
yarn.lock
@@ -3215,6 +3215,11 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5:
|
|||||||
json-schema-traverse "^0.4.1"
|
json-schema-traverse "^0.4.1"
|
||||||
uri-js "^4.2.2"
|
uri-js "^4.2.2"
|
||||||
|
|
||||||
|
alphanum-sort@^1.0.0:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
|
||||||
|
integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
|
||||||
|
|
||||||
amdefine@>=0.0.4:
|
amdefine@>=0.0.4:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
|
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
|
||||||
@@ -4247,7 +4252,7 @@ browserslist@4.7.0:
|
|||||||
electron-to-chromium "^1.3.247"
|
electron-to-chromium "^1.3.247"
|
||||||
node-releases "^1.1.29"
|
node-releases "^1.1.29"
|
||||||
|
|
||||||
browserslist@^4.6.0, browserslist@^4.7.2:
|
browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.7.2:
|
||||||
version "4.7.2"
|
version "4.7.2"
|
||||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.2.tgz#1bb984531a476b5d389cedecb195b2cd69fb1348"
|
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.2.tgz#1bb984531a476b5d389cedecb195b2cd69fb1348"
|
||||||
integrity sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==
|
integrity sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==
|
||||||
@@ -4497,6 +4502,21 @@ can-use-dom@^0.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a"
|
resolved "https://registry.yarnpkg.com/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a"
|
||||||
integrity sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo=
|
integrity sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo=
|
||||||
|
|
||||||
|
caniuse-api@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
|
||||||
|
integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
|
||||||
|
dependencies:
|
||||||
|
browserslist "^4.0.0"
|
||||||
|
caniuse-lite "^1.0.0"
|
||||||
|
lodash.memoize "^4.1.2"
|
||||||
|
lodash.uniq "^4.5.0"
|
||||||
|
|
||||||
|
caniuse-lite@^1.0.0:
|
||||||
|
version "1.0.30001010"
|
||||||
|
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001010.tgz#397a14034d384260453cc81994f494626d34b938"
|
||||||
|
integrity sha512-RA5GH9YjFNea4ZQszdWgh2SC+dpLiRAg4VDQS2b5JRI45OxmbGrYocYHTa9x0bKMQUE7uvHkNPNffUr+pCxSGw==
|
||||||
|
|
||||||
caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001004:
|
caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001004:
|
||||||
version "1.0.30001005"
|
version "1.0.30001005"
|
||||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001005.tgz#823054210be638c725521edcb869435dae46728d"
|
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001005.tgz#823054210be638c725521edcb869435dae46728d"
|
||||||
@@ -4783,7 +4803,7 @@ collection-visit@^1.0.0:
|
|||||||
map-visit "^1.0.0"
|
map-visit "^1.0.0"
|
||||||
object-visit "^1.0.0"
|
object-visit "^1.0.0"
|
||||||
|
|
||||||
color-convert@^1.9.0:
|
color-convert@^1.9.0, color-convert@^1.9.1:
|
||||||
version "1.9.3"
|
version "1.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
||||||
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
|
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
|
||||||
@@ -4795,6 +4815,27 @@ color-name@1.1.3:
|
|||||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
||||||
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
|
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
|
||||||
|
|
||||||
|
color-name@^1.0.0:
|
||||||
|
version "1.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||||
|
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||||
|
|
||||||
|
color-string@^1.5.2:
|
||||||
|
version "1.5.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
|
||||||
|
integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==
|
||||||
|
dependencies:
|
||||||
|
color-name "^1.0.0"
|
||||||
|
simple-swizzle "^0.2.2"
|
||||||
|
|
||||||
|
color@^3.0.0:
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10"
|
||||||
|
integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==
|
||||||
|
dependencies:
|
||||||
|
color-convert "^1.9.1"
|
||||||
|
color-string "^1.5.2"
|
||||||
|
|
||||||
colors@^1.1.2, colors@^1.3.2:
|
colors@^1.1.2, colors@^1.3.2:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
|
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
|
||||||
@@ -5238,6 +5279,19 @@ css-color-keywords@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
|
resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
|
||||||
integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=
|
integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=
|
||||||
|
|
||||||
|
css-color-names@0.0.4, css-color-names@^0.0.4:
|
||||||
|
version "0.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
|
||||||
|
integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
|
||||||
|
|
||||||
|
css-declaration-sorter@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
|
||||||
|
integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
|
||||||
|
dependencies:
|
||||||
|
postcss "^7.0.1"
|
||||||
|
timsort "^0.3.0"
|
||||||
|
|
||||||
css-loader@^3.0.0, css-loader@^3.2.0:
|
css-loader@^3.0.0, css-loader@^3.2.0:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.2.0.tgz#bb570d89c194f763627fcf1f80059c6832d009b2"
|
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.2.0.tgz#bb570d89c194f763627fcf1f80059c6832d009b2"
|
||||||
@@ -5306,16 +5360,102 @@ css-tree@1.0.0-alpha.33:
|
|||||||
mdn-data "2.0.4"
|
mdn-data "2.0.4"
|
||||||
source-map "^0.5.3"
|
source-map "^0.5.3"
|
||||||
|
|
||||||
|
css-tree@1.0.0-alpha.37:
|
||||||
|
version "1.0.0-alpha.37"
|
||||||
|
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
|
||||||
|
integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==
|
||||||
|
dependencies:
|
||||||
|
mdn-data "2.0.4"
|
||||||
|
source-map "^0.6.1"
|
||||||
|
|
||||||
|
css-unit-converter@^1.1.1:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996"
|
||||||
|
integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=
|
||||||
|
|
||||||
css-what@2.1, css-what@^2.1.2:
|
css-what@2.1, css-what@^2.1.2:
|
||||||
version "2.1.3"
|
version "2.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
|
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
|
||||||
integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
|
integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
|
||||||
|
|
||||||
|
cssesc@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
|
||||||
|
integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==
|
||||||
|
|
||||||
cssesc@^3.0.0:
|
cssesc@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
|
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
|
||||||
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
||||||
|
|
||||||
|
cssnano-preset-default@^4.0.7:
|
||||||
|
version "4.0.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76"
|
||||||
|
integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==
|
||||||
|
dependencies:
|
||||||
|
css-declaration-sorter "^4.0.1"
|
||||||
|
cssnano-util-raw-cache "^4.0.1"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-calc "^7.0.1"
|
||||||
|
postcss-colormin "^4.0.3"
|
||||||
|
postcss-convert-values "^4.0.1"
|
||||||
|
postcss-discard-comments "^4.0.2"
|
||||||
|
postcss-discard-duplicates "^4.0.2"
|
||||||
|
postcss-discard-empty "^4.0.1"
|
||||||
|
postcss-discard-overridden "^4.0.1"
|
||||||
|
postcss-merge-longhand "^4.0.11"
|
||||||
|
postcss-merge-rules "^4.0.3"
|
||||||
|
postcss-minify-font-values "^4.0.2"
|
||||||
|
postcss-minify-gradients "^4.0.2"
|
||||||
|
postcss-minify-params "^4.0.2"
|
||||||
|
postcss-minify-selectors "^4.0.2"
|
||||||
|
postcss-normalize-charset "^4.0.1"
|
||||||
|
postcss-normalize-display-values "^4.0.2"
|
||||||
|
postcss-normalize-positions "^4.0.2"
|
||||||
|
postcss-normalize-repeat-style "^4.0.2"
|
||||||
|
postcss-normalize-string "^4.0.2"
|
||||||
|
postcss-normalize-timing-functions "^4.0.2"
|
||||||
|
postcss-normalize-unicode "^4.0.1"
|
||||||
|
postcss-normalize-url "^4.0.1"
|
||||||
|
postcss-normalize-whitespace "^4.0.2"
|
||||||
|
postcss-ordered-values "^4.1.2"
|
||||||
|
postcss-reduce-initial "^4.0.3"
|
||||||
|
postcss-reduce-transforms "^4.0.2"
|
||||||
|
postcss-svgo "^4.0.2"
|
||||||
|
postcss-unique-selectors "^4.0.1"
|
||||||
|
|
||||||
|
cssnano-util-get-arguments@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
|
||||||
|
integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
|
||||||
|
|
||||||
|
cssnano-util-get-match@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
|
||||||
|
integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
|
||||||
|
|
||||||
|
cssnano-util-raw-cache@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
|
||||||
|
integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
|
||||||
|
dependencies:
|
||||||
|
postcss "^7.0.0"
|
||||||
|
|
||||||
|
cssnano-util-same-parent@^4.0.0:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
|
||||||
|
integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
|
||||||
|
|
||||||
|
cssnano@^4.1.10:
|
||||||
|
version "4.1.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2"
|
||||||
|
integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==
|
||||||
|
dependencies:
|
||||||
|
cosmiconfig "^5.0.0"
|
||||||
|
cssnano-preset-default "^4.0.7"
|
||||||
|
is-resolvable "^1.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
|
||||||
csso@^3.5.1:
|
csso@^3.5.1:
|
||||||
version "3.5.1"
|
version "3.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
|
resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
|
||||||
@@ -5323,6 +5463,13 @@ csso@^3.5.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
css-tree "1.0.0-alpha.29"
|
css-tree "1.0.0-alpha.29"
|
||||||
|
|
||||||
|
csso@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d"
|
||||||
|
integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==
|
||||||
|
dependencies:
|
||||||
|
css-tree "1.0.0-alpha.37"
|
||||||
|
|
||||||
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
|
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
|
||||||
version "0.3.8"
|
version "0.3.8"
|
||||||
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
|
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
|
||||||
@@ -5813,7 +5960,7 @@ dot-prop@^3.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-obj "^1.0.0"
|
is-obj "^1.0.0"
|
||||||
|
|
||||||
dot-prop@^4.2.0:
|
dot-prop@^4.1.1, dot-prop@^4.2.0:
|
||||||
version "4.2.0"
|
version "4.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
|
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
|
||||||
integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==
|
integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==
|
||||||
@@ -7485,7 +7632,7 @@ has-values@^1.0.0:
|
|||||||
is-number "^3.0.0"
|
is-number "^3.0.0"
|
||||||
kind-of "^4.0.0"
|
kind-of "^4.0.0"
|
||||||
|
|
||||||
has@^1.0.1, has@^1.0.3:
|
has@^1.0.0, has@^1.0.1, has@^1.0.3:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
|
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
|
||||||
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
|
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
|
||||||
@@ -7528,6 +7675,11 @@ he@^1.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
|
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
|
||||||
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
|
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
|
||||||
|
|
||||||
|
hex-color-regex@^1.1.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
|
||||||
|
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
|
||||||
|
|
||||||
highlight.js@~9.12.0:
|
highlight.js@~9.12.0:
|
||||||
version "9.12.0"
|
version "9.12.0"
|
||||||
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e"
|
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e"
|
||||||
@@ -7588,6 +7740,21 @@ hpack.js@^2.1.6:
|
|||||||
readable-stream "^2.0.1"
|
readable-stream "^2.0.1"
|
||||||
wbuf "^1.1.0"
|
wbuf "^1.1.0"
|
||||||
|
|
||||||
|
hsl-regex@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
|
||||||
|
integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
|
||||||
|
|
||||||
|
hsla-regex@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
|
||||||
|
integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
|
||||||
|
|
||||||
|
html-comment-regex@^1.1.0:
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
|
||||||
|
integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
|
||||||
|
|
||||||
html-element-map@^1.0.0:
|
html-element-map@^1.0.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.1.0.tgz#e5aab9a834caf883b421f8bd9eaedcaac887d63c"
|
resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.1.0.tgz#e5aab9a834caf883b421f8bd9eaedcaac887d63c"
|
||||||
@@ -8073,6 +8240,11 @@ ipaddr.js@^1.9.0:
|
|||||||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
|
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
|
||||||
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
|
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
|
||||||
|
|
||||||
|
is-absolute-url@^2.0.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
|
||||||
|
integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
|
||||||
|
|
||||||
is-absolute-url@^3.0.3:
|
is-absolute-url@^3.0.3:
|
||||||
version "3.0.3"
|
version "3.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698"
|
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698"
|
||||||
@@ -8115,6 +8287,11 @@ is-arrayish@^0.2.1:
|
|||||||
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
||||||
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
|
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
|
||||||
|
|
||||||
|
is-arrayish@^0.3.1:
|
||||||
|
version "0.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
|
||||||
|
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
|
||||||
|
|
||||||
is-binary-path@^1.0.0:
|
is-binary-path@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
|
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
|
||||||
@@ -8144,6 +8321,18 @@ is-ci@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ci-info "^2.0.0"
|
ci-info "^2.0.0"
|
||||||
|
|
||||||
|
is-color-stop@^1.0.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
|
||||||
|
integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
|
||||||
|
dependencies:
|
||||||
|
css-color-names "^0.0.4"
|
||||||
|
hex-color-regex "^1.1.0"
|
||||||
|
hsl-regex "^1.0.0"
|
||||||
|
hsla-regex "^1.0.0"
|
||||||
|
rgb-regex "^1.0.1"
|
||||||
|
rgba-regex "^1.0.0"
|
||||||
|
|
||||||
is-data-descriptor@^0.1.4:
|
is-data-descriptor@^0.1.4:
|
||||||
version "0.1.4"
|
version "0.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
|
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
|
||||||
@@ -8341,6 +8530,11 @@ is-regex@^1.0.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
has "^1.0.1"
|
has "^1.0.1"
|
||||||
|
|
||||||
|
is-resolvable@^1.0.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
|
||||||
|
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
|
||||||
|
|
||||||
is-retry-allowed@^1.1.0:
|
is-retry-allowed@^1.1.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
|
resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
|
||||||
@@ -8373,6 +8567,13 @@ is-subset@^0.1.1:
|
|||||||
resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6"
|
resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6"
|
||||||
integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=
|
integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=
|
||||||
|
|
||||||
|
is-svg@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
|
||||||
|
integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==
|
||||||
|
dependencies:
|
||||||
|
html-comment-regex "^1.1.0"
|
||||||
|
|
||||||
is-symbol@^1.0.2:
|
is-symbol@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
|
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
|
||||||
@@ -9112,6 +9313,14 @@ kleur@^3.0.3:
|
|||||||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
|
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
|
||||||
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
|
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
|
||||||
|
|
||||||
|
last-call-webpack-plugin@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555"
|
||||||
|
integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==
|
||||||
|
dependencies:
|
||||||
|
lodash "^4.17.5"
|
||||||
|
webpack-sources "^1.1.0"
|
||||||
|
|
||||||
lazy-cache@^0.2.3:
|
lazy-cache@^0.2.3:
|
||||||
version "0.2.7"
|
version "0.2.7"
|
||||||
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65"
|
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65"
|
||||||
@@ -9397,7 +9606,7 @@ lodash.uniq@^4.5.0:
|
|||||||
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
||||||
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
|
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
|
||||||
|
|
||||||
lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.2.1, lodash@~4.17.10:
|
lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@~4.17.10:
|
||||||
version "4.17.15"
|
version "4.17.15"
|
||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
|
||||||
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
|
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
|
||||||
@@ -9815,6 +10024,16 @@ mini-css-extract-plugin@^0.7.0:
|
|||||||
schema-utils "^1.0.0"
|
schema-utils "^1.0.0"
|
||||||
webpack-sources "^1.1.0"
|
webpack-sources "^1.1.0"
|
||||||
|
|
||||||
|
mini-css-extract-plugin@^0.8.0:
|
||||||
|
version "0.8.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz#81d41ec4fe58c713a96ad7c723cdb2d0bd4d70e1"
|
||||||
|
integrity sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==
|
||||||
|
dependencies:
|
||||||
|
loader-utils "^1.1.0"
|
||||||
|
normalize-url "1.9.1"
|
||||||
|
schema-utils "^1.0.0"
|
||||||
|
webpack-sources "^1.1.0"
|
||||||
|
|
||||||
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
|
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
|
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
|
||||||
@@ -10302,7 +10521,7 @@ normalize-url@2.0.1:
|
|||||||
query-string "^5.0.1"
|
query-string "^5.0.1"
|
||||||
sort-keys "^2.0.0"
|
sort-keys "^2.0.0"
|
||||||
|
|
||||||
normalize-url@^3.3.0:
|
normalize-url@^3.0.0, normalize-url@^3.3.0:
|
||||||
version "3.3.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
|
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
|
||||||
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
|
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
|
||||||
@@ -10553,6 +10772,14 @@ optimist@^0.6.1:
|
|||||||
minimist "~0.0.1"
|
minimist "~0.0.1"
|
||||||
wordwrap "~0.0.2"
|
wordwrap "~0.0.2"
|
||||||
|
|
||||||
|
optimize-css-assets-webpack-plugin@^5.0.3:
|
||||||
|
version "5.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572"
|
||||||
|
integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==
|
||||||
|
dependencies:
|
||||||
|
cssnano "^4.1.10"
|
||||||
|
last-call-webpack-plugin "^3.0.0"
|
||||||
|
|
||||||
optionator@^0.8.1, optionator@^0.8.2:
|
optionator@^0.8.1, optionator@^0.8.2:
|
||||||
version "0.8.2"
|
version "0.8.2"
|
||||||
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
|
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
|
||||||
@@ -11081,6 +11308,63 @@ posix-character-classes@^0.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
|
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
|
||||||
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
|
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
|
||||||
|
|
||||||
|
postcss-calc@^7.0.1:
|
||||||
|
version "7.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436"
|
||||||
|
integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==
|
||||||
|
dependencies:
|
||||||
|
css-unit-converter "^1.1.1"
|
||||||
|
postcss "^7.0.5"
|
||||||
|
postcss-selector-parser "^5.0.0-rc.4"
|
||||||
|
postcss-value-parser "^3.3.1"
|
||||||
|
|
||||||
|
postcss-colormin@^4.0.3:
|
||||||
|
version "4.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
|
||||||
|
integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
|
||||||
|
dependencies:
|
||||||
|
browserslist "^4.0.0"
|
||||||
|
color "^3.0.0"
|
||||||
|
has "^1.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-convert-values@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
|
||||||
|
integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
|
||||||
|
dependencies:
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-discard-comments@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
|
||||||
|
integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
|
||||||
|
dependencies:
|
||||||
|
postcss "^7.0.0"
|
||||||
|
|
||||||
|
postcss-discard-duplicates@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
|
||||||
|
integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
|
||||||
|
dependencies:
|
||||||
|
postcss "^7.0.0"
|
||||||
|
|
||||||
|
postcss-discard-empty@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
|
||||||
|
integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
|
||||||
|
dependencies:
|
||||||
|
postcss "^7.0.0"
|
||||||
|
|
||||||
|
postcss-discard-overridden@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
|
||||||
|
integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
|
||||||
|
dependencies:
|
||||||
|
postcss "^7.0.0"
|
||||||
|
|
||||||
postcss-flexbugs-fixes@^4.1.0:
|
postcss-flexbugs-fixes@^4.1.0:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20"
|
resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20"
|
||||||
@@ -11106,6 +11390,68 @@ postcss-loader@^3.0.0:
|
|||||||
postcss-load-config "^2.0.0"
|
postcss-load-config "^2.0.0"
|
||||||
schema-utils "^1.0.0"
|
schema-utils "^1.0.0"
|
||||||
|
|
||||||
|
postcss-merge-longhand@^4.0.11:
|
||||||
|
version "4.0.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
|
||||||
|
integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
|
||||||
|
dependencies:
|
||||||
|
css-color-names "0.0.4"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
stylehacks "^4.0.0"
|
||||||
|
|
||||||
|
postcss-merge-rules@^4.0.3:
|
||||||
|
version "4.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
|
||||||
|
integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
|
||||||
|
dependencies:
|
||||||
|
browserslist "^4.0.0"
|
||||||
|
caniuse-api "^3.0.0"
|
||||||
|
cssnano-util-same-parent "^4.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-selector-parser "^3.0.0"
|
||||||
|
vendors "^1.0.0"
|
||||||
|
|
||||||
|
postcss-minify-font-values@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
|
||||||
|
integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
|
||||||
|
dependencies:
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-minify-gradients@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
|
||||||
|
integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
|
||||||
|
dependencies:
|
||||||
|
cssnano-util-get-arguments "^4.0.0"
|
||||||
|
is-color-stop "^1.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-minify-params@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
|
||||||
|
integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
|
||||||
|
dependencies:
|
||||||
|
alphanum-sort "^1.0.0"
|
||||||
|
browserslist "^4.0.0"
|
||||||
|
cssnano-util-get-arguments "^4.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
uniqs "^2.0.0"
|
||||||
|
|
||||||
|
postcss-minify-selectors@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
|
||||||
|
integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
|
||||||
|
dependencies:
|
||||||
|
alphanum-sort "^1.0.0"
|
||||||
|
has "^1.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-selector-parser "^3.0.0"
|
||||||
|
|
||||||
postcss-modules-extract-imports@^2.0.0:
|
postcss-modules-extract-imports@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
|
resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
|
||||||
@@ -11139,6 +11485,134 @@ postcss-modules-values@^3.0.0:
|
|||||||
icss-utils "^4.0.0"
|
icss-utils "^4.0.0"
|
||||||
postcss "^7.0.6"
|
postcss "^7.0.6"
|
||||||
|
|
||||||
|
postcss-normalize-charset@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
|
||||||
|
integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
|
||||||
|
dependencies:
|
||||||
|
postcss "^7.0.0"
|
||||||
|
|
||||||
|
postcss-normalize-display-values@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
|
||||||
|
integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
|
||||||
|
dependencies:
|
||||||
|
cssnano-util-get-match "^4.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-normalize-positions@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
|
||||||
|
integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
|
||||||
|
dependencies:
|
||||||
|
cssnano-util-get-arguments "^4.0.0"
|
||||||
|
has "^1.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-normalize-repeat-style@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
|
||||||
|
integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
|
||||||
|
dependencies:
|
||||||
|
cssnano-util-get-arguments "^4.0.0"
|
||||||
|
cssnano-util-get-match "^4.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-normalize-string@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
|
||||||
|
integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
|
||||||
|
dependencies:
|
||||||
|
has "^1.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-normalize-timing-functions@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
|
||||||
|
integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
|
||||||
|
dependencies:
|
||||||
|
cssnano-util-get-match "^4.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-normalize-unicode@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
|
||||||
|
integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
|
||||||
|
dependencies:
|
||||||
|
browserslist "^4.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-normalize-url@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
|
||||||
|
integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
|
||||||
|
dependencies:
|
||||||
|
is-absolute-url "^2.0.0"
|
||||||
|
normalize-url "^3.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-normalize-whitespace@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
|
||||||
|
integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
|
||||||
|
dependencies:
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-ordered-values@^4.1.2:
|
||||||
|
version "4.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
|
||||||
|
integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
|
||||||
|
dependencies:
|
||||||
|
cssnano-util-get-arguments "^4.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-reduce-initial@^4.0.3:
|
||||||
|
version "4.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
|
||||||
|
integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
|
||||||
|
dependencies:
|
||||||
|
browserslist "^4.0.0"
|
||||||
|
caniuse-api "^3.0.0"
|
||||||
|
has "^1.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
|
||||||
|
postcss-reduce-transforms@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
|
||||||
|
integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
|
||||||
|
dependencies:
|
||||||
|
cssnano-util-get-match "^4.0.0"
|
||||||
|
has "^1.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
|
||||||
|
postcss-selector-parser@^3.0.0:
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865"
|
||||||
|
integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=
|
||||||
|
dependencies:
|
||||||
|
dot-prop "^4.1.1"
|
||||||
|
indexes-of "^1.0.1"
|
||||||
|
uniq "^1.0.1"
|
||||||
|
|
||||||
|
postcss-selector-parser@^5.0.0-rc.4:
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
|
||||||
|
integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==
|
||||||
|
dependencies:
|
||||||
|
cssesc "^2.0.0"
|
||||||
|
indexes-of "^1.0.1"
|
||||||
|
uniq "^1.0.1"
|
||||||
|
|
||||||
postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
|
postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
|
||||||
version "6.0.2"
|
version "6.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
|
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
|
||||||
@@ -11148,7 +11622,26 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
|
|||||||
indexes-of "^1.0.1"
|
indexes-of "^1.0.1"
|
||||||
uniq "^1.0.1"
|
uniq "^1.0.1"
|
||||||
|
|
||||||
postcss-value-parser@^3.3.0:
|
postcss-svgo@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258"
|
||||||
|
integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==
|
||||||
|
dependencies:
|
||||||
|
is-svg "^3.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-value-parser "^3.0.0"
|
||||||
|
svgo "^1.0.0"
|
||||||
|
|
||||||
|
postcss-unique-selectors@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
|
||||||
|
integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
|
||||||
|
dependencies:
|
||||||
|
alphanum-sort "^1.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
uniqs "^2.0.0"
|
||||||
|
|
||||||
|
postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1:
|
||||||
version "3.3.1"
|
version "3.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
|
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
|
||||||
integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
|
integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
|
||||||
@@ -11158,7 +11651,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9"
|
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9"
|
||||||
integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==
|
integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==
|
||||||
|
|
||||||
postcss@^7.0.0, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.19, postcss@^7.0.5, postcss@^7.0.6:
|
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.19, postcss@^7.0.5, postcss@^7.0.6:
|
||||||
version "7.0.21"
|
version "7.0.21"
|
||||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17"
|
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17"
|
||||||
integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==
|
integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==
|
||||||
@@ -12442,6 +12935,16 @@ retry@^0.12.0:
|
|||||||
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
|
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
|
||||||
integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
|
integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
|
||||||
|
|
||||||
|
rgb-regex@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
|
||||||
|
integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
|
||||||
|
|
||||||
|
rgba-regex@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
|
||||||
|
integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
|
||||||
|
|
||||||
rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3:
|
rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3:
|
||||||
version "2.7.1"
|
version "2.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
||||||
@@ -12797,6 +13300,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||||
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
|
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
|
||||||
|
|
||||||
|
simple-swizzle@^0.2.2:
|
||||||
|
version "0.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
|
||||||
|
integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
|
||||||
|
dependencies:
|
||||||
|
is-arrayish "^0.3.1"
|
||||||
|
|
||||||
simplebar-react@^1.0.0-alpha.6:
|
simplebar-react@^1.0.0-alpha.6:
|
||||||
version "1.2.3"
|
version "1.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/simplebar-react/-/simplebar-react-1.2.3.tgz#bd81fa9827628470e9470d06caef6ece15e1c882"
|
resolved "https://registry.yarnpkg.com/simplebar-react/-/simplebar-react-1.2.3.tgz#bd81fa9827628470e9470d06caef6ece15e1c882"
|
||||||
@@ -13394,6 +13904,15 @@ styled-components@^4.4.0:
|
|||||||
stylis-rule-sheet "^0.0.10"
|
stylis-rule-sheet "^0.0.10"
|
||||||
supports-color "^5.5.0"
|
supports-color "^5.5.0"
|
||||||
|
|
||||||
|
stylehacks@^4.0.0:
|
||||||
|
version "4.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
|
||||||
|
integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
|
||||||
|
dependencies:
|
||||||
|
browserslist "^4.0.0"
|
||||||
|
postcss "^7.0.0"
|
||||||
|
postcss-selector-parser "^3.0.0"
|
||||||
|
|
||||||
stylis-rule-sheet@^0.0.10:
|
stylis-rule-sheet@^0.0.10:
|
||||||
version "0.0.10"
|
version "0.0.10"
|
||||||
resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430"
|
resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430"
|
||||||
@@ -13428,6 +13947,25 @@ svg-parser@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.2.tgz#d134cc396fa2681dc64f518330784e98bd801ec8"
|
resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.2.tgz#d134cc396fa2681dc64f518330784e98bd801ec8"
|
||||||
integrity sha512-1gtApepKFweigFZj3sGO8KT8LvVZK8io146EzXrpVuWCDAbISz/yMucco3hWTkpZNoPabM+dnMOpy6Swue68Zg==
|
integrity sha512-1gtApepKFweigFZj3sGO8KT8LvVZK8io146EzXrpVuWCDAbISz/yMucco3hWTkpZNoPabM+dnMOpy6Swue68Zg==
|
||||||
|
|
||||||
|
svgo@^1.0.0:
|
||||||
|
version "1.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
|
||||||
|
integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
|
||||||
|
dependencies:
|
||||||
|
chalk "^2.4.1"
|
||||||
|
coa "^2.0.2"
|
||||||
|
css-select "^2.0.0"
|
||||||
|
css-select-base-adapter "^0.1.1"
|
||||||
|
css-tree "1.0.0-alpha.37"
|
||||||
|
csso "^4.0.2"
|
||||||
|
js-yaml "^3.13.1"
|
||||||
|
mkdirp "~0.5.1"
|
||||||
|
object.values "^1.1.0"
|
||||||
|
sax "~1.2.4"
|
||||||
|
stable "^0.1.8"
|
||||||
|
unquote "~1.1.1"
|
||||||
|
util.promisify "~1.0.0"
|
||||||
|
|
||||||
svgo@^1.2.2:
|
svgo@^1.2.2:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.0.tgz#bae51ba95ded9a33a36b7c46ce9c359ae9154313"
|
resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.0.tgz#bae51ba95ded9a33a36b7c46ce9c359ae9154313"
|
||||||
@@ -13659,6 +14197,11 @@ timers-browserify@^2.0.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
setimmediate "^1.0.4"
|
setimmediate "^1.0.4"
|
||||||
|
|
||||||
|
timsort@^0.3.0:
|
||||||
|
version "0.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
|
||||||
|
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
|
||||||
|
|
||||||
tiny-emitter@^2.0.0:
|
tiny-emitter@^2.0.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
|
resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
|
||||||
@@ -13978,6 +14521,11 @@ uniq@^1.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
|
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
|
||||||
integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
|
integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
|
||||||
|
|
||||||
|
uniqs@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
|
||||||
|
integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
|
||||||
|
|
||||||
unique-filename@^1.1.1:
|
unique-filename@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
|
resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
|
||||||
@@ -14221,6 +14769,11 @@ vary@~1.1.2:
|
|||||||
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
|
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
|
||||||
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
|
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
|
||||||
|
|
||||||
|
vendors@^1.0.0:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0"
|
||||||
|
integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==
|
||||||
|
|
||||||
verror@1.10.0:
|
verror@1.10.0:
|
||||||
version "1.10.0"
|
version "1.10.0"
|
||||||
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
|
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
|
||||||
|
|||||||
Reference in New Issue
Block a user