mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-05-07 15:28:09 +02:00
remove requires value from extension annotation and add new requires annotation instead
This commit is contained in:
@@ -101,6 +101,14 @@ public class ClassSetElement implements DescriptorElement
|
||||
element.appendChild(attr);
|
||||
}
|
||||
|
||||
if (c.requires != null) {
|
||||
for (String requiresEntry : c.requires) {
|
||||
Element requiresElement = doc.createElement("requires");
|
||||
requiresElement.setTextContent(requiresEntry);
|
||||
element.appendChild(requiresElement);
|
||||
}
|
||||
}
|
||||
|
||||
element.appendChild(classEl);
|
||||
root.appendChild(element);
|
||||
}
|
||||
@@ -122,21 +130,24 @@ public class ClassSetElement implements DescriptorElement
|
||||
/**
|
||||
* Constructs ...
|
||||
*
|
||||
*
|
||||
* @param className
|
||||
* @param className
|
||||
* @param description
|
||||
* @param requires
|
||||
* @param attributes
|
||||
*/
|
||||
public ClassWithAttributes(String className, String description,
|
||||
Map<String, String> attributes)
|
||||
String[] requires, Map<String, String> attributes)
|
||||
{
|
||||
this.className = className;
|
||||
this.description = description;
|
||||
this.requires = requires;
|
||||
this.attributes = attributes;
|
||||
}
|
||||
|
||||
//~--- fields -------------------------------------------------------------
|
||||
|
||||
private final String[] requires;
|
||||
|
||||
/** Field description */
|
||||
private final Map<String, String> attributes;
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ import org.xml.sax.SAXException;
|
||||
|
||||
import sonia.scm.annotation.ClassSetElement.ClassWithAttributes;
|
||||
import sonia.scm.plugin.PluginAnnotation;
|
||||
import sonia.scm.plugin.Requires;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
@@ -247,6 +248,14 @@ public final class ScmAnnotationProcessor extends AbstractProcessor {
|
||||
|
||||
if (isClassOrInterface(e)) {
|
||||
TypeElement type = (TypeElement) e;
|
||||
|
||||
String[] requires = null;
|
||||
Requires requiresAnnotation = type.getAnnotation(Requires.class);
|
||||
|
||||
if (requiresAnnotation != null) {
|
||||
requires = requiresAnnotation.value();
|
||||
}
|
||||
|
||||
String desc = processingEnv.getElementUtils().getDocComment(type);
|
||||
|
||||
if (desc != null) {
|
||||
@@ -255,7 +264,7 @@ public final class ScmAnnotationProcessor extends AbstractProcessor {
|
||||
|
||||
classes.add(
|
||||
new ClassWithAttributes(
|
||||
type.getQualifiedName().toString(), desc, getAttributesFromAnnotation(e, annotation)
|
||||
type.getQualifiedName().toString(), desc, requires, getAttributesFromAnnotation(e, annotation)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -41,14 +41,4 @@ import java.lang.annotation.Target;
|
||||
@PluginAnnotation("extension")
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface Extension {
|
||||
/**
|
||||
* This extension is loaded only if all of the specified plugins are installed.
|
||||
* The requires attribute can be used to implement optional extensions.
|
||||
* A plugin author is able to implement an extension point of an optional plugin and the extension is only loaded if
|
||||
* all of the specified plugins are installed.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @return list of required plugins to load this extension
|
||||
*/
|
||||
String[] requires() default {};
|
||||
}
|
||||
|
||||
@@ -21,30 +21,18 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
package sonia.scm.plugin;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode
|
||||
@AllArgsConstructor
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class ExtensionElement {
|
||||
@XmlElement(name = "class")
|
||||
private String clazz;
|
||||
private String description;
|
||||
private Set<String> requires = new HashSet<>();
|
||||
@Documented
|
||||
@Target({ ElementType.TYPE })
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface Requires {
|
||||
String[] value();
|
||||
}
|
||||
@@ -21,133 +21,31 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
package sonia.scm.plugin;
|
||||
|
||||
//~--- non-JDK imports --------------------------------------------------------
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.base.Objects;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Sebastian Sdorra
|
||||
* @since 2.0.0
|
||||
*/
|
||||
public final class ClassElement
|
||||
{
|
||||
@Data
|
||||
public final class ClassElement {
|
||||
|
||||
/**
|
||||
* Constructs ...
|
||||
*
|
||||
*/
|
||||
ClassElement() {}
|
||||
|
||||
/**
|
||||
* Constructs ...
|
||||
*
|
||||
*
|
||||
* @param clazz
|
||||
* @param description
|
||||
*/
|
||||
public ClassElement(Class<?> clazz, String description)
|
||||
{
|
||||
this.clazz = clazz;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
//~--- methods --------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @param obj
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (getClass() != obj.getClass())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
final ClassElement other = (ClassElement) obj;
|
||||
|
||||
return Objects.equal(clazz, other.clazz)
|
||||
&& Objects.equal(description, other.description);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return Objects.hashCode(clazz, description);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
//J-
|
||||
return MoreObjects.toStringHelper(this)
|
||||
.add("clazz", clazz)
|
||||
.add("description", description)
|
||||
.toString();
|
||||
//J+
|
||||
}
|
||||
|
||||
//~--- get methods ----------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Class<?> getClazz()
|
||||
{
|
||||
return clazz;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String getDescription()
|
||||
{
|
||||
return description;
|
||||
}
|
||||
|
||||
//~--- fields ---------------------------------------------------------------
|
||||
|
||||
/** Field description */
|
||||
@XmlElement(name = "class")
|
||||
private Class<?> clazz;
|
||||
|
||||
/** Field description */
|
||||
private String clazz;
|
||||
private String description;
|
||||
private Set<String> requires = new HashSet<>();
|
||||
|
||||
ClassElement() {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,10 +48,6 @@ import javax.xml.bind.annotation.XmlRootElement;
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class ScmModule
|
||||
{
|
||||
|
||||
/** Field description */
|
||||
private static final Unwrapper unwrapper = new Unwrapper();
|
||||
|
||||
//~--- get methods ----------------------------------------------------------
|
||||
|
||||
/**
|
||||
@@ -60,9 +56,9 @@ public class ScmModule
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Iterable<Class<?>> getEvents()
|
||||
public Iterable<ClassElement> getEvents()
|
||||
{
|
||||
return unwrap(events);
|
||||
return nonNull(events);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -82,7 +78,7 @@ public class ScmModule
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Iterable<ExtensionElement> getExtensions()
|
||||
public Iterable<ClassElement> getExtensions()
|
||||
{
|
||||
return nonNull(extensions);
|
||||
}
|
||||
@@ -93,9 +89,9 @@ public class ScmModule
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Iterable<Class<?>> getRestProviders()
|
||||
public Iterable<ClassElement> getRestProviders()
|
||||
{
|
||||
return unwrap(restProviders);
|
||||
return nonNull(restProviders);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -104,9 +100,9 @@ public class ScmModule
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Iterable<Class<?>> getRestResources()
|
||||
public Iterable<ClassElement> getRestResources()
|
||||
{
|
||||
return unwrap(restResources);
|
||||
return nonNull(restResources);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -152,57 +148,6 @@ public class ScmModule
|
||||
return iterable;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @param iterable
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private Iterable<Class<?>> unwrap(Iterable<ClassElement> iterable)
|
||||
{
|
||||
Iterable<Class<?>> unwrapped;
|
||||
|
||||
if (iterable != null)
|
||||
{
|
||||
unwrapped = Iterables.transform(iterable, unwrapper);
|
||||
}
|
||||
else
|
||||
{
|
||||
unwrapped = ImmutableSet.of();
|
||||
}
|
||||
|
||||
return unwrapped;
|
||||
}
|
||||
|
||||
//~--- inner classes --------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Class description
|
||||
*
|
||||
*
|
||||
* @version Enter version here..., 14/03/28
|
||||
* @author Enter your name here...
|
||||
*/
|
||||
private static class Unwrapper implements Function<ClassElement, Class<?>>
|
||||
{
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @param classElement
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Class<?> apply(ClassElement classElement)
|
||||
{
|
||||
return classElement.getClazz();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//~--- fields ---------------------------------------------------------------
|
||||
|
||||
@@ -216,7 +161,7 @@ public class ScmModule
|
||||
|
||||
/** Field description */
|
||||
@XmlElement(name = "extension")
|
||||
private Set<ExtensionElement> extensions;
|
||||
private Set<ClassElement> extensions;
|
||||
|
||||
/** Field description */
|
||||
@XmlElement(name = "rest-provider")
|
||||
|
||||
@@ -63,7 +63,7 @@ public class ScmModuleTest
|
||||
|
||||
//J-
|
||||
assertThat(
|
||||
Iterables.transform(module.getExtensions(), ExtensionElement::getClazz),
|
||||
Iterables.transform(module.getExtensions(), ClassElement::getClazz),
|
||||
containsInAnyOrder(
|
||||
String.class.getName(),
|
||||
Integer.class.getName()
|
||||
|
||||
@@ -39,6 +39,7 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
@@ -60,10 +61,10 @@ public final class ExtensionCollector
|
||||
this.pluginIndex = createPluginIndex(installedPlugins);
|
||||
|
||||
for (ScmModule module : modules) {
|
||||
collectRootElements(module);
|
||||
collectRootElements(moduleClassLoader, module);
|
||||
}
|
||||
for (ScmModule plugin : PluginsInternal.unwrap(installedPlugins)) {
|
||||
collectRootElements(plugin);
|
||||
for (InstalledPlugin plugin : installedPlugins) {
|
||||
collectRootElements(plugin.getClassLoader(), plugin.getDescriptor());
|
||||
}
|
||||
|
||||
for (ScmModule module : modules) {
|
||||
@@ -252,7 +253,7 @@ public final class ExtensionCollector
|
||||
}
|
||||
|
||||
private void collectExtensions(ClassLoader defaultClassLoader, ScmModule module) {
|
||||
for (ExtensionElement extension : module.getExtensions()) {
|
||||
for (ClassElement extension : module.getExtensions()) {
|
||||
if (isRequirementFulfilled(extension)) {
|
||||
Class<?> extensionClass = loadExtension(defaultClassLoader, extension);
|
||||
appendExtension(extensionClass);
|
||||
@@ -260,7 +261,18 @@ public final class ExtensionCollector
|
||||
}
|
||||
}
|
||||
|
||||
private Class<?> loadExtension(ClassLoader classLoader, ExtensionElement extension) {
|
||||
private Set<Class<?>> collectClasses(ClassLoader defaultClassLoader, Iterable<ClassElement> classElements) {
|
||||
Set<Class<?>> classes = new HashSet<>();
|
||||
for (ClassElement element : classElements) {
|
||||
if (isRequirementFulfilled(element)) {
|
||||
Class<?> loadedClass = loadExtension(defaultClassLoader, element);
|
||||
classes.add(loadedClass);
|
||||
}
|
||||
}
|
||||
return classes;
|
||||
}
|
||||
|
||||
private Class<?> loadExtension(ClassLoader classLoader, ClassElement extension) {
|
||||
try {
|
||||
return classLoader.loadClass(extension.getClazz());
|
||||
} catch (ClassNotFoundException ex) {
|
||||
@@ -268,7 +280,7 @@ public final class ExtensionCollector
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isRequirementFulfilled(ExtensionElement extension) {
|
||||
private boolean isRequirementFulfilled(ClassElement extension) {
|
||||
if (extension.getRequires() != null) {
|
||||
for (String requiredPlugin : extension.getRequires()) {
|
||||
if (!pluginIndex.contains(requiredPlugin)) {
|
||||
@@ -286,15 +298,15 @@ public final class ExtensionCollector
|
||||
*
|
||||
* @param module
|
||||
*/
|
||||
private void collectRootElements(ScmModule module)
|
||||
private void collectRootElements(ClassLoader classLoader, ScmModule module)
|
||||
{
|
||||
for (ExtensionPointElement epe : module.getExtensionPoints())
|
||||
{
|
||||
extensionPointIndex.put(epe.getClazz(), epe);
|
||||
}
|
||||
|
||||
restProviders.addAll(Lists.newArrayList(module.getRestProviders()));
|
||||
restResources.addAll(Lists.newArrayList(module.getRestResources()));
|
||||
restProviders.addAll(collectClasses(classLoader, module.getRestProviders()));
|
||||
restResources.addAll(collectClasses(classLoader, module.getRestResources()));
|
||||
Iterables.addAll(webElements, module.getWebElements());
|
||||
}
|
||||
|
||||
|
||||
66
yarn.lock
66
yarn.lock
@@ -5656,7 +5656,7 @@ debug@3.1.0:
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6:
|
||||
debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5:
|
||||
version "3.2.6"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
||||
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
|
||||
@@ -5715,11 +5715,6 @@ deep-equal@^1.0.1, deep-equal@^1.1.1:
|
||||
object-keys "^1.1.1"
|
||||
regexp.prototype.flags "^1.2.0"
|
||||
|
||||
deep-extend@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
|
||||
|
||||
deep-is@~0.1.3:
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
||||
@@ -5835,11 +5830,6 @@ detect-indent@^5.0.0:
|
||||
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
|
||||
integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50=
|
||||
|
||||
detect-libc@^1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
||||
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
|
||||
|
||||
detect-newline@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
|
||||
@@ -8059,7 +8049,7 @@ i18next@^17.3.0:
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.3.1"
|
||||
|
||||
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
|
||||
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13:
|
||||
version "0.4.24"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
||||
@@ -8198,7 +8188,7 @@ inherits@2.0.3:
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
||||
ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
|
||||
ini@^1.3.2, ini@^1.3.4, ini@^1.3.5:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
||||
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
|
||||
@@ -10386,15 +10376,6 @@ nearley@^2.7.10:
|
||||
randexp "0.4.6"
|
||||
semver "^5.4.1"
|
||||
|
||||
needle@^2.2.1:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.1.tgz#14af48732463d7475696f937626b1b993247a56a"
|
||||
integrity sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g==
|
||||
dependencies:
|
||||
debug "^3.2.6"
|
||||
iconv-lite "^0.4.4"
|
||||
sax "^1.2.4"
|
||||
|
||||
negotiator@0.6.2:
|
||||
version "0.6.2"
|
||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
|
||||
@@ -10519,22 +10500,6 @@ node-notifier@^5.4.2:
|
||||
shellwords "^0.1.1"
|
||||
which "^1.3.0"
|
||||
|
||||
node-pre-gyp@*:
|
||||
version "0.14.0"
|
||||
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83"
|
||||
integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==
|
||||
dependencies:
|
||||
detect-libc "^1.0.2"
|
||||
mkdirp "^0.5.1"
|
||||
needle "^2.2.1"
|
||||
nopt "^4.0.1"
|
||||
npm-packlist "^1.1.6"
|
||||
npmlog "^4.0.2"
|
||||
rc "^1.2.7"
|
||||
rimraf "^2.6.1"
|
||||
semver "^5.3.0"
|
||||
tar "^4.4.2"
|
||||
|
||||
node-releases@^1.1.29, node-releases@^1.1.53:
|
||||
version "1.1.53"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4"
|
||||
@@ -10633,7 +10598,7 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1:
|
||||
semver "^5.6.0"
|
||||
validate-npm-package-name "^3.0.0"
|
||||
|
||||
npm-packlist@^1.1.6, npm-packlist@^1.4.4:
|
||||
npm-packlist@^1.4.4:
|
||||
version "1.4.8"
|
||||
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"
|
||||
integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==
|
||||
@@ -10658,7 +10623,7 @@ npm-run-path@^2.0.0:
|
||||
dependencies:
|
||||
path-key "^2.0.0"
|
||||
|
||||
npmlog@^4.0.2, npmlog@^4.1.2:
|
||||
npmlog@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
|
||||
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
|
||||
@@ -12117,16 +12082,6 @@ raw-loader@~0.5.1:
|
||||
resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa"
|
||||
integrity sha1-DD0L6u2KAclm2Xh793goElKpeao=
|
||||
|
||||
rc@^1.2.7:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
|
||||
dependencies:
|
||||
deep-extend "^0.6.0"
|
||||
ini "~1.3.0"
|
||||
minimist "^1.2.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
|
||||
react-clientside-effect@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.2.tgz#6212fb0e07b204e714581dd51992603d1accc837"
|
||||
@@ -13035,7 +12990,7 @@ rimraf@2.6.3:
|
||||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1:
|
||||
rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1:
|
||||
version "2.7.1"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
||||
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
|
||||
@@ -13198,7 +13153,7 @@ selfsigned@^1.10.7:
|
||||
dependencies:
|
||||
node-forge "0.9.0"
|
||||
|
||||
"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
|
||||
"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
||||
@@ -13965,11 +13920,6 @@ strip-json-comments@^3.0.1:
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
|
||||
integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
|
||||
|
||||
strip-json-comments@~2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
|
||||
|
||||
strong-log-transformer@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10"
|
||||
@@ -14113,7 +14063,7 @@ tapable@^1.0.0, tapable@^1.1.3:
|
||||
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
|
||||
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
|
||||
|
||||
tar@^4.4.10, tar@^4.4.12, tar@^4.4.2, tar@^4.4.8:
|
||||
tar@^4.4.10, tar@^4.4.12, tar@^4.4.8:
|
||||
version "4.4.13"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
|
||||
integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
|
||||
|
||||
Reference in New Issue
Block a user