, , and ``` blocks
+ * 3. @deprecated tag if present
+ *
+ * @param type the type to extract Javadoc from.
+ * @param monitor the progress monitor.
+ * @return A string containing description and code snippets in LLM-readable format.
+ */
+ private static String extractRelevantJavaDocContent(org.eclipse.jdt.core.IType type, IProgressMonitor monitor) {
+ try {
+ // Performance optimization: Skip JavaDoc extraction for binary types
+ // getAttachedJavadoc() is EXTREMELY expensive for binary types:
+ // - Requires reading from JAR files (I/O overhead)
+ // - May trigger Maven artifact download from remote repositories (network)
+ // - Involves HTML parsing and DOM manipulation (CPU intensive)
+ // Binary types from JARs are typically well-known libraries that Copilot already understands
+ if (type.isBinary()) {
+ return ""; // Skip expensive JavaDoc extraction for external dependencies
+ }
+
+ String rawJavadoc;
+
+ // Extract JavaDoc from source code (fast - no I/O, no network, no HTML parsing)
+ org.eclipse.jdt.core.ISourceRange javadocRange = type.getJavadocRange();
+ if (javadocRange == null) {
+ return "";
+ }
+ rawJavadoc = type.getCompilationUnit().getSource().substring(javadocRange.getOffset(), javadocRange.getOffset() + javadocRange.getLength());
+
+ if (!isNotEmpty(rawJavadoc)) {
+ return "";
+ }
+
+ StringBuilder result = new StringBuilder();
+ Set seenCodeSnippets = new HashSet<>();
+
+ // Clean Javadoc comment for processing
+ String cleanedJavadoc = cleanJavadocComment(rawJavadoc);
+ cleanedJavadoc = removeHtmlTags(cleanedJavadoc);
+ cleanedJavadoc = convertHtmlEntities(cleanedJavadoc);
+
+ // === High Priority: Extract class description text (first paragraph) ===
+ String description = extractClassDescription(cleanedJavadoc);
+ if (isNotEmpty(description)) {
+ result.append("Description:\n").append(description).append("\n\n");
+ }
+
+ // === Extract code snippets ===
+ // 1. Extract markdown code blocks (```...```)
+ Matcher markdownMatcher = MARKDOWN_CODE_PATTERN.matcher(rawJavadoc);
+ while (markdownMatcher.find()) {
+ String code = markdownMatcher.group(1).trim();
+ if (isNotEmpty(code) && seenCodeSnippets.add(code)) {
+ result.append("```java\n").append(code).append("\n```\n\n");
+ }
+ }
+
+ // 2. Extract HTML and blocks
+ // Priority 1: blocks (often contain well-formatted code)
+ Matcher preMatcher = HTML_PRE_PATTERN.matcher(cleanedJavadoc);
+ while (preMatcher.find()) {
+ String code = preMatcher.group(1).replaceAll("(?i)]*>", "").replaceAll("(?i)", "").trim();
+ if (isNotEmpty(code) && seenCodeSnippets.add(code)) {
+ result.append("```java\n").append(code).append("\n```\n\n");
+ }
+ }
+
+ // Priority 2: blocks (for inline snippets)
+ Matcher codeMatcher = HTML_CODE_PATTERN.matcher(cleanedJavadoc);
+ while (codeMatcher.find()) {
+ String code = codeMatcher.group(1).trim();
+ // Use HashSet for O(1) duplicate checking
+ if (isNotEmpty(code) && seenCodeSnippets.add(code)) {
+ result.append("```java\n").append(code).append("\n```\n\n");
+ }
+ }
+
+ return result.toString().trim();
+
+ } catch (Exception e) {
+ JdtlsExtActivator.logException("Error extracting relevant JavaDoc content for: " + type.getElementName(), e);
+ return "";
+ }
+ }
+
+ /**
+ * Extract the main description paragraph from class JavaDoc (before @tags and code blocks).
+ * Returns the first paragraph of descriptive text, limited to reasonable length.
+ */
+ private static String extractClassDescription(String cleanedJavadoc) {
+ if (cleanedJavadoc == null || cleanedJavadoc.isEmpty()) {
+ return "";
+ }
+
+ // Remove code blocks first to get pure text
+ String textOnly = cleanedJavadoc;
+ textOnly = MARKDOWN_CODE_PATTERN.matcher(textOnly).replaceAll("");
+ textOnly = HTML_PRE_PATTERN.matcher(textOnly).replaceAll("");
+ textOnly = HTML_CODE_PATTERN.matcher(textOnly).replaceAll("");
+
+ // Extract description before @tags
+ String description = extractJavadocDescription(textOnly);
+
+ // Limit to ~2000 characters
+ if (description.length() > 2000) {
+ int breakPoint = findBestBreakpoint(description, 1500, 2100);
+ if (breakPoint != -1) {
+ description = description.substring(0, breakPoint + 1).trim();
+ } else {
+ int lastSpace = description.lastIndexOf(' ', 2000);
+ description = description.substring(0, lastSpace > 1500 ? lastSpace : 2000).trim() + "...";
+ }
+ }
+
+ return description.trim();
+ }
+
+ /**
+ * Clean up raw JavaDoc comment by removing comment markers and asterisks
+ */
+ private static String cleanJavadocComment(String rawJavadoc) {
+ if (rawJavadoc == null || rawJavadoc.isEmpty()) {
+ return "";
+ }
+
+ // Remove opening /** and closing */
+ String cleaned = rawJavadoc;
+ cleaned = cleaned.replaceFirst("^/\\*\\*", "");
+ cleaned = cleaned.replaceFirst("\\*/$", "");
+
+ // Split into lines and clean each line
+ String[] lines = cleaned.split("\\r?\\n");
+ StringBuilder result = new StringBuilder();
+
+ for (String line : lines) {
+ // Remove leading whitespace and asterisk
+ String trimmed = line.trim();
+ if (trimmed.startsWith("*")) {
+ trimmed = trimmed.substring(1).trim();
+ }
+
+ // Skip empty lines at the beginning
+ if (result.length() == 0 && trimmed.isEmpty()) {
+ continue;
+ }
+
+ // Add line to result
+ if (result.length() > 0 && !trimmed.isEmpty()) {
+ result.append("\n");
+ }
+ result.append(trimmed);
+ }
+
+ return result.toString();
+ }
+
+
+ /**
+ * Convert HTML entities to their plain text equivalents
+ */
+ private static String convertHtmlEntities(String text) {
+ if (text == null || text.isEmpty()) {
+ return text;
+ }
+ return text.replace(" ", " ")
+ .replace("<", "<")
+ .replace(">", ">")
+ .replace("&", "&")
+ .replace(""", "\"")
+ .replace("'", "'")
+ .replace("'", "'")
+ .replace("—", "-")
+ .replace("–", "-");
+ }
+
+ /**
+ * Remove all HTML tags from text, keeping only plain text content.
+ * Preserves line breaks for block-level tags like ,
,
.
+ */
+ private static String removeHtmlTags(String text) {
+ if (text == null || text.isEmpty()) {
+ return text;
+ }
+
+ // Replace block-level tags with line breaks
+ text = text.replaceAll("(?i)(p|div|li)>|
|
]*>", "\n");
+
+ // Remove all remaining HTML tags
+ text = text.replaceAll("<[^>]+>", "");
+
+ // Clean up whitespace: collapse spaces, trim lines, limit line breaks
+ text = text.replaceAll("[ \\t]+", " ")
+ .replaceAll(" *\\n *", "\n")
+ .replaceAll("\\n{3,}", "\n\n");
+
+ return text.trim();
+ }
+
+ /**
+ * Extract method JavaDoc content directly for LLM consumption.
+ * Returns cleaned JavaDoc without artificial truncation - let LLM understand the full context.
+ */
+ private static String extractMethodJavaDocSummary(IMethod method) {
+ try {
+ org.eclipse.jdt.core.ISourceRange javadocRange = method.getJavadocRange();
+ if (javadocRange == null) {
+ return "";
+ }
+
+ String rawJavadoc = method.getCompilationUnit().getSource()
+ .substring(javadocRange.getOffset(), javadocRange.getOffset() + javadocRange.getLength());
+
+ if (!isNotEmpty(rawJavadoc)) {
+ return "";
+ }
+
+ // Just clean and return - let LLM understand the full context
+ String cleaned = cleanJavadocComment(rawJavadoc);
+ cleaned = removeHtmlTags(cleaned);
+ return convertHtmlEntities(cleaned);
+
+ } catch (Exception e) {
+ return "";
+ }
+ }
+
+ /**
+ * Extract the main description part from JavaDoc (before @tags)
+ */
+ private static String extractJavadocDescription(String cleanedJavadoc) {
+ if (cleanedJavadoc == null || cleanedJavadoc.isEmpty()) {
+ return "";
+ }
+
+ // Split into lines and extract description before @tags
+ String[] lines = cleanedJavadoc.split("\\n");
+ StringBuilder description = new StringBuilder();
+
+ for (String line : lines) {
+ String trimmedLine = line.trim();
+ // Check if line starts with @tag
+ if (trimmedLine.startsWith("@")) {
+ break; // Stop at first tag
+ }
+
+ // Skip empty lines at the beginning
+ if (description.length() == 0 && trimmedLine.isEmpty()) {
+ continue;
+ }
+
+ if (description.length() > 0) {
+ description.append(" ");
+ }
+ description.append(trimmedLine);
+ }
+
+ return description.toString().trim();
+ }
+
+ /**
+ * Get the first sentence or limit the text to maxLength characters
+ */
+ private static String getFirstSentenceOrLimit(String text, int maxLength) {
+ if (text == null || text.isEmpty()) {
+ return "";
+ }
+
+ // Find first sentence boundary (., !, ?)
+ int firstSentenceEnd = findFirstSentenceBoundary(text);
+
+ // Return first sentence if within reasonable length
+ if (firstSentenceEnd != -1 && firstSentenceEnd < maxLength) {
+ return text.substring(0, firstSentenceEnd + 1).trim();
+ }
+
+ // Otherwise truncate at maxLength with word boundary
+ if (text.length() > maxLength) {
+ int lastSpace = text.lastIndexOf(' ', maxLength);
+ int cutPoint = (lastSpace > maxLength / 2) ? lastSpace : maxLength;
+ return text.substring(0, cutPoint).trim() + "...";
+ }
+
+ return text.trim();
+ }
+
+ /**
+ * Find the first sentence boundary in text
+ */
+ private static int findFirstSentenceBoundary(String text) {
+ int[] boundaries = {text.indexOf(". "), text.indexOf(".\n"), text.indexOf("! "), text.indexOf("? ")};
+ int result = -1;
+ for (int boundary : boundaries) {
+ if (boundary != -1 && (result == -1 || boundary < result)) {
+ result = boundary;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Find the best breakpoint for truncating text within a range
+ */
+ private static int findBestBreakpoint(String text, int minPos, int maxPos) {
+ int[] boundaries = {
+ text.indexOf(". ", minPos),
+ text.indexOf(".\n", minPos),
+ text.indexOf("! ", minPos),
+ text.indexOf("? ", minPos)
+ };
+
+ int result = -1;
+ for (int boundary : boundaries) {
+ if (boundary != -1 && boundary < maxPos && (result == -1 || boundary < result)) {
+ result = boundary;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Extract field JavaDoc content directly for LLM consumption.
+ * Returns cleaned JavaDoc without artificial truncation - let LLM understand the full context.
+ */
+ private static String extractFieldJavaDocSummary(org.eclipse.jdt.core.IField field) {
+ try {
+ org.eclipse.jdt.core.ISourceRange javadocRange = field.getJavadocRange();
+ if (javadocRange == null) {
+ return "";
+ }
+
+ String rawJavadoc = field.getCompilationUnit().getSource()
+ .substring(javadocRange.getOffset(), javadocRange.getOffset() + javadocRange.getLength());
+
+ if (!isNotEmpty(rawJavadoc)) {
+ return "";
+ }
+
+ // Just clean and return - let LLM understand the full context
+ String cleaned = cleanJavadocComment(rawJavadoc);
+ cleaned = removeHtmlTags(cleaned);
+ return convertHtmlEntities(cleaned);
+
+ } catch (Exception e) {
+ return "";
+ }
+ }
+
+ /**
+ * Generate human-readable method signature with JavaDoc description
+ */
+ public static String generateMethodSignature(IMethod method) {
+ return generateMethodSignatureInternal(method, false, true);
+ }
+
+ /**
+ * Generate human-readable field signature with JavaDoc description
+ */
+ public static String generateFieldSignature(org.eclipse.jdt.core.IField field) {
+ return generateFieldSignatureInternal(field, false);
+ }
+
+ /**
+ * Convert JDT type signature to human-readable format
+ */
+ public static String convertTypeSignature(String jdtSignature) {
+ if (jdtSignature == null || jdtSignature.isEmpty()) {
+ return "void";
+ }
+
+ // Handle array types
+ int arrayDimensions = 0;
+ while (jdtSignature.startsWith("[")) {
+ arrayDimensions++;
+ jdtSignature = jdtSignature.substring(1);
+ }
+
+ String baseType;
+
+ // Handle type parameters and reference types (starts with Q)
+ if (jdtSignature.startsWith("Q") && jdtSignature.endsWith(";")) {
+ baseType = jdtSignature.substring(1, jdtSignature.length() - 1);
+ baseType = baseType.replace('/', '.');
+
+ // Handle generic type parameters (e.g., "QResult;")
+ baseType = processGenericTypes(baseType);
+ baseType = simplifyTypeName(baseType);
+ }
+ // Handle fully qualified types (starts with L)
+ else if (jdtSignature.startsWith("L") && jdtSignature.endsWith(";")) {
+ baseType = jdtSignature.substring(1, jdtSignature.length() - 1);
+ baseType = baseType.replace('/', '.');
+
+ // Handle generic type parameters
+ baseType = processGenericTypes(baseType);
+ baseType = simplifyTypeName(baseType);
+ }
+ // Handle primitive types
+ else {
+ switch (jdtSignature.charAt(0)) {
+ case 'I': baseType = "int"; break;
+ case 'Z': baseType = "boolean"; break;
+ case 'V': baseType = "void"; break;
+ case 'J': baseType = "long"; break;
+ case 'F': baseType = "float"; break;
+ case 'D': baseType = "double"; break;
+ case 'B': baseType = "byte"; break;
+ case 'C': baseType = "char"; break;
+ case 'S': baseType = "short"; break;
+ default: baseType = jdtSignature;
+ }
+ }
+
+ // Add array markers
+ for (int i = 0; i < arrayDimensions; i++) {
+ baseType += "[]";
+ }
+
+ return baseType;
+ }
+
+ /**
+ * Process generic type parameters in a type name
+ * Example: "Result" -> "Result"
+ */
+ private static String processGenericTypes(String typeName) {
+ if (typeName == null || !typeName.contains("<")) {
+ return typeName;
+ }
+
+ StringBuilder result = new StringBuilder();
+ int i = 0;
+
+ while (i < typeName.length()) {
+ char c = typeName.charAt(i);
+
+ if (c == '<' || c == ',' || c == ' ') {
+ // Keep angle brackets, commas, and spaces
+ result.append(c);
+ i++;
+
+ // Skip whitespace after comma or opening bracket
+ while (i < typeName.length() && typeName.charAt(i) == ' ') {
+ result.append(' ');
+ i++;
+ }
+
+ // Check if next is a type parameter (Q or L prefix)
+ if (i < typeName.length()) {
+ char next = typeName.charAt(i);
+
+ if (next == 'Q' || next == 'L') {
+ // Find the end of this type parameter (marked by ;)
+ int endIndex = typeName.indexOf(';', i);
+ if (endIndex != -1) {
+ // Extract the type parameter and convert it
+ String typeParam = typeName.substring(i + 1, endIndex);
+
+ // Recursively process nested generics
+ typeParam = processGenericTypes(typeParam);
+ typeParam = simplifyTypeName(typeParam);
+
+ result.append(typeParam);
+ i = endIndex + 1; // Skip past the semicolon
+ } else {
+ result.append(next);
+ i++;
+ }
+ } else {
+ // Not a type parameter, just append
+ result.append(next);
+ i++;
+ }
+ }
+ } else {
+ result.append(c);
+ i++;
+ }
+ }
+
+ return result.toString();
+ }
+
+ /**
+ * Simplify fully qualified type name to just the simple name
+ */
+ private static String simplifyTypeName(String qualifiedName) {
+ if (qualifiedName == null) {
+ return qualifiedName;
+ }
+ int lastDot = qualifiedName.lastIndexOf('.');
+ return lastDot == -1 ? qualifiedName : qualifiedName.substring(lastDot + 1);
+ }
+
+
+
+ /**
+ * Unified method signature generator (handles both source and binary types)
+ * @param simplified true for binary types (no parameter names, no JavaDoc)
+ * @param includeJavadoc true to include JavaDoc comments
+ */
+ private static String generateMethodSignatureInternal(IMethod method, boolean simplified, boolean includeJavadoc) {
+ try {
+ StringBuilder sb = new StringBuilder();
+ int flags = method.getFlags();
+
+ // Modifiers
+ if (org.eclipse.jdt.core.Flags.isPublic(flags)) sb.append("public ");
+ if (!simplified) {
+ if (org.eclipse.jdt.core.Flags.isProtected(flags)) sb.append("protected ");
+ if (org.eclipse.jdt.core.Flags.isPrivate(flags)) sb.append("private ");
+ }
+ if (org.eclipse.jdt.core.Flags.isStatic(flags)) sb.append("static ");
+ if (org.eclipse.jdt.core.Flags.isFinal(flags)) sb.append("final ");
+ if (org.eclipse.jdt.core.Flags.isAbstract(flags)) sb.append("abstract ");
+
+ // Type parameters (only for non-simplified)
+ if (!simplified) {
+ @SuppressWarnings("deprecation")
+ String[] typeParameters = method.getTypeParameterSignatures();
+ if (typeParameters != null && typeParameters.length > 0) {
+ sb.append("<");
+ for (int i = 0; i < typeParameters.length; i++) {
+ if (i > 0) sb.append(", ");
+ sb.append(convertTypeSignature(typeParameters[i]));
+ }
+ sb.append("> ");
+ }
+ }
+
+ // Return type (skip for constructors)
+ if (!method.isConstructor()) {
+ String returnType = simplified ?
+ simplifyTypeName(org.eclipse.jdt.core.Signature.toString(method.getReturnType())) :
+ convertTypeSignature(method.getReturnType());
+ sb.append(returnType).append(" ");
+ }
+
+ // Method name and parameters
+ sb.append(method.getElementName()).append("(");
+ String[] paramTypes = method.getParameterTypes();
+ String[] paramNames = simplified ? null : method.getParameterNames();
+
+ for (int i = 0; i < paramTypes.length; i++) {
+ if (i > 0) sb.append(", ");
+ String paramType = simplified ?
+ simplifyTypeName(org.eclipse.jdt.core.Signature.toString(paramTypes[i])) :
+ convertTypeSignature(paramTypes[i]);
+ sb.append(paramType);
+ if (paramNames != null && i < paramNames.length) {
+ sb.append(" ").append(paramNames[i]);
+ }
+ }
+ sb.append(")");
+
+ // Exception declarations (only for non-simplified)
+ if (!simplified) {
+ String[] exceptionTypes = method.getExceptionTypes();
+ if (exceptionTypes != null && exceptionTypes.length > 0) {
+ sb.append(" throws ");
+ for (int i = 0; i < exceptionTypes.length; i++) {
+ if (i > 0) sb.append(", ");
+ sb.append(convertTypeSignature(exceptionTypes[i]));
+ }
+ }
+ } else {
+ sb.append(";");
+ }
+
+ // Add JavaDoc if requested
+ if (includeJavadoc) {
+ String javadocSummary = extractMethodJavaDocSummary(method);
+ if (javadocSummary != null && !javadocSummary.isEmpty()) {
+ return "// " + javadocSummary + "\n " + sb.toString();
+ }
+ }
+
+ return sb.toString();
+ } catch (JavaModelException e) {
+ return simplified ? "// Error generating method signature" : method.getElementName() + "(...)";
+ }
+ }
+
+ /**
+ * Unified field signature generator (handles both source and binary types)
+ * @param simplified true for binary types (no constant values, no JavaDoc)
+ */
+ private static String generateFieldSignatureInternal(org.eclipse.jdt.core.IField field, boolean simplified) {
+ try {
+ StringBuilder sb = new StringBuilder();
+ int flags = field.getFlags();
+
+ // Modifiers
+ if (org.eclipse.jdt.core.Flags.isPublic(flags)) sb.append("public ");
+ if (!simplified) {
+ if (org.eclipse.jdt.core.Flags.isProtected(flags)) sb.append("protected ");
+ if (org.eclipse.jdt.core.Flags.isPrivate(flags)) sb.append("private ");
+ }
+ if (org.eclipse.jdt.core.Flags.isStatic(flags)) sb.append("static ");
+ if (org.eclipse.jdt.core.Flags.isFinal(flags)) sb.append("final ");
+
+ // Type and name
+ String fieldType = simplified ?
+ simplifyTypeName(org.eclipse.jdt.core.Signature.toString(field.getTypeSignature())) :
+ convertTypeSignature(field.getTypeSignature());
+ sb.append(fieldType).append(" ").append(field.getElementName());
+
+ // Constant value (only for non-simplified)
+ if (!simplified && org.eclipse.jdt.core.Flags.isStatic(flags) && org.eclipse.jdt.core.Flags.isFinal(flags)) {
+ Object constant = field.getConstant();
+ if (constant != null) {
+ sb.append(" = ");
+ if (constant instanceof String) {
+ sb.append("\"").append(constant).append("\"");
+ } else {
+ sb.append(constant);
+ }
+ }
+ }
+
+ if (simplified) {
+ sb.append(";");
+ }
+
+ // Add JavaDoc if not simplified
+ if (!simplified) {
+ String javadocSummary = extractFieldJavaDocSummary(field);
+ if (javadocSummary != null && !javadocSummary.isEmpty()) {
+ return "// " + javadocSummary + "\n " + sb.toString();
+ }
+ }
+
+ return sb.toString();
+ } catch (JavaModelException e) {
+ return simplified ? "// Error generating field signature" : field.getElementName();
+ }
+ }
+
+ /**
+ * Utility method to check if a string is not empty or null
+ */
+ private static boolean isNotEmpty(String value) {
+ return value != null && !value.isEmpty();
+ }
+}
diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/parser/ProjectResolver.java b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/parser/ProjectResolver.java
new file mode 100644
index 00000000..f00c7b39
--- /dev/null
+++ b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/parser/ProjectResolver.java
@@ -0,0 +1,458 @@
+package com.microsoft.jdtls.ext.core.parser;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jdt.core.ElementChangedEvent;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IElementChangedListener;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaElementDelta;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.jdt.ls.core.internal.JDTUtils;
+
+import com.microsoft.jdtls.ext.core.JdtlsExtActivator;
+
+public class ProjectResolver {
+
+ // Cache for project dependency information
+ private static final Map dependencyCache = new ConcurrentHashMap<>();
+
+ // Flag to track if listeners are registered
+ private static volatile boolean listenersRegistered = false;
+
+ // Lock for listener registration
+ private static final Object listenerLock = new Object();
+
+ /**
+ * Cached dependency information with timestamp
+ */
+ private static class CachedDependencyInfo {
+ final List dependencies;
+ final long timestamp;
+ final long classpathHash;
+
+ CachedDependencyInfo(List dependencies, long classpathHash) {
+ this.dependencies = new ArrayList<>(dependencies);
+ this.timestamp = System.currentTimeMillis();
+ this.classpathHash = classpathHash;
+ }
+
+ boolean isValid() {
+ // Cache is valid for 5 minutes
+ return (System.currentTimeMillis() - timestamp) < 300000;
+ }
+ }
+
+ /**
+ * Listener for Java element changes (classpath changes, project references, etc.)
+ */
+ private static final IElementChangedListener javaElementListener = new IElementChangedListener() {
+ @Override
+ public void elementChanged(ElementChangedEvent event) {
+ IJavaElementDelta delta = event.getDelta();
+ processDelta(delta);
+ }
+
+ private void processDelta(IJavaElementDelta delta) {
+ IJavaElement element = delta.getElement();
+ int flags = delta.getFlags();
+
+ // Check for classpath changes
+ if ((flags & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0 ||
+ (flags & IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED) != 0) {
+
+ if (element instanceof IJavaProject) {
+ IJavaProject project = (IJavaProject) element;
+ invalidateCache(project.getProject());
+ }
+ }
+
+ // Recursively process children
+ for (IJavaElementDelta child : delta.getAffectedChildren()) {
+ processDelta(child);
+ }
+ }
+ };
+
+ /**
+ * Listener for resource changes (pom.xml, build.gradle, etc.)
+ */
+ private static final IResourceChangeListener resourceListener = new IResourceChangeListener() {
+ @Override
+ public void resourceChanged(IResourceChangeEvent event) {
+ if (event.getType() != IResourceChangeEvent.POST_CHANGE) {
+ return;
+ }
+
+ IResourceDelta delta = event.getDelta();
+ if (delta == null) {
+ return;
+ }
+
+ try {
+ delta.accept(new IResourceDeltaVisitor() {
+ @Override
+ public boolean visit(IResourceDelta delta) throws CoreException {
+ IResource resource = delta.getResource();
+
+ // Check for build file changes
+ if (resource.getType() == IResource.FILE) {
+ String fileName = resource.getName();
+ if ("pom.xml".equals(fileName) ||
+ "build.gradle".equals(fileName) ||
+ "build.gradle.kts".equals(fileName) ||
+ ".classpath".equals(fileName) ||
+ ".project".equals(fileName)) {
+
+ IProject project = resource.getProject();
+ if (project != null) {
+ invalidateCache(project);
+ }
+ }
+ }
+ return true;
+ }
+ });
+ } catch (CoreException e) {
+ JdtlsExtActivator.logException("Error processing resource delta", e);
+ }
+ }
+ };
+
+ /**
+ * Initialize listeners for cache invalidation
+ */
+ private static void ensureListenersRegistered() {
+ if (!listenersRegistered) {
+ synchronized (listenerLock) {
+ if (!listenersRegistered) {
+ try {
+ // Register Java element change listener
+ JavaCore.addElementChangedListener(javaElementListener,
+ ElementChangedEvent.POST_CHANGE);
+
+ // Register resource change listener
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(
+ resourceListener,
+ IResourceChangeEvent.POST_CHANGE);
+
+ listenersRegistered = true;
+ JdtlsExtActivator.logInfo("ProjectResolver cache listeners registered successfully");
+ } catch (Exception e) {
+ JdtlsExtActivator.logException("Failed to register ProjectResolver listeners", e);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Invalidate cache for a specific project
+ */
+ private static void invalidateCache(IProject project) {
+ if (project == null) {
+ return;
+ }
+
+ String projectUri = JDTUtils.getFileURI(project);
+
+ if (dependencyCache.remove(projectUri) != null) {
+ JdtlsExtActivator.logInfo("Cache invalidated for project: " + project.getName());
+ }
+ }
+
+ /**
+ * Clear all cached dependency information
+ */
+ public static void clearCache() {
+ dependencyCache.clear();
+ JdtlsExtActivator.logInfo("ProjectResolver cache cleared");
+ }
+
+ /**
+ * Calculate a simple hash of classpath entries for cache validation
+ */
+ private static long calculateClasspathHash(IJavaProject javaProject) {
+ try {
+ IClasspathEntry[] entries = javaProject.getResolvedClasspath(true);
+ long hash = 0;
+ for (IClasspathEntry entry : entries) {
+ hash = hash * 31 + entry.getPath().toString().hashCode();
+ hash = hash * 31 + entry.getEntryKind();
+ }
+ return hash;
+ } catch (JavaModelException e) {
+ return 0;
+ }
+ }
+
+ // Constants for dependency info keys
+ private static final String KEY_BUILD_TOOL = "buildTool";
+ private static final String KEY_PROJECT_NAME = "projectName";
+ private static final String KEY_PROJECT_LOCATION = "projectLocation";
+ private static final String KEY_JAVA_VERSION = "javaVersion";
+ private static final String KEY_SOURCE_COMPATIBILITY = "sourceCompatibility";
+ private static final String KEY_TARGET_COMPATIBILITY = "targetCompatibility";
+ private static final String KEY_MODULE_NAME = "moduleName";
+ private static final String KEY_TOTAL_LIBRARIES = "totalLibraries";
+ private static final String KEY_TOTAL_PROJECT_REFS = "totalProjectReferences";
+ private static final String KEY_JRE_CONTAINER = "jreContainer";
+
+ public static class DependencyInfo {
+ public String key;
+ public String value;
+
+ public DependencyInfo(String key, String value) {
+ this.key = key;
+ this.value = value;
+ }
+ }
+
+ /**
+ * Resolve project dependencies information including JDK version.
+ * Supports both single projects and multi-module aggregator projects.
+ *
+ * @param fileUri The file URI
+ * @param monitor Progress monitor for cancellation support
+ * @return List of DependencyInfo containing key-value pairs of project information
+ */
+ public static List resolveProjectDependencies(String fileUri, IProgressMonitor monitor) {
+ // Ensure listeners are registered for cache invalidation
+ ensureListenersRegistered();
+
+ List result = new ArrayList<>();
+
+ try {
+ // Use JDTUtils to convert URI and find the resource
+ java.net.URI uri = JDTUtils.toURI(fileUri);
+ IResource resource = JDTUtils.findResource(uri,
+ ResourcesPlugin.getWorkspace().getRoot()::findFilesForLocationURI);
+
+ if (resource == null) {
+ return result;
+ }
+
+ IProject project = resource.getProject();
+ if (project == null || !project.isAccessible()) {
+ return result;
+ }
+
+ IJavaProject javaProject = JavaCore.create(project);
+ // Check if this is a Java project
+ if (javaProject == null || !javaProject.exists()) {
+ return result;
+ }
+
+ // Generate cache key based on project URI
+ String cacheKey = JDTUtils.getFileURI(project);
+
+ // Calculate current classpath hash for validation
+ long currentClasspathHash = calculateClasspathHash(javaProject);
+
+ // Try to get from cache
+ CachedDependencyInfo cached = dependencyCache.get(cacheKey);
+ if (cached != null && cached.isValid() && cached.classpathHash == currentClasspathHash) {
+ JdtlsExtActivator.logInfo("Using cached dependencies for project: " + project.getName());
+ return new ArrayList<>(cached.dependencies);
+ }
+
+ // Add basic project information
+ addBasicProjectInfo(result, project, javaProject);
+
+ // Get classpath entries (dependencies)
+ processClasspathEntries(result, javaProject, monitor);
+
+ // Add build tool info by checking for build files
+ detectBuildTool(result, project);
+
+ // Store in cache
+ dependencyCache.put(cacheKey, new CachedDependencyInfo(result, currentClasspathHash));
+
+ } catch (Exception e) {
+ JdtlsExtActivator.logException("Error in resolveProjectDependencies", e);
+ }
+
+ return result;
+ }
+
+ /**
+ * Add basic project information including name, location, and Java version settings.
+ */
+ private static void addBasicProjectInfo(List result, IProject project, IJavaProject javaProject) {
+ result.add(new DependencyInfo(KEY_PROJECT_NAME, project.getName()));
+
+ addIfNotNull(result, KEY_PROJECT_LOCATION, JDTUtils.getFileURI(project));
+
+ addIfNotNull(result, KEY_JAVA_VERSION,
+ javaProject.getOption(JavaCore.COMPILER_COMPLIANCE, true));
+
+ addIfNotNull(result, KEY_SOURCE_COMPATIBILITY,
+ javaProject.getOption(JavaCore.COMPILER_SOURCE, true));
+
+ addIfNotNull(result, KEY_TARGET_COMPATIBILITY,
+ javaProject.getOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, true));
+
+ addIfNotNull(result, KEY_MODULE_NAME, getModuleName(javaProject));
+ }
+
+ /**
+ * Process classpath entries to extract library and project reference information.
+ */
+ private static void processClasspathEntries(List result, IJavaProject javaProject, IProgressMonitor monitor) {
+ try {
+ IClasspathEntry[] classpathEntries = javaProject.getResolvedClasspath(true);
+ int libCount = 0;
+ int projectRefCount = 0;
+
+ for (IClasspathEntry entry : classpathEntries) {
+ if (monitor.isCanceled()) {
+ break;
+ }
+
+ switch (entry.getEntryKind()) {
+ case IClasspathEntry.CPE_LIBRARY:
+ libCount++;
+ processLibraryEntry(result, entry, libCount);
+ break;
+ case IClasspathEntry.CPE_PROJECT:
+ projectRefCount++;
+ processProjectEntry(result, entry, projectRefCount);
+ break;
+ case IClasspathEntry.CPE_CONTAINER:
+ processContainerEntry(result, entry);
+ break;
+ }
+ }
+
+ // Add summary counts
+ result.add(new DependencyInfo(KEY_TOTAL_LIBRARIES, String.valueOf(libCount)));
+ result.add(new DependencyInfo(KEY_TOTAL_PROJECT_REFS, String.valueOf(projectRefCount)));
+
+ } catch (JavaModelException e) {
+ JdtlsExtActivator.logException("Error getting classpath entries", e);
+ }
+ }
+
+ /**
+ * Process a library classpath entry.
+ * Only returns the library file name without full path to reduce data size.
+ */
+ private static void processLibraryEntry(List result, IClasspathEntry entry, int libCount) {
+ IPath libPath = entry.getPath();
+ if (libPath != null) {
+ // Only keep the file name, remove the full path
+ result.add(new DependencyInfo("library_" + libCount, libPath.lastSegment()));
+ }
+ }
+
+ /**
+ * Process a project reference classpath entry.
+ * Simplified to only extract essential information.
+ */
+ private static void processProjectEntry(List result, IClasspathEntry entry, int projectRefCount) {
+ IPath projectRefPath = entry.getPath();
+ if (projectRefPath != null) {
+ result.add(new DependencyInfo("projectReference_" + projectRefCount,
+ projectRefPath.lastSegment()));
+ }
+ }
+
+ /**
+ * Process a container classpath entry (JRE, Maven, Gradle containers).
+ */
+ private static void processContainerEntry(List result, IClasspathEntry entry) {
+ String containerPath = entry.getPath().toString();
+
+ if (containerPath.contains("JRE_CONTAINER")) {
+ // Only extract the JRE version, not the full container path
+ try {
+ String vmInstallName = JavaRuntime.getVMInstallName(entry.getPath());
+ addIfNotNull(result, KEY_JRE_CONTAINER, vmInstallName);
+ } catch (Exception e) {
+ // Fallback: try to extract version from path
+ if (containerPath.contains("JavaSE-")) {
+ int startIdx = containerPath.lastIndexOf("JavaSE-");
+ String version = containerPath.substring(startIdx);
+ // Clean up any trailing characters
+ if (version.contains("/")) {
+ version = version.substring(0, version.indexOf("/"));
+ }
+ result.add(new DependencyInfo(KEY_JRE_CONTAINER, version));
+ }
+ }
+ } else if (containerPath.contains("MAVEN")) {
+ result.add(new DependencyInfo(KEY_BUILD_TOOL, "Maven"));
+ } else if (containerPath.contains("GRADLE")) {
+ result.add(new DependencyInfo(KEY_BUILD_TOOL, "Gradle"));
+ }
+ }
+
+ /**
+ * Detect build tool by checking for build configuration files.
+ * Only adds if not already detected from classpath containers.
+ */
+ private static void detectBuildTool(List result, IProject project) {
+ // Check if buildTool already set from container
+ if (hasBuildToolInfo(result)) {
+ return;
+ }
+
+ if (project.getFile("pom.xml").exists()) {
+ result.add(new DependencyInfo(KEY_BUILD_TOOL, "Maven"));
+ } else if (project.getFile("build.gradle").exists() || project.getFile("build.gradle.kts").exists()) {
+ result.add(new DependencyInfo(KEY_BUILD_TOOL, "Gradle"));
+ }
+ }
+
+ /**
+ * Get module name for a Java project.
+ */
+ private static String getModuleName(IJavaProject project) {
+ if (project == null || !JavaRuntime.isModularProject(project)) {
+ return null;
+ }
+ try {
+ org.eclipse.jdt.core.IModuleDescription module = project.getModuleDescription();
+ return module != null ? module.getElementName() : null;
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ /**
+ * Helper method to add dependency info only if value is not null.
+ */
+ private static void addIfNotNull(List result, String key, String value) {
+ if (value != null) {
+ result.add(new DependencyInfo(key, value));
+ }
+ }
+
+ /**
+ * Check if buildTool info is already present in result list.
+ */
+ private static boolean hasBuildToolInfo(List result) {
+ for (DependencyInfo info : result) {
+ if (KEY_BUILD_TOOL.equals(info.key)) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/parser/ResourceSet.java b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/parser/ResourceSet.java
index dde7eec5..55bfeb89 100644
--- a/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/parser/ResourceSet.java
+++ b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/parser/ResourceSet.java
@@ -16,6 +16,7 @@
import java.util.Objects;
import org.eclipse.core.internal.utils.FileUtil;
+import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
@@ -109,7 +110,9 @@ public void accept(ResourceVisitor visitor) {
visitor.visit((IFile) resource);
}
} else if (resource instanceof IFolder) {
- if (shouldVisit((IFolder) resource)) {
+ if (shouldVisit((IFolder) resource)
+ && (!containsSourceClasspathEntry((IFolder) resource)
+ || hasVisibleNonJavaResources((IFolder) resource))) {
visitor.visit((IFolder) resource);
}
} else if (resource instanceof IJarEntryResource) {
@@ -152,4 +155,49 @@ private boolean shouldVisit(IResource resource) {
return JavaCore.create(resource) == null;
}
+
+ private boolean containsSourceClasspathEntry(IContainer container) {
+ try {
+ IJavaProject javaProject = JavaCore.create(container.getProject());
+ if (javaProject == null) {
+ return false;
+ }
+ IPath containerPath = container.getFullPath();
+ if (containerPath.equals(javaProject.getOutputLocation())) {
+ return false;
+ }
+ for (IClasspathEntry entry : javaProject.getRawClasspath()) {
+ if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE
+ && containerPath.isPrefixOf(entry.getPath())) {
+ return true;
+ }
+ }
+ } catch (CoreException e) {
+ JdtlsExtActivator.logException("Failed to inspect Java source entries", e);
+ }
+ return false;
+ }
+
+ private boolean hasVisibleNonJavaResources(IContainer container) {
+ try {
+ for (IResource member : container.members()) {
+ if (JavaCore.create(member) != null) {
+ continue;
+ }
+ if (member instanceof IFile) {
+ return true;
+ }
+ if (member instanceof IContainer) {
+ IContainer child = (IContainer) member;
+ if (!containsSourceClasspathEntry(child) || hasVisibleNonJavaResources(child)) {
+ return true;
+ }
+ }
+ }
+ } catch (CoreException e) {
+ JdtlsExtActivator.logException("Failed to inspect non-Java resources", e);
+ return true;
+ }
+ return false;
+ }
}
diff --git a/jdtls.ext/com.microsoft.jdtls.ext.target/com.microsoft.jdtls.ext.tp.target b/jdtls.ext/com.microsoft.jdtls.ext.target/com.microsoft.jdtls.ext.tp.target
index daa2dbf1..9a0e618b 100644
--- a/jdtls.ext/com.microsoft.jdtls.ext.target/com.microsoft.jdtls.ext.tp.target
+++ b/jdtls.ext/com.microsoft.jdtls.ext.target/com.microsoft.jdtls.ext.tp.target
@@ -10,20 +10,16 @@
-
+
-
+
-
-
-
-
diff --git a/jdtls.ext/com.microsoft.jdtls.ext.target/pom.xml b/jdtls.ext/com.microsoft.jdtls.ext.target/pom.xml
index 405b4e1a..4fae28b3 100644
--- a/jdtls.ext/com.microsoft.jdtls.ext.target/pom.xml
+++ b/jdtls.ext/com.microsoft.jdtls.ext.target/pom.xml
@@ -4,7 +4,7 @@
com.microsoft.jdtls.ext
jdtls-ext-parent
- 0.24.0
+ 0.24.1
com.microsoft.jdtls.ext.tp
${base.name} :: Target Platform
diff --git a/jdtls.ext/mvnw b/jdtls.ext/mvnw
index e96ccd5f..e9cf8d33 100755
--- a/jdtls.ext/mvnw
+++ b/jdtls.ext/mvnw
@@ -19,209 +19,277 @@
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
-# Maven2 Start Up Batch script
-#
-# Required ENV vars:
-# ------------------
-# JAVA_HOME - location of a JDK home dir
+# Apache Maven Wrapper startup batch script, version 3.3.3
#
# Optional ENV vars
# -----------------
-# M2_HOME - location of maven2's installed home dir
-# MAVEN_OPTS - parameters passed to the Java VM when running Maven
-# e.g. to debug Maven itself, use
-# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+# JAVA_HOME - location of a JDK home dir, required when download maven via java source
+# MVNW_REPOURL - repo url base for downloading maven distribution
+# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
+# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
# ----------------------------------------------------------------------------
-if [ -z "$MAVEN_SKIP_RC" ] ; then
-
- if [ -f /etc/mavenrc ] ; then
- . /etc/mavenrc
- fi
+set -euf
+[ "${MVNW_VERBOSE-}" != debug ] || set -x
- if [ -f "$HOME/.mavenrc" ] ; then
- . "$HOME/.mavenrc"
- fi
+# OS specific support.
+native_path() { printf %s\\n "$1"; }
+case "$(uname)" in
+CYGWIN* | MINGW*)
+ [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
+ native_path() { cygpath --path --windows "$1"; }
+ ;;
+esac
-fi
+# set JAVACMD and JAVACCMD
+set_java_home() {
+ # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
+ if [ -n "${JAVA_HOME-}" ]; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ]; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACCMD="$JAVA_HOME/jre/sh/javac"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ JAVACCMD="$JAVA_HOME/bin/javac"
-# OS specific support. $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-mingw=false
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
- MINGW*) mingw=true;;
- Darwin*) darwin=true
- # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
- # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
- if [ -z "$JAVA_HOME" ]; then
- if [ -x "/usr/libexec/java_home" ]; then
- export JAVA_HOME="`/usr/libexec/java_home`"
- else
- export JAVA_HOME="/Library/Java/Home"
+ if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
+ echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
+ echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
+ return 1
fi
fi
- ;;
-esac
+ else
+ JAVACMD="$(
+ 'set' +e
+ 'unset' -f command 2>/dev/null
+ 'command' -v java
+ )" || :
+ JAVACCMD="$(
+ 'set' +e
+ 'unset' -f command 2>/dev/null
+ 'command' -v javac
+ )" || :
-if [ -z "$JAVA_HOME" ] ; then
- if [ -r /etc/gentoo-release ] ; then
- JAVA_HOME=`java-config --jre-home`
+ if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
+ echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
+ return 1
+ fi
fi
-fi
-
-if [ -z "$M2_HOME" ] ; then
- ## resolve links - $0 may be a link to maven's home
- PRG="$0"
+}
- # need this for relative symlinks
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG="`dirname "$PRG"`/$link"
- fi
+# hash string like Java String::hashCode
+hash_string() {
+ str="${1:-}" h=0
+ while [ -n "$str" ]; do
+ char="${str%"${str#?}"}"
+ h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
+ str="${str#?}"
done
+ printf %x\\n $h
+}
+
+verbose() { :; }
+[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
- saveddir=`pwd`
+die() {
+ printf %s\\n "$1" >&2
+ exit 1
+}
+
+trim() {
+ # MWRAPPER-139:
+ # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
+ # Needed for removing poorly interpreted newline sequences when running in more
+ # exotic environments such as mingw bash on Windows.
+ printf "%s" "${1}" | tr -d '[:space:]'
+}
+
+scriptDir="$(dirname "$0")"
+scriptName="$(basename "$0")"
+
+# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
+while IFS="=" read -r key value; do
+ case "${key-}" in
+ distributionUrl) distributionUrl=$(trim "${value-}") ;;
+ distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
+ esac
+done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties"
+[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
+
+case "${distributionUrl##*/}" in
+maven-mvnd-*bin.*)
+ MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
+ case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
+ *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
+ :Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
+ :Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
+ :Linux*x86_64*) distributionPlatform=linux-amd64 ;;
+ *)
+ echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
+ distributionPlatform=linux-amd64
+ ;;
+ esac
+ distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
+ ;;
+maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
+*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
+esac
- M2_HOME=`dirname "$PRG"`/..
+# apply MVNW_REPOURL and calculate MAVEN_HOME
+# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/
+[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
+distributionUrlName="${distributionUrl##*/}"
+distributionUrlNameMain="${distributionUrlName%.*}"
+distributionUrlNameMain="${distributionUrlNameMain%-bin}"
+MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
+MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
- # make it fully qualified
- M2_HOME=`cd "$M2_HOME" && pwd`
+exec_maven() {
+ unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
+ exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
+}
- cd "$saveddir"
- # echo Using m2 at $M2_HOME
+if [ -d "$MAVEN_HOME" ]; then
+ verbose "found existing MAVEN_HOME at $MAVEN_HOME"
+ exec_maven "$@"
fi
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
- [ -n "$M2_HOME" ] &&
- M2_HOME=`cygpath --unix "$M2_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+case "${distributionUrl-}" in
+*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
+*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
+esac
+
+# prepare tmp dir
+if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
+ clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
+ trap clean HUP INT TERM EXIT
+else
+ die "cannot create temp dir"
fi
-# For Mingw, ensure paths are in UNIX format before anything is touched
-if $mingw ; then
- [ -n "$M2_HOME" ] &&
- M2_HOME="`(cd "$M2_HOME"; pwd)`"
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
- # TODO classpath?
+mkdir -p -- "${MAVEN_HOME%/*}"
+
+# Download and Install Apache Maven
+verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
+verbose "Downloading from: $distributionUrl"
+verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
+
+# select .zip or .tar.gz
+if ! command -v unzip >/dev/null; then
+ distributionUrl="${distributionUrl%.zip}.tar.gz"
+ distributionUrlName="${distributionUrl##*/}"
fi
-if [ -z "$JAVA_HOME" ]; then
- javaExecutable="`which javac`"
- if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
- # readlink(1) is not available as standard on Solaris 10.
- readLink=`which readlink`
- if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
- if $darwin ; then
- javaHome="`dirname \"$javaExecutable\"`"
- javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
- else
- javaExecutable="`readlink -f \"$javaExecutable\"`"
- fi
- javaHome="`dirname \"$javaExecutable\"`"
- javaHome=`expr "$javaHome" : '\(.*\)/bin'`
- JAVA_HOME="$javaHome"
- export JAVA_HOME
- fi
- fi
+# verbose opt
+__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
+[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
+
+# normalize http auth
+case "${MVNW_PASSWORD:+has-password}" in
+'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
+has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
+esac
+
+if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
+ verbose "Found wget ... using wget"
+ wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
+elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
+ verbose "Found curl ... using curl"
+ curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
+elif set_java_home; then
+ verbose "Falling back to use Java to download"
+ javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
+ targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
+ cat >"$javaSource" <<-END
+ public class Downloader extends java.net.Authenticator
+ {
+ protected java.net.PasswordAuthentication getPasswordAuthentication()
+ {
+ return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
+ }
+ public static void main( String[] args ) throws Exception
+ {
+ setDefault( new Downloader() );
+ java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
+ }
+ }
+ END
+ # For Cygwin/MinGW, switch paths to Windows format before running javac and java
+ verbose " - Compiling Downloader.java ..."
+ "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
+ verbose " - Running Downloader.java ..."
+ "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
fi
-if [ -z "$JAVACMD" ] ; then
- if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
+# If specified, validate the SHA-256 sum of the Maven distribution zip file
+if [ -n "${distributionSha256Sum-}" ]; then
+ distributionSha256Result=false
+ if [ "$MVN_CMD" = mvnd.sh ]; then
+ echo "Checksum validation is not supported for maven-mvnd." >&2
+ echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
+ exit 1
+ elif command -v sha256sum >/dev/null; then
+ if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then
+ distributionSha256Result=true
+ fi
+ elif command -v shasum >/dev/null; then
+ if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
+ distributionSha256Result=true
fi
else
- JAVACMD="`which java`"
+ echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
+ echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
+ exit 1
+ fi
+ if [ $distributionSha256Result = false ]; then
+ echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
+ echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
+ exit 1
fi
fi
-if [ ! -x "$JAVACMD" ] ; then
- echo "Error: JAVA_HOME is not defined correctly." >&2
- echo " We cannot execute $JAVACMD" >&2
- exit 1
-fi
-
-if [ -z "$JAVA_HOME" ] ; then
- echo "Warning: JAVA_HOME environment variable is not set."
+# unzip and move
+if command -v unzip >/dev/null; then
+ unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
+else
+ tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
fi
-CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
-
-# traverses directory structure from process work directory to filesystem root
-# first directory with .mvn subdirectory is considered project base directory
-find_maven_basedir() {
+# Find the actual extracted directory name (handles snapshots where filename != directory name)
+actualDistributionDir=""
- if [ -z "$1" ]
- then
- echo "Path not specified to find_maven_basedir"
- return 1
+# First try the expected directory name (for regular distributions)
+if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then
+ if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then
+ actualDistributionDir="$distributionUrlNameMain"
fi
+fi
- basedir="$1"
- wdir="$1"
- while [ "$wdir" != '/' ] ; do
- if [ -d "$wdir"/.mvn ] ; then
- basedir=$wdir
- break
- fi
- # workaround for JBEAP-8937 (on Solaris 10/Sparc)
- if [ -d "${wdir}" ]; then
- wdir=`cd "$wdir/.."; pwd`
+# If not found, search for any directory with the Maven executable (for snapshots)
+if [ -z "$actualDistributionDir" ]; then
+ # enable globbing to iterate over items
+ set +f
+ for dir in "$TMP_DOWNLOAD_DIR"/*; do
+ if [ -d "$dir" ]; then
+ if [ -f "$dir/bin/$MVN_CMD" ]; then
+ actualDistributionDir="$(basename "$dir")"
+ break
+ fi
fi
- # end of workaround
done
- echo "${basedir}"
-}
-
-# concatenates all lines of a file
-concat_lines() {
- if [ -f "$1" ]; then
- echo "$(tr -s '\n' ' ' < "$1")"
- fi
-}
-
-BASE_DIR=`find_maven_basedir "$(pwd)"`
-if [ -z "$BASE_DIR" ]; then
- exit 1;
+ set -f
fi
-export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
-if [ "$MVNW_VERBOSE" = true ]; then
- echo $MAVEN_PROJECTBASEDIR
-fi
-MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
- [ -n "$M2_HOME" ] &&
- M2_HOME=`cygpath --path --windows "$M2_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
- [ -n "$MAVEN_PROJECTBASEDIR" ] &&
- MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
+if [ -z "$actualDistributionDir" ]; then
+ verbose "Contents of $TMP_DOWNLOAD_DIR:"
+ verbose "$(ls -la "$TMP_DOWNLOAD_DIR")"
+ die "Could not find Maven distribution directory in extracted archive"
fi
-WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+verbose "Found extracted Maven distribution directory: $actualDistributionDir"
+printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url"
+mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
-exec "$JAVACMD" \
- $MAVEN_OPTS \
- -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
- "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
- ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
+clean || :
+exec_maven "$@"
diff --git a/jdtls.ext/mvnw.cmd b/jdtls.ext/mvnw.cmd
index 019bd74d..2e2dbe03 100644
--- a/jdtls.ext/mvnw.cmd
+++ b/jdtls.ext/mvnw.cmd
@@ -1,3 +1,4 @@
+<# : batch portion
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@@ -18,126 +19,171 @@
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
-@REM Maven2 Start Up Batch script
-@REM
-@REM Required ENV vars:
-@REM JAVA_HOME - location of a JDK home dir
+@REM Apache Maven Wrapper startup batch script, version 3.3.3
@REM
@REM Optional ENV vars
-@REM M2_HOME - location of maven2's installed home dir
-@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
-@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
-@REM e.g. to debug Maven itself, use
-@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM MVNW_REPOURL - repo url base for downloading maven distribution
+@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
+@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
@REM ----------------------------------------------------------------------------
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
-
-@REM set %HOME% to equivalent of $HOME
-if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
-if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM To isolate internal variables from possible post scripts, we use another setlocal
-@setlocal
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%" == "" goto OkJHome
-
-echo.
-echo Error: JAVA_HOME not found in your environment. >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-:OkJHome
-if exist "%JAVA_HOME%\bin\java.exe" goto init
-
-echo.
-echo Error: JAVA_HOME is set to an invalid directory. >&2
-echo JAVA_HOME = "%JAVA_HOME%" >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-@REM ==== END VALIDATION ====
-
-:init
-
-@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
-IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set EXEC_DIR=%CD%
-set WDIR=%EXEC_DIR%
-:findBaseDir
-IF EXIST "%WDIR%"\.mvn goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set WDIR=%CD%
-goto findBaseDir
-
-:baseDirFound
-set MAVEN_PROJECTBASEDIR=%WDIR%
-cd "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-
-set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
-set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
-if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%" == "on" pause
-
-if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
-
-exit /B %ERROR_CODE%
+@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
+@SET __MVNW_CMD__=
+@SET __MVNW_ERROR__=
+@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
+@SET PSModulePath=
+@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
+ IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
+)
+@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
+@SET __MVNW_PSMODULEP_SAVE=
+@SET __MVNW_ARG0_NAME__=
+@SET MVNW_USERNAME=
+@SET MVNW_PASSWORD=
+@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*)
+@echo Cannot start maven from wrapper >&2 && exit /b 1
+@GOTO :EOF
+: end batch / begin powershell #>
+
+$ErrorActionPreference = "Stop"
+if ($env:MVNW_VERBOSE -eq "true") {
+ $VerbosePreference = "Continue"
+}
+
+# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
+$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
+if (!$distributionUrl) {
+ Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
+}
+
+switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
+ "maven-mvnd-*" {
+ $USE_MVND = $true
+ $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
+ $MVN_CMD = "mvnd.cmd"
+ break
+ }
+ default {
+ $USE_MVND = $false
+ $MVN_CMD = $script -replace '^mvnw','mvn'
+ break
+ }
+}
+
+# apply MVNW_REPOURL and calculate MAVEN_HOME
+# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/
+if ($env:MVNW_REPOURL) {
+ $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" }
+ $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')"
+}
+$distributionUrlName = $distributionUrl -replace '^.*/',''
+$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
+
+$MAVEN_M2_PATH = "$HOME/.m2"
+if ($env:MAVEN_USER_HOME) {
+ $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME"
+}
+
+if (-not (Test-Path -Path $MAVEN_M2_PATH)) {
+ New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null
+}
+
+$MAVEN_WRAPPER_DISTS = $null
+if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) {
+ $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists"
+} else {
+ $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists"
+}
+
+$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain"
+$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
+$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
+
+if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
+ Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
+ Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
+ exit $?
+}
+
+if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
+ Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
+}
+
+# prepare tmp dir
+$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
+$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
+$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
+trap {
+ if ($TMP_DOWNLOAD_DIR.Exists) {
+ try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
+ catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
+ }
+}
+
+New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
+
+# Download and Install Apache Maven
+Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
+Write-Verbose "Downloading from: $distributionUrl"
+Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
+
+$webclient = New-Object System.Net.WebClient
+if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
+ $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
+}
+[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
+$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
+
+# If specified, validate the SHA-256 sum of the Maven distribution zip file
+$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
+if ($distributionSha256Sum) {
+ if ($USE_MVND) {
+ Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
+ }
+ Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
+ if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
+ Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
+ }
+}
+
+# unzip and move
+Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
+
+# Find the actual extracted directory name (handles snapshots where filename != directory name)
+$actualDistributionDir = ""
+
+# First try the expected directory name (for regular distributions)
+$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain"
+$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD"
+if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) {
+ $actualDistributionDir = $distributionUrlNameMain
+}
+
+# If not found, search for any directory with the Maven executable (for snapshots)
+if (!$actualDistributionDir) {
+ Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object {
+ $testPath = Join-Path $_.FullName "bin/$MVN_CMD"
+ if (Test-Path -Path $testPath -PathType Leaf) {
+ $actualDistributionDir = $_.Name
+ }
+ }
+}
+
+if (!$actualDistributionDir) {
+ Write-Error "Could not find Maven distribution directory in extracted archive"
+}
+
+Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir"
+Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null
+try {
+ Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
+} catch {
+ if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
+ Write-Error "fail to move MAVEN_HOME"
+ }
+} finally {
+ try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
+ catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
+}
+
+Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
diff --git a/jdtls.ext/pom.xml b/jdtls.ext/pom.xml
index d1fc175d..6c9688b6 100644
--- a/jdtls.ext/pom.xml
+++ b/jdtls.ext/pom.xml
@@ -4,7 +4,7 @@
com.microsoft.jdtls.ext
jdtls-ext-parent
${base.name} :: Parent
- 0.24.0
+ 0.24.1
pom
Java Project Manager
@@ -131,13 +131,4 @@
-
-
- oss.sonatype.org
- https://oss.sonatype.org/content/repositories/snapshots/
-
- true
-
-
-
diff --git a/package-lock.json b/package-lock.json
index ea6b0047..166877f0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,161 +1,268 @@
{
"name": "vscode-java-dependency",
- "version": "0.24.0",
+ "version": "0.27.6",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "vscode-java-dependency",
- "version": "0.24.0",
+ "version": "0.27.6",
"license": "MIT",
"dependencies": {
+ "@github/copilot-language-server": "^1.530.0",
+ "@octokit/rest": "^21.1.1",
"await-lock": "^2.2.2",
"fmtr": "^1.1.4",
"fs-extra": "^10.1.0",
"globby": "^13.1.3",
- "lodash": "^4.17.21",
- "minimatch": "^5.1.6",
+ "lodash": "^4.18.0",
+ "minimatch": "^5.1.9",
"semver": "^7.3.8",
- "vscode-extension-telemetry-wrapper": "^0.14.0",
- "vscode-tas-client": "^0.1.75"
+ "vscode-extension-telemetry-wrapper": "^0.15.2",
+ "vscode-tas-client": "^0.3.0"
},
"devDependencies": {
"@types/fs-extra": "^9.0.13",
"@types/glob": "^7.2.0",
- "@types/lodash": "^4.14.191",
+ "@types/lodash": "^4.17.25",
"@types/minimatch": "^3.0.3",
"@types/mocha": "^9.1.1",
- "@types/node": "^16.18.11",
+ "@types/node": "20.x",
"@types/semver": "^7.3.13",
- "@types/vscode": "1.83.1",
- "@vscode/test-electron": "^2.3.8",
- "copy-webpack-plugin": "^11.0.0",
+ "@types/vscode": "1.95.0",
+ "@vscode/test-electron": "^3.1.0",
+ "copy-webpack-plugin": "^14.0.0",
"glob": "^7.2.3",
- "mocha": "^9.2.2",
- "ts-loader": "^9.4.2",
+ "mocha": "^11.7.5",
+ "ts-loader": "^9.6.2",
"tslint": "^6.1.3",
"typescript": "^4.9.4",
- "vscode-extension-tester": "^7.0.0",
- "webpack": "^5.76.0",
+ "webpack": "^5.109.0",
"webpack-cli": "^4.10.0"
},
"engines": {
- "vscode": "^1.83.1"
+ "vscode": "^1.95.0"
}
},
"node_modules/@babel/code-frame": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
- "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/highlight": "^7.22.5"
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
- "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/highlight": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz",
- "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
+ "node_modules/@discoveryjs/json-ext": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
"dev": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
"engines": {
- "node": ">=6.9.0"
+ "node": ">=10.0.0"
}
},
- "node_modules/@babel/highlight/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
+ "node_modules/@github/copilot-darwin-arm64": {
+ "version": "1.0.78",
+ "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.78.tgz",
+ "integrity": "sha512-P11+VyWg8ad0WlywGtO2d7AxqTLJv4hkUicFg6Ycth5lfk00aCu/74YOOZSPO6C2bBBJhAza7oAdmauM6KEojw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "bin": {
+ "copilot-darwin-arm64": "copilot"
}
},
- "node_modules/@babel/highlight/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
+ "node_modules/@github/copilot-darwin-x64": {
+ "version": "1.0.78",
+ "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.78.tgz",
+ "integrity": "sha512-stimP3WDFs2GU8nJzTJbtRpZViV4bsf80yg7QrFq+G4RISQ3Nihg/3/H0U6UQF1+txMJ/Ohmb5RFYxSw1Hj2sw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "bin": {
+ "copilot-darwin-x64": "copilot"
}
},
- "node_modules/@babel/highlight/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
+ "node_modules/@github/copilot-language-server": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server/-/copilot-language-server-1.530.0.tgz",
+ "integrity": "sha512-7OjTbKqkA9NSf8Yjms19qglBswdK7IkorbzB0EpfPOPeT8UdmxW0fiYCiaTsyB+VizMzchrPh0nbik8gH8boKw==",
"dependencies": {
- "color-name": "1.1.3"
- }
+ "vscode-languageserver-protocol": "^3.17.5"
+ },
+ "bin": {
+ "copilot-language-server": "dist/language-server.js"
+ },
+ "optionalDependencies": {
+ "@github/copilot-darwin-arm64": "1.0.78",
+ "@github/copilot-darwin-x64": "1.0.78",
+ "@github/copilot-language-server-darwin-arm64": "1.530.0",
+ "@github/copilot-language-server-darwin-x64": "1.530.0",
+ "@github/copilot-language-server-linux-arm64": "1.530.0",
+ "@github/copilot-language-server-linux-x64": "1.530.0",
+ "@github/copilot-language-server-win32-arm64": "1.530.0",
+ "@github/copilot-language-server-win32-x64": "1.530.0",
+ "@github/copilot-linux-arm64": "1.0.78",
+ "@github/copilot-linux-x64": "1.0.78",
+ "@github/copilot-win32-arm64": "1.0.78",
+ "@github/copilot-win32-x64": "1.0.78"
+ }
+ },
+ "node_modules/@github/copilot-language-server-darwin-arm64": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server-darwin-arm64/-/copilot-language-server-darwin-arm64-1.530.0.tgz",
+ "integrity": "sha512-WREnhFgvqDUHOYZTOmd0XldA3DtJ7XEn4leAezDEW4iwhoTyROmGSjH02ROj2l22Zdtq5byATidjDHGn5CnO/g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
},
- "node_modules/@babel/highlight/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
+ "node_modules/@github/copilot-language-server-darwin-x64": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server-darwin-x64/-/copilot-language-server-darwin-x64-1.530.0.tgz",
+ "integrity": "sha512-rHBRaA6MtbQSCOF7vDgcPEiukWmmggwuoOcqqi7yKvcq6/K7MDW9jtydq6HP/mg0fUe44l0sG/h9/MQlQcljvA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
},
- "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
+ "node_modules/@github/copilot-language-server-linux-arm64": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server-linux-arm64/-/copilot-language-server-linux-arm64-1.530.0.tgz",
+ "integrity": "sha512-2Wvdm3IogKHSUsN6zlleK91CdKoiGIf2R0n0P5ZHcLxaGix29fPGMa/hl5A9wkpnnV7szBDUKTHqwZoMxtPOvA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@github/copilot-language-server-linux-x64": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server-linux-x64/-/copilot-language-server-linux-x64-1.530.0.tgz",
+ "integrity": "sha512-1MIg6t+TS67sEpjb5jqf2BhjRrYW3sLlSyCxAT+a76ZUwlLjmrVFlpU2R6B/HIQDQhoxuvZwQ6YXmfxCVufDmw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@github/copilot-language-server-win32-arm64": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server-win32-arm64/-/copilot-language-server-win32-arm64-1.530.0.tgz",
+ "integrity": "sha512-xlTuNNZQUg+WM2RJTvdlbcYKyQCCOWQaXTn5sGGZ38tSB+gPKcCDr39c5AgWZ4KS/1jk+pxn0b74+PMkyWyxow==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@github/copilot-language-server-win32-x64": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server-win32-x64/-/copilot-language-server-win32-x64-1.530.0.tgz",
+ "integrity": "sha512-tI2dPAWplfsbLL94CyuFfm3R8YfCGlT8dmPbbaa2e6E9/GoBkYugcTtDH2a5qkaPk1t2LJeUTDiN/Uhr/HNAPw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@github/copilot-linux-arm64": {
+ "version": "1.0.78",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.78.tgz",
+ "integrity": "sha512-K31PRKGTm252V1Lof7ypjg283R2QSm3BgoCvZfX2taos4wqC3SaTozSQKwW3dgrAx7A3G3SGEoilVCNqfigdZA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "bin": {
+ "copilot-linux-arm64": "copilot"
}
},
- "node_modules/@babel/highlight/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "node_modules/@github/copilot-linux-x64": {
+ "version": "1.0.78",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.78.tgz",
+ "integrity": "sha512-QK3oMtAn9dIv+1u1kx0xNpZNtZxdI+uZVIyLl7myp+Oh2Uj8BLagVv6a7uP0cDphO3TgfIdlvpepCe5MIcx0fw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "bin": {
+ "copilot-linux-x64": "copilot"
}
},
- "node_modules/@babel/highlight/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
+ "node_modules/@github/copilot-win32-arm64": {
+ "version": "1.0.78",
+ "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.78.tgz",
+ "integrity": "sha512-ktDkFXaaecEKD3hpM6ydM9lKOdoCfsQsXCmzLzE7DCmSpbbMCdfPfWfZ7MOclmKmpZ5/MNfr4U2l8CUqGerzYA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "bin": {
+ "copilot-win32-arm64": "copilot.exe"
}
},
- "node_modules/@discoveryjs/json-ext": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
- "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
- "dev": true,
- "engines": {
- "node": ">=10.0.0"
+ "node_modules/@github/copilot-win32-x64": {
+ "version": "1.0.78",
+ "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.78.tgz",
+ "integrity": "sha512-Gd8l2T4eqYEWlOEPd0SZznQ+YYgYrwOkE0QXodMkhCBbPdgu/uTzb7mnISWwnVAgqs7pONdF1GOpHkTo+ay8CQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "bin": {
+ "copilot-win32-x64": "copilot.exe"
}
},
"node_modules/@isaacs/cliui": {
@@ -255,176 +362,182 @@
}
},
"node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
"dev": true,
"dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
}
},
"node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"dev": true,
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/source-map": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
- "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
+ "version": "0.3.11",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
+ "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
"dev": true,
"dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"dev": true
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.18",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
- "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
"dev": true,
"dependencies": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
"node_modules/@microsoft/1ds-core-js": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-4.2.2.tgz",
- "integrity": "sha512-4c1AXzOj7ZyX7/97v8fEDYcQ8ymTTmj+j9HYYlcO0/cUbDzZGA7/xzb34chvvAbV60qDEbX0Ha/ea7wzgefORg==",
+ "version": "4.3.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-4.3.10.tgz",
+ "integrity": "sha512-5fSZmkGwWkH+mrIA5M1GYPZdPM+SjXwCCl2Am7VhFoVwOBJNhRnwvIpAdzw6sFjiebN/rz+/YH0NdxztGZSa9Q==",
+ "license": "MIT",
"dependencies": {
- "@microsoft/applicationinsights-core-js": "3.2.2",
+ "@microsoft/applicationinsights-core-js": "3.3.10",
"@microsoft/applicationinsights-shims": "3.0.1",
"@microsoft/dynamicproto-js": "^2.0.3",
- "@nevware21/ts-async": ">= 0.5.1 < 2.x",
- "@nevware21/ts-utils": ">= 0.11.1 < 2.x"
+ "@nevware21/ts-async": ">= 0.5.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.11.8 < 2.x"
}
},
"node_modules/@microsoft/1ds-post-js": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-4.2.2.tgz",
- "integrity": "sha512-0k1aSxD03r3ugLaYhI8Y8AonI/whOzSQd66XBYURVTs6uheMMxDQdSnAk/4Dwn/TUK3TCEJZBIwZRVpUJtJX9w==",
+ "version": "4.3.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-4.3.10.tgz",
+ "integrity": "sha512-VSLjc9cT+Y+eTiSfYltJHJCejn8oYr0E6Pq2BMhOEO7F6IyLGYIxzKKvo78ze9x+iHX7KPTATcZ+PFgjGXuNqg==",
+ "license": "MIT",
"dependencies": {
- "@microsoft/1ds-core-js": "4.2.2",
+ "@microsoft/1ds-core-js": "4.3.10",
"@microsoft/applicationinsights-shims": "3.0.1",
"@microsoft/dynamicproto-js": "^2.0.3",
- "@nevware21/ts-async": ">= 0.5.1 < 2.x",
- "@nevware21/ts-utils": ">= 0.11.1 < 2.x"
+ "@nevware21/ts-async": ">= 0.5.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.11.8 < 2.x"
}
},
"node_modules/@microsoft/applicationinsights-channel-js": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.2.2.tgz",
- "integrity": "sha512-4ruoKxgZYYa+K8JJu8RMY0egKazS8xClbx70NQHa/rJ7JYFgN3OIEIBZtFoMcHR8Vg7MEsNE5/wV6o7WWJkVIA==",
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.3.10.tgz",
+ "integrity": "sha512-iolFLz1ocWAzIQqHIEjjov3gNTPkgFQ4ArHnBcJEYoffOGWlJt6copaevS5YPI5rHzmbySsengZ8cLJJBBrXzQ==",
+ "license": "MIT",
"dependencies": {
- "@microsoft/applicationinsights-common": "3.2.2",
- "@microsoft/applicationinsights-core-js": "3.2.2",
+ "@microsoft/applicationinsights-common": "3.3.10",
+ "@microsoft/applicationinsights-core-js": "3.3.10",
"@microsoft/applicationinsights-shims": "3.0.1",
"@microsoft/dynamicproto-js": "^2.0.3",
- "@nevware21/ts-async": ">= 0.5.1 < 2.x",
- "@nevware21/ts-utils": ">= 0.11.1 < 2.x"
+ "@nevware21/ts-async": ">= 0.5.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.11.8 < 2.x"
},
"peerDependencies": {
- "tslib": "*"
+ "tslib": ">= 1.0.0"
}
},
"node_modules/@microsoft/applicationinsights-common": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.2.2.tgz",
- "integrity": "sha512-e1C35gdkFSzWyUUR1S8FvisXW3nT3p6wWsLNs+vUKLOTQzsvW3XpNMVtNCq4MfHWiYDuz1lPSzo2eENaij1fVA==",
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.3.10.tgz",
+ "integrity": "sha512-RVIenPIvNgZCbjJdALvLM4rNHgAFuHI7faFzHCgnI6S2WCUNGHeXlQTs9EUUrL+n2TPp9/cd0KKMILU5VVyYiA==",
+ "license": "MIT",
"dependencies": {
- "@microsoft/applicationinsights-core-js": "3.2.2",
+ "@microsoft/applicationinsights-core-js": "3.3.10",
"@microsoft/applicationinsights-shims": "3.0.1",
"@microsoft/dynamicproto-js": "^2.0.3",
- "@nevware21/ts-utils": ">= 0.11.1 < 2.x"
+ "@nevware21/ts-utils": ">= 0.11.8 < 2.x"
},
"peerDependencies": {
- "tslib": "*"
+ "tslib": ">= 1.0.0"
}
},
"node_modules/@microsoft/applicationinsights-core-js": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.2.2.tgz",
- "integrity": "sha512-dF6LZ4ahdhoHufw+N7OXRDzWT8QN193Dvpd8GLqEZdR/KtCTofPSI63yumu+ZkzKYadf1S3w2xg0OmbdyXexoQ==",
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.3.10.tgz",
+ "integrity": "sha512-5yKeyassZTq2l+SAO4npu6LPnbS++UD+M+Ghjm9uRzoBwD8tumFx0/F8AkSVqbniSREd+ztH/2q2foewa2RZyg==",
+ "license": "MIT",
"dependencies": {
"@microsoft/applicationinsights-shims": "3.0.1",
"@microsoft/dynamicproto-js": "^2.0.3",
- "@nevware21/ts-async": ">= 0.5.1 < 2.x",
- "@nevware21/ts-utils": ">= 0.11.1 < 2.x"
+ "@nevware21/ts-async": ">= 0.5.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.11.8 < 2.x"
},
"peerDependencies": {
- "tslib": "*"
+ "tslib": ">= 1.0.0"
}
},
"node_modules/@microsoft/applicationinsights-shims": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
"integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "license": "MIT",
"dependencies": {
"@nevware21/ts-utils": ">= 0.9.4 < 2.x"
}
},
"node_modules/@microsoft/applicationinsights-web-basic": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.2.2.tgz",
- "integrity": "sha512-4OdgTurRr/Awm2DcWuAhidFON2UFiirabeO9SSAeTefDCdtzv5fWzntq9zvdV47c+w6WzZkz8nX/bQTgNRb2+w==",
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.3.10.tgz",
+ "integrity": "sha512-AZib5DAT3NU0VT0nLWEwXrnoMDDgZ/5S4dso01CNU5ELNxLdg+1fvchstlVdMy4FrAnxzs8Wf/GIQNFYOVgpAw==",
+ "license": "MIT",
"dependencies": {
- "@microsoft/applicationinsights-channel-js": "3.2.2",
- "@microsoft/applicationinsights-common": "3.2.2",
- "@microsoft/applicationinsights-core-js": "3.2.2",
+ "@microsoft/applicationinsights-channel-js": "3.3.10",
+ "@microsoft/applicationinsights-common": "3.3.10",
+ "@microsoft/applicationinsights-core-js": "3.3.10",
"@microsoft/applicationinsights-shims": "3.0.1",
"@microsoft/dynamicproto-js": "^2.0.3",
- "@nevware21/ts-async": ">= 0.5.1 < 2.x",
- "@nevware21/ts-utils": ">= 0.11.1 < 2.x"
+ "@nevware21/ts-async": ">= 0.5.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.11.8 < 2.x"
},
"peerDependencies": {
- "tslib": "*"
+ "tslib": ">= 1.0.0"
}
},
"node_modules/@microsoft/dynamicproto-js": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.3.tgz",
"integrity": "sha512-JTWTU80rMy3mdxOjjpaiDQsTLZ6YSGGqsjURsY6AUQtIj0udlF/jYmhdLZu8693ZIC0T1IwYnFa0+QeiMnziBA==",
+ "license": "MIT",
"dependencies": {
"@nevware21/ts-utils": ">= 0.10.4 < 2.x"
}
},
"node_modules/@nevware21/ts-async": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.5.1.tgz",
- "integrity": "sha512-O2kN8n2HpDWJ7Oji+oTMnhITrCndmrNvrHbGDwAIBydx+FWvLE/vrw4QwnRRMvSCa2AJrcP59Ryklxv30KfkWQ==",
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.5.5.tgz",
+ "integrity": "sha512-vwqaL05iJPjLeh5igPi8MeeAu10i+Aq7xko1fbo9F5Si6MnVN5505qaV7AhSdk5MCBJVT/UYMk3kgInNjDb4Ig==",
+ "license": "MIT",
"dependencies": {
- "@nevware21/ts-utils": ">= 0.11.2 < 2.x"
+ "@nevware21/ts-utils": ">= 0.12.2 < 2.x"
}
},
"node_modules/@nevware21/ts-utils": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.11.2.tgz",
- "integrity": "sha512-80W8BkS09kkGuUHJX50Fqq+QqAslxUaOQytH+3JhRacXs1EpEt2JOOkYKytqFZAYir3SeH9fahniEaDzIBxlUw=="
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.14.0.tgz",
+ "integrity": "sha512-WoeqTIXQ8WPhl+lD2NbMHoAQ4sJl0n7EoRoDmVJui//Usg512enl9q1fdbVobuZt3omnxnmVsDrNIvPBvFgddQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nevware21"
+ },
+ {
+ "type": "other",
+ "url": "https://buymeacoffee.com/nevware21"
+ }
+ ]
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
@@ -458,73 +571,188 @@
"node": ">= 8"
}
},
- "node_modules/@pkgjs/parseargs": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "dev": true,
- "optional": true,
+ "node_modules/@octokit/auth-token": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz",
+ "integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==",
"engines": {
- "node": ">=14"
+ "node": ">= 18"
}
},
- "node_modules/@sindresorhus/is": {
- "version": "5.5.2",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.5.2.tgz",
- "integrity": "sha512-8ZMK+V6YpeZFfW6hU9uAeWVuq8v3t7BaG276gIO+kVqnAcLrHCXdFUOf7kgouyfAarkZtuavIqY3RsXTsTWviw==",
- "dev": true,
+ "node_modules/@octokit/core": {
+ "version": "6.1.6",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.6.tgz",
+ "integrity": "sha512-kIU8SLQkYWGp3pVKiYzA5OSaNF5EE03P/R8zEmmrG6XwOg5oBjXyQVVIauQ0dgau4zYhpZEhJrvIYt6oM+zZZA==",
+ "dependencies": {
+ "@octokit/auth-token": "^5.0.0",
+ "@octokit/graphql": "^8.2.2",
+ "@octokit/request": "^9.2.3",
+ "@octokit/request-error": "^6.1.8",
+ "@octokit/types": "^14.0.0",
+ "before-after-hook": "^3.0.2",
+ "universal-user-agent": "^7.0.0"
+ },
"engines": {
- "node": ">=14.16"
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/endpoint": {
+ "version": "10.1.4",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
+ "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
+ "dependencies": {
+ "@octokit/types": "^14.0.0",
+ "universal-user-agent": "^7.0.2"
},
- "funding": {
- "url": "https://github.com/sindresorhus/is?sponsor=1"
+ "engines": {
+ "node": ">= 18"
}
},
- "node_modules/@szmarczak/http-timer": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz",
- "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==",
- "dev": true,
+ "node_modules/@octokit/graphql": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.2.tgz",
+ "integrity": "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA==",
"dependencies": {
- "defer-to-connect": "^2.0.1"
+ "@octokit/request": "^9.2.3",
+ "@octokit/types": "^14.0.0",
+ "universal-user-agent": "^7.0.0"
},
"engines": {
- "node": ">=14.16"
+ "node": ">= 18"
}
},
- "node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "dev": true,
+ "node_modules/@octokit/openapi-types": {
+ "version": "25.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz",
+ "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA=="
+ },
+ "node_modules/@octokit/plugin-paginate-rest": {
+ "version": "11.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.6.0.tgz",
+ "integrity": "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==",
+ "dependencies": {
+ "@octokit/types": "^13.10.0"
+ },
"engines": {
- "node": ">= 6"
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
}
},
- "node_modules/@types/eslint": {
- "version": "8.44.0",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz",
- "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==",
- "dev": true,
+ "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": {
+ "version": "24.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz",
+ "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="
+ },
+ "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": {
+ "version": "13.10.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz",
+ "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==",
"dependencies": {
- "@types/estree": "*",
- "@types/json-schema": "*"
+ "@octokit/openapi-types": "^24.2.0"
}
},
- "node_modules/@types/eslint-scope": {
- "version": "3.7.4",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
- "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
- "dev": true,
+ "node_modules/@octokit/plugin-request-log": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-5.3.1.tgz",
+ "integrity": "sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==",
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
+ }
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods": {
+ "version": "13.5.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.5.0.tgz",
+ "integrity": "sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw==",
+ "dependencies": {
+ "@octokit/types": "^13.10.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
+ }
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": {
+ "version": "24.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz",
+ "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": {
+ "version": "13.10.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz",
+ "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==",
+ "dependencies": {
+ "@octokit/openapi-types": "^24.2.0"
+ }
+ },
+ "node_modules/@octokit/request": {
+ "version": "9.2.4",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz",
+ "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.4",
+ "@octokit/request-error": "^6.1.8",
+ "@octokit/types": "^14.0.0",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/request-error": {
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz",
+ "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==",
+ "dependencies": {
+ "@octokit/types": "^14.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/rest": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-21.1.1.tgz",
+ "integrity": "sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg==",
+ "dependencies": {
+ "@octokit/core": "^6.1.4",
+ "@octokit/plugin-paginate-rest": "^11.4.2",
+ "@octokit/plugin-request-log": "^5.3.1",
+ "@octokit/plugin-rest-endpoint-methods": "^13.3.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/types": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz",
+ "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==",
"dependencies": {
- "@types/eslint": "*",
- "@types/estree": "*"
+ "@octokit/openapi-types": "^25.1.0"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=14"
}
},
"node_modules/@types/estree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
- "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
"dev": true
},
"node_modules/@types/fs-extra": {
@@ -546,22 +774,16 @@
"@types/node": "*"
}
},
- "node_modules/@types/http-cache-semantics": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
- "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==",
- "dev": true
- },
"node_modules/@types/json-schema": {
- "version": "7.0.12",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
- "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
"dev": true
},
"node_modules/@types/lodash": {
- "version": "4.14.195",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz",
- "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==",
+ "version": "4.17.25",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.25.tgz",
+ "integrity": "sha512-+K1NIO8I+F9/wNulfVvu23QYd0Pe9/OCqRrim4NoYIf1VoEDL90Ve4ClzpyqBLc7NpGGWRvYNCKZ1BE/Jpf8dQ==",
"dev": true
},
"node_modules/@types/minimatch": {
@@ -577,18 +799,12 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "16.18.38",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.38.tgz",
- "integrity": "sha512-6sfo1qTulpVbkxECP+AVrHV9OoJqhzCsfTNp5NIG+enM4HyM3HvZCO798WShIXBN0+QtDIcutJCjsVYnQP5rIQ==",
- "dev": true
- },
- "node_modules/@types/selenium-webdriver": {
- "version": "4.1.21",
- "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.1.21.tgz",
- "integrity": "sha512-QGURnImvxYlIQz5DVhvHdqpYNLBjhJ2Vm+cnQI2G9QZzkWlZm0LkLcvDcHp+qE6N2KBz4CeuvXgPO7W3XQ0Tyw==",
+ "version": "20.16.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.1.tgz",
+ "integrity": "sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==",
"dev": true,
"dependencies": {
- "@types/ws": "*"
+ "undici-types": "~6.19.2"
}
},
"node_modules/@types/semver": {
@@ -598,336 +814,186 @@
"dev": true
},
"node_modules/@types/vscode": {
- "version": "1.83.1",
- "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.83.1.tgz",
- "integrity": "sha512-BHu51NaNKOtDf3BOonY3sKFFmZKEpRkzqkZVpSYxowLbs5JqjOQemYFob7Gs5rpxE5tiGhfpnMpcdF/oKrLg4w==",
- "dev": true
- },
- "node_modules/@types/ws": {
- "version": "8.5.10",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
- "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==",
+ "version": "1.95.0",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.95.0.tgz",
+ "integrity": "sha512-0LBD8TEiNbet3NvWsmn59zLzOFu/txSlGxnv5yAFHCrhG9WvAnR3IvfHzMOs2aeWqgvNjq9pO99IUw8d3n+unw==",
"dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@ungap/promise-all-settled": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
- "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
- "dev": true
+ "license": "MIT"
},
"node_modules/@vscode/extension-telemetry": {
- "version": "0.9.6",
- "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.9.6.tgz",
- "integrity": "sha512-qWK2GNw+b69QRYpjuNM9g3JKToMICoNIdc0rQMtvb4gIG9vKKCZCVCz+ZOx6XM/YlfWAyuPiyxcjIY0xyF+Djg==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-1.2.0.tgz",
+ "integrity": "sha512-En6dTwfy5NFzSMibvOpx/lKq2jtgWuR4++KJbi3SpQ2iT8gm+PHo9868/scocW122KDwTxl4ruxZ7i4rHmJJnQ==",
+ "license": "MIT",
"dependencies": {
- "@microsoft/1ds-core-js": "^4.1.2",
- "@microsoft/1ds-post-js": "^4.1.2",
- "@microsoft/applicationinsights-web-basic": "^3.1.2"
+ "@microsoft/1ds-core-js": "^4.3.10",
+ "@microsoft/1ds-post-js": "^4.3.10",
+ "@microsoft/applicationinsights-web-basic": "^3.3.10"
},
"engines": {
"vscode": "^1.75.0"
}
},
"node_modules/@vscode/test-electron": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz",
- "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-3.1.0.tgz",
+ "integrity": "sha512-CRqv5u+YYoseuNVJ6Tyo4k0sF0mx4qnKMihRB0PjsUF8Dc0WKtCXo6CNL6nWWm5esfFQsQA/pejMj4ZbpJVLTw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
+ "http-proxy-agent": "^7.0.2",
+ "https-proxy-agent": "^7.0.5",
"jszip": "^3.10.1",
- "semver": "^7.5.2"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@vscode/vsce": {
- "version": "2.22.0",
- "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.22.0.tgz",
- "integrity": "sha512-8df4uJiM3C6GZ2Sx/KilSKVxsetrTBBIUb3c0W4B1EWHcddioVs5mkyDKtMNP0khP/xBILVSzlXxhV+nm2rC9A==",
- "dev": true,
- "dependencies": {
- "azure-devops-node-api": "^11.0.1",
- "chalk": "^2.4.2",
- "cheerio": "^1.0.0-rc.9",
- "commander": "^6.2.1",
- "glob": "^7.0.6",
- "hosted-git-info": "^4.0.2",
- "jsonc-parser": "^3.2.0",
- "leven": "^3.1.0",
- "markdown-it": "^12.3.2",
- "mime": "^1.3.4",
- "minimatch": "^3.0.3",
- "parse-semver": "^1.1.1",
- "read": "^1.0.7",
- "semver": "^7.5.2",
- "tmp": "^0.2.1",
- "typed-rest-client": "^1.8.4",
- "url-join": "^4.0.1",
- "xml2js": "^0.5.0",
- "yauzl": "^2.3.1",
- "yazl": "^2.2.2"
- },
- "bin": {
- "vsce": "vsce"
+ "ora": "^8.1.0",
+ "semver": "^7.6.2"
},
"engines": {
- "node": ">= 14"
- },
- "optionalDependencies": {
- "keytar": "^7.7.0"
- }
- },
- "node_modules/@vscode/vsce/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@vscode/vsce/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/@vscode/vsce/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@vscode/vsce/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@vscode/vsce/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/@vscode/vsce/node_modules/commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@vscode/vsce/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@vscode/vsce/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@vscode/vsce/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/@vscode/vsce/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
+ "node": ">=22"
}
},
"node_modules/@webassemblyjs/ast": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
- "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
+ "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
"dev": true,
"dependencies": {
- "@webassemblyjs/helper-numbers": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ "@webassemblyjs/helper-numbers": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2"
}
},
"node_modules/@webassemblyjs/floating-point-hex-parser": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
- "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
+ "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
"dev": true
},
"node_modules/@webassemblyjs/helper-api-error": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
- "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
+ "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
"dev": true
},
"node_modules/@webassemblyjs/helper-buffer": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
- "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
+ "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
"dev": true
},
"node_modules/@webassemblyjs/helper-numbers": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
- "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
+ "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
"dev": true,
"dependencies": {
- "@webassemblyjs/floating-point-hex-parser": "1.11.6",
- "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/floating-point-hex-parser": "1.13.2",
+ "@webassemblyjs/helper-api-error": "1.13.2",
"@xtuc/long": "4.2.2"
}
},
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
- "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
+ "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
"dev": true
},
"node_modules/@webassemblyjs/helper-wasm-section": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
- "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
+ "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/wasm-gen": "1.14.1"
}
},
"node_modules/@webassemblyjs/ieee754": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
- "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
+ "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
"dev": true,
"dependencies": {
"@xtuc/ieee754": "^1.2.0"
}
},
"node_modules/@webassemblyjs/leb128": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
- "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
+ "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
"dev": true,
"dependencies": {
"@xtuc/long": "4.2.2"
}
},
"node_modules/@webassemblyjs/utf8": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
- "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
+ "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
"dev": true
},
"node_modules/@webassemblyjs/wasm-edit": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
- "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
+ "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/helper-wasm-section": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6",
- "@webassemblyjs/wasm-opt": "1.11.6",
- "@webassemblyjs/wasm-parser": "1.11.6",
- "@webassemblyjs/wast-printer": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/helper-wasm-section": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-opt": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1",
+ "@webassemblyjs/wast-printer": "1.14.1"
}
},
"node_modules/@webassemblyjs/wasm-gen": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
- "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
+ "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/ieee754": "1.11.6",
- "@webassemblyjs/leb128": "1.11.6",
- "@webassemblyjs/utf8": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
}
},
"node_modules/@webassemblyjs/wasm-opt": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
- "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
+ "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6",
- "@webassemblyjs/wasm-parser": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1"
}
},
"node_modules/@webassemblyjs/wasm-parser": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
- "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
+ "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-api-error": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/ieee754": "1.11.6",
- "@webassemblyjs/leb128": "1.11.6",
- "@webassemblyjs/utf8": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-api-error": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
}
},
"node_modules/@webassemblyjs/wast-printer": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
- "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
+ "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/ast": "1.14.1",
"@xtuc/long": "4.2.2"
}
},
@@ -980,9 +1046,9 @@
"dev": true
},
"node_modules/acorn": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
- "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz",
+ "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -991,37 +1057,29 @@
"node": ">=0.4.0"
}
},
- "node_modules/acorn-import-assertions": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
- "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^8"
- }
- },
"node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
"dev": true,
"dependencies": {
- "debug": "4"
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">= 6.0.0"
+ "node": ">= 14"
}
},
"node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "fast-deep-equal": "^3.1.1",
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
"json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "require-from-string": "^2.0.2"
},
"funding": {
"type": "github",
@@ -1057,15 +1115,6 @@
"ajv": "^8.8.2"
}
},
- "node_modules/ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -1090,155 +1139,40 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
"node_modules/await-lock": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz",
"integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw=="
},
- "node_modules/axios": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz",
- "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==",
- "dependencies": {
- "follow-redirects": "^1.15.0",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
- },
- "node_modules/azure-devops-node-api": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz",
- "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==",
- "dev": true,
- "dependencies": {
- "tunnel": "0.0.6",
- "typed-rest-client": "^1.8.4"
- }
- },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "optional": true
- },
- "node_modules/big-integer": {
- "version": "1.6.51",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
- "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
- "dev": true,
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/binary": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
- "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==",
- "dev": true,
- "dependencies": {
- "buffers": "~0.1.1",
- "chainsaw": "~0.1.0"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "node_modules/bl/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.9.19",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz",
+ "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==",
"dev": true,
- "optional": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.js"
}
},
- "node_modules/bluebird": {
- "version": "3.4.7",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
- "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==",
- "dev": true
- },
- "node_modules/boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "dev": true
+ "node_modules/before-after-hook": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
+ "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A=="
},
"node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
+ "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
"dependencies": {
"balanced-match": "^1.0.0"
}
@@ -1261,9 +1195,9 @@
"dev": true
},
"node_modules/browserslist": {
- "version": "4.21.9",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz",
- "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
+ "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
"dev": true,
"funding": [
{
@@ -1280,10 +1214,11 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001503",
- "electron-to-chromium": "^1.4.431",
- "node-releases": "^2.0.12",
- "update-browserslist-db": "^1.0.11"
+ "baseline-browser-mapping": "^2.9.0",
+ "caniuse-lite": "^1.0.30001759",
+ "electron-to-chromium": "^1.5.263",
+ "node-releases": "^2.0.27",
+ "update-browserslist-db": "^1.2.0"
},
"bin": {
"browserslist": "cli.js"
@@ -1292,86 +1227,12 @@
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
- "node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "optional": true,
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "node_modules/buffer-alloc": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
- "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
- "dev": true,
- "dependencies": {
- "buffer-alloc-unsafe": "^1.1.0",
- "buffer-fill": "^1.0.0"
- }
- },
- "node_modules/buffer-alloc-unsafe": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
- "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
- "dev": true
- },
- "node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/buffer-fill": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
- "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==",
- "dev": true
- },
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true
},
- "node_modules/buffer-indexof-polyfill": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
- "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/buffers": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
- "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==",
- "dev": true,
- "engines": {
- "node": ">=0.2.0"
- }
- },
"node_modules/builtin-modules": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
@@ -1381,47 +1242,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/cacheable-lookup": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
- "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
- "dev": true,
- "engines": {
- "node": ">=14.16"
- }
- },
- "node_modules/cacheable-request": {
- "version": "10.2.12",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz",
- "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==",
- "dev": true,
- "dependencies": {
- "@types/http-cache-semantics": "^4.0.1",
- "get-stream": "^6.0.1",
- "http-cache-semantics": "^4.1.1",
- "keyv": "^4.5.2",
- "mimic-response": "^4.0.0",
- "normalize-url": "^8.0.0",
- "responselike": "^3.0.0"
- },
- "engines": {
- "node": ">=14.16"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
- "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.1",
- "set-function-length": "^1.1.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/camelcase": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
@@ -1435,9 +1255,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001517",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz",
- "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==",
+ "version": "1.0.30001769",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz",
+ "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==",
"dev": true,
"funding": [
{
@@ -1454,18 +1274,6 @@
}
]
},
- "node_modules/chainsaw": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
- "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==",
- "dev": true,
- "dependencies": {
- "traverse": ">=0.3.0 <0.4"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -1494,89 +1302,21 @@
"node": ">=8"
}
},
- "node_modules/cheerio": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
- "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
+ "node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"dev": true,
"dependencies": {
- "cheerio-select": "^2.1.0",
- "dom-serializer": "^2.0.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "htmlparser2": "^8.0.1",
- "parse5": "^7.0.0",
- "parse5-htmlparser2-tree-adapter": "^7.0.0"
+ "readdirp": "^4.0.1"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 14.16.0"
},
"funding": {
- "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/cheerio-select": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
- "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
- "dev": true,
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-select": "^5.1.0",
- "css-what": "^6.1.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
- "dev": true
- },
"node_modules/chrome-trace-event": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
@@ -1586,15 +1326,14 @@
"node": ">=6.0"
}
},
- "node_modules/clipboardy": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz",
- "integrity": "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==",
+ "node_modules/cli-cursor": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
+ "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "execa": "^8.0.1",
- "is-wsl": "^3.1.0",
- "is64bit": "^2.0.0"
+ "restore-cursor": "^5.0.0"
},
"engines": {
"node": ">=18"
@@ -1603,15 +1342,31 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/cli-spinners": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
"dependencies": {
"string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
+ "strip-ansi": "^6.0.1",
"wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
"node_modules/clone-deep": {
@@ -1652,29 +1407,12 @@
"integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
"dev": true
},
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
- "node_modules/compare-versions": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz",
- "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==",
- "dev": true
- },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -1682,20 +1420,19 @@
"dev": true
},
"node_modules/copy-webpack-plugin": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz",
- "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-14.0.0.tgz",
+ "integrity": "sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==",
"dev": true,
"dependencies": {
- "fast-glob": "^3.2.11",
"glob-parent": "^6.0.1",
- "globby": "^13.1.1",
"normalize-path": "^3.0.0",
- "schema-utils": "^4.0.0",
- "serialize-javascript": "^6.0.0"
+ "schema-utils": "^4.2.0",
+ "serialize-javascript": "^7.0.3",
+ "tinyglobby": "^0.2.12"
},
"engines": {
- "node": ">= 14.15.0"
+ "node": ">= 20.9.0"
},
"funding": {
"type": "opencollective",
@@ -1712,10 +1449,11 @@
"dev": true
},
"node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -1725,41 +1463,14 @@
"node": ">= 8"
}
},
- "node_modules/css-select": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
- "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
- "dev": true,
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/css-what": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
"node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -1782,88 +1493,10 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/decompress-response": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
- "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
- "dev": true,
- "dependencies": {
- "mimic-response": "^3.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/decompress-response/node_modules/mimic-response": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/defer-to-connect": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
- "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/define-data-property": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
- "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/detect-libc": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
- "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/diff": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
- "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz",
+ "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==",
"dev": true,
"engines": {
"node": ">=0.3.1"
@@ -1880,70 +1513,6 @@
"node": ">=8"
}
},
- "node_modules/dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
- "dev": true,
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ]
- },
- "node_modules/domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "dev": true,
- "dependencies": {
- "domelementtype": "^2.3.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
- "dev": true,
- "dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/duplexer2": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
- "dev": true,
- "dependencies": {
- "readable-stream": "^2.0.2"
- }
- },
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -1951,9 +1520,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.4.467",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.467.tgz",
- "integrity": "sha512-2qI70O+rR4poYeF2grcuS/bCps5KJh6y1jtZMDDEteyKJQrzLOEhFyXCLcHW6DTBjKjWkk26JhWoAi+Ux9A0fg==",
+ "version": "1.5.286",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz",
+ "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==",
"dev": true
},
"node_modules/emoji-regex": {
@@ -1962,40 +1531,19 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
- "dependencies": {
- "once": "^1.4.0"
- }
- },
"node_modules/enhanced-resolve": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
- "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
+ "version": "5.24.5",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz",
+ "integrity": "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
+ "tapable": "^2.3.3"
},
"engines": {
"node": ">=10.13.0"
}
},
- "node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dev": true,
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
"node_modules/envinfo": {
"version": "7.10.0",
"resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz",
@@ -2009,15 +1557,15 @@
}
},
"node_modules/es-module-lexer": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz",
- "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz",
+ "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==",
"dev": true
},
"node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
"engines": {
"node": ">=6"
@@ -2100,50 +1648,20 @@
"node": ">=0.8.x"
}
},
- "node_modules/execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
- },
- "engines": {
- "node": ">=16.17"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/execa/node_modules/get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
- "dev": true,
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/expand-template": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
- "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=6"
- }
+ "node_modules/fast-content-type-parse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
+ "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ]
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
@@ -2152,15 +1670,16 @@
"dev": true
},
"node_modules/fast-glob": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz",
- "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
"glob-parent": "^5.1.2",
"merge2": "^1.3.0",
- "micromatch": "^4.0.4"
+ "micromatch": "^4.0.8"
},
"engines": {
"node": ">=8.6.0"
@@ -2177,11 +1696,21 @@
"node": ">= 6"
}
},
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
+ "node_modules/fast-uri": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz",
+ "integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ]
},
"node_modules/fastest-levenshtein": {
"version": "1.0.16",
@@ -2200,15 +1729,6 @@
"reusify": "^1.0.4"
}
},
- "node_modules/fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "dev": true,
- "dependencies": {
- "pend": "~1.2.0"
- }
- },
"node_modules/fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
@@ -2253,32 +1773,14 @@
"lodash": "^4.17.21"
}
},
- "node_modules/follow-redirects": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
"node_modules/foreground-child": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
- "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "cross-spawn": "^7.0.0",
+ "cross-spawn": "^7.0.6",
"signal-exit": "^4.0.1"
},
"engines": {
@@ -2288,34 +1790,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/form-data-encoder": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
- "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
- "dev": true,
- "engines": {
- "node": ">= 14.17"
- }
- },
- "node_modules/fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
- "dev": true
- },
"node_modules/fs-extra": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
@@ -2335,47 +1809,6 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/fstream": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- },
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/fstream/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -2394,40 +1827,19 @@
"node": "6.* || 8.* || >= 10.*"
}
},
- "node_modules/get-intrinsic": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
- "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "node_modules/get-east-asian-width": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz",
+ "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/github-from-package": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
- "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
- "dev": true,
- "optional": true
- },
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -2460,16 +1872,10 @@
"node": ">=10.13.0"
}
},
- "node_modules/glob-to-regexp": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "dev": true
- },
"node_modules/glob/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "version": "1.1.18",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
+ "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0",
@@ -2477,9 +1883,9 @@
}
},
"node_modules/glob/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -2506,57 +1912,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.1.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/got": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz",
- "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==",
- "dev": true,
- "dependencies": {
- "@sindresorhus/is": "^5.2.0",
- "@szmarczak/http-timer": "^5.0.1",
- "cacheable-lookup": "^7.0.0",
- "cacheable-request": "^10.2.8",
- "decompress-response": "^6.0.0",
- "form-data-encoder": "^2.1.2",
- "get-stream": "^6.0.1",
- "http2-wrapper": "^2.1.10",
- "lowercase-keys": "^3.0.0",
- "p-cancelable": "^3.0.0",
- "responselike": "^3.0.0"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/got?sponsor=1"
- }
- },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
- "node_modules/growl": {
- "version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
- "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
- "dev": true,
- "engines": {
- "node": ">=4.x"
- }
- },
"node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -2578,54 +1938,6 @@
"node": ">=8"
}
},
- "node_modules/has-property-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
- "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
- "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -2635,122 +1947,32 @@
"he": "bin/he"
}
},
- "node_modules/hosted-git-info": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/hpagent": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz",
- "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==",
- "dev": true,
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/htmlparser2": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
- "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
- "dev": true,
- "funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "entities": "^4.4.0"
- }
- },
- "node_modules/http-cache-semantics": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
- "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
- "dev": true
- },
"node_modules/http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dev": true,
- "dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/http2-wrapper": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz",
- "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==",
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": true,
"dependencies": {
- "quick-lru": "^5.1.1",
- "resolve-alpn": "^1.2.0"
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">=10.19.0"
+ "node": ">= 14"
}
},
"node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
"dev": true,
"dependencies": {
- "agent-base": "6",
+ "agent-base": "^7.0.2",
"debug": "4"
},
"engines": {
- "node": ">= 6"
- }
- },
- "node_modules/human-signals": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
- "dev": true,
- "engines": {
- "node": ">=16.17.0"
+ "node": ">= 14"
}
},
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "optional": true
- },
"node_modules/ignore": {
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
@@ -2800,13 +2022,6 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
- "node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true,
- "optional": true
- },
"node_modules/interpret": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
@@ -2816,18 +2031,6 @@
"node": ">= 0.10"
}
},
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-core-module": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
@@ -2840,21 +2043,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-docker": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
- "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
- "dev": true,
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -2883,19 +2071,14 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-inside-container": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
- "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "node_modules/is-interactive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
+ "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
"dev": true,
- "dependencies": {
- "is-docker": "^3.0.0"
- },
- "bin": {
- "is-inside-container": "cli.js"
- },
+ "license": "MIT",
"engines": {
- "node": ">=14.16"
+ "node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -2909,6 +2092,15 @@
"node": ">=0.12.0"
}
},
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/is-plain-obj": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
@@ -2930,18 +2122,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/is-unicode-supported": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
@@ -2954,36 +2134,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-wsl": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
- "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
- "dev": true,
- "dependencies": {
- "is-inside-container": "^1.0.0"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is64bit": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is64bit/-/is64bit-2.0.0.tgz",
- "integrity": "sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==",
- "dev": true,
- "dependencies": {
- "system-architecture": "^0.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -3005,24 +2155,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/jackspeak": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
- "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
- "dev": true,
- "dependencies": {
- "@isaacs/cliui": "^8.0.2"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- },
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
- }
- },
"node_modules/jest-worker": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
@@ -3041,13 +2173,25 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz",
+ "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
},
@@ -3055,30 +2199,12 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true
- },
- "node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
"node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
- "node_modules/jsonc-parser": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
- "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
- "dev": true
- },
"node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@@ -3102,27 +2228,6 @@
"setimmediate": "^1.0.5"
}
},
- "node_modules/keytar": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz",
- "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "dependencies": {
- "node-addon-api": "^4.3.0",
- "prebuild-install": "^7.0.1"
- }
- },
- "node_modules/keyv": {
- "version": "4.5.3",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz",
- "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==",
- "dev": true,
- "dependencies": {
- "json-buffer": "3.0.1"
- }
- },
"node_modules/kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -3132,15 +2237,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/lie": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
@@ -3150,30 +2246,6 @@
"immediate": "~3.0.5"
}
},
- "node_modules/linkify-it": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
- "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
- "dev": true,
- "dependencies": {
- "uc.micro": "^1.0.1"
- }
- },
- "node_modules/listenercount": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
- "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==",
- "dev": true
- },
- "node_modules/loader-runner": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
- "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
- "dev": true,
- "engines": {
- "node": ">=6.11.5"
- }
- },
"node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -3190,9 +2262,10 @@
}
},
"node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ "version": "4.18.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
+ "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
+ "license": "MIT"
},
"node_modules/log-symbols": {
"version": "4.1.0",
@@ -3210,60 +2283,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/lowercase-keys": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
- "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/markdown-it": {
- "version": "12.3.2",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
- "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1",
- "entities": "~2.1.0",
- "linkify-it": "^3.0.1",
- "mdurl": "^1.0.1",
- "uc.micro": "^1.0.5"
- },
- "bin": {
- "markdown-it": "bin/markdown-it.js"
- }
- },
- "node_modules/markdown-it/node_modules/entities": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
- "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
- "dev": true,
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
- "dev": true
- },
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -3279,76 +2298,34 @@
}
},
"node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dependencies": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
"node": ">=8.6"
}
},
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true,
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/mimic-response": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
- "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
+ "node_modules/mimic-function": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
+ "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
+ "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -3365,11 +2342,72 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/minimizer-webpack-plugin": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz",
+ "integrity": "sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^4.3.0",
+ "terser": "^5.31.1"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@minify-html/node": {
+ "optional": true
+ },
+ "@swc/core": {
+ "optional": true
+ },
+ "@swc/css": {
+ "optional": true
+ },
+ "@swc/html": {
+ "optional": true
+ },
+ "clean-css": {
+ "optional": true
+ },
+ "cssnano": {
+ "optional": true
+ },
+ "csso": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "html-minifier-terser": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "postcss": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
"node_modules/minipass": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
- "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
"dev": true,
+ "license": "BlueOak-1.0.0",
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -3386,209 +2424,98 @@
"mkdirp": "bin/cmd.js"
}
},
- "node_modules/mkdirp-classic": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
- "dev": true,
- "optional": true
- },
"node_modules/mocha": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz",
- "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==",
- "dev": true,
- "dependencies": {
- "@ungap/promise-all-settled": "1.1.2",
- "ansi-colors": "4.1.1",
- "browser-stdout": "1.3.1",
- "chokidar": "3.5.3",
- "debug": "4.3.3",
- "diff": "5.0.0",
- "escape-string-regexp": "4.0.0",
- "find-up": "5.0.0",
- "glob": "7.2.0",
- "growl": "1.10.5",
- "he": "1.2.0",
- "js-yaml": "4.1.0",
- "log-symbols": "4.1.0",
- "minimatch": "4.2.1",
- "ms": "2.1.3",
- "nanoid": "3.3.1",
- "serialize-javascript": "6.0.0",
- "strip-json-comments": "3.1.1",
- "supports-color": "8.1.1",
- "which": "2.0.2",
- "workerpool": "6.2.0",
- "yargs": "16.2.0",
- "yargs-parser": "20.2.4",
- "yargs-unparser": "2.0.0"
+ "version": "11.7.5",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.5.tgz",
+ "integrity": "sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==",
+ "dev": true,
+ "dependencies": {
+ "browser-stdout": "^1.3.1",
+ "chokidar": "^4.0.1",
+ "debug": "^4.3.5",
+ "diff": "^7.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-up": "^5.0.0",
+ "glob": "^10.4.5",
+ "he": "^1.2.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "log-symbols": "^4.1.0",
+ "minimatch": "^9.0.5",
+ "ms": "^2.1.3",
+ "picocolors": "^1.1.1",
+ "serialize-javascript": "^6.0.2",
+ "strip-json-comments": "^3.1.1",
+ "supports-color": "^8.1.1",
+ "workerpool": "^9.2.0",
+ "yargs": "^17.7.2",
+ "yargs-parser": "^21.1.1",
+ "yargs-unparser": "^2.0.0"
},
"bin": {
"_mocha": "bin/_mocha",
- "mocha": "bin/mocha"
+ "mocha": "bin/mocha.js"
},
"engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/mochajs"
- }
- },
- "node_modules/mocha/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/mocha/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "node_modules/mocha/node_modules/debug/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
"node_modules/mocha/node_modules/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+ "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
"dev": true,
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
- "engines": {
- "node": "*"
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/mocha/node_modules/glob/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/mocha/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
"dev": true,
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "@isaacs/cliui": "^8.0.2"
},
- "engines": {
- "node": "*"
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
}
},
"node_modules/mocha/node_modules/minimatch": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
- "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
"dev": true,
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "brace-expansion": "^2.0.2"
},
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/mocha/node_modules/ms": {
+ "node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "node_modules/mocha/node_modules/serialize-javascript": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
- "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
- "dev": true,
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
- "node_modules/monaco-page-objects": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/monaco-page-objects/-/monaco-page-objects-3.12.0.tgz",
- "integrity": "sha512-JiA24MmjeilFUumMtch9v/nzHWFt1TgMt9oRYmQJ7BwOFucFFxU+ksNmEwp5Je3b3tn1F+gDI3A1QwEhdOxXOg==",
- "dev": true,
- "dependencies": {
- "clipboardy": "^4.0.0",
- "clone-deep": "^4.0.1",
- "compare-versions": "^6.1.0",
- "fs-extra": "^11.2.0",
- "ts-essentials": "^9.4.1"
- },
- "peerDependencies": {
- "selenium-webdriver": "^4.6.1",
- "typescript": ">=4.6.2"
- }
- },
- "node_modules/monaco-page-objects/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/mute-stream": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
- "dev": true
- },
- "node_modules/nanoid": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
- "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
- "dev": true,
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/napi-build-utils": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
- "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
"dev": true,
- "optional": true
+ "license": "MIT"
},
"node_modules/neo-async": {
"version": "2.6.2",
@@ -3596,30 +2523,10 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
- "node_modules/node-abi": {
- "version": "3.54.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz",
- "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "semver": "^7.3.5"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/node-addon-api": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
- "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
- "dev": true,
- "optional": true
- },
"node_modules/node-releases": {
- "version": "2.0.13",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
- "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
+ "version": "2.0.27",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
+ "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
"dev": true
},
"node_modules/normalize-path": {
@@ -3631,97 +2538,163 @@
"node": ">=0.10.0"
}
},
- "node_modules/normalize-url": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz",
- "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==",
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
+ "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-function": "^5.0.0"
+ },
"engines": {
- "node": ">=14.16"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/npm-run-path": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz",
- "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==",
+ "node_modules/ora": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz",
+ "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "path-key": "^4.0.0"
+ "chalk": "^5.3.0",
+ "cli-cursor": "^5.0.0",
+ "cli-spinners": "^2.9.2",
+ "is-interactive": "^2.0.0",
+ "is-unicode-supported": "^2.0.0",
+ "log-symbols": "^6.0.0",
+ "stdin-discarder": "^0.2.2",
+ "string-width": "^7.2.0",
+ "strip-ansi": "^7.1.0"
},
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/npm-run-path/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "node_modules/ora/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "node_modules/nth-check": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "node_modules/ora/node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
"dev": true,
- "dependencies": {
- "boolbase": "^1.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/fb55/nth-check?sponsor=1"
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/object-inspect": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "node_modules/ora/node_modules/emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/ora/node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
"dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "node_modules/ora/node_modules/log-symbols": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz",
+ "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "wrappy": "1"
+ "chalk": "^5.3.0",
+ "is-unicode-supported": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+ "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "mimic-fn": "^4.0.0"
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-cancelable": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
- "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==",
+ "node_modules/ora/node_modules/strip-ansi": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.2.2"
+ },
"engines": {
- "node": ">=12.20"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/p-limit": {
@@ -3763,55 +2736,18 @@
"node": ">=6"
}
},
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "dev": true
+ },
"node_modules/pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
"dev": true
},
- "node_modules/parse-semver": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
- "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==",
- "dev": true,
- "dependencies": {
- "semver": "^5.1.0"
- }
- },
- "node_modules/parse-semver/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
- "dev": true,
- "dependencies": {
- "entities": "^4.4.0"
- },
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
- }
- },
- "node_modules/parse5-htmlparser2-tree-adapter": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
- "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
- "dev": true,
- "dependencies": {
- "domhandler": "^5.0.2",
- "parse5": "^7.0.0"
- },
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
- }
- },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -3846,29 +2782,26 @@
"dev": true
},
"node_modules/path-scurry": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
- "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"dev": true,
"dependencies": {
- "lru-cache": "^9.1.1 || ^10.0.0",
+ "lru-cache": "^10.2.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
- "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
- "dev": true,
- "engines": {
- "node": "14 || >=16.14"
- }
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true
},
"node_modules/path-type": {
"version": "4.0.0",
@@ -3878,22 +2811,16 @@
"node": ">=8"
}
},
- "node_modules/pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true
- },
"node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"dev": true
},
"node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
"engines": {
"node": ">=8.6"
},
@@ -3965,156 +2892,30 @@
"node": ">=8"
}
},
- "node_modules/prebuild-install": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
- "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "detect-libc": "^2.0.0",
- "expand-template": "^2.0.3",
- "github-from-package": "0.0.0",
- "minimist": "^1.2.3",
- "mkdirp-classic": "^0.5.3",
- "napi-build-utils": "^1.0.1",
- "node-abi": "^3.3.0",
- "pump": "^3.0.0",
- "rc": "^1.2.7",
- "simple-get": "^4.0.0",
- "tar-fs": "^2.0.0",
- "tunnel-agent": "^0.6.0"
- },
- "bin": {
- "prebuild-install": "bin.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"dev": true
},
- "node_modules/proxy-from-env": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
- },
- "node_modules/pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/qs": {
- "version": "6.11.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
- "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
- "dev": true,
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/quick-lru": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
- "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "^5.1.0"
- }
- },
- "node_modules/rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "bin": {
- "rc": "cli.js"
- }
- },
- "node_modules/rc/node_modules/strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/read": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
- "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==",
- "dev": true,
- "dependencies": {
- "mute-stream": "~0.0.4"
- },
- "engines": {
- "node": ">=0.8"
- }
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
},
"node_modules/readable-stream": {
"version": "2.3.8",
@@ -4132,15 +2933,16 @@
}
},
"node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
"dev": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
"engines": {
- "node": ">=8.10.0"
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
}
},
"node_modules/rechoir": {
@@ -4190,12 +2992,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/resolve-alpn": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
- "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
- "dev": true
- },
"node_modules/resolve-cwd": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
@@ -4217,16 +3013,18 @@
"node": ">=8"
}
},
- "node_modules/responselike": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
- "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
+ "node_modules/restore-cursor": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
+ "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "lowercase-keys": "^3.0.0"
+ "onetime": "^7.0.0",
+ "signal-exit": "^4.1.0"
},
"engines": {
- "node": ">=14.16"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -4241,21 +3039,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -4284,25 +3067,10 @@
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
- "node_modules/sanitize-filename": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
- "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
- "dev": true,
- "dependencies": {
- "truncate-utf8-bytes": "^1.0.0"
- }
- },
- "node_modules/sax": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
- "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==",
- "dev": true
- },
"node_modules/schema-utils": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
- "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
+ "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
@@ -4311,34 +3079,17 @@
"ajv-keywords": "^5.1.0"
},
"engines": {
- "node": ">= 12.13.0"
+ "node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
}
},
- "node_modules/selenium-webdriver": {
- "version": "4.16.0",
- "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.16.0.tgz",
- "integrity": "sha512-IbqpRpfGE7JDGgXHJeWuCqT/tUqnLvZ14csSwt+S8o4nJo3RtQoE9VR4jB47tP/A8ArkYsh/THuMY6kyRP6kuA==",
- "dev": true,
- "dependencies": {
- "jszip": "^3.10.1",
- "tmp": "^0.2.1",
- "ws": ">=8.14.2"
- },
- "engines": {
- "node": ">= 14.20.0"
- }
- },
"node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"bin": {
"semver": "bin/semver.js"
},
@@ -4347,27 +3098,13 @@
}
},
"node_modules/serialize-javascript": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
- "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
- "dev": true,
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
- "node_modules/set-function-length": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
- "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz",
+ "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==",
"dev": true,
- "dependencies": {
- "define-data-property": "^1.1.1",
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
- },
+ "license": "BSD-3-Clause",
"engines": {
- "node": ">= 0.4"
+ "node": ">=20.0.0"
}
},
"node_modules/setimmediate": {
@@ -4409,20 +3146,6 @@
"node": ">=8"
}
},
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
@@ -4435,53 +3158,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/simple-concat": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "optional": true
- },
- "node_modules/simple-get": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
- "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "optional": true,
- "dependencies": {
- "decompress-response": "^6.0.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
- }
- },
"node_modules/slash": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
@@ -4518,6 +3194,19 @@
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true
},
+ "node_modules/stdin-discarder": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
+ "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -4581,18 +3270,6 @@
"node": ">=8"
}
},
- "node_modules/strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -4632,147 +3309,35 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/system-architecture": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz",
- "integrity": "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==",
- "dev": true,
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/tapable": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tar-fs": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
- "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "chownr": "^1.1.1",
- "mkdirp-classic": "^0.5.2",
- "pump": "^3.0.0",
- "tar-stream": "^2.1.4"
- }
- },
- "node_modules/tar-stream": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
- "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
+ "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
"dev": true,
- "optional": true,
- "dependencies": {
- "bl": "^4.0.3",
- "end-of-stream": "^1.4.1",
- "fs-constants": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
- },
"engines": {
"node": ">=6"
- }
- },
- "node_modules/tar-stream/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/targz": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/targz/-/targz-1.0.1.tgz",
- "integrity": "sha512-6q4tP9U55mZnRuMTBqnqc3nwYQY3kv+QthCFZuMk+Tn1qYUnMPmL/JZ/mzgXINzFpSqfU+242IFmFU9VPvqaQw==",
- "dev": true,
- "dependencies": {
- "tar-fs": "^1.8.1"
- }
- },
- "node_modules/targz/node_modules/bl": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
- "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
- "dev": true,
- "dependencies": {
- "readable-stream": "^2.3.5",
- "safe-buffer": "^5.1.1"
- }
- },
- "node_modules/targz/node_modules/pump": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
- "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/targz/node_modules/tar-fs": {
- "version": "1.16.3",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",
- "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
- "dev": true,
- "dependencies": {
- "chownr": "^1.0.1",
- "mkdirp": "^0.5.1",
- "pump": "^1.0.0",
- "tar-stream": "^1.1.2"
- }
- },
- "node_modules/targz/node_modules/tar-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
- "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
- "dev": true,
- "dependencies": {
- "bl": "^1.0.0",
- "buffer-alloc": "^1.2.0",
- "end-of-stream": "^1.0.0",
- "fs-constants": "^1.0.0",
- "readable-stream": "^2.3.0",
- "to-buffer": "^1.1.1",
- "xtend": "^4.0.0"
},
- "engines": {
- "node": ">= 0.8.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
}
},
"node_modules/tas-client": {
- "version": "0.1.73",
- "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.1.73.tgz",
- "integrity": "sha512-UDdUF9kV2hYdlv+7AgqP2kXarVSUhjK7tg1BUflIRGEgND0/QoNpN64rcEuhEcM8AIbW65yrCopJWqRhLZ3m8w==",
- "dependencies": {
- "axios": "^1.6.1"
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.4.3.tgz",
+ "integrity": "sha512-6bqNgMv7ys5PL6Zqz+EoR8J5KrhAGFjodUPkcpM80DHFakKiWcjqKiID5qxsssC/E70fcgYYWPAUK7CWS29b+Q==",
+ "engines": {
+ "node": ">=22"
}
},
"node_modules/terser": {
- "version": "5.19.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.1.tgz",
- "integrity": "sha512-27hxBUVdV6GoNg1pKQ7Z5cbR6V9txPVyBA+FQw3BaZ1Wuzvztce5p156DaP0NVZNrMZZ+6iG9Syf7WgMNKDg2Q==",
+ "version": "5.49.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.49.2.tgz",
+ "integrity": "sha512-rGbJiKeQ4WDe3EXlDAIaQcwftVfv2Q8o1awFNfvXolJYKkb1AuZY1RTOmqx4LJXZENbWZA7eIsYGHuEzHsi1nQ==",
"dev": true,
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.8.2",
+ "acorn": "^8.15.0",
"commander": "^2.20.0",
"source-map-support": "~0.5.20"
},
@@ -4783,107 +3348,51 @@
"node": ">=10"
}
},
- "node_modules/terser-webpack-plugin": {
- "version": "5.3.9",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
- "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
+ "node_modules/tinyglobby": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
+ "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
"dev": true,
"dependencies": {
- "@jridgewell/trace-mapping": "^0.3.17",
- "jest-worker": "^27.4.5",
- "schema-utils": "^3.1.1",
- "serialize-javascript": "^6.0.1",
- "terser": "^5.16.8"
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.4"
},
"engines": {
- "node": ">= 10.13.0"
+ "node": ">=12.0.0"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
},
"peerDependencies": {
- "webpack": "^5.1.0"
+ "picomatch": "^3 || ^4"
},
"peerDependenciesMeta": {
- "@swc/core": {
- "optional": true
- },
- "esbuild": {
- "optional": true
- },
- "uglify-js": {
+ "picomatch": {
"optional": true
}
}
},
- "node_modules/terser-webpack-plugin/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
"dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
"engines": {
- "node": ">= 10.13.0"
+ "node": ">=12"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/tmp": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
- "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
- "dev": true,
- "dependencies": {
- "rimraf": "^3.0.0"
- },
- "engines": {
- "node": ">=8.17.0"
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/to-buffer": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
- "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
- "dev": true
- },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -4895,55 +3404,49 @@
"node": ">=8.0"
}
},
- "node_modules/traverse": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
- "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/truncate-utf8-bytes": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
- "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==",
+ "node_modules/ts-loader": {
+ "version": "9.6.2",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.6.2.tgz",
+ "integrity": "sha512-R4iuczmtgxvtuI556s+hTZ6/7Ee03VCAk/l/M8LY1OAsUgB7YydsCxkgq9D9pKRaD7GJqUi2u8fp9zZP/ufjKA==",
"dev": true,
"dependencies": {
- "utf8-byte-length": "^1.0.1"
- }
- },
- "node_modules/ts-essentials": {
- "version": "9.4.1",
- "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.4.1.tgz",
- "integrity": "sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ==",
- "dev": true,
+ "chalk": "^4.1.0",
+ "picomatch": "^4.0.0",
+ "source-map": "^0.7.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
"peerDependencies": {
- "typescript": ">=4.1.0"
+ "loader-utils": "*",
+ "typescript": "*",
+ "webpack": "^4.0.0 || ^5.0.0"
},
"peerDependenciesMeta": {
- "typescript": {
+ "loader-utils": {
"optional": true
}
}
},
- "node_modules/ts-loader": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz",
- "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==",
+ "node_modules/ts-loader/node_modules/picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
"dev": true,
- "dependencies": {
- "chalk": "^4.1.0",
- "enhanced-resolve": "^5.0.0",
- "micromatch": "^4.0.0",
- "semver": "^7.3.4"
- },
"engines": {
- "node": ">=12.0.0"
+ "node": ">=12"
},
- "peerDependencies": {
- "typescript": "*",
- "webpack": "^5.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/ts-loader/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
}
},
"node_modules/tslib": {
@@ -5004,9 +3507,9 @@
}
},
"node_modules/tslint/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "version": "1.1.18",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
+ "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0",
@@ -5070,9 +3573,9 @@
}
},
"node_modules/tslint/node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
"dev": true,
"dependencies": {
"argparse": "^1.0.7",
@@ -5083,9 +3586,9 @@
}
},
"node_modules/tslint/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -5127,39 +3630,6 @@
"typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev"
}
},
- "node_modules/tunnel": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
- "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
- "dev": true,
- "engines": {
- "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
- }
- },
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/typed-rest-client": {
- "version": "1.8.11",
- "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz",
- "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==",
- "dev": true,
- "dependencies": {
- "qs": "^6.9.1",
- "tunnel": "0.0.6",
- "underscore": "^1.12.1"
- }
- },
"node_modules/typescript": {
"version": "4.9.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
@@ -5173,17 +3643,16 @@
"node": ">=4.2.0"
}
},
- "node_modules/uc.micro": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
- "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+ "node_modules/undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
"dev": true
},
- "node_modules/underscore": {
- "version": "1.13.6",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
- "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==",
- "dev": true
+ "node_modules/universal-user-agent": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz",
+ "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A=="
},
"node_modules/universalify": {
"version": "2.0.0",
@@ -5193,28 +3662,10 @@
"node": ">= 10.0.0"
}
},
- "node_modules/unzipper": {
- "version": "0.10.14",
- "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz",
- "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==",
- "dev": true,
- "dependencies": {
- "big-integer": "^1.6.17",
- "binary": "~0.3.0",
- "bluebird": "~3.4.1",
- "buffer-indexof-polyfill": "~1.0.0",
- "duplexer2": "~0.1.4",
- "fstream": "^1.0.12",
- "graceful-fs": "^4.2.2",
- "listenercount": "~1.0.1",
- "readable-stream": "~2.3.6",
- "setimmediate": "~1.0.4"
- }
- },
"node_modules/update-browserslist-db": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
- "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
"dev": true,
"funding": [
{
@@ -5231,8 +3682,8 @@
}
],
"dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -5241,168 +3692,94 @@
"browserslist": ">= 4.21.0"
}
},
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/url-join": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
- "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
- "dev": true
- },
- "node_modules/utf8-byte-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
- "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==",
- "dev": true
- },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true
},
- "node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
"node_modules/vscode-extension-telemetry-wrapper": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/vscode-extension-telemetry-wrapper/-/vscode-extension-telemetry-wrapper-0.14.0.tgz",
- "integrity": "sha512-EYr1hqiYVSGfupchDN405zSwuvA8V3tJ62KcLIRDr/4ongOc2AvSZ0BlRq8a0w950tadsMlXTKEheB97fZBttg==",
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/vscode-extension-telemetry-wrapper/-/vscode-extension-telemetry-wrapper-0.15.2.tgz",
+ "integrity": "sha512-efKkHF8c4kTKyBhBH2k0bZU4drqIic2jBYw/j1ixKOEEsa/WIiuUsdrBPD5uaRIoZ/91GzNCLiiV4ckIrf581g==",
+ "license": "MIT",
"dependencies": {
- "@vscode/extension-telemetry": "^0.9.6",
- "uuid": "^8.3.2"
+ "@microsoft/applicationinsights-common": "^3.4.1",
+ "@vscode/extension-telemetry": "^1.2.0"
}
},
- "node_modules/vscode-extension-tester": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/vscode-extension-tester/-/vscode-extension-tester-7.0.0.tgz",
- "integrity": "sha512-ICl/ITfPZnvx9ofY2gcOg5ZndQo3MSGu6iNa2TdkPLysAYnm5H/hY3IrmwqQqjXI+id+kcxoZMB/SZlsBlxiVw==",
- "dev": true,
- "dependencies": {
- "@types/selenium-webdriver": "^4.1.21",
- "@vscode/vsce": "^2.22.0",
- "commander": "^11.1.0",
- "compare-versions": "^6.1.0",
- "fs-extra": "^11.2.0",
- "glob": "^10.3.10",
- "got": "^13.0.0",
- "hpagent": "^1.2.0",
- "js-yaml": "^4.1.0",
- "monaco-page-objects": "^3.12.0",
- "sanitize-filename": "^1.6.3",
- "selenium-webdriver": "^4.16.0",
- "targz": "^1.0.1",
- "unzipper": "^0.10.14",
- "vscode-extension-tester-locators": "^3.10.0"
- },
- "bin": {
- "extest": "out/cli.js"
+ "node_modules/vscode-extension-telemetry-wrapper/node_modules/@microsoft/applicationinsights-common": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.4.1.tgz",
+ "integrity": "sha512-CTbD0g/68tiv2yCItsodDQBYxyHdfQkG7VhvVU8OHenukpl/7W4wEuxZuOntqhv5m9Nx/DFncbz+T83nvYTG3g==",
+ "license": "MIT",
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": "3.4.1",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.3",
+ "@nevware21/ts-utils": ">= 0.12.6 < 2.x"
},
"peerDependencies": {
- "mocha": ">=5.2.0",
- "typescript": ">=4.6.2"
- }
- },
- "node_modules/vscode-extension-tester-locators": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/vscode-extension-tester-locators/-/vscode-extension-tester-locators-3.10.0.tgz",
- "integrity": "sha512-smhCxci1FtaK1ZHVnRtrnv+5YIDAFPkXBWRkyKzrf7CBA4Zpg5hleLKipEVEygBj/MrFCW4oYexqti9hOJX3bw==",
- "dev": true,
- "peerDependencies": {
- "monaco-page-objects": "^3.12.0",
- "selenium-webdriver": "^4.6.1"
+ "tslib": ">= 1.0.0"
}
},
- "node_modules/vscode-extension-tester/node_modules/commander": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
- "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
- "dev": true,
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/vscode-extension-tester/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
- "dev": true,
+ "node_modules/vscode-extension-telemetry-wrapper/node_modules/@microsoft/applicationinsights-core-js": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.4.1.tgz",
+ "integrity": "sha512-eXIHZ1+nvBiJgVpufBiTP801Vtr5FEwjWZioUsb44NC/z/UcsZh2MDJ1mBpjaDO73LVYUw/ZZmDCCo6Pg/61kA==",
+ "license": "MIT",
"dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.3",
+ "@nevware21/ts-async": ">= 0.5.5 < 2.x",
+ "@nevware21/ts-utils": ">= 0.12.6 < 2.x"
},
- "engines": {
- "node": ">=14.14"
+ "peerDependencies": {
+ "tslib": ">= 1.0.0"
}
},
- "node_modules/vscode-extension-tester/node_modules/glob": {
- "version": "10.3.10",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
- "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
- "dev": true,
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
- "minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
+ "node_modules/vscode-jsonrpc": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
+ "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
+ "license": "MIT",
"engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=14.0.0"
}
},
- "node_modules/vscode-extension-tester/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
- "dev": true,
+ "node_modules/vscode-languageserver-protocol": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
+ "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "vscode-jsonrpc": "8.2.0",
+ "vscode-languageserver-types": "3.17.5"
}
},
+ "node_modules/vscode-languageserver-types": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
+ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
+ "license": "MIT"
+ },
"node_modules/vscode-tas-client": {
- "version": "0.1.75",
- "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.75.tgz",
- "integrity": "sha512-/+ALFWPI4U3obeRvLFSt39guT7P9bZQrkmcLoiS+2HtzJ/7iPKNt5Sj+XTiitGlPYVFGFc0plxX8AAp6Uxs0xQ==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.3.0.tgz",
+ "integrity": "sha512-69e8Ek86+LwfNp9oh6b7xEnM9M15IX8W+ZhHo2/tCbbnB/TOPK3aDle3iOZa8aeBoGKeaStUkSKaloIvIkmNXg==",
"dependencies": {
- "tas-client": "0.1.73"
+ "tas-client": "^0.4.2"
},
"engines": {
- "vscode": "^1.19.1"
+ "vscode": "^1.85.0"
}
},
"node_modules/watchpack": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
- "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.2.tgz",
+ "integrity": "sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==",
"dev": true,
"dependencies": {
- "glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
},
"engines": {
@@ -5410,35 +3787,31 @@
}
},
"node_modules/webpack": {
- "version": "5.88.2",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz",
- "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==",
- "dev": true,
- "dependencies": {
- "@types/eslint-scope": "^3.7.3",
- "@types/estree": "^1.0.0",
- "@webassemblyjs/ast": "^1.11.5",
- "@webassemblyjs/wasm-edit": "^1.11.5",
- "@webassemblyjs/wasm-parser": "^1.11.5",
- "acorn": "^8.7.1",
- "acorn-import-assertions": "^1.9.0",
- "browserslist": "^4.14.5",
+ "version": "5.109.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.109.0.tgz",
+ "integrity": "sha512-vomrngskVVXEZF9sMZfYAd4pXZUnfaWdJGlF+BTNF+gJBCKYCQBnOeVPlrh39Ewl7nlCsirDplMy6o5g9xJHBg==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "^1.0.8",
+ "@types/json-schema": "^7.0.15",
+ "@webassemblyjs/ast": "^1.14.1",
+ "@webassemblyjs/wasm-edit": "^1.14.1",
+ "@webassemblyjs/wasm-parser": "^1.14.1",
+ "acorn": "^8.16.0",
+ "browserslist": "^4.28.1",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.15.0",
- "es-module-lexer": "^1.2.1",
+ "enhanced-resolve": "^5.24.2",
+ "es-module-lexer": "^2.1.0",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.9",
- "json-parse-even-better-errors": "^2.3.1",
- "loader-runner": "^4.2.0",
- "mime-types": "^2.1.27",
+ "graceful-fs": "^4.2.11",
+ "mime-db": "^1.54.0",
+ "minimizer-webpack-plugin": "^5.6.1",
"neo-async": "^2.6.2",
- "schema-utils": "^3.2.0",
- "tapable": "^2.1.1",
- "terser-webpack-plugin": "^5.3.7",
- "watchpack": "^2.4.0",
- "webpack-sources": "^3.2.3"
+ "schema-utils": "^4.3.3",
+ "tapable": "^2.3.0",
+ "watchpack": "^2.5.2",
+ "webpack-sources": "^3.5.1"
},
"bin": {
"webpack": "bin/webpack.js"
@@ -5526,61 +3899,21 @@
}
},
"node_modules/webpack-sources": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
- "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.1.tgz",
+ "integrity": "sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==",
"dev": true,
"engines": {
"node": ">=10.13.0"
}
},
- "node_modules/webpack/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/webpack/node_modules/ajv-keywords": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/webpack/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/webpack/node_modules/schema-utils": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "node_modules/webpack/node_modules/mime-db": {
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
"dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
"engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
+ "node": ">= 0.6"
}
},
"node_modules/which": {
@@ -5605,9 +3938,9 @@
"dev": true
},
"node_modules/workerpool": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
- "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
+ "version": "9.3.4",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz",
+ "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==",
"dev": true
},
"node_modules/wrap-ansi": {
@@ -5651,58 +3984,6 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
},
- "node_modules/ws": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
- "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
- "dev": true,
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": ">=5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/xml2js": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
- "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
- "dev": true,
- "dependencies": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true,
- "engines": {
- "node": ">=0.4"
- }
- },
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
@@ -5712,36 +3993,31 @@
"node": ">=10"
}
},
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
"dependencies": {
- "cliui": "^7.0.2",
+ "cliui": "^8.0.1",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
- "string-width": "^4.2.0",
+ "string-width": "^4.2.3",
"y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
+ "yargs-parser": "^21.1.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/yargs-parser": {
- "version": "20.2.4",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
- "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/yargs-unparser": {
@@ -5759,25 +4035,6 @@
"node": ">=10"
}
},
- "node_modules/yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
- "dev": true,
- "dependencies": {
- "buffer-crc32": "~0.2.3",
- "fd-slicer": "~1.1.0"
- }
- },
- "node_modules/yazl": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
- "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
- "dev": true,
- "dependencies": {
- "buffer-crc32": "~0.2.3"
- }
- },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
@@ -5793,95 +4050,120 @@
},
"dependencies": {
"@babel/code-frame": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
- "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
"dev": true,
"requires": {
- "@babel/highlight": "^7.22.5"
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
}
},
"@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
- "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"dev": true
},
- "@babel/highlight": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz",
- "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
"@discoveryjs/json-ext": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
"integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
"dev": true
},
+ "@github/copilot-darwin-arm64": {
+ "version": "1.0.78",
+ "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.78.tgz",
+ "integrity": "sha512-P11+VyWg8ad0WlywGtO2d7AxqTLJv4hkUicFg6Ycth5lfk00aCu/74YOOZSPO6C2bBBJhAza7oAdmauM6KEojw==",
+ "optional": true
+ },
+ "@github/copilot-darwin-x64": {
+ "version": "1.0.78",
+ "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.78.tgz",
+ "integrity": "sha512-stimP3WDFs2GU8nJzTJbtRpZViV4bsf80yg7QrFq+G4RISQ3Nihg/3/H0U6UQF1+txMJ/Ohmb5RFYxSw1Hj2sw==",
+ "optional": true
+ },
+ "@github/copilot-language-server": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server/-/copilot-language-server-1.530.0.tgz",
+ "integrity": "sha512-7OjTbKqkA9NSf8Yjms19qglBswdK7IkorbzB0EpfPOPeT8UdmxW0fiYCiaTsyB+VizMzchrPh0nbik8gH8boKw==",
+ "requires": {
+ "@github/copilot-darwin-arm64": "1.0.78",
+ "@github/copilot-darwin-x64": "1.0.78",
+ "@github/copilot-language-server-darwin-arm64": "1.530.0",
+ "@github/copilot-language-server-darwin-x64": "1.530.0",
+ "@github/copilot-language-server-linux-arm64": "1.530.0",
+ "@github/copilot-language-server-linux-x64": "1.530.0",
+ "@github/copilot-language-server-win32-arm64": "1.530.0",
+ "@github/copilot-language-server-win32-x64": "1.530.0",
+ "@github/copilot-linux-arm64": "1.0.78",
+ "@github/copilot-linux-x64": "1.0.78",
+ "@github/copilot-win32-arm64": "1.0.78",
+ "@github/copilot-win32-x64": "1.0.78",
+ "vscode-languageserver-protocol": "^3.17.5"
+ }
+ },
+ "@github/copilot-language-server-darwin-arm64": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server-darwin-arm64/-/copilot-language-server-darwin-arm64-1.530.0.tgz",
+ "integrity": "sha512-WREnhFgvqDUHOYZTOmd0XldA3DtJ7XEn4leAezDEW4iwhoTyROmGSjH02ROj2l22Zdtq5byATidjDHGn5CnO/g==",
+ "optional": true
+ },
+ "@github/copilot-language-server-darwin-x64": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server-darwin-x64/-/copilot-language-server-darwin-x64-1.530.0.tgz",
+ "integrity": "sha512-rHBRaA6MtbQSCOF7vDgcPEiukWmmggwuoOcqqi7yKvcq6/K7MDW9jtydq6HP/mg0fUe44l0sG/h9/MQlQcljvA==",
+ "optional": true
+ },
+ "@github/copilot-language-server-linux-arm64": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server-linux-arm64/-/copilot-language-server-linux-arm64-1.530.0.tgz",
+ "integrity": "sha512-2Wvdm3IogKHSUsN6zlleK91CdKoiGIf2R0n0P5ZHcLxaGix29fPGMa/hl5A9wkpnnV7szBDUKTHqwZoMxtPOvA==",
+ "optional": true
+ },
+ "@github/copilot-language-server-linux-x64": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server-linux-x64/-/copilot-language-server-linux-x64-1.530.0.tgz",
+ "integrity": "sha512-1MIg6t+TS67sEpjb5jqf2BhjRrYW3sLlSyCxAT+a76ZUwlLjmrVFlpU2R6B/HIQDQhoxuvZwQ6YXmfxCVufDmw==",
+ "optional": true
+ },
+ "@github/copilot-language-server-win32-arm64": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server-win32-arm64/-/copilot-language-server-win32-arm64-1.530.0.tgz",
+ "integrity": "sha512-xlTuNNZQUg+WM2RJTvdlbcYKyQCCOWQaXTn5sGGZ38tSB+gPKcCDr39c5AgWZ4KS/1jk+pxn0b74+PMkyWyxow==",
+ "optional": true
+ },
+ "@github/copilot-language-server-win32-x64": {
+ "version": "1.530.0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-language-server-win32-x64/-/copilot-language-server-win32-x64-1.530.0.tgz",
+ "integrity": "sha512-tI2dPAWplfsbLL94CyuFfm3R8YfCGlT8dmPbbaa2e6E9/GoBkYugcTtDH2a5qkaPk1t2LJeUTDiN/Uhr/HNAPw==",
+ "optional": true
+ },
+ "@github/copilot-linux-arm64": {
+ "version": "1.0.78",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.78.tgz",
+ "integrity": "sha512-K31PRKGTm252V1Lof7ypjg283R2QSm3BgoCvZfX2taos4wqC3SaTozSQKwW3dgrAx7A3G3SGEoilVCNqfigdZA==",
+ "optional": true
+ },
+ "@github/copilot-linux-x64": {
+ "version": "1.0.78",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.78.tgz",
+ "integrity": "sha512-QK3oMtAn9dIv+1u1kx0xNpZNtZxdI+uZVIyLl7myp+Oh2Uj8BLagVv6a7uP0cDphO3TgfIdlvpepCe5MIcx0fw==",
+ "optional": true
+ },
+ "@github/copilot-win32-arm64": {
+ "version": "1.0.78",
+ "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.78.tgz",
+ "integrity": "sha512-ktDkFXaaecEKD3hpM6ydM9lKOdoCfsQsXCmzLzE7DCmSpbbMCdfPfWfZ7MOclmKmpZ5/MNfr4U2l8CUqGerzYA==",
+ "optional": true
+ },
+ "@github/copilot-win32-x64": {
+ "version": "1.0.78",
+ "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.78.tgz",
+ "integrity": "sha512-Gd8l2T4eqYEWlOEPd0SZznQ+YYgYrwOkE0QXodMkhCBbPdgu/uTzb7mnISWwnVAgqs7pONdF1GOpHkTo+ay8CQ==",
+ "optional": true
+ },
"@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -5948,111 +4230,104 @@
}
},
"@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
"dev": true,
"requires": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
}
},
"@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true
- },
- "@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"dev": true
},
"@jridgewell/source-map": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
- "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
+ "version": "0.3.11",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
+ "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
"dev": true,
"requires": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
}
},
"@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"dev": true
},
"@jridgewell/trace-mapping": {
- "version": "0.3.18",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
- "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
"dev": true,
"requires": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
"@microsoft/1ds-core-js": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-4.2.2.tgz",
- "integrity": "sha512-4c1AXzOj7ZyX7/97v8fEDYcQ8ymTTmj+j9HYYlcO0/cUbDzZGA7/xzb34chvvAbV60qDEbX0Ha/ea7wzgefORg==",
+ "version": "4.3.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-4.3.10.tgz",
+ "integrity": "sha512-5fSZmkGwWkH+mrIA5M1GYPZdPM+SjXwCCl2Am7VhFoVwOBJNhRnwvIpAdzw6sFjiebN/rz+/YH0NdxztGZSa9Q==",
"requires": {
- "@microsoft/applicationinsights-core-js": "3.2.2",
+ "@microsoft/applicationinsights-core-js": "3.3.10",
"@microsoft/applicationinsights-shims": "3.0.1",
"@microsoft/dynamicproto-js": "^2.0.3",
- "@nevware21/ts-async": ">= 0.5.1 < 2.x",
- "@nevware21/ts-utils": ">= 0.11.1 < 2.x"
+ "@nevware21/ts-async": ">= 0.5.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.11.8 < 2.x"
}
},
"@microsoft/1ds-post-js": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-4.2.2.tgz",
- "integrity": "sha512-0k1aSxD03r3ugLaYhI8Y8AonI/whOzSQd66XBYURVTs6uheMMxDQdSnAk/4Dwn/TUK3TCEJZBIwZRVpUJtJX9w==",
+ "version": "4.3.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-4.3.10.tgz",
+ "integrity": "sha512-VSLjc9cT+Y+eTiSfYltJHJCejn8oYr0E6Pq2BMhOEO7F6IyLGYIxzKKvo78ze9x+iHX7KPTATcZ+PFgjGXuNqg==",
"requires": {
- "@microsoft/1ds-core-js": "4.2.2",
+ "@microsoft/1ds-core-js": "4.3.10",
"@microsoft/applicationinsights-shims": "3.0.1",
"@microsoft/dynamicproto-js": "^2.0.3",
- "@nevware21/ts-async": ">= 0.5.1 < 2.x",
- "@nevware21/ts-utils": ">= 0.11.1 < 2.x"
+ "@nevware21/ts-async": ">= 0.5.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.11.8 < 2.x"
}
},
"@microsoft/applicationinsights-channel-js": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.2.2.tgz",
- "integrity": "sha512-4ruoKxgZYYa+K8JJu8RMY0egKazS8xClbx70NQHa/rJ7JYFgN3OIEIBZtFoMcHR8Vg7MEsNE5/wV6o7WWJkVIA==",
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.3.10.tgz",
+ "integrity": "sha512-iolFLz1ocWAzIQqHIEjjov3gNTPkgFQ4ArHnBcJEYoffOGWlJt6copaevS5YPI5rHzmbySsengZ8cLJJBBrXzQ==",
"requires": {
- "@microsoft/applicationinsights-common": "3.2.2",
- "@microsoft/applicationinsights-core-js": "3.2.2",
+ "@microsoft/applicationinsights-common": "3.3.10",
+ "@microsoft/applicationinsights-core-js": "3.3.10",
"@microsoft/applicationinsights-shims": "3.0.1",
"@microsoft/dynamicproto-js": "^2.0.3",
- "@nevware21/ts-async": ">= 0.5.1 < 2.x",
- "@nevware21/ts-utils": ">= 0.11.1 < 2.x"
+ "@nevware21/ts-async": ">= 0.5.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.11.8 < 2.x"
}
},
"@microsoft/applicationinsights-common": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.2.2.tgz",
- "integrity": "sha512-e1C35gdkFSzWyUUR1S8FvisXW3nT3p6wWsLNs+vUKLOTQzsvW3XpNMVtNCq4MfHWiYDuz1lPSzo2eENaij1fVA==",
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.3.10.tgz",
+ "integrity": "sha512-RVIenPIvNgZCbjJdALvLM4rNHgAFuHI7faFzHCgnI6S2WCUNGHeXlQTs9EUUrL+n2TPp9/cd0KKMILU5VVyYiA==",
"requires": {
- "@microsoft/applicationinsights-core-js": "3.2.2",
+ "@microsoft/applicationinsights-core-js": "3.3.10",
"@microsoft/applicationinsights-shims": "3.0.1",
"@microsoft/dynamicproto-js": "^2.0.3",
- "@nevware21/ts-utils": ">= 0.11.1 < 2.x"
+ "@nevware21/ts-utils": ">= 0.11.8 < 2.x"
}
},
"@microsoft/applicationinsights-core-js": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.2.2.tgz",
- "integrity": "sha512-dF6LZ4ahdhoHufw+N7OXRDzWT8QN193Dvpd8GLqEZdR/KtCTofPSI63yumu+ZkzKYadf1S3w2xg0OmbdyXexoQ==",
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.3.10.tgz",
+ "integrity": "sha512-5yKeyassZTq2l+SAO4npu6LPnbS++UD+M+Ghjm9uRzoBwD8tumFx0/F8AkSVqbniSREd+ztH/2q2foewa2RZyg==",
"requires": {
"@microsoft/applicationinsights-shims": "3.0.1",
"@microsoft/dynamicproto-js": "^2.0.3",
- "@nevware21/ts-async": ">= 0.5.1 < 2.x",
- "@nevware21/ts-utils": ">= 0.11.1 < 2.x"
+ "@nevware21/ts-async": ">= 0.5.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.11.8 < 2.x"
}
},
"@microsoft/applicationinsights-shims": {
@@ -6064,17 +4339,17 @@
}
},
"@microsoft/applicationinsights-web-basic": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.2.2.tgz",
- "integrity": "sha512-4OdgTurRr/Awm2DcWuAhidFON2UFiirabeO9SSAeTefDCdtzv5fWzntq9zvdV47c+w6WzZkz8nX/bQTgNRb2+w==",
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.3.10.tgz",
+ "integrity": "sha512-AZib5DAT3NU0VT0nLWEwXrnoMDDgZ/5S4dso01CNU5ELNxLdg+1fvchstlVdMy4FrAnxzs8Wf/GIQNFYOVgpAw==",
"requires": {
- "@microsoft/applicationinsights-channel-js": "3.2.2",
- "@microsoft/applicationinsights-common": "3.2.2",
- "@microsoft/applicationinsights-core-js": "3.2.2",
+ "@microsoft/applicationinsights-channel-js": "3.3.10",
+ "@microsoft/applicationinsights-common": "3.3.10",
+ "@microsoft/applicationinsights-core-js": "3.3.10",
"@microsoft/applicationinsights-shims": "3.0.1",
"@microsoft/dynamicproto-js": "^2.0.3",
- "@nevware21/ts-async": ">= 0.5.1 < 2.x",
- "@nevware21/ts-utils": ">= 0.11.1 < 2.x"
+ "@nevware21/ts-async": ">= 0.5.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.11.8 < 2.x"
}
},
"@microsoft/dynamicproto-js": {
@@ -6086,17 +4361,17 @@
}
},
"@nevware21/ts-async": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.5.1.tgz",
- "integrity": "sha512-O2kN8n2HpDWJ7Oji+oTMnhITrCndmrNvrHbGDwAIBydx+FWvLE/vrw4QwnRRMvSCa2AJrcP59Ryklxv30KfkWQ==",
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.5.5.tgz",
+ "integrity": "sha512-vwqaL05iJPjLeh5igPi8MeeAu10i+Aq7xko1fbo9F5Si6MnVN5505qaV7AhSdk5MCBJVT/UYMk3kgInNjDb4Ig==",
"requires": {
- "@nevware21/ts-utils": ">= 0.11.2 < 2.x"
+ "@nevware21/ts-utils": ">= 0.12.2 < 2.x"
}
},
"@nevware21/ts-utils": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.11.2.tgz",
- "integrity": "sha512-80W8BkS09kkGuUHJX50Fqq+QqAslxUaOQytH+3JhRacXs1EpEt2JOOkYKytqFZAYir3SeH9fahniEaDzIBxlUw=="
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.14.0.tgz",
+ "integrity": "sha512-WoeqTIXQ8WPhl+lD2NbMHoAQ4sJl0n7EoRoDmVJui//Usg512enl9q1fdbVobuZt3omnxnmVsDrNIvPBvFgddQ=="
},
"@nodelib/fs.scandir": {
"version": "2.1.5",
@@ -6121,58 +4396,151 @@
"fastq": "^1.6.0"
}
},
- "@pkgjs/parseargs": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "dev": true,
- "optional": true
+ "@octokit/auth-token": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz",
+ "integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw=="
},
- "@sindresorhus/is": {
- "version": "5.5.2",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.5.2.tgz",
- "integrity": "sha512-8ZMK+V6YpeZFfW6hU9uAeWVuq8v3t7BaG276gIO+kVqnAcLrHCXdFUOf7kgouyfAarkZtuavIqY3RsXTsTWviw==",
- "dev": true
+ "@octokit/core": {
+ "version": "6.1.6",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.6.tgz",
+ "integrity": "sha512-kIU8SLQkYWGp3pVKiYzA5OSaNF5EE03P/R8zEmmrG6XwOg5oBjXyQVVIauQ0dgau4zYhpZEhJrvIYt6oM+zZZA==",
+ "requires": {
+ "@octokit/auth-token": "^5.0.0",
+ "@octokit/graphql": "^8.2.2",
+ "@octokit/request": "^9.2.3",
+ "@octokit/request-error": "^6.1.8",
+ "@octokit/types": "^14.0.0",
+ "before-after-hook": "^3.0.2",
+ "universal-user-agent": "^7.0.0"
+ }
},
- "@szmarczak/http-timer": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz",
- "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==",
- "dev": true,
+ "@octokit/endpoint": {
+ "version": "10.1.4",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
+ "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
"requires": {
- "defer-to-connect": "^2.0.1"
+ "@octokit/types": "^14.0.0",
+ "universal-user-agent": "^7.0.2"
}
},
- "@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "dev": true
+ "@octokit/graphql": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.2.tgz",
+ "integrity": "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA==",
+ "requires": {
+ "@octokit/request": "^9.2.3",
+ "@octokit/types": "^14.0.0",
+ "universal-user-agent": "^7.0.0"
+ }
},
- "@types/eslint": {
- "version": "8.44.0",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz",
- "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==",
- "dev": true,
+ "@octokit/openapi-types": {
+ "version": "25.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz",
+ "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA=="
+ },
+ "@octokit/plugin-paginate-rest": {
+ "version": "11.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.6.0.tgz",
+ "integrity": "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==",
+ "requires": {
+ "@octokit/types": "^13.10.0"
+ },
+ "dependencies": {
+ "@octokit/openapi-types": {
+ "version": "24.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz",
+ "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="
+ },
+ "@octokit/types": {
+ "version": "13.10.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz",
+ "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==",
+ "requires": {
+ "@octokit/openapi-types": "^24.2.0"
+ }
+ }
+ }
+ },
+ "@octokit/plugin-request-log": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-5.3.1.tgz",
+ "integrity": "sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==",
+ "requires": {}
+ },
+ "@octokit/plugin-rest-endpoint-methods": {
+ "version": "13.5.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.5.0.tgz",
+ "integrity": "sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw==",
+ "requires": {
+ "@octokit/types": "^13.10.0"
+ },
+ "dependencies": {
+ "@octokit/openapi-types": {
+ "version": "24.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz",
+ "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="
+ },
+ "@octokit/types": {
+ "version": "13.10.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz",
+ "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==",
+ "requires": {
+ "@octokit/openapi-types": "^24.2.0"
+ }
+ }
+ }
+ },
+ "@octokit/request": {
+ "version": "9.2.4",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz",
+ "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==",
"requires": {
- "@types/estree": "*",
- "@types/json-schema": "*"
+ "@octokit/endpoint": "^10.1.4",
+ "@octokit/request-error": "^6.1.8",
+ "@octokit/types": "^14.0.0",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
}
},
- "@types/eslint-scope": {
- "version": "3.7.4",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
- "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
- "dev": true,
+ "@octokit/request-error": {
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz",
+ "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==",
+ "requires": {
+ "@octokit/types": "^14.0.0"
+ }
+ },
+ "@octokit/rest": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-21.1.1.tgz",
+ "integrity": "sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg==",
+ "requires": {
+ "@octokit/core": "^6.1.4",
+ "@octokit/plugin-paginate-rest": "^11.4.2",
+ "@octokit/plugin-request-log": "^5.3.1",
+ "@octokit/plugin-rest-endpoint-methods": "^13.3.0"
+ }
+ },
+ "@octokit/types": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz",
+ "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==",
"requires": {
- "@types/eslint": "*",
- "@types/estree": "*"
+ "@octokit/openapi-types": "^25.1.0"
}
},
+ "@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true
+ },
"@types/estree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
- "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
"dev": true
},
"@types/fs-extra": {
@@ -6194,22 +4562,16 @@
"@types/node": "*"
}
},
- "@types/http-cache-semantics": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
- "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==",
- "dev": true
- },
"@types/json-schema": {
- "version": "7.0.12",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
- "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
"dev": true
},
"@types/lodash": {
- "version": "4.14.195",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz",
- "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==",
+ "version": "4.17.25",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.25.tgz",
+ "integrity": "sha512-+K1NIO8I+F9/wNulfVvu23QYd0Pe9/OCqRrim4NoYIf1VoEDL90Ve4ClzpyqBLc7NpGGWRvYNCKZ1BE/Jpf8dQ==",
"dev": true
},
"@types/minimatch": {
@@ -6225,18 +4587,12 @@
"dev": true
},
"@types/node": {
- "version": "16.18.38",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.38.tgz",
- "integrity": "sha512-6sfo1qTulpVbkxECP+AVrHV9OoJqhzCsfTNp5NIG+enM4HyM3HvZCO798WShIXBN0+QtDIcutJCjsVYnQP5rIQ==",
- "dev": true
- },
- "@types/selenium-webdriver": {
- "version": "4.1.21",
- "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.1.21.tgz",
- "integrity": "sha512-QGURnImvxYlIQz5DVhvHdqpYNLBjhJ2Vm+cnQI2G9QZzkWlZm0LkLcvDcHp+qE6N2KBz4CeuvXgPO7W3XQ0Tyw==",
+ "version": "20.16.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.1.tgz",
+ "integrity": "sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==",
"dev": true,
"requires": {
- "@types/ws": "*"
+ "undici-types": "~6.19.2"
}
},
"@types/semver": {
@@ -6246,303 +4602,177 @@
"dev": true
},
"@types/vscode": {
- "version": "1.83.1",
- "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.83.1.tgz",
- "integrity": "sha512-BHu51NaNKOtDf3BOonY3sKFFmZKEpRkzqkZVpSYxowLbs5JqjOQemYFob7Gs5rpxE5tiGhfpnMpcdF/oKrLg4w==",
- "dev": true
- },
- "@types/ws": {
- "version": "8.5.10",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
- "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@ungap/promise-all-settled": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
- "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
+ "version": "1.95.0",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.95.0.tgz",
+ "integrity": "sha512-0LBD8TEiNbet3NvWsmn59zLzOFu/txSlGxnv5yAFHCrhG9WvAnR3IvfHzMOs2aeWqgvNjq9pO99IUw8d3n+unw==",
"dev": true
},
"@vscode/extension-telemetry": {
- "version": "0.9.6",
- "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.9.6.tgz",
- "integrity": "sha512-qWK2GNw+b69QRYpjuNM9g3JKToMICoNIdc0rQMtvb4gIG9vKKCZCVCz+ZOx6XM/YlfWAyuPiyxcjIY0xyF+Djg==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-1.2.0.tgz",
+ "integrity": "sha512-En6dTwfy5NFzSMibvOpx/lKq2jtgWuR4++KJbi3SpQ2iT8gm+PHo9868/scocW122KDwTxl4ruxZ7i4rHmJJnQ==",
"requires": {
- "@microsoft/1ds-core-js": "^4.1.2",
- "@microsoft/1ds-post-js": "^4.1.2",
- "@microsoft/applicationinsights-web-basic": "^3.1.2"
+ "@microsoft/1ds-core-js": "^4.3.10",
+ "@microsoft/1ds-post-js": "^4.3.10",
+ "@microsoft/applicationinsights-web-basic": "^3.3.10"
}
},
"@vscode/test-electron": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz",
- "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-3.1.0.tgz",
+ "integrity": "sha512-CRqv5u+YYoseuNVJ6Tyo4k0sF0mx4qnKMihRB0PjsUF8Dc0WKtCXo6CNL6nWWm5esfFQsQA/pejMj4ZbpJVLTw==",
"dev": true,
"requires": {
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
+ "http-proxy-agent": "^7.0.2",
+ "https-proxy-agent": "^7.0.5",
"jszip": "^3.10.1",
- "semver": "^7.5.2"
- }
- },
- "@vscode/vsce": {
- "version": "2.22.0",
- "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.22.0.tgz",
- "integrity": "sha512-8df4uJiM3C6GZ2Sx/KilSKVxsetrTBBIUb3c0W4B1EWHcddioVs5mkyDKtMNP0khP/xBILVSzlXxhV+nm2rC9A==",
- "dev": true,
- "requires": {
- "azure-devops-node-api": "^11.0.1",
- "chalk": "^2.4.2",
- "cheerio": "^1.0.0-rc.9",
- "commander": "^6.2.1",
- "glob": "^7.0.6",
- "hosted-git-info": "^4.0.2",
- "jsonc-parser": "^3.2.0",
- "keytar": "^7.7.0",
- "leven": "^3.1.0",
- "markdown-it": "^12.3.2",
- "mime": "^1.3.4",
- "minimatch": "^3.0.3",
- "parse-semver": "^1.1.1",
- "read": "^1.0.7",
- "semver": "^7.5.2",
- "tmp": "^0.2.1",
- "typed-rest-client": "^1.8.4",
- "url-join": "^4.0.1",
- "xml2js": "^0.5.0",
- "yauzl": "^2.3.1",
- "yazl": "^2.2.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
+ "ora": "^8.1.0",
+ "semver": "^7.6.2"
}
},
"@webassemblyjs/ast": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
- "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
+ "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
"dev": true,
"requires": {
- "@webassemblyjs/helper-numbers": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ "@webassemblyjs/helper-numbers": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2"
}
},
"@webassemblyjs/floating-point-hex-parser": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
- "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
+ "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
"dev": true
},
"@webassemblyjs/helper-api-error": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
- "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
+ "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
"dev": true
},
"@webassemblyjs/helper-buffer": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
- "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
+ "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
"dev": true
},
"@webassemblyjs/helper-numbers": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
- "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
+ "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
"dev": true,
"requires": {
- "@webassemblyjs/floating-point-hex-parser": "1.11.6",
- "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/floating-point-hex-parser": "1.13.2",
+ "@webassemblyjs/helper-api-error": "1.13.2",
"@xtuc/long": "4.2.2"
}
},
"@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
- "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
+ "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
"dev": true
},
"@webassemblyjs/helper-wasm-section": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
- "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
+ "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/wasm-gen": "1.14.1"
}
},
"@webassemblyjs/ieee754": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
- "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
+ "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
"dev": true,
"requires": {
"@xtuc/ieee754": "^1.2.0"
}
},
"@webassemblyjs/leb128": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
- "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
+ "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
"dev": true,
"requires": {
"@xtuc/long": "4.2.2"
}
},
"@webassemblyjs/utf8": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
- "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
+ "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
"dev": true
},
"@webassemblyjs/wasm-edit": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
- "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
+ "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/helper-wasm-section": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6",
- "@webassemblyjs/wasm-opt": "1.11.6",
- "@webassemblyjs/wasm-parser": "1.11.6",
- "@webassemblyjs/wast-printer": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/helper-wasm-section": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-opt": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1",
+ "@webassemblyjs/wast-printer": "1.14.1"
}
},
"@webassemblyjs/wasm-gen": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
- "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
+ "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/ieee754": "1.11.6",
- "@webassemblyjs/leb128": "1.11.6",
- "@webassemblyjs/utf8": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
}
},
"@webassemblyjs/wasm-opt": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
- "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
+ "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6",
- "@webassemblyjs/wasm-parser": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1"
}
},
"@webassemblyjs/wasm-parser": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
- "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
+ "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-api-error": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/ieee754": "1.11.6",
- "@webassemblyjs/leb128": "1.11.6",
- "@webassemblyjs/utf8": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-api-error": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
}
},
"@webassemblyjs/wast-printer": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
- "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
+ "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/ast": "1.14.1",
"@xtuc/long": "4.2.2"
}
},
@@ -6582,37 +4812,30 @@
"dev": true
},
"acorn": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
- "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz",
+ "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==",
"dev": true
},
- "acorn-import-assertions": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
- "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
- "dev": true,
- "requires": {}
- },
"agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
"dev": true,
"requires": {
- "debug": "4"
+ "debug": "^4.3.4"
}
},
"ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"dev": true,
"requires": {
- "fast-deep-equal": "^3.1.1",
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
"json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "require-from-string": "^2.0.2"
}
},
"ajv-formats": {
@@ -6633,12 +4856,6 @@
"fast-deep-equal": "^3.1.3"
}
},
- "ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
- "dev": true
- },
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -6654,128 +4871,37 @@
"color-convert": "^2.0.1"
}
},
- "anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
"argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
"await-lock": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz",
"integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw=="
},
- "axios": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz",
- "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==",
- "requires": {
- "follow-redirects": "^1.15.0",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
- },
- "azure-devops-node-api": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz",
- "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==",
- "dev": true,
- "requires": {
- "tunnel": "0.0.6",
- "typed-rest-client": "^1.8.4"
- }
- },
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
- "base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true,
- "optional": true
- },
- "big-integer": {
- "version": "1.6.51",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
- "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
- "dev": true
- },
- "binary": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
- "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==",
- "dev": true,
- "requires": {
- "buffers": "~0.1.1",
- "chainsaw": "~0.1.0"
- }
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true
- },
- "bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "dev": true,
- "optional": true,
- "requires": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "optional": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
- }
- },
- "bluebird": {
- "version": "3.4.7",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
- "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==",
+ "baseline-browser-mapping": {
+ "version": "2.9.19",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz",
+ "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==",
"dev": true
},
- "boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "dev": true
+ "before-after-hook": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
+ "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A=="
},
"brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
+ "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
"requires": {
"balanced-match": "^1.0.0"
}
@@ -6795,112 +4921,30 @@
"dev": true
},
"browserslist": {
- "version": "4.21.9",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz",
- "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001503",
- "electron-to-chromium": "^1.4.431",
- "node-releases": "^2.0.12",
- "update-browserslist-db": "^1.0.11"
- }
- },
- "buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
- "optional": true,
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "buffer-alloc": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
- "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
+ "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
"dev": true,
"requires": {
- "buffer-alloc-unsafe": "^1.1.0",
- "buffer-fill": "^1.0.0"
+ "baseline-browser-mapping": "^2.9.0",
+ "caniuse-lite": "^1.0.30001759",
+ "electron-to-chromium": "^1.5.263",
+ "node-releases": "^2.0.27",
+ "update-browserslist-db": "^1.2.0"
}
},
- "buffer-alloc-unsafe": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
- "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
- "dev": true
- },
- "buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true
- },
- "buffer-fill": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
- "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==",
- "dev": true
- },
"buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true
},
- "buffer-indexof-polyfill": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
- "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==",
- "dev": true
- },
- "buffers": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
- "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==",
- "dev": true
- },
"builtin-modules": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
"integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==",
"dev": true
},
- "cacheable-lookup": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
- "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
- "dev": true
- },
- "cacheable-request": {
- "version": "10.2.12",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz",
- "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==",
- "dev": true,
- "requires": {
- "@types/http-cache-semantics": "^4.0.1",
- "get-stream": "^6.0.1",
- "http-cache-semantics": "^4.1.1",
- "keyv": "^4.5.2",
- "mimic-response": "^4.0.0",
- "normalize-url": "^8.0.0",
- "responselike": "^3.0.0"
- }
- },
- "call-bind": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
- "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.1",
- "set-function-length": "^1.1.1"
- }
- },
"camelcase": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
@@ -6908,20 +4952,11 @@
"dev": true
},
"caniuse-lite": {
- "version": "1.0.30001517",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz",
- "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==",
+ "version": "1.0.30001769",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz",
+ "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==",
"dev": true
},
- "chainsaw": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
- "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==",
- "dev": true,
- "requires": {
- "traverse": ">=0.3.0 <0.4"
- }
- },
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -6943,93 +4978,44 @@
}
}
},
- "cheerio": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
- "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
- "dev": true,
- "requires": {
- "cheerio-select": "^2.1.0",
- "dom-serializer": "^2.0.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "htmlparser2": "^8.0.1",
- "parse5": "^7.0.0",
- "parse5-htmlparser2-tree-adapter": "^7.0.0"
- }
- },
- "cheerio-select": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
- "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
- "dev": true,
- "requires": {
- "boolbase": "^1.0.0",
- "css-select": "^5.1.0",
- "css-what": "^6.1.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1"
- }
- },
"chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"dev": true,
"requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
+ "readdirp": "^4.0.1"
}
},
- "chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
- "dev": true
- },
"chrome-trace-event": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
"integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
"dev": true
},
- "clipboardy": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz",
- "integrity": "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==",
+ "cli-cursor": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
+ "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
"dev": true,
"requires": {
- "execa": "^8.0.1",
- "is-wsl": "^3.1.0",
- "is64bit": "^2.0.0"
+ "restore-cursor": "^5.0.0"
}
},
+ "cli-spinners": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+ "dev": true
+ },
"cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
"requires": {
"string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
+ "strip-ansi": "^6.0.1",
"wrap-ansi": "^7.0.0"
}
},
@@ -7065,26 +5051,12 @@
"integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
"dev": true
},
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
"commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
- "compare-versions": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz",
- "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==",
- "dev": true
- },
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -7092,17 +5064,16 @@
"dev": true
},
"copy-webpack-plugin": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz",
- "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-14.0.0.tgz",
+ "integrity": "sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==",
"dev": true,
"requires": {
- "fast-glob": "^3.2.11",
"glob-parent": "^6.0.1",
- "globby": "^13.1.1",
"normalize-path": "^3.0.0",
- "schema-utils": "^4.0.0",
- "serialize-javascript": "^6.0.0"
+ "schema-utils": "^4.2.0",
+ "serialize-javascript": ">=7.0.5",
+ "tinyglobby": "^0.2.12"
}
},
"core-util-is": {
@@ -7112,9 +5083,9 @@
"dev": true
},
"cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
"requires": {
"path-key": "^3.1.0",
@@ -7122,32 +5093,13 @@
"which": "^2.0.1"
}
},
- "css-select": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
- "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
- "dev": true,
- "requires": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
- }
- },
- "css-what": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
- "dev": true
- },
"debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"dev": true,
"requires": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
}
},
"decamelize": {
@@ -7156,63 +5108,10 @@
"integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
"dev": true
},
- "decompress-response": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
- "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
- "dev": true,
- "requires": {
- "mimic-response": "^3.1.0"
- },
- "dependencies": {
- "mimic-response": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
- "dev": true
- }
- }
- },
- "deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "dev": true,
- "optional": true
- },
- "defer-to-connect": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
- "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
- "dev": true
- },
- "define-data-property": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
- "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
- },
- "detect-libc": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
- "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
- "dev": true,
- "optional": true
- },
"diff": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
- "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz",
+ "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==",
"dev": true
},
"dir-glob": {
@@ -7223,52 +5122,6 @@
"path-type": "^4.0.0"
}
},
- "dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- }
- },
- "domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "dev": true
- },
- "domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.3.0"
- }
- },
- "domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
- "dev": true,
- "requires": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- }
- },
- "duplexer2": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.2"
- }
- },
"eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -7276,9 +5129,9 @@
"dev": true
},
"electron-to-chromium": {
- "version": "1.4.467",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.467.tgz",
- "integrity": "sha512-2qI70O+rR4poYeF2grcuS/bCps5KJh6y1jtZMDDEteyKJQrzLOEhFyXCLcHW6DTBjKjWkk26JhWoAi+Ux9A0fg==",
+ "version": "1.5.286",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz",
+ "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==",
"dev": true
},
"emoji-regex": {
@@ -7287,31 +5140,16 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
- "end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
- "requires": {
- "once": "^1.4.0"
- }
- },
"enhanced-resolve": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
- "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
+ "version": "5.24.5",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz",
+ "integrity": "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==",
"dev": true,
"requires": {
"graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
+ "tapable": "^2.3.3"
}
},
- "entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dev": true
- },
"envinfo": {
"version": "7.10.0",
"resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz",
@@ -7319,15 +5157,15 @@
"dev": true
},
"es-module-lexer": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz",
- "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz",
+ "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==",
"dev": true
},
"escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true
},
"escape-string-regexp": {
@@ -7381,37 +5219,10 @@
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
"dev": true
},
- "execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
- },
- "dependencies": {
- "get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
- "dev": true
- }
- }
- },
- "expand-template": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
- "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
- "dev": true,
- "optional": true
+ "fast-content-type-parse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
+ "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q=="
},
"fast-deep-equal": {
"version": "3.1.3",
@@ -7420,15 +5231,15 @@
"dev": true
},
"fast-glob": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz",
- "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
"requires": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
"glob-parent": "^5.1.2",
"merge2": "^1.3.0",
- "micromatch": "^4.0.4"
+ "micromatch": "^4.0.8"
},
"dependencies": {
"glob-parent": {
@@ -7441,10 +5252,10 @@
}
}
},
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "fast-uri": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz",
+ "integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==",
"dev": true
},
"fastest-levenshtein": {
@@ -7461,15 +5272,6 @@
"reusify": "^1.0.4"
}
},
- "fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "dev": true,
- "requires": {
- "pend": "~1.2.0"
- }
- },
"fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
@@ -7502,43 +5304,16 @@
"lodash": "^4.17.21"
}
},
- "follow-redirects": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA=="
- },
"foreground-child": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
- "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
"dev": true,
"requires": {
- "cross-spawn": "^7.0.0",
+ "cross-spawn": "^7.0.6",
"signal-exit": "^4.0.1"
}
},
- "form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- },
- "form-data-encoder": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
- "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
- "dev": true
- },
- "fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
- "dev": true
- },
"fs-extra": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
@@ -7555,36 +5330,6 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
- "fstream": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- },
- "dependencies": {
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
- }
- },
"function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -7597,31 +5342,12 @@
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
- "get-intrinsic": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
- "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
- }
- },
- "get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "get-east-asian-width": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz",
+ "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==",
"dev": true
},
- "github-from-package": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
- "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
- "dev": true,
- "optional": true
- },
"glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -7637,9 +5363,9 @@
},
"dependencies": {
"brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "version": "1.1.18",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
+ "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
@@ -7647,9 +5373,9 @@
}
},
"minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
@@ -7666,12 +5392,6 @@
"is-glob": "^4.0.3"
}
},
- "glob-to-regexp": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "dev": true
- },
"globby": {
"version": "13.2.2",
"resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz",
@@ -7684,45 +5404,11 @@
"slash": "^4.0.0"
}
},
- "gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.3"
- }
- },
- "got": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz",
- "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==",
- "dev": true,
- "requires": {
- "@sindresorhus/is": "^5.2.0",
- "@szmarczak/http-timer": "^5.0.1",
- "cacheable-lookup": "^7.0.0",
- "cacheable-request": "^10.2.8",
- "decompress-response": "^6.0.0",
- "form-data-encoder": "^2.1.2",
- "get-stream": "^6.0.1",
- "http2-wrapper": "^2.1.10",
- "lowercase-keys": "^3.0.0",
- "p-cancelable": "^3.0.0",
- "responselike": "^3.0.0"
- }
- },
"graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
- "growl": {
- "version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
- "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
- "dev": true
- },
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -7738,119 +5424,32 @@
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
- "has-property-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
- "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.2.2"
- }
- },
- "has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
- "dev": true
- },
- "has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "dev": true
- },
- "hasown": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
- "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.2"
- }
- },
"he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
},
- "hosted-git-info": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "hpagent": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz",
- "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==",
- "dev": true
- },
- "htmlparser2": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
- "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "entities": "^4.4.0"
- }
- },
- "http-cache-semantics": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
- "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
- "dev": true
- },
"http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dev": true,
- "requires": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- }
- },
- "http2-wrapper": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz",
- "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==",
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": true,
"requires": {
- "quick-lru": "^5.1.1",
- "resolve-alpn": "^1.2.0"
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
}
},
"https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
"dev": true,
"requires": {
- "agent-base": "6",
+ "agent-base": "^7.0.2",
"debug": "4"
}
},
- "human-signals": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
- "dev": true
- },
- "ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "dev": true,
- "optional": true
- },
"ignore": {
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
@@ -7888,28 +5487,12 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
- "ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true,
- "optional": true
- },
"interpret": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
"integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
"dev": true
},
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
"is-core-module": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
@@ -7919,12 +5502,6 @@
"has": "^1.0.3"
}
},
- "is-docker": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
- "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
- "dev": true
- },
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -7944,20 +5521,23 @@
"is-extglob": "^2.1.1"
}
},
- "is-inside-container": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
- "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
- "dev": true,
- "requires": {
- "is-docker": "^3.0.0"
- }
+ "is-interactive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
+ "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
+ "dev": true
},
"is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
},
+ "is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true
+ },
"is-plain-obj": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
@@ -7973,35 +5553,11 @@
"isobject": "^3.0.1"
}
},
- "is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true
- },
- "is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true
- },
- "is-wsl": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
- "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
- "dev": true,
- "requires": {
- "is-inside-container": "^1.0.0"
- }
- },
- "is64bit": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is64bit/-/is64bit-2.0.0.tgz",
- "integrity": "sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==",
- "dev": true,
- "requires": {
- "system-architecture": "^0.1.0"
- }
+ "is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "dev": true
},
"isarray": {
"version": "1.0.0",
@@ -8021,16 +5577,6 @@
"integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
"dev": true
},
- "jackspeak": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
- "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
- "dev": true,
- "requires": {
- "@isaacs/cliui": "^8.0.2",
- "@pkgjs/parseargs": "^0.11.0"
- }
- },
"jest-worker": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
@@ -8049,38 +5595,20 @@
"dev": true
},
"js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz",
+ "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==",
"dev": true,
"requires": {
"argparse": "^2.0.1"
}
},
- "json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true
- },
- "json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
"json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
- "jsonc-parser": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
- "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
- "dev": true
- },
"jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@@ -8102,38 +5630,12 @@
"setimmediate": "^1.0.5"
}
},
- "keytar": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz",
- "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==",
- "dev": true,
- "optional": true,
- "requires": {
- "node-addon-api": "^4.3.0",
- "prebuild-install": "^7.0.1"
- }
- },
- "keyv": {
- "version": "4.5.3",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz",
- "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==",
- "dev": true,
- "requires": {
- "json-buffer": "3.0.1"
- }
- },
"kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true
},
- "leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "dev": true
- },
"lie": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
@@ -8143,27 +5645,6 @@
"immediate": "~3.0.5"
}
},
- "linkify-it": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
- "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
- "dev": true,
- "requires": {
- "uc.micro": "^1.0.1"
- }
- },
- "listenercount": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
- "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==",
- "dev": true
- },
- "loader-runner": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
- "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
- "dev": true
- },
"locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -8174,9 +5655,9 @@
}
},
"lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ "version": "4.18.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
+ "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="
},
"log-symbols": {
"version": "4.1.0",
@@ -8188,47 +5669,6 @@
"is-unicode-supported": "^0.1.0"
}
},
- "lowercase-keys": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
- "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "markdown-it": {
- "version": "12.3.2",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
- "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1",
- "entities": "~2.1.0",
- "linkify-it": "^3.0.1",
- "mdurl": "^1.0.1",
- "uc.micro": "^1.0.5"
- },
- "dependencies": {
- "entities": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
- "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
- "dev": true
- }
- }
- },
- "mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
- "dev": true
- },
"merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -8241,49 +5681,24 @@
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
},
"micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"requires": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
}
},
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true
- },
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
- },
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true
- },
- "mimic-response": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
- "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
+ "mimic-function": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
+ "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
"dev": true
},
"minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
+ "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
"requires": {
"brace-expansion": "^2.0.1"
}
@@ -8294,10 +5709,22 @@
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"dev": true
},
+ "minimizer-webpack-plugin": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz",
+ "integrity": "sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^4.3.0",
+ "terser": "^5.31.1"
+ }
+ },
"minipass": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
- "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
"dev": true
},
"mkdirp": {
@@ -8309,201 +5736,86 @@
"minimist": "^1.2.6"
}
},
- "mkdirp-classic": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
- "dev": true,
- "optional": true
- },
"mocha": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz",
- "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==",
- "dev": true,
- "requires": {
- "@ungap/promise-all-settled": "1.1.2",
- "ansi-colors": "4.1.1",
- "browser-stdout": "1.3.1",
- "chokidar": "3.5.3",
- "debug": "4.3.3",
- "diff": "5.0.0",
- "escape-string-regexp": "4.0.0",
- "find-up": "5.0.0",
- "glob": "7.2.0",
- "growl": "1.10.5",
- "he": "1.2.0",
- "js-yaml": "4.1.0",
- "log-symbols": "4.1.0",
- "minimatch": "4.2.1",
- "ms": "2.1.3",
- "nanoid": "3.3.1",
- "serialize-javascript": "6.0.0",
- "strip-json-comments": "3.1.1",
- "supports-color": "8.1.1",
- "which": "2.0.2",
- "workerpool": "6.2.0",
- "yargs": "16.2.0",
- "yargs-parser": "20.2.4",
- "yargs-unparser": "2.0.0"
+ "version": "11.7.5",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.5.tgz",
+ "integrity": "sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==",
+ "dev": true,
+ "requires": {
+ "browser-stdout": "^1.3.1",
+ "chokidar": "^4.0.1",
+ "debug": "^4.3.5",
+ "diff": "^7.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-up": "^5.0.0",
+ "glob": "^10.4.5",
+ "he": "^1.2.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "log-symbols": "^4.1.0",
+ "minimatch": "^9.0.5",
+ "ms": "^2.1.3",
+ "picocolors": "^1.1.1",
+ "serialize-javascript": ">=7.0.5",
+ "strip-json-comments": "^3.1.1",
+ "supports-color": "^8.1.1",
+ "workerpool": "^9.2.0",
+ "yargs": "^17.7.2",
+ "yargs-parser": "^21.1.1",
+ "yargs-unparser": "^2.0.0"
},
"dependencies": {
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- }
- }
- },
"glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+ "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
"dev": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "dependencies": {
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- }
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
}
},
- "minimatch": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
- "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
+ "jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
"dev": true,
"requires": {
- "brace-expansion": "^1.1.7"
+ "@isaacs/cliui": "^8.0.2",
+ "@pkgjs/parseargs": "^0.11.0"
}
},
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "serialize-javascript": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
- "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- }
- }
- },
- "monaco-page-objects": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/monaco-page-objects/-/monaco-page-objects-3.12.0.tgz",
- "integrity": "sha512-JiA24MmjeilFUumMtch9v/nzHWFt1TgMt9oRYmQJ7BwOFucFFxU+ksNmEwp5Je3b3tn1F+gDI3A1QwEhdOxXOg==",
- "dev": true,
- "requires": {
- "clipboardy": "^4.0.0",
- "clone-deep": "^4.0.1",
- "compare-versions": "^6.1.0",
- "fs-extra": "^11.2.0",
- "ts-essentials": "^9.4.1"
- },
- "dependencies": {
- "fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
"dev": true,
"requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
+ "brace-expansion": "^2.0.2"
}
}
}
},
"ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "mute-stream": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
- "dev": true
- },
- "nanoid": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
- "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
- "napi-build-utils": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
- "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
- "dev": true,
- "optional": true
- },
"neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
- "node-abi": {
- "version": "3.54.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz",
- "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==",
- "dev": true,
- "optional": true,
- "requires": {
- "semver": "^7.3.5"
- }
- },
- "node-addon-api": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
- "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
- "dev": true,
- "optional": true
- },
"node-releases": {
- "version": "2.0.13",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
- "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
+ "version": "2.0.27",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
+ "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
"dev": true
},
"normalize-path": {
@@ -8512,44 +5824,6 @@
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true
},
- "normalize-url": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz",
- "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==",
- "dev": true
- },
- "npm-run-path": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz",
- "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==",
- "dev": true,
- "requires": {
- "path-key": "^4.0.0"
- },
- "dependencies": {
- "path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "dev": true
- }
- }
- },
- "nth-check": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
- "dev": true,
- "requires": {
- "boolbase": "^1.0.0"
- }
- },
- "object-inspect": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
- "dev": true
- },
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -8560,19 +5834,94 @@
}
},
"onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
+ "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
"dev": true,
"requires": {
- "mimic-fn": "^4.0.0"
+ "mimic-function": "^5.0.0"
}
},
- "p-cancelable": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
- "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==",
- "dev": true
+ "ora": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz",
+ "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^5.3.0",
+ "cli-cursor": "^5.0.0",
+ "cli-spinners": "^2.9.2",
+ "is-interactive": "^2.0.0",
+ "is-unicode-supported": "^2.0.0",
+ "log-symbols": "^6.0.0",
+ "stdin-discarder": "^0.2.2",
+ "string-width": "^7.2.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "dev": true
+ },
+ "is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz",
+ "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^5.3.0",
+ "is-unicode-supported": "^1.3.0"
+ },
+ "dependencies": {
+ "is-unicode-supported": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+ "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+ "dev": true
+ }
+ }
+ },
+ "string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^6.2.2"
+ }
+ }
+ }
},
"p-limit": {
"version": "3.1.0",
@@ -8598,48 +5947,18 @@
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
},
+ "package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "dev": true
+ },
"pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
"dev": true
},
- "parse-semver": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
- "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==",
- "dev": true,
- "requires": {
- "semver": "^5.1.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true
- }
- }
- },
- "parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
- "dev": true,
- "requires": {
- "entities": "^4.4.0"
- }
- },
- "parse5-htmlparser2-tree-adapter": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
- "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
- "dev": true,
- "requires": {
- "domhandler": "^5.0.2",
- "parse5": "^7.0.0"
- }
- },
"path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -8665,19 +5984,19 @@
"dev": true
},
"path-scurry": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
- "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"dev": true,
"requires": {
- "lru-cache": "^9.1.1 || ^10.0.0",
+ "lru-cache": "^10.2.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"dependencies": {
"lru-cache": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
- "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
"dev": true
}
}
@@ -8687,22 +6006,16 @@
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
},
- "pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true
- },
"picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"dev": true
},
"picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="
},
"pkg-dir": {
"version": "4.2.0",
@@ -8752,115 +6065,17 @@
}
}
},
- "prebuild-install": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
- "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
- "dev": true,
- "optional": true,
- "requires": {
- "detect-libc": "^2.0.0",
- "expand-template": "^2.0.3",
- "github-from-package": "0.0.0",
- "minimist": "^1.2.3",
- "mkdirp-classic": "^0.5.3",
- "napi-build-utils": "^1.0.1",
- "node-abi": "^3.3.0",
- "pump": "^3.0.0",
- "rc": "^1.2.7",
- "simple-get": "^4.0.0",
- "tar-fs": "^2.0.0",
- "tunnel-agent": "^0.6.0"
- }
- },
"process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "proxy-from-env": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
- "optional": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
- "dev": true
- },
- "qs": {
- "version": "6.11.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
- "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
- "dev": true,
- "requires": {
- "side-channel": "^1.0.4"
- }
+ "dev": true
},
"queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
},
- "quick-lru": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
- "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
- "dev": true
- },
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dev": true,
- "optional": true,
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "dependencies": {
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
- "dev": true,
- "optional": true
- }
- }
- },
- "read": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
- "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==",
- "dev": true,
- "requires": {
- "mute-stream": "~0.0.4"
- }
- },
"readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
@@ -8877,13 +6092,10 @@
}
},
"readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "dev": true
},
"rechoir": {
"version": "0.7.1",
@@ -8917,12 +6129,6 @@
"supports-preserve-symlinks-flag": "^1.0.0"
}
},
- "resolve-alpn": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
- "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
- "dev": true
- },
"resolve-cwd": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
@@ -8938,13 +6144,14 @@
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true
},
- "responselike": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
- "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
+ "restore-cursor": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
+ "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
"dev": true,
"requires": {
- "lowercase-keys": "^3.0.0"
+ "onetime": "^7.0.0",
+ "signal-exit": "^4.1.0"
}
},
"reusify": {
@@ -8952,15 +6159,6 @@
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
},
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
"run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -8975,25 +6173,10 @@
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
- "sanitize-filename": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
- "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
- "dev": true,
- "requires": {
- "truncate-utf8-bytes": "^1.0.0"
- }
- },
- "sax": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
- "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==",
- "dev": true
- },
"schema-utils": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
- "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
+ "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.9",
@@ -9002,45 +6185,16 @@
"ajv-keywords": "^5.1.0"
}
},
- "selenium-webdriver": {
- "version": "4.16.0",
- "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.16.0.tgz",
- "integrity": "sha512-IbqpRpfGE7JDGgXHJeWuCqT/tUqnLvZ14csSwt+S8o4nJo3RtQoE9VR4jB47tP/A8ArkYsh/THuMY6kyRP6kuA==",
- "dev": true,
- "requires": {
- "jszip": "^3.10.1",
- "tmp": "^0.2.1",
- "ws": ">=8.14.2"
- }
- },
"semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A=="
},
"serialize-javascript": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
- "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- },
- "set-function-length": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
- "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
- "dev": true,
- "requires": {
- "define-data-property": "^1.1.1",
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
- }
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz",
+ "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==",
+ "dev": true
},
"setimmediate": {
"version": "1.0.5",
@@ -9072,42 +6226,12 @@
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
},
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
"signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true
},
- "simple-concat": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
- "dev": true,
- "optional": true
- },
- "simple-get": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
- "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
- "dev": true,
- "optional": true,
- "requires": {
- "decompress-response": "^6.0.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
- }
- },
"slash": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
@@ -9135,6 +6259,12 @@
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true
},
+ "stdin-discarder": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
+ "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==",
+ "dev": true
+ },
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -9184,12 +6314,6 @@
"ansi-regex": "^5.0.1"
}
},
- "strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true
- },
"strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -9211,203 +6335,54 @@
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
"dev": true
},
- "system-architecture": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz",
- "integrity": "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==",
- "dev": true
- },
"tapable": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
+ "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
"dev": true
},
- "tar-fs": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
- "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
- "dev": true,
- "optional": true,
- "requires": {
- "chownr": "^1.1.1",
- "mkdirp-classic": "^0.5.2",
- "pump": "^3.0.0",
- "tar-stream": "^2.1.4"
- }
- },
- "tar-stream": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
- "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
- "dev": true,
- "optional": true,
- "requires": {
- "bl": "^4.0.3",
- "end-of-stream": "^1.4.1",
- "fs-constants": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
- },
- "dependencies": {
- "readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "optional": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
- }
- },
- "targz": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/targz/-/targz-1.0.1.tgz",
- "integrity": "sha512-6q4tP9U55mZnRuMTBqnqc3nwYQY3kv+QthCFZuMk+Tn1qYUnMPmL/JZ/mzgXINzFpSqfU+242IFmFU9VPvqaQw==",
- "dev": true,
- "requires": {
- "tar-fs": "^1.8.1"
- },
- "dependencies": {
- "bl": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
- "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
- "dev": true,
- "requires": {
- "readable-stream": "^2.3.5",
- "safe-buffer": "^5.1.1"
- }
- },
- "pump": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
- "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "tar-fs": {
- "version": "1.16.3",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",
- "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
- "dev": true,
- "requires": {
- "chownr": "^1.0.1",
- "mkdirp": "^0.5.1",
- "pump": "^1.0.0",
- "tar-stream": "^1.1.2"
- }
- },
- "tar-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
- "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
- "dev": true,
- "requires": {
- "bl": "^1.0.0",
- "buffer-alloc": "^1.2.0",
- "end-of-stream": "^1.0.0",
- "fs-constants": "^1.0.0",
- "readable-stream": "^2.3.0",
- "to-buffer": "^1.1.1",
- "xtend": "^4.0.0"
- }
- }
- }
- },
"tas-client": {
- "version": "0.1.73",
- "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.1.73.tgz",
- "integrity": "sha512-UDdUF9kV2hYdlv+7AgqP2kXarVSUhjK7tg1BUflIRGEgND0/QoNpN64rcEuhEcM8AIbW65yrCopJWqRhLZ3m8w==",
- "requires": {
- "axios": "^1.6.1"
- }
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.4.3.tgz",
+ "integrity": "sha512-6bqNgMv7ys5PL6Zqz+EoR8J5KrhAGFjodUPkcpM80DHFakKiWcjqKiID5qxsssC/E70fcgYYWPAUK7CWS29b+Q=="
},
"terser": {
- "version": "5.19.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.1.tgz",
- "integrity": "sha512-27hxBUVdV6GoNg1pKQ7Z5cbR6V9txPVyBA+FQw3BaZ1Wuzvztce5p156DaP0NVZNrMZZ+6iG9Syf7WgMNKDg2Q==",
+ "version": "5.49.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.49.2.tgz",
+ "integrity": "sha512-rGbJiKeQ4WDe3EXlDAIaQcwftVfv2Q8o1awFNfvXolJYKkb1AuZY1RTOmqx4LJXZENbWZA7eIsYGHuEzHsi1nQ==",
"dev": true,
"requires": {
"@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.8.2",
+ "acorn": "^8.15.0",
"commander": "^2.20.0",
"source-map-support": "~0.5.20"
}
},
- "terser-webpack-plugin": {
- "version": "5.3.9",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
- "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
+ "tinyglobby": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
+ "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
"dev": true,
"requires": {
- "@jridgewell/trace-mapping": "^0.3.17",
- "jest-worker": "^27.4.5",
- "schema-utils": "^3.1.1",
- "serialize-javascript": "^6.0.1",
- "terser": "^5.16.8"
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.4"
},
"dependencies": {
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-keywords": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
"dev": true,
"requires": {}
},
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
"dev": true
- },
- "schema-utils": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- }
}
}
},
- "tmp": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
- "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
- "dev": true,
- "requires": {
- "rimraf": "^3.0.0"
- }
- },
- "to-buffer": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
- "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
- "dev": true
- },
"to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -9416,38 +6391,29 @@
"is-number": "^7.0.0"
}
},
- "traverse": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
- "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==",
- "dev": true
- },
- "truncate-utf8-bytes": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
- "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==",
- "dev": true,
- "requires": {
- "utf8-byte-length": "^1.0.1"
- }
- },
- "ts-essentials": {
- "version": "9.4.1",
- "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.4.1.tgz",
- "integrity": "sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ==",
- "dev": true,
- "requires": {}
- },
"ts-loader": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz",
- "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==",
+ "version": "9.6.2",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.6.2.tgz",
+ "integrity": "sha512-R4iuczmtgxvtuI556s+hTZ6/7Ee03VCAk/l/M8LY1OAsUgB7YydsCxkgq9D9pKRaD7GJqUi2u8fp9zZP/ufjKA==",
"dev": true,
"requires": {
"chalk": "^4.1.0",
- "enhanced-resolve": "^5.0.0",
- "micromatch": "^4.0.0",
- "semver": "^7.3.4"
+ "picomatch": "^4.0.0",
+ "source-map": "^0.7.4"
+ },
+ "dependencies": {
+ "picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true
+ }
}
},
"tslib": {
@@ -9495,9 +6461,9 @@
}
},
"brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "version": "1.1.18",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
+ "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
@@ -9549,9 +6515,9 @@
"dev": true
},
"js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
@@ -9559,9 +6525,9 @@
}
},
"minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
@@ -9593,281 +6559,146 @@
"tslib": "^1.8.1"
}
},
- "tunnel": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
- "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
- "dev": true
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "typed-rest-client": {
- "version": "1.8.11",
- "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz",
- "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==",
- "dev": true,
- "requires": {
- "qs": "^6.9.1",
- "tunnel": "0.0.6",
- "underscore": "^1.12.1"
- }
- },
"typescript": {
"version": "4.9.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"dev": true
},
- "uc.micro": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
- "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+ "undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
"dev": true
},
- "underscore": {
- "version": "1.13.6",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
- "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==",
- "dev": true
+ "universal-user-agent": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz",
+ "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A=="
},
"universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
},
- "unzipper": {
- "version": "0.10.14",
- "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz",
- "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==",
- "dev": true,
- "requires": {
- "big-integer": "^1.6.17",
- "binary": "~0.3.0",
- "bluebird": "~3.4.1",
- "buffer-indexof-polyfill": "~1.0.0",
- "duplexer2": "~0.1.4",
- "fstream": "^1.0.12",
- "graceful-fs": "^4.2.2",
- "listenercount": "~1.0.1",
- "readable-stream": "~2.3.6",
- "setimmediate": "~1.0.4"
- }
- },
"update-browserslist-db": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
- "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
- "dev": true,
- "requires": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- }
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
"dev": true,
"requires": {
- "punycode": "^2.1.0"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
}
},
- "url-join": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
- "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
- "dev": true
- },
- "utf8-byte-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
- "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==",
- "dev": true
- },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true
},
- "uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
- },
"vscode-extension-telemetry-wrapper": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/vscode-extension-telemetry-wrapper/-/vscode-extension-telemetry-wrapper-0.14.0.tgz",
- "integrity": "sha512-EYr1hqiYVSGfupchDN405zSwuvA8V3tJ62KcLIRDr/4ongOc2AvSZ0BlRq8a0w950tadsMlXTKEheB97fZBttg==",
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/vscode-extension-telemetry-wrapper/-/vscode-extension-telemetry-wrapper-0.15.2.tgz",
+ "integrity": "sha512-efKkHF8c4kTKyBhBH2k0bZU4drqIic2jBYw/j1ixKOEEsa/WIiuUsdrBPD5uaRIoZ/91GzNCLiiV4ckIrf581g==",
"requires": {
- "@vscode/extension-telemetry": "^0.9.6",
- "uuid": "^8.3.2"
- }
- },
- "vscode-extension-tester": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/vscode-extension-tester/-/vscode-extension-tester-7.0.0.tgz",
- "integrity": "sha512-ICl/ITfPZnvx9ofY2gcOg5ZndQo3MSGu6iNa2TdkPLysAYnm5H/hY3IrmwqQqjXI+id+kcxoZMB/SZlsBlxiVw==",
- "dev": true,
- "requires": {
- "@types/selenium-webdriver": "^4.1.21",
- "@vscode/vsce": "^2.22.0",
- "commander": "^11.1.0",
- "compare-versions": "^6.1.0",
- "fs-extra": "^11.2.0",
- "glob": "^10.3.10",
- "got": "^13.0.0",
- "hpagent": "^1.2.0",
- "js-yaml": "^4.1.0",
- "monaco-page-objects": "^3.12.0",
- "sanitize-filename": "^1.6.3",
- "selenium-webdriver": "^4.16.0",
- "targz": "^1.0.1",
- "unzipper": "^0.10.14",
- "vscode-extension-tester-locators": "^3.10.0"
+ "@microsoft/applicationinsights-common": "^3.4.1",
+ "@vscode/extension-telemetry": "^1.2.0"
},
"dependencies": {
- "commander": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
- "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
- "dev": true
- },
- "fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "glob": {
- "version": "10.3.10",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
- "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
- "dev": true,
+ "@microsoft/applicationinsights-common": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.4.1.tgz",
+ "integrity": "sha512-CTbD0g/68tiv2yCItsodDQBYxyHdfQkG7VhvVU8OHenukpl/7W4wEuxZuOntqhv5m9Nx/DFncbz+T83nvYTG3g==",
"requires": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
- "minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
+ "@microsoft/applicationinsights-core-js": "3.4.1",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.3",
+ "@nevware21/ts-utils": ">= 0.12.6 < 2.x"
}
},
- "minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
- "dev": true,
+ "@microsoft/applicationinsights-core-js": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.4.1.tgz",
+ "integrity": "sha512-eXIHZ1+nvBiJgVpufBiTP801Vtr5FEwjWZioUsb44NC/z/UcsZh2MDJ1mBpjaDO73LVYUw/ZZmDCCo6Pg/61kA==",
"requires": {
- "brace-expansion": "^2.0.1"
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.3",
+ "@nevware21/ts-async": ">= 0.5.5 < 2.x",
+ "@nevware21/ts-utils": ">= 0.12.6 < 2.x"
}
}
}
},
- "vscode-extension-tester-locators": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/vscode-extension-tester-locators/-/vscode-extension-tester-locators-3.10.0.tgz",
- "integrity": "sha512-smhCxci1FtaK1ZHVnRtrnv+5YIDAFPkXBWRkyKzrf7CBA4Zpg5hleLKipEVEygBj/MrFCW4oYexqti9hOJX3bw==",
- "dev": true,
- "requires": {}
+ "vscode-jsonrpc": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
+ "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="
+ },
+ "vscode-languageserver-protocol": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
+ "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
+ "requires": {
+ "vscode-jsonrpc": "8.2.0",
+ "vscode-languageserver-types": "3.17.5"
+ }
+ },
+ "vscode-languageserver-types": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
+ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="
},
"vscode-tas-client": {
- "version": "0.1.75",
- "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.75.tgz",
- "integrity": "sha512-/+ALFWPI4U3obeRvLFSt39guT7P9bZQrkmcLoiS+2HtzJ/7iPKNt5Sj+XTiitGlPYVFGFc0plxX8AAp6Uxs0xQ==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.3.0.tgz",
+ "integrity": "sha512-69e8Ek86+LwfNp9oh6b7xEnM9M15IX8W+ZhHo2/tCbbnB/TOPK3aDle3iOZa8aeBoGKeaStUkSKaloIvIkmNXg==",
"requires": {
- "tas-client": "0.1.73"
+ "tas-client": "^0.4.2"
}
},
"watchpack": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
- "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.2.tgz",
+ "integrity": "sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==",
"dev": true,
"requires": {
- "glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
}
},
"webpack": {
- "version": "5.88.2",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz",
- "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==",
- "dev": true,
- "requires": {
- "@types/eslint-scope": "^3.7.3",
- "@types/estree": "^1.0.0",
- "@webassemblyjs/ast": "^1.11.5",
- "@webassemblyjs/wasm-edit": "^1.11.5",
- "@webassemblyjs/wasm-parser": "^1.11.5",
- "acorn": "^8.7.1",
- "acorn-import-assertions": "^1.9.0",
- "browserslist": "^4.14.5",
+ "version": "5.109.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.109.0.tgz",
+ "integrity": "sha512-vomrngskVVXEZF9sMZfYAd4pXZUnfaWdJGlF+BTNF+gJBCKYCQBnOeVPlrh39Ewl7nlCsirDplMy6o5g9xJHBg==",
+ "dev": true,
+ "requires": {
+ "@types/estree": "^1.0.8",
+ "@types/json-schema": "^7.0.15",
+ "@webassemblyjs/ast": "^1.14.1",
+ "@webassemblyjs/wasm-edit": "^1.14.1",
+ "@webassemblyjs/wasm-parser": "^1.14.1",
+ "acorn": "^8.16.0",
+ "browserslist": "^4.28.1",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.15.0",
- "es-module-lexer": "^1.2.1",
+ "enhanced-resolve": "^5.24.2",
+ "es-module-lexer": "^2.1.0",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.9",
- "json-parse-even-better-errors": "^2.3.1",
- "loader-runner": "^4.2.0",
- "mime-types": "^2.1.27",
+ "graceful-fs": "^4.2.11",
+ "mime-db": "^1.54.0",
+ "minimizer-webpack-plugin": "^5.6.1",
"neo-async": "^2.6.2",
- "schema-utils": "^3.2.0",
- "tapable": "^2.1.1",
- "terser-webpack-plugin": "^5.3.7",
- "watchpack": "^2.4.0",
- "webpack-sources": "^3.2.3"
+ "schema-utils": "^4.3.3",
+ "tapable": "^2.3.0",
+ "watchpack": "^2.5.2",
+ "webpack-sources": "^3.5.1"
},
"dependencies": {
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-keywords": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true,
- "requires": {}
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "mime-db": {
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
"dev": true
- },
- "schema-utils": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- }
}
}
},
@@ -9910,9 +6741,9 @@
}
},
"webpack-sources": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
- "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.1.tgz",
+ "integrity": "sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==",
"dev": true
},
"which": {
@@ -9931,9 +6762,9 @@
"dev": true
},
"workerpool": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
- "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
+ "version": "9.3.4",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz",
+ "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==",
"dev": true
},
"wrap-ansi": {
@@ -9964,65 +6795,31 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
},
- "ws": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
- "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
- "dev": true,
- "requires": {}
- },
- "xml2js": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
- "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
- "dev": true,
- "requires": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
- }
- },
- "xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
- "dev": true
- },
- "xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true
- },
"y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
},
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
"requires": {
- "cliui": "^7.0.2",
+ "cliui": "^8.0.1",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
- "string-width": "^4.2.0",
+ "string-width": "^4.2.3",
"y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
+ "yargs-parser": "^21.1.1"
}
},
"yargs-parser": {
- "version": "20.2.4",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
- "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true
},
"yargs-unparser": {
@@ -10037,25 +6834,6 @@
"is-plain-obj": "^2.1.0"
}
},
- "yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
- "dev": true,
- "requires": {
- "buffer-crc32": "~0.2.3",
- "fd-slicer": "~1.1.0"
- }
- },
- "yazl": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
- "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
- "dev": true,
- "requires": {
- "buffer-crc32": "~0.2.3"
- }
- },
"yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/package.json b/package.json
index b72d6b19..9206965c 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "vscode-java-dependency",
"displayName": "Project Manager for Java",
"description": "%description%",
- "version": "0.24.0",
+ "version": "0.27.6",
"publisher": "vscjava",
"preview": false,
"aiKey": "5c642b22-e845-4400-badb-3f8509a70777",
@@ -12,7 +12,7 @@
"explorer"
],
"engines": {
- "vscode": "^1.83.1"
+ "vscode": "^1.95.0"
},
"repository": {
"type": "git",
@@ -46,7 +46,73 @@
"main": "./main.js",
"contributes": {
"javaExtensions": [
- "./server/com.microsoft.jdtls.ext.core-0.24.0.jar"
+ "./server/com.microsoft.jdtls.ext.core-0.24.1.jar"
+ ],
+ "languageModelTools": [
+ {
+ "name": "lsp_java_getFileStructure",
+ "toolReferenceName": "javaFileStructure",
+ "modelDescription": "Outline a known Java file (classes, methods, fields with line ranges) to pick a precise read_file range instead of reading the whole file. Needs a path from lsp_java_findSymbol or the user — do not guess. Returns file plus per-symbol readFileRange ({ offset, limit }) for read_file. Use limit to cap outline items (default 20, max 60). Not for workspace search (use lsp_java_findSymbol).",
+ "displayName": "Java: Get File Structure",
+ "userDescription": "Get a Java file outline with classes, methods, fields, and line ranges.",
+ "tags": [
+ "java",
+ "lsp",
+ "code-navigation",
+ "file-outline"
+ ],
+ "canBeReferencedInPrompt": true,
+ "icon": "$(symbol-class)",
+ "when": "config.vscode-java-dependency.enableLspTools && javaLSReady",
+ "inputSchema": {
+ "type": "object",
+ "properties": {
+ "uri": {
+ "type": "string",
+ "description": "Workspace-relative path to a Java file, from lsp_java_findSymbol or user input — do not guess."
+ },
+ "limit": {
+ "type": "number",
+ "description": "Maximum outline items to return (default: 20, max: 60). Use a smaller value when only top-level context is needed."
+ }
+ },
+ "required": [
+ "uri"
+ ]
+ }
+ },
+ {
+ "name": "lsp_java_findSymbol",
+ "toolReferenceName": "javaFindSymbol",
+ "modelDescription": "Find Java class/interface/method/field definitions across the workspace by name or partial identifier. Prefer over grep_search, file_search, or semantic_search for Java symbol lookup. Each result has file and readFileInput ({ filePath, offset, limit }) for read_file; use it when source is needed, or lsp_java_getFileStructure with file for broader context. On empty results don't re-search (it retries internally); retry once only if it reports indexing in progress, else use generic search. Not for non-Java files, literals, comments, or build/XML files.",
+ "displayName": "Java: Find Symbol",
+ "userDescription": "Find Java class, method, field, or interface definitions by name.",
+ "tags": [
+ "java",
+ "lsp",
+ "code-navigation",
+ "symbol-search"
+ ],
+ "canBeReferencedInPrompt": true,
+ "icon": "$(search)",
+ "when": "config.vscode-java-dependency.enableLspTools && javaLSReady",
+ "inputSchema": {
+ "type": "object",
+ "properties": {
+ "query": {
+ "type": "string",
+ "description": "Symbol name or pattern to search for"
+ },
+ "limit": {
+ "type": "number",
+ "description": "Maximum results (default: 20, max: 50)"
+ }
+ },
+ "required": [
+ "query"
+ ]
+ }
+ }
],
"commands": [
{
@@ -114,6 +180,16 @@
"title": "%contributes.commands.java.project.build.workspace%",
"icon": "$(tools)"
},
+ {
+ "command": "java.project.rebuild.workspace",
+ "title": "%contributes.commands.java.project.rebuild.workspace%",
+ "icon": "$(refresh)"
+ },
+ {
+ "command": "java.project.build.project",
+ "title": "%contributes.commands.java.project.build.project%",
+ "category": "Java"
+ },
{
"command": "java.project.clean.workspace",
"title": "%contributes.commands.java.project.clean.workspace%"
@@ -130,7 +206,8 @@
},
{
"command": "java.project.rebuild",
- "title": "%contributes.commands.java.project.rebuild%"
+ "title": "%contributes.commands.java.project.rebuild%",
+ "category": "Java"
},
{
"command": "java.view.package.revealInProjectExplorer",
@@ -288,6 +365,16 @@
"command": "java.view.package.renameFile",
"title": "%contributes.commands.java.view.package.renameFile%",
"category": "Java"
+ },
+ {
+ "command": "_java.view.modernizeJavaProject",
+ "title": "%contributes.commands.java.view.modernizeJavaProject%",
+ "category": "Java"
+ },
+ {
+ "command": "_java.upgradeWithCopilot",
+ "title": "%contributes.commands.java.upgradeWithCopilot%",
+ "category": "Java"
}
],
"configuration": {
@@ -323,6 +410,11 @@
"description": "%configuration.java.dependency.packagePresentation%",
"default": "flat"
},
+ "java.dependency.enableDependencyCheckup": {
+ "type": "boolean",
+ "description": "%configuration.java.dependency.enableDependencyCheckup%",
+ "default": true
+ },
"java.project.exportJar.targetPath": {
"type": "string",
"anyOf": [
@@ -345,6 +437,18 @@
"type": "boolean",
"description": "%configuration.java.project.explorer.showNonJavaResources%",
"default": true
+ },
+ "vscode-java-dependency.enableLspTools": {
+ "type": "boolean",
+ "scope": "application",
+ "description": "%configuration.vscode-java-dependency.enableLspTools.description%",
+ "default": false,
+ "tags": [
+ "experimental"
+ ],
+ "experiment": {
+ "mode": "startup"
+ }
}
}
},
@@ -550,6 +654,14 @@
{
"command": "_java.project.create.from.javaprojectexplorer",
"when": "false"
+ },
+ {
+ "command": "_java.view.modernizeJavaProject",
+ "when": "false"
+ },
+ {
+ "command": "_java.upgradeWithCopilot",
+ "when": "false"
}
],
"explorer/context": [
@@ -568,6 +680,11 @@
"when": "explorerResourceIsFolder",
"group": "1_javaactions@30"
},
+ {
+ "command": "_java.view.modernizeJavaProject",
+ "when": "explorerResourceIsFolder && java:serverMode",
+ "group": "1_javaactions@40"
+ },
{
"command": "java.view.package.revealInProjectExplorer",
"when": "resourceFilename =~ /(.*\\.gradle)|(.*\\.gradle\\.kts)|(pom\\.xml)$/ && java:serverMode == Standard",
@@ -644,6 +761,11 @@
"when": "view == javaProjectExplorer && java:serverMode == Standard && config.java.project.explorer.showNonJavaResources",
"group": "overflow_10@30"
},
+ {
+ "command": "java.project.rebuild.workspace",
+ "when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects && !java:importFailed",
+ "group": "overflow_20@5"
+ },
{
"command": "java.project.clean.workspace",
"when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects",
@@ -702,7 +824,7 @@
"group": "7_modification@20"
},
{
- "command": "java.project.build.workspace",
+ "command": "java.project.build.project",
"when": "view == javaProjectExplorer && viewItem =~ /java:project(?=.*?\\b\\+java\\b)(?=.*?\\b\\+uri\\b)/",
"group": "8_execution@5"
},
@@ -987,7 +1109,7 @@
},
"isFullBuild": {
"type": "boolean",
- "default": "true",
+ "default": false,
"description": "%taskDefinitions.java.project.build.isFullBuild%"
}
}
@@ -1050,13 +1172,25 @@
}
}
}
+ ],
+ "chatSkills": [
+ {
+ "path": "./resources/skills/java-lsp-tools/SKILL.md",
+ "when": "config.vscode-java-dependency.enableLspTools && javaLSReady"
+ }
+ ],
+ "chatInstructions": [
+ {
+ "path": "./resources/instruments/javaLspContext.instructions.md",
+ "when": "config.vscode-java-dependency.enableLspTools && javaLSReady"
+ }
]
},
"scripts": {
"compile": "tsc -p . && webpack --config webpack.config.js --mode development",
"watch": "webpack --mode development --watch",
"test": "tsc -p . && webpack --config webpack.config.js --mode development && node ./dist/test/index.js",
- "test-ui": "tsc -p . && webpack --config webpack.config.js --mode development && node ./dist/test/ui/index.js",
+ "test-e2e": "autotest run-all test/e2e-plans --no-llm",
"build-server": "node scripts/buildJdtlsExt.js",
"vscode:prepublish": "tsc -p ./ && webpack --mode production",
"tslint": "tslint -t verbose --project tsconfig.json"
@@ -1064,32 +1198,36 @@
"devDependencies": {
"@types/fs-extra": "^9.0.13",
"@types/glob": "^7.2.0",
- "@types/lodash": "^4.14.191",
+ "@types/lodash": "^4.17.25",
"@types/minimatch": "^3.0.3",
"@types/mocha": "^9.1.1",
- "@types/node": "^16.18.11",
+ "@types/node": "20.x",
"@types/semver": "^7.3.13",
- "@types/vscode": "1.83.1",
- "@vscode/test-electron": "^2.3.8",
- "copy-webpack-plugin": "^11.0.0",
+ "@types/vscode": "1.95.0",
+ "@vscode/test-electron": "^3.1.0",
+ "copy-webpack-plugin": "^14.0.0",
"glob": "^7.2.3",
- "mocha": "^9.2.2",
- "ts-loader": "^9.4.2",
+ "mocha": "^11.7.5",
+ "ts-loader": "^9.6.2",
"tslint": "^6.1.3",
"typescript": "^4.9.4",
- "vscode-extension-tester": "^7.0.0",
- "webpack": "^5.76.0",
+ "webpack": "^5.109.0",
"webpack-cli": "^4.10.0"
},
"dependencies": {
+ "@github/copilot-language-server": "^1.530.0",
+ "@octokit/rest": "^21.1.1",
"await-lock": "^2.2.2",
"fmtr": "^1.1.4",
"fs-extra": "^10.1.0",
"globby": "^13.1.3",
- "lodash": "^4.17.21",
- "minimatch": "^5.1.6",
+ "lodash": "^4.18.0",
+ "minimatch": "^5.1.9",
"semver": "^7.3.8",
- "vscode-extension-telemetry-wrapper": "^0.14.0",
- "vscode-tas-client": "^0.1.75"
+ "vscode-extension-telemetry-wrapper": "^0.15.2",
+ "vscode-tas-client": "^0.3.0"
+ },
+ "overrides": {
+ "serialize-javascript": ">=7.0.5"
}
}
diff --git a/package.nls.json b/package.nls.json
index 8feb8343..ba8bf485 100644
--- a/package.nls.json
+++ b/package.nls.json
@@ -6,7 +6,9 @@
"contributes.commands.java.project.addLibraryFolders": "Add Library Folders to Project Classpath...",
"contributes.commands.java.project.removeLibrary": "Remove from Project Classpath",
"contributes.commands.java.view.package.refresh": "Refresh",
- "contributes.commands.java.project.build.workspace": "Rebuild All",
+ "contributes.commands.java.project.build.workspace": "Build All",
+ "contributes.commands.java.project.rebuild.workspace": "Rebuild All",
+ "contributes.commands.java.project.build.project": "Build Project",
"contributes.commands.java.project.clean.workspace": "Clean Workspace",
"contributes.commands.java.project.rebuild": "Rebuild Project",
"contributes.commands.java.project.update": "Reload Project",
@@ -24,6 +26,7 @@
"contributes.commands.java.view.package.copyRelativeFilePath": "Copy Relative Path",
"contributes.commands.java.view.package.new": "New...",
"contributes.commands.java.view.package.newJavaClass": "Class...",
+ "contributes.commands.java.view.modernizeJavaProject": "Modernize Java project",
"contributes.commands.java.view.package.newJavaInterface": "Interface...",
"contributes.commands.java.view.package.newJavaEnum": "Enum...",
"contributes.commands.java.view.package.newJavaRecord": "Record...",
@@ -38,15 +41,18 @@
"contributes.commands.java.view.fileExplorer.newPackage": "New Java Package...",
"contributes.submenus.javaProject.new": "New",
"contributes.commands.java.view.menus.file.newJavaClass": "New Java File",
+ "contributes.commands.java.upgradeWithCopilot": "Upgrade dependencies",
"configuration.java.dependency.showMembers": "Show the members in the explorer",
"configuration.java.dependency.syncWithFolderExplorer": "Link Java Projects Explorer with the active editor",
"configuration.java.dependency.autoRefresh": "Synchronize Java Projects explorer with changes",
"configuration.java.dependency.refreshDelay": "The delay time (ms) the auto refresh is invoked when changes are detected",
"configuration.java.dependency.packagePresentation": "Package presentation mode: flat or hierarchical",
+ "configuration.java.dependency.enableDependencyCheckup": "Show reminders when your Java runtimes or dependencies need an upgrade.",
"configuration.java.project.explorer.showNonJavaResources": "When enabled, the explorer shows non-Java resources.",
"configuration.java.project.exportJar.targetPath.customization": "The output path of the exported jar. Leave it empty if you want to manually pick the output location.",
"configuration.java.project.exportJar.targetPath.workspaceFolder": "Export the jar file into the workspace folder. Its name is the same as the folder's.",
"configuration.java.project.exportJar.targetPath.select": "Select output location manually when exporting the jar file.",
+ "configuration.vscode-java-dependency.enableLspTools.description": "Enable LSP tools for Java projects.",
"taskDefinitions.java.project.exportJar.label": "The label of export jar task.",
"taskDefinitions.java.project.exportJar.elements": "The content list of the exported jar.",
"taskDefinitions.java.project.exportJar.mainClass": "The main class in the manifest of the exported jar.",
diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json
index c962108c..c7b0b8ab 100644
--- a/package.nls.zh-cn.json
+++ b/package.nls.zh-cn.json
@@ -6,7 +6,9 @@
"contributes.commands.java.project.addLibraryFolders": "添加文件夹至项目 Classpath...",
"contributes.commands.java.project.removeLibrary": "从项目 Classpath 中移除",
"contributes.commands.java.view.package.refresh": "刷新",
- "contributes.commands.java.project.build.workspace": "重新构建所有项目",
+ "contributes.commands.java.project.build.workspace": "构建所有项目",
+ "contributes.commands.java.project.rebuild.workspace": "重新构建所有项目",
+ "contributes.commands.java.project.build.project": "构建项目",
"contributes.commands.java.project.clean.workspace": "清理工作空间",
"contributes.commands.java.project.rebuild": "重新构建项目",
"contributes.commands.java.project.update": "重新加载项目",
@@ -56,7 +58,7 @@
"taskDefinitions.java.project.build.path": "被构建项目的根目录路径。绝对路径或者相对于工作空间目录的相对路径都可以使用。",
"taskDefinitions.java.project.build.path.workspace": "工作空间中的所有项目。",
"taskDefinitions.java.project.build.path.exclude": "'!' 后的路径将会从待构建项目路径中移除。",
- "taskDefinitions.java.project.build.isFullBuild": "是否要重新构建项目。",
+ "taskDefinitions.java.project.build.isFullBuild": "是否要执行清理构建。",
"viewsWelcome.workbench.createNewJavaProject": "您也可以[打开一个 Java 项目目录](command:_java.project.open),或点击下方按钮创建一个新的 Java 项目。\n[创建 Java 项目](command:_java.project.create.from.fileexplorer.welcome)",
"viewsWelcome.workbench.noJavaProject": "当前工作空间未发现 Java 项目,您可以[打开一个 Java 项目目录](command:_java.project.open),或点击下方按钮创建一个新的 Java 项目。\n[创建 Java 项目](command:_java.project.create.from.javaprojectexplorer.welcome)",
"viewsWelcome.workbench.importFailed": "加载 Java 项目时出现错误,请通过以下方式查看错误相关信息:\n[打开问题视图](command:workbench.panel.markers.view.focus)",
diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json
index e5de9002..cfa7462d 100644
--- a/package.nls.zh-tw.json
+++ b/package.nls.zh-tw.json
@@ -6,7 +6,9 @@
"contributes.commands.java.project.addLibraryFolders": "新增資料夾至專案 Classpath...",
"contributes.commands.java.project.removeLibrary": "從專案 Classpath 中移除",
"contributes.commands.java.view.package.refresh": "重新整理",
- "contributes.commands.java.project.build.workspace": "重新建置所有專案",
+ "contributes.commands.java.project.build.workspace": "建置所有專案",
+ "contributes.commands.java.project.rebuild.workspace": "重新建置所有專案",
+ "contributes.commands.java.project.build.project": "建置專案",
"contributes.commands.java.project.clean.workspace": "清理工作區",
"contributes.commands.java.project.rebuild": "重新建置專案",
"contributes.commands.java.project.update": "重新載入專案",
@@ -48,10 +50,10 @@
"taskDefinitions.java.project.build.path": "被建置專案的根目錄路徑。絕對路徑或者相對於工作區目錄的相對路徑都可以使用。",
"taskDefinitions.java.project.build.path.workspace": "工作區中的所有專案。",
"taskDefinitions.java.project.build.path.exclude": "'!' 後的路徑將會從待建置專案路徑中移除。",
- "taskDefinitions.java.project.build.isFullBuild": "是否要重新建置專案。",
+ "taskDefinitions.java.project.build.isFullBuild": "是否要執行清理建置。",
"viewsWelcome.workbench.createNewJavaProject": "您也可以[開啟一個 Java 專案目錄](command:_java.project.open),或點擊下方按鈕建立一個新的 Java 專案。\n[建立 Java 專案](command:_java.project.create.from.fileexplorer.welcome)",
"viewsWelcome.workbench.noJavaProject": "當前工作區未發現 Java 專案,您可以[開啟一個 Java 專案目錄](command:_java.project.open),或點擊下方按鈕建立一個新的 Java 專案。\n[建立 Java 專案](command:_java.project.create.from.javaprojectexplorer.welcome)",
"viewsWelcome.workbench.importFailed": "加載 Java 專案時出現錯誤,請通過以下方式查看錯誤相關信息:\n[打開問題視圖](command:workbench.panel.markers.view.focus)",
"viewsWelcome.workbench.inLightWeightMode": "若要檢視各專案,你可以將專案匯入到工作區中。\n[匯入專案](command:java.server.mode.switch?%5B%22Standard%22,true%5D)",
"viewsWelcome.workbench.installLanguageSupport": "Java 專案視圖需要安裝並啟用 [Extension Pack for Java](command:extension.open?%5B%22vscjava.vscode-java-pack%22%5D) 以提供完整的功能。\n[安裝](command:java.project.installExtension?%5B%22vscjava.vscode-java-pack%22%5D)"
-}
\ No newline at end of file
+}
diff --git a/resources/instruments/javaLspContext.instructions.md b/resources/instruments/javaLspContext.instructions.md
new file mode 100644
index 00000000..6c5d10a4
--- /dev/null
+++ b/resources/instruments/javaLspContext.instructions.md
@@ -0,0 +1,15 @@
+---
+description: Use Java LSP tools for precise Java symbol navigation. Prefer lsp_java_findSymbol and lsp_java_getFileStructure over generic search only when locating Java classes, methods, fields, or file outlines.
+applyTo: '**/*.java'
+---
+
+For Java symbol navigation, two compiler-accurate `lsp_java_*` tools are available and return structured results with smaller, easier-to-interpret payloads than generic search:
+
+- `lsp_java_findSymbol(query)` — find class/method/field definitions by name across the workspace
+- `lsp_java_getFileStructure(uri)` — get file outline (classes, methods, fields) with line ranges
+
+If these tools are not already available in the current tool list, load them with `tool_search` using a query such as `Java LSP symbol navigation lsp_java`.
+
+Use `lsp_java_findSymbol` before `grep_search`, `search_subagent`, `semantic_search`, or `file_search` only when the task is to locate Java symbols by name or partial identifier. If it returns relevant symbols and source is needed, call `read_file` with the returned `readFileInput`, or call `lsp_java_getFileStructure` with the returned `file` when broader file context is needed.
+
+Use `lsp_java_getFileStructure` only with a path confirmed by the user or a previous tool result. Prefer `file` from `lsp_java_findSymbol`; do not guess paths. Its output includes a top-level `file` and per-symbol `readFileRange`; to read a selected symbol, call `read_file` with `filePath=file` and that `readFileRange`. Use `limit` to keep large outlines small. Use generic search for string literals, comments, XML, Gradle/Maven files, non-Java files, or broad conceptual exploration. `lsp_java_findSymbol` already retries internally with a normalized identifier, so do not re-issue the same search on an empty result: if it reports indexing in progress, retry once after a short pause; otherwise fall back to generic search.
diff --git a/resources/skills/java-lsp-tools/SKILL.md b/resources/skills/java-lsp-tools/SKILL.md
new file mode 100644
index 00000000..4535b75d
--- /dev/null
+++ b/resources/skills/java-lsp-tools/SKILL.md
@@ -0,0 +1,45 @@
+---
+name: java-lsp-tools
+description: Compiler-accurate Java symbol navigation via the Java Language Server. Use lsp_java_findSymbol for Java identifiers and lsp_java_getFileStructure for known Java files; prefer them over generic search only for symbol/file-outline navigation.
+---
+
+# Java LSP Tools
+
+Two compiler-accurate tools backed by the Java Language Server (jdtls). They return structured JSON that is easier to interpret than generic search results for Java symbol navigation.
+
+## Tools
+
+### `lsp_java_findSymbol`
+Search for Java symbol definitions (classes, methods, fields) by name across the workspace. Supports partial matching.
+- Input: `{ query, limit? }` — limit defaults to 20, max 50
+- Output: `{ results: [{ name, kind, container?, file, startLine, endLine, readFileInput, range }], total }`; `readFileInput` is `{ filePath, offset, limit }` for `read_file`, and `file` can be passed to `lsp_java_getFileStructure`
+- **Use instead of** `grep_search`, `file_search`, `semantic_search`, or `search_subagent` when looking for where a Java class/method/field is defined by identifier
+- When source is needed for a returned symbol, use its `readFileInput` directly
+
+### `lsp_java_getFileStructure`
+Get hierarchical outline of a Java file (classes, methods, fields) with line ranges.
+- Input: `{ uri, limit? }` — workspace-relative path plus max outline items. Prefer `file` from `lsp_java_findSymbol`; limit defaults to 20, max 60. Must be a known path from prior tool results or user input — do not guess
+- Output: `{ file, symbols: [{ name, kind, startLine, endLine, readFileRange, range, detail?, children? }], truncated? }`; call `read_file` with `filePath=file` and the selected symbol's `readFileRange`
+- **Use before** `read_file` when you need to choose a precise line range in a known Java file
+
+## When to Use
+
+| Task | Use | Not |
+|---|---|---|
+| Find class/method/field definition | `lsp_java_findSymbol` | `grep_search` |
+| See known Java file outline before reading | `lsp_java_getFileStructure` | `read_file` full file |
+| Search non-Java files (xml, gradle) | `grep_search` | lsp tools |
+| Search string literals or comments | `grep_search` | lsp tools |
+| Explore broad concepts without identifiers | `semantic_search` or `search_subagent` | lsp tools |
+
+## Typical Workflow
+
+**lsp_java_findSymbol → lsp_java_getFileStructure → read_file (specific lines only)**
+
+If `lsp_java_findSymbol` returns relevant symbols and source is needed, call `read_file` with the returned `readFileInput`, or call `lsp_java_getFileStructure` with the returned `file` when broader file context is needed.
+
+## Fallback
+
+- `findSymbol` returns empty → it already retried internally with a normalized identifier, so do not re-issue the same search. If the result says indexing is in progress, retry once after a short pause; otherwise fall back to `grep_search`
+- Path error (`fileNotFound`) → use `findSymbol` to discover the correct path first; do not guess paths
+- Tool error / jdtls not ready → fall back to `grep_search` + `read_file`, don't retry more than once
diff --git a/scripts/buildJdtlsExt.js b/scripts/buildJdtlsExt.js
index c6623dbf..f3356211 100644
--- a/scripts/buildJdtlsExt.js
+++ b/scripts/buildJdtlsExt.js
@@ -7,7 +7,22 @@ const path = require('path');
const server_dir = path.resolve('jdtls.ext');
-cp.execSync(mvnw()+ ' clean package', {cwd:server_dir, stdio:[0,1,2]} );
+// Set JVM options to increase XML entity size limits
+// JDK 24 contains changes to JAXP limits, see: https://bugs.openjdk.org/browse/JDK-8343022
+const jvmOptions = [
+ '-Djdk.xml.maxGeneralEntitySizeLimit=0',
+ '-Djdk.xml.totalEntitySizeLimit=0'
+].join(' ');
+
+// Set MAVEN_OPTS environment variable with JVM options
+const env = { ...process.env };
+env.MAVEN_OPTS = env.MAVEN_OPTS ? env.MAVEN_OPTS + ' ' + jvmOptions : jvmOptions;
+
+// `eclipse.p2.mirrors=false` stops p2 from following download.eclipse.org's mirror
+// redirect, which hands out a different third party host per request and makes the
+// set of addresses the build contacts impossible to express as an allow list.
+const mvnCommand = `${mvnw()} clean package -Declipse.p2.mirrors=false`;
+cp.execSync(mvnCommand, {cwd:server_dir, stdio:[0,1,2], env: env} );
copy(path.join(server_dir, 'com.microsoft.jdtls.ext.core/target'), path.resolve('server'), (file) => {
return /^com.microsoft.jdtls.ext.core.*.jar$/.test(file);
});
diff --git a/scripts/prepare-nightly-build.js b/scripts/prepare-nightly-build.js
index 7e40038b..a41983f3 100644
--- a/scripts/prepare-nightly-build.js
+++ b/scripts/prepare-nightly-build.js
@@ -2,12 +2,15 @@ const fs = require("fs");
const json = JSON.parse(fs.readFileSync("./package.json").toString());
const stableVersion = json.version.match(/(\d+)\.(\d+)\.(\d+)/);
+if (!stableVersion) {
+ throw new Error(`Invalid stable version: ${json.version}`);
+}
const major = stableVersion[1];
const minor = stableVersion[2];
function prependZero(number) {
if (number > 99) {
- throw "Unexpected value to prepend with zero";
+ throw new Error("Unexpected value to prepend with zero");
}
return `${number < 10 ? "0" : ""}${number}`;
}
@@ -16,10 +19,11 @@ const date = new Date();
const month = date.getMonth() + 1;
const day = date.getDate();
const hours = date.getHours();
-patch = `${date.getFullYear()}${prependZero(month)}${prependZero(day)}${prependZero(hours)}`;
+const patch = `${date.getFullYear()}${prependZero(month)}${prependZero(day)}${prependZero(hours)}`;
const insiderPackageJson = Object.assign(json, {
version: `${major}.${minor}.${patch}`,
+ preview: true,
});
-fs.writeFileSync("./package.insiders.json", JSON.stringify(insiderPackageJson));
\ No newline at end of file
+fs.writeFileSync("./package.insiders.json", `${JSON.stringify(insiderPackageJson, null, 2)}\n`);
\ No newline at end of file
diff --git a/src/commands.ts b/src/commands.ts
index a2564835..50ecc6a9 100644
--- a/src/commands.ts
+++ b/src/commands.ts
@@ -26,6 +26,8 @@ export namespace Commands {
export const VIEW_PACKAGE_INTERNAL_REFRESH = "_java.view.package.internal.refresh";
+ export const VIEW_PACKAGE_INTERNAL_ADD_PROJECTS = "_java.view.package.internal.addProjects";
+
export const VIEW_PACKAGE_OUTLINE = "java.view.package.outline";
export const VIEW_PACKAGE_REVEAL_FILE_OS = "java.view.package.revealFileInOS";
@@ -42,6 +44,8 @@ export namespace Commands {
export const VIEW_PACKAGE_NEW_JAVA_CLASS = "java.view.package.newJavaClass";
+ export const VIEW_MODERNIZE_JAVA_PROJECT = "_java.view.modernizeJavaProject";
+
export const VIEW_PACKAGE_NEW_JAVA_INTERFACE = "java.view.package.newJavaInterface";
export const VIEW_PACKAGE_NEW_JAVA_ENUM = "java.view.package.newJavaEnum";
@@ -94,6 +98,10 @@ export namespace Commands {
export const JAVA_PROJECT_BUILD_WORKSPACE = "java.project.build.workspace";
+ export const JAVA_PROJECT_REBUILD_WORKSPACE = "java.project.rebuild.workspace";
+
+ export const JAVA_PROJECT_BUILD_PROJECT = "java.project.build.project";
+
export const JAVA_PROJECT_CLEAN_WORKSPACE = "java.project.clean.workspace";
export const JAVA_PROJECT_UPDATE = "java.project.update";
@@ -132,6 +140,14 @@ export namespace Commands {
export const JAVA_PROJECT_CHECK_IMPORT_STATUS = "java.project.checkImportStatus";
+ export const JAVA_PROJECT_GET_DEPENDENCIES = "java.project.getDependencies";
+
+ export const JAVA_PROJECT_GET_IMPORT_CLASS_CONTENT = "java.project.getImportClassContent";
+
+ export const JAVA_PROJECT_GET_FILE_IMPORTS = "java.project.getFileImports";
+
+ export const JAVA_UPGRADE_WITH_COPILOT = "_java.upgradeWithCopilot";
+
/**
* Commands from Visual Studio Code
*/
@@ -156,6 +172,11 @@ export namespace Commands {
export const BUILD_PROJECT = "java.project.build";
+ /**
+ * Commands from appmod (Java Upgrade Tool)
+ */
+ export const GOTO_AGENT_MODE = "appmod.javaUpgrade.gotoAgentMode";
+
/**
* Get the project settings
*/
diff --git a/src/constants.ts b/src/constants.ts
index df01101c..31150834 100644
--- a/src/constants.ts
+++ b/src/constants.ts
@@ -33,6 +33,18 @@ export namespace Explorer {
export namespace ExtensionName {
export const JAVA_LANGUAGE_SUPPORT: string = "redhat.java";
+ export const APP_MODERNIZATION_FOR_JAVA = "vscjava.migrate-java-to-azure";
+ // Java upgrade extension is merged into app modernization extension
+ export const APP_MODERNIZATION_UPGRADE_FOR_JAVA = APP_MODERNIZATION_FOR_JAVA;
+ export const APP_MODERNIZATION_EXTENSION_NAME = "GitHub Copilot modernization";
+}
+
+export namespace Upgrade {
+ export const PACKAGE_ID_FOR_JAVA_RUNTIME = "java:*";
+ /** Minimum version of the appmod extension that supports gotoAgentMode command */
+ export const MIN_APPMOD_VERSION = "1.15.0";
+ export const SOURCE_JAVA_UPGRADE = "vscode-java-dependency.java-upgrade";
+ export const SOURCE_CVE = "vscode-java-dependency.cve";
}
/**
diff --git a/src/controllers/projectController.ts b/src/controllers/projectController.ts
index 3f9cbaf5..b630e339 100644
--- a/src/controllers/projectController.ts
+++ b/src/controllers/projectController.ts
@@ -109,7 +109,7 @@ enum ProjectType {
MicroProfile = "MicroProfile",
JavaFX = "JavaFX",
Micronaut = "Micronaut",
- GCN = "GCN",
+ GDK = "GDK",
}
async function ensureExtension(typeName: string, metaData: IProjectTypeMetadata): Promise {
@@ -275,12 +275,12 @@ const projectTypes: IProjectType[] = [
},
},
{
- displayName: "Graal Cloud Native",
+ displayName: "Graal Development Kit for Micronaut",
metadata: {
- type: ProjectType.GCN,
+ type: ProjectType.GDK,
extensionId: "oracle-labs-graalvm.gcn",
- extensionName: "Graal Cloud Native Launcher",
- createCommandId: "gcn.createGcnProject",
+ extensionName: "Graal Development Kit for Micronaut Launcher",
+ createCommandId: "gdk.createGdkProject",
},
},
];
diff --git a/src/copilot/contextProvider.ts b/src/copilot/contextProvider.ts
new file mode 100644
index 00000000..6640ee13
--- /dev/null
+++ b/src/copilot/contextProvider.ts
@@ -0,0 +1,179 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+import {
+ ResolveRequest,
+ SupportedContextItem,
+ type ContextProvider,
+} from '@github/copilot-language-server';
+import * as vscode from 'vscode';
+import { CopilotHelper } from './copilotHelper';
+import { sendError, sendInfo } from "vscode-extension-telemetry-wrapper";
+import {
+ JavaContextProviderUtils,
+ CancellationError,
+ InternalCancellationError,
+ CopilotCancellationError,
+ ContextResolverFunction,
+ CopilotApi,
+ ContextProviderRegistrationError,
+ ContextProviderResolverError,
+ sendContextResolutionTelemetry
+} from './utils';
+
+export async function registerCopilotContextProviders(
+ context: vscode.ExtensionContext
+) {
+ try {
+ const apis = await JavaContextProviderUtils.getCopilotApis();
+ if (!apis.clientApi || !apis.chatApi) {
+ return;
+ }
+ // Register the Java completion context provider
+ const provider: ContextProvider = {
+ id: 'vscjava.vscode-java-dependency', // use extension id as provider id for now
+ selector: [{ language: "java" }],
+ resolver: { resolve: createJavaContextResolver() }
+ };
+ const installCount = await JavaContextProviderUtils.installContextProviderOnApis(apis, provider, context, installContextProvider);
+ if (installCount === 0) {
+ return;
+ }
+ sendInfo("", {
+ "action": "registerCopilotContextProvider",
+ "status": "succeeded",
+ "installCount": installCount
+ });
+ }
+ catch (error) {
+ const errorMessage = (error as Error).message || "unknown_error";
+ sendError(new ContextProviderRegistrationError(
+ 'Failed to register Copilot context provider: ' + errorMessage
+ ));
+ }
+}
+
+/**
+ * Create the Java context resolver function
+ */
+function createJavaContextResolver(): ContextResolverFunction {
+ return async (request: ResolveRequest, copilotCancel: vscode.CancellationToken): Promise => {
+ try {
+ // Check for immediate cancellation
+ JavaContextProviderUtils.checkCancellation(copilotCancel);
+ return await resolveJavaContext(request, copilotCancel);
+ } catch (error: any) {
+ sendError(new ContextProviderResolverError('Java Context Resolution Failed: ' + ((error as Error).message || "unknown_error")));
+ // This should never be reached due to handleError throwing, but TypeScript requires it
+ return [];
+ }
+ };
+}
+
+async function resolveJavaContext(request: ResolveRequest, copilotCancel: vscode.CancellationToken): Promise {
+ const items: SupportedContextItem[] = [];
+ const start = performance.now();
+
+ let dependenciesResult: CopilotHelper.IResolveResult | undefined;
+ let importsResult: CopilotHelper.IResolveResult | undefined;
+
+ try {
+ // Check for cancellation before starting
+ JavaContextProviderUtils.checkCancellation(copilotCancel);
+
+ // Resolve project dependencies and convert to context items
+ dependenciesResult = await CopilotHelper.resolveAndConvertProjectDependencies(
+ vscode.window.activeTextEditor,
+ copilotCancel,
+ JavaContextProviderUtils.checkCancellation
+ );
+ JavaContextProviderUtils.checkCancellation(copilotCancel);
+ items.push(...dependenciesResult.items);
+
+ JavaContextProviderUtils.checkCancellation(copilotCancel);
+
+ // Resolve local imports and convert to context items
+ importsResult = await CopilotHelper.resolveAndConvertLocalImports(
+ vscode.window.activeTextEditor,
+ copilotCancel,
+ JavaContextProviderUtils.checkCancellation
+ );
+ JavaContextProviderUtils.checkCancellation(copilotCancel);
+ items.push(...importsResult.items);
+ } catch (error: any) {
+ if (error instanceof CopilotCancellationError) {
+ sendContextResolutionTelemetry(
+ request,
+ start,
+ items,
+ "cancelled_by_copilot",
+ undefined,
+ dependenciesResult?.emptyReason,
+ importsResult?.emptyReason,
+ dependenciesResult?.itemCount,
+ importsResult?.itemCount
+ );
+ throw error;
+ }
+ if (error instanceof vscode.CancellationError || error.message === CancellationError.CANCELED) {
+ sendContextResolutionTelemetry(
+ request,
+ start,
+ items,
+ "cancelled_internally",
+ undefined,
+ dependenciesResult?.emptyReason,
+ importsResult?.emptyReason,
+ dependenciesResult?.itemCount,
+ importsResult?.itemCount
+ );
+ throw new InternalCancellationError();
+ }
+
+ // Send telemetry for general errors (but continue with partial results)
+ sendContextResolutionTelemetry(
+ request,
+ start,
+ items,
+ "error_partial_results",
+ error.message || "unknown_error",
+ dependenciesResult?.emptyReason,
+ importsResult?.emptyReason,
+ dependenciesResult?.itemCount,
+ importsResult?.itemCount
+ );
+
+ // Return partial results and log completion for error case
+ return items;
+ }
+
+ // Send telemetry data once at the end for success case
+ sendContextResolutionTelemetry(
+ request,
+ start,
+ items,
+ "succeeded",
+ undefined,
+ dependenciesResult?.emptyReason,
+ importsResult?.emptyReason,
+ dependenciesResult?.itemCount,
+ importsResult?.itemCount
+ );
+
+ return items;
+}
+
+export async function installContextProvider(
+ copilotAPI: CopilotApi,
+ contextProvider: ContextProvider
+): Promise {
+ const hasGetContextProviderAPI = typeof copilotAPI.getContextProviderAPI === 'function';
+ if (hasGetContextProviderAPI) {
+ const contextAPI = await copilotAPI.getContextProviderAPI('v1');
+ if (contextAPI) {
+ return contextAPI.registerContextProvider(contextProvider);
+ }
+ }
+ return undefined;
+}
diff --git a/src/copilot/copilotHelper.ts b/src/copilot/copilotHelper.ts
new file mode 100644
index 00000000..67bf3196
--- /dev/null
+++ b/src/copilot/copilotHelper.ts
@@ -0,0 +1,326 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+import { commands, Uri, CancellationToken } from "vscode";
+import { JavaContextProviderUtils } from "./utils";
+import { Commands } from '../commands';
+
+/**
+ * Enum for error messages used in Promise rejection
+ */
+export enum ErrorMessage {
+ OperationCancelled = "Operation cancelled",
+ OperationTimedOut = "Operation timed out"
+}
+
+/**
+ * Enum for empty reason codes when operations return empty results
+ */
+export enum EmptyReason {
+ CopilotCancelled = "CopilotCancelled",
+ CommandNullResult = "CommandNullResult",
+ Timeout = "Timeout",
+ NoWorkspace = "NoWorkspace",
+ NoDependenciesResults = "NoDependenciesResults",
+ NoActiveEditor = "NoActiveEditor",
+ NotJavaFile = "NotJavaFile",
+ NoImportsResults = "NoImportsResults"
+}
+
+export interface INodeImportClass {
+ uri: string;
+ value: string;
+}
+
+export interface IImportClassContentResult {
+ classInfoList: INodeImportClass[];
+ emptyReason?: string;
+ isEmpty: boolean;
+}
+
+export interface IProjectDependency {
+ [key: string]: string;
+}
+
+export interface IProjectDependenciesResult {
+ dependencyInfoList: { key: string; value: string }[];
+ emptyReason?: string;
+ isEmpty: boolean;
+}
+/**
+ * Helper class for Copilot integration to analyze Java project dependencies
+ */
+export namespace CopilotHelper {
+ /**
+ * Resolves all local project types imported by the given file with detailed error reporting
+ * @param fileUri The URI of the Java file to analyze
+ * @param cancellationToken Optional cancellation token to abort the operation
+ * @returns Result object containing import class information and error details
+ */
+ export async function resolveLocalImportsWithReason(fileUri: Uri, cancellationToken?: CancellationToken): Promise {
+ if (cancellationToken?.isCancellationRequested) {
+ return {
+ classInfoList: [],
+ emptyReason: EmptyReason.CopilotCancelled,
+ isEmpty: true
+ };
+ }
+
+ try {
+ const normalizedUri = decodeURIComponent(Uri.file(fileUri.fsPath).toString());
+ const commandPromise = commands.executeCommand(
+ Commands.EXECUTE_WORKSPACE_COMMAND,
+ Commands.JAVA_PROJECT_GET_IMPORT_CLASS_CONTENT,
+ normalizedUri
+ ) as Promise;
+
+ // Build promises array for race condition
+ // Note: Client-side timeout is NECESSARY even if backend has timeout because:
+ // 1. Network delays may prevent backend response from arriving
+ // 2. Process hangs won't trigger backend timeout
+ // 3. Command dispatch failures need to be caught
+ const promises: Promise[] = [
+ commandPromise,
+ new Promise((_, reject) => {
+ setTimeout(() => {
+ reject(new Error(ErrorMessage.OperationTimedOut));
+ }, 80); // 80ms client-side timeout (independent of backend timeout)
+ })
+ ];
+
+ // Add cancellation promise if token provided
+ if (cancellationToken) {
+ promises.push(
+ new Promise((_, reject) => {
+ cancellationToken.onCancellationRequested(() => {
+ reject(new Error(ErrorMessage.OperationCancelled));
+ });
+ })
+ );
+ }
+
+ const result = await Promise.race(promises);
+ if (!result) {
+ return {
+ classInfoList: [],
+ emptyReason: EmptyReason.CommandNullResult,
+ isEmpty: true
+ };
+ }
+ return result;
+ } catch (error: any) {
+ if (error.message === ErrorMessage.OperationCancelled) {
+ return {
+ classInfoList: [],
+ emptyReason: EmptyReason.CopilotCancelled,
+ isEmpty: true
+ };
+ }
+ if (error.message === ErrorMessage.OperationTimedOut) {
+ return {
+ classInfoList: [],
+ emptyReason: EmptyReason.Timeout,
+ isEmpty: true
+ };
+ }
+ const errorMessage = 'TsException_' + ((error as Error).message || "unknown");
+ return {
+ classInfoList: [],
+ emptyReason: errorMessage,
+ isEmpty: true
+ };
+ }
+ }
+
+ /**
+ * Resolves project dependencies with detailed error reporting
+ * @param projectUri The URI of the Java project to analyze
+ * @param cancellationToken Optional cancellation token to abort the operation
+ * @returns Result object containing project dependencies and error information
+ */
+ export async function resolveProjectDependenciesWithReason(
+ fileUri: Uri,
+ cancellationToken?: CancellationToken
+ ): Promise {
+ if (cancellationToken?.isCancellationRequested) {
+ return {
+ dependencyInfoList: [],
+ emptyReason: EmptyReason.CopilotCancelled,
+ isEmpty: true
+ };
+ }
+
+ try {
+ const normalizedUri = decodeURIComponent(Uri.file(fileUri.fsPath).toString());
+ const commandPromise = commands.executeCommand(
+ Commands.EXECUTE_WORKSPACE_COMMAND,
+ Commands.JAVA_PROJECT_GET_DEPENDENCIES,
+ normalizedUri
+ ) as Promise;
+
+ // Build promises array for race condition
+ // Note: Client-side timeout is NECESSARY even if backend has timeout because:
+ // 1. Network delays may prevent backend response from arriving
+ // 2. Process hangs won't trigger backend timeout
+ // 3. Command dispatch failures need to be caught
+ const promises: Promise[] = [
+ commandPromise,
+ new Promise((_, reject) => {
+ setTimeout(() => {
+ reject(new Error(ErrorMessage.OperationTimedOut));
+ }, 40); // 40ms client-side timeout (independent of backend timeout)
+ })
+ ];
+
+ // Add cancellation promise if token provided
+ if (cancellationToken) {
+ promises.push(
+ new Promise((_, reject) => {
+ cancellationToken.onCancellationRequested(() => {
+ reject(new Error(ErrorMessage.OperationCancelled));
+ });
+ })
+ );
+ }
+
+ const result = await Promise.race(promises);
+ if (!result) {
+ return {
+ dependencyInfoList: [],
+ emptyReason: EmptyReason.CommandNullResult,
+ isEmpty: true
+ };
+ }
+ return result;
+ } catch (error: any) {
+ if (error.message === ErrorMessage.OperationCancelled) {
+ return {
+ dependencyInfoList: [],
+ emptyReason: EmptyReason.CopilotCancelled,
+ isEmpty: true
+ };
+ }
+ if (error.message === ErrorMessage.OperationTimedOut) {
+ return {
+ dependencyInfoList: [],
+ emptyReason: EmptyReason.Timeout,
+ isEmpty: true
+ };
+ }
+ const errorMessage = 'TsException_' + ((error as Error).message || "unknown");
+ return {
+ dependencyInfoList: [],
+ emptyReason: errorMessage,
+ isEmpty: true
+ };
+ }
+ }
+
+ /**
+ * Result interface for dependency resolution with diagnostic information
+ */
+ export interface IResolveResult {
+ items: any[];
+ emptyReason?: string;
+ itemCount: number;
+ }
+
+ /**
+ * Resolves project dependencies and converts them to context items with cancellation support
+ * @param activeEditor The active text editor, or undefined if none
+ * @param copilotCancel Cancellation token from Copilot
+ * @param checkCancellation Function to check for cancellation
+ * @returns Result object containing context items and diagnostic information
+ */
+ export async function resolveAndConvertProjectDependencies(
+ activeEditor: { document: { uri: Uri; languageId: string } } | undefined,
+ copilotCancel: CancellationToken,
+ checkCancellation: (token: CancellationToken) => void
+ ): Promise {
+ const items: any[] = [];
+
+ // Check if active editor exists
+ if (!activeEditor) {
+ return { items: [], emptyReason: EmptyReason.NoActiveEditor, itemCount: 0 };
+ }
+ if (activeEditor.document.languageId !== 'java') {
+ return { items: [], emptyReason: EmptyReason.NotJavaFile, itemCount: 0 };
+ }
+ const documentUri = activeEditor.document.uri;
+
+ // Resolve project dependencies
+ const projectDependenciesResult = await resolveProjectDependenciesWithReason(documentUri, copilotCancel);
+
+ // Check for cancellation after dependency resolution
+ checkCancellation(copilotCancel);
+
+ // Return empty result with reason if no dependencies found
+ if (projectDependenciesResult.isEmpty && projectDependenciesResult.emptyReason) {
+ return { items: [], emptyReason: projectDependenciesResult.emptyReason, itemCount: 0 };
+ }
+
+ // Check for cancellation after dependency resolution
+ checkCancellation(copilotCancel);
+
+ // Convert project dependencies to context items
+ if (projectDependenciesResult.dependencyInfoList && projectDependenciesResult.dependencyInfoList.length > 0) {
+ const contextItems = JavaContextProviderUtils.createContextItemsFromProjectDependencies(projectDependenciesResult.dependencyInfoList);
+
+ // Check cancellation once after creating all items
+ checkCancellation(copilotCancel);
+ items.push(...contextItems);
+ }
+
+ return { items, itemCount: items.length };
+ }
+
+ /**
+ * Resolves local imports and converts them to context items with cancellation support
+ * @param activeEditor The active text editor, or undefined if none
+ * @param copilotCancel Cancellation token from Copilot
+ * @param checkCancellation Function to check for cancellation
+ * @returns Result object containing context items and diagnostic information
+ */
+ export async function resolveAndConvertLocalImports(
+ activeEditor: { document: { uri: Uri; languageId: string } } | undefined,
+ copilotCancel: CancellationToken,
+ checkCancellation: (token: CancellationToken) => void
+ ): Promise {
+ const items: any[] = [];
+
+ // Check if there's an active editor with a Java document
+ if (!activeEditor) {
+ return { items: [], emptyReason: EmptyReason.NoActiveEditor, itemCount: 0 };
+ }
+ if (activeEditor.document.languageId !== 'java') {
+ return { items: [], emptyReason: EmptyReason.NotJavaFile, itemCount: 0 };
+ }
+
+ const documentUri = activeEditor.document.uri;
+
+ // Check for cancellation before resolving imports
+ checkCancellation(copilotCancel);
+ // Resolve imports directly without caching
+ const importClassResult = await resolveLocalImportsWithReason(documentUri, copilotCancel);
+
+ // Check for cancellation after resolution
+ checkCancellation(copilotCancel);
+
+ // Return empty result with reason if no imports found
+ if (importClassResult.isEmpty && importClassResult.emptyReason) {
+ return { items: [], emptyReason: importClassResult.emptyReason, itemCount: 0 };
+ }
+
+ // Check for cancellation before processing results
+ checkCancellation(copilotCancel);
+ if (importClassResult.classInfoList && importClassResult.classInfoList.length > 0) {
+ // Process imports in batches to reduce cancellation check overhead
+ const contextItems = JavaContextProviderUtils.createContextItemsFromImports(importClassResult.classInfoList);
+ // Check cancellation once after creating all items
+ checkCancellation(copilotCancel);
+ items.push(...contextItems);
+ }
+
+ return { items, itemCount: items.length };
+ }
+}
diff --git a/src/copilot/tools/javaContextTools.ts b/src/copilot/tools/javaContextTools.ts
new file mode 100644
index 00000000..22179a3b
--- /dev/null
+++ b/src/copilot/tools/javaContextTools.ts
@@ -0,0 +1,603 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+/**
+ * Java Context Tools — First Batch (Zero-Blocking)
+ *
+ * These 6 tools are all non-blocking after jdtls is ready:
+ * 1. lsp_java_getFileStructure — LSP documentSymbol
+ * 2. lsp_java_findSymbol — LSP workspaceSymbol
+ * 3. lsp_java_getFileImports — jdtls AST-only command (no type resolution)
+ * 4. lsp_java_getTypeAtPosition — LSP hover (post-processed)
+ * 5. lsp_java_getCallHierarchy — LSP call hierarchy
+ * 6. lsp_java_getTypeHierarchy — LSP type hierarchy
+ *
+ * Design principles:
+ * - Each tool returns < 200 tokens
+ * - Structured JSON output
+ * - No classpath resolution, no dependency download
+ */
+
+import * as path from "path";
+import * as vscode from "vscode";
+import { Commands } from "../../commands";
+import { languageServerApiManager } from "../../languageServerApi/languageServerApiManager";
+import { sendInfo } from "vscode-extension-telemetry-wrapper";
+
+// Hard caps to keep tool responses within the < 200 token budget.
+const MAX_SYMBOL_DEPTH = 3;
+const MAX_FILE_STRUCTURE_SYMBOL_NODES = 60;
+const DEFAULT_FILE_STRUCTURE_SYMBOL_NODES = 20;
+const MAX_CALL_RESULTS = 50;
+const MAX_TYPE_RESULTS = 50;
+const MAX_IMPORTS = 50;
+
+function toResult(data: unknown): vscode.LanguageModelToolResult {
+ const text = typeof data === "string" ? data : JSON.stringify(data, null, 2);
+ return new vscode.LanguageModelToolResult([
+ new vscode.LanguageModelTextPart(text),
+ ]);
+}
+
+function getResponseCharCount(data: unknown): number {
+ return typeof data === "string" ? data.length : JSON.stringify(data, null, 2).length;
+}
+
+interface ReadFileInput {
+ filePath: string;
+ offset: number;
+ limit: number;
+}
+
+interface ReadFileRange {
+ offset: number;
+ limit: number;
+}
+
+function toInclusiveLineRange(range: vscode.Range): { startLine: number; endLine: number } {
+ const startLine = range.start.line + 1;
+ const endLine = Math.max(startLine, range.end.character === 0 && range.end.line > range.start.line
+ ? range.end.line
+ : range.end.line + 1);
+ return { startLine, endLine };
+}
+
+function toReadFileRange(startLine: number, endLine: number): ReadFileRange {
+ return {
+ offset: startLine,
+ limit: endLine - startLine + 1,
+ };
+}
+
+function toReadFileInput(filePath: string, startLine: number, endLine: number): ReadFileInput {
+ return {
+ filePath,
+ ...toReadFileRange(startLine, endLine),
+ };
+}
+
+/**
+ * Normalize a workspace-symbol query for a single fallback retry.
+ * Strips a fully-qualified package prefix (com.foo.Bar -> Bar), generic parameters
+ * (List -> List), and method parameter lists (foo() -> foo). jdtls already
+ * performs camel-hump matching, so the contiguous identifier is preserved.
+ */
+function normalizeSymbolQuery(query: string): string {
+ if (!query) {
+ return "";
+ }
+ let q = query.trim();
+ // Drop generic parameters and method parens: List / foo(args) -> List / foo
+ q = q.replace(/[<(].*$/, "");
+ // Drop a fully-qualified package/qualifier prefix: com.foo.Bar / Foo#bar -> Bar / bar
+ const lastSep = Math.max(q.lastIndexOf("."), q.lastIndexOf("#"));
+ if (lastSep >= 0 && lastSep < q.length - 1) {
+ q = q.substring(lastSep + 1);
+ }
+ return q.trim();
+}
+
+function getToolErrorCode(error: unknown): string {
+ const message = error instanceof Error ? error.message : String(error);
+ if (message.includes("No workspace folder")) {
+ return "noWorkspaceFolder";
+ }
+ if (message.includes("Unsupported URI scheme")) {
+ return "unsupportedUriScheme";
+ }
+ if (message.includes("outside the current workspace")) {
+ return "outsideWorkspace";
+ }
+ return "unexpectedError";
+}
+
+/**
+ * Resolve a file path to a vscode.Uri.
+ * Accepts:
+ * - Full file URI: "file:///home/user/project/src/Main.java"
+ * - Relative path: "src/main/java/Main.java"
+ * - Absolute path: "/home/user/project/src/Main.java" or "C:\\Users\\...\\Main.java"
+ *
+ * Relative paths are resolved against the first workspace folder unless they
+ * start with a workspace folder name in a multi-root workspace.
+ * The resolved URI must use the file: scheme and fall under a workspace folder.
+ */
+function resolveFileUri(input: string): vscode.Uri {
+ const folders = vscode.workspace.workspaceFolders;
+ if (!folders || folders.length === 0) {
+ throw new Error("No workspace folder is open.");
+ }
+
+ let uri: vscode.Uri;
+ const normalizedInput = input.trim();
+
+ if (normalizedInput.includes("://")) {
+ // URI string (e.g. "file:///home/user/project/src/Main.java")
+ uri = vscode.Uri.parse(normalizedInput);
+ if (uri.scheme !== "file") {
+ throw new Error(`Unsupported URI scheme "${uri.scheme}". Only file: URIs are allowed.`);
+ }
+ } else if (path.isAbsolute(normalizedInput)) {
+ // Absolute filesystem path (Unix or Windows)
+ uri = vscode.Uri.file(normalizedInput);
+ } else {
+ // Relative path — resolve against a matching workspace folder when
+ // asRelativePath included the folder name, otherwise use the first root.
+ const normalizedRelativePath = normalizedInput.replace(/\\/g, "/");
+ const matchingFolder = folders.find(folder =>
+ normalizedRelativePath === folder.name || normalizedRelativePath.startsWith(`${folder.name}/`));
+ if (matchingFolder) {
+ const pathInFolder = normalizedRelativePath === matchingFolder.name
+ ? ""
+ : normalizedRelativePath.substring(matchingFolder.name.length + 1);
+ uri = vscode.Uri.joinPath(matchingFolder.uri, pathInFolder);
+ } else {
+ uri = vscode.Uri.joinPath(folders[0].uri, normalizedRelativePath);
+ }
+ }
+
+ // Ensure the resolved path is under a workspace folder
+ const resolvedPath = uri.fsPath.toLowerCase();
+ const isUnderWorkspace = folders.some(folder => {
+ const folderPath = folder.uri.fsPath.toLowerCase();
+ return resolvedPath === folderPath || resolvedPath.startsWith(folderPath + (process.platform === "win32" ? "\\" : "/"));
+ });
+ if (!isUnderWorkspace) {
+ throw new Error("The resolved path is outside the current workspace.");
+ }
+
+ return uri;
+}
+
+// ============================================================
+// Tool 1: lsp_java_getFileStructure (LSP — Document Symbol)
+// ============================================================
+
+interface FileStructureInput {
+ uri: string;
+ limit?: number;
+}
+
+const fileStructureTool: vscode.LanguageModelTool = {
+ async invoke(options, _token) {
+ const startTime = Date.now();
+ const limit = Math.min(Math.max(Math.floor(options.input.limit ?? DEFAULT_FILE_STRUCTURE_SYMBOL_NODES), 1), MAX_FILE_STRUCTURE_SYMBOL_NODES);
+ let resultCount = 0;
+ let status = "success";
+ let errorCode = "";
+ let emptyReason = "";
+ let responseCharCount = 0;
+ let truncated = false;
+ try {
+ const uri = resolveFileUri(options.input.uri);
+ try {
+ await vscode.workspace.fs.stat(uri);
+ } catch {
+ status = "error";
+ errorCode = "fileNotFound";
+ // Most fileNotFound errors come from the model guessing a path. Return an
+ // actionable hint instead of a dead end so it can self-correct via findSymbol.
+ const fileNotFoundPayload = {
+ error: "File not found.",
+ hint: "Call lsp_java_findSymbol to obtain the exact workspace path before retrying. Do not guess file paths.",
+ };
+ responseCharCount = getResponseCharCount(fileNotFoundPayload);
+ return toResult(fileNotFoundPayload);
+ }
+ const symbols = await vscode.commands.executeCommand(
+ "vscode.executeDocumentSymbolProvider", uri,
+ );
+ if (!symbols || symbols.length === 0) {
+ status = "empty";
+ // Separate "index not ready yet" from a genuine no-symbol result so the model
+ // (and telemetry) can tell a transient state apart from an unrecognized file.
+ const indexing = !languageServerApiManager.isFullyReady();
+ emptyReason = indexing ? "indexingInProgress" : "documentSymbolProviderEmpty";
+ const noSymbolsPayload = indexing
+ ? { error: "Java language server is still indexing. Retry shortly." }
+ : { error: "No symbols found. The file may not be recognized by the Java language server." };
+ responseCharCount = getResponseCharCount(noSymbolsPayload);
+ return toResult(noSymbolsPayload);
+ }
+ const counter = { count: 0, truncated: false };
+ const result = symbolsToJson(symbols, 0, counter, limit);
+ resultCount = counter.count;
+ truncated = counter.truncated;
+ const file = vscode.workspace.asRelativePath(uri);
+ const fileStructurePayload = { file, symbols: result, ...(truncated && { truncated: true }) };
+ responseCharCount = getResponseCharCount(fileStructurePayload);
+ return toResult(fileStructurePayload);
+ } catch (e) {
+ status = "error";
+ errorCode = errorCode || getToolErrorCode(e);
+ throw e;
+ } finally {
+ sendInfo("", {
+ operationName: "lmTool.getFileStructure",
+ status,
+ ...(errorCode && { errorCode }),
+ ...(emptyReason && { emptyReason }),
+ truncated: truncated ? "true" : "false",
+ limit,
+ resultCount,
+ responseCharCount,
+ durationMs: Date.now() - startTime,
+ });
+ }
+ },
+};
+
+interface SymbolNode {
+ name: string;
+ kind: string;
+ startLine: number;
+ endLine: number;
+ readFileRange: ReadFileRange;
+ range: string;
+ detail?: string;
+ children?: SymbolNode[];
+}
+
+function symbolsToJson(symbols: vscode.DocumentSymbol[], depth: number, counter: { count: number; truncated: boolean }, limit: number): SymbolNode[] {
+ const result: SymbolNode[] = [];
+ for (const s of symbols) {
+ if (counter.count >= limit) {
+ counter.truncated = true;
+ break;
+ }
+ counter.count++;
+ const { startLine, endLine } = toInclusiveLineRange(s.range);
+ const node: SymbolNode = {
+ name: s.name,
+ kind: vscode.SymbolKind[s.kind],
+ startLine,
+ endLine,
+ readFileRange: toReadFileRange(startLine, endLine),
+ range: `L${startLine}-${endLine}`,
+ };
+ if (s.detail) {
+ node.detail = s.detail;
+ }
+ if (s.children?.length && depth < MAX_SYMBOL_DEPTH) {
+ node.children = symbolsToJson(s.children, depth + 1, counter, limit);
+ }
+ result.push(node);
+ }
+ return result;
+}
+
+// ============================================================
+// Tool 2: lsp_java_findSymbol (LSP — Workspace Symbol)
+// ============================================================
+
+interface FindSymbolInput {
+ query: string;
+ limit?: number;
+}
+
+const findSymbolTool: vscode.LanguageModelTool = {
+ async invoke(options, _token) {
+ const startTime = Date.now();
+ let resultCount = 0;
+ let totalResults = 0;
+ const limit = Math.min(Math.max(options.input.limit || 20, 1), 50);
+ let status = "success";
+ let errorCode = "";
+ let emptyReason = "";
+ let responseCharCount = 0;
+ let retried = false;
+ try {
+ const rawQuery = (options.input.query ?? "").trim();
+ // Reject blank/whitespace-only queries early: an empty query triggers an
+ // expensive workspace-wide symbol scan and can return a huge list.
+ if (!rawQuery) {
+ status = "error";
+ errorCode = "emptyQuery";
+ const emptyQueryPayload = {
+ error: "Query is empty. Provide a class, interface, method, or field name to search for.",
+ };
+ responseCharCount = getResponseCharCount(emptyQueryPayload);
+ return toResult(emptyQueryPayload);
+ }
+ let symbols = await vscode.commands.executeCommand(
+ "vscode.executeWorkspaceSymbolProvider", rawQuery,
+ );
+ // Server-side fallback: if the verbatim query misses, retry once with a
+ // normalized identifier (strip package qualifier, generics, and parameter
+ // lists) so the model does not have to chain repeated findSymbol calls itself.
+ if (!symbols || symbols.length === 0) {
+ const normalized = normalizeSymbolQuery(rawQuery);
+ if (normalized && normalized !== rawQuery) {
+ retried = true;
+ symbols = await vscode.commands.executeCommand(
+ "vscode.executeWorkspaceSymbolProvider", normalized,
+ );
+ }
+ }
+ if (!symbols || symbols.length === 0) {
+ status = "empty";
+ // Distinguish a transient "index not ready" state from a real no-match so the
+ // model can retry later instead of concluding the symbol does not exist.
+ const indexing = !languageServerApiManager.isFullyReady();
+ emptyReason = indexing ? "indexingInProgress" : "workspaceSymbolNoMatch";
+ const noMatchesPayload = indexing
+ ? { results: [], message: "Java language server is still indexing. Retry shortly or use grep_search as a fallback." }
+ : { results: [], message: "No symbols found." };
+ responseCharCount = getResponseCharCount(noMatchesPayload);
+ return toResult(noMatchesPayload);
+ }
+ totalResults = symbols.length;
+ const results = symbols.slice(0, limit).map(s => {
+ const file = vscode.workspace.asRelativePath(s.location.uri);
+ const { startLine, endLine } = toInclusiveLineRange(s.location.range);
+ return {
+ name: s.name,
+ kind: vscode.SymbolKind[s.kind],
+ container: s.containerName || undefined,
+ file,
+ startLine,
+ endLine,
+ readFileInput: toReadFileInput(file, startLine, endLine),
+ range: `L${startLine}-${endLine}`,
+ };
+ });
+ resultCount = results.length;
+ const findSymbolPayload = { results, total: symbols.length };
+ responseCharCount = getResponseCharCount(findSymbolPayload);
+ return toResult(findSymbolPayload);
+ } catch (e) {
+ status = "error";
+ errorCode = getToolErrorCode(e);
+ throw e;
+ } finally {
+ sendInfo("", {
+ operationName: "lmTool.findSymbol",
+ status,
+ ...(errorCode && { errorCode }),
+ ...(emptyReason && { emptyReason }),
+ retried: retried ? "true" : "false",
+ limit,
+ resultCount,
+ totalResults,
+ responseCharCount,
+ durationMs: Date.now() - startTime,
+ });
+ }
+ },
+};
+
+// ============================================================
+// Tool 3: lsp_java_getFileImports (jdtls — AST-only, non-blocking)
+// ============================================================
+
+interface FileImportsInput {
+ uri: string;
+}
+
+export const _fileImportsTool: vscode.LanguageModelTool = {
+ async invoke(options, _token) {
+ sendInfo("", { operationName: "lmTool.getFileImports" });
+ const uri = resolveFileUri(options.input.uri);
+ const result = await vscode.commands.executeCommand(
+ Commands.EXECUTE_WORKSPACE_COMMAND,
+ Commands.JAVA_PROJECT_GET_FILE_IMPORTS,
+ uri.toString(),
+ );
+ if (!result) {
+ return toResult({ error: "No result from Java language server. It may still be loading." });
+ }
+ if (Array.isArray(result) && result.length > MAX_IMPORTS) {
+ return toResult({ imports: result.slice(0, MAX_IMPORTS), total: result.length, truncated: true });
+ }
+ return toResult(result);
+ },
+};
+
+// ============================================================
+// Tool 4: lsp_java_getTypeAtPosition (LSP — Hover post-processed)
+// ============================================================
+
+interface TypeAtPositionInput {
+ uri: string;
+ line: number;
+ character: number;
+}
+
+export const _typeAtPositionTool: vscode.LanguageModelTool = {
+ async invoke(options, _token) {
+ sendInfo("", { operationName: "lmTool.getTypeAtPosition" });
+ const uri = resolveFileUri(options.input.uri);
+ const position = new vscode.Position(options.input.line, options.input.character);
+ const hovers = await vscode.commands.executeCommand(
+ "vscode.executeHoverProvider", uri, position,
+ );
+ return toResult(extractTypeSignature(hovers));
+ },
+};
+
+/**
+ * Extract type signature from jdtls hover result.
+ * jdtls returns Markdown with ```java code blocks containing the type info.
+ * We extract just the signature, stripping Javadoc to minimize tokens.
+ */
+function extractTypeSignature(hovers: vscode.Hover[] | undefined): object {
+ if (!hovers?.length) {
+ return { error: "No type information at this position" };
+ }
+ for (const hover of hovers) {
+ for (const content of hover.contents) {
+ if (content instanceof vscode.MarkdownString) {
+ const match = content.value.match(/```java\n([\s\S]*?)```/);
+ if (match) {
+ const lines = match[1].trim().split("\n").filter(l => {
+ const trimmed = l.trim();
+ if (trimmed.length === 0) {
+ return false;
+ }
+ // Strip Javadoc and block comment lines
+ if (trimmed.startsWith("/**") || trimmed.startsWith("*/") || trimmed.startsWith("* ") || trimmed === "*") {
+ return false;
+ }
+ // Strip single-line comments
+ if (trimmed.startsWith("//")) {
+ return false;
+ }
+ return true;
+ });
+ return { type: lines.join("\n") };
+ }
+ }
+ }
+ }
+ return { error: "Could not extract type from hover result" };
+}
+
+// ============================================================
+// Tool 5: lsp_java_getCallHierarchy (LSP — Call Hierarchy)
+// ============================================================
+
+interface CallHierarchyInput {
+ uri: string;
+ line: number;
+ character: number;
+ direction: "incoming" | "outgoing";
+}
+
+export const _callHierarchyTool: vscode.LanguageModelTool = {
+ async invoke(options, _token) {
+ sendInfo("", { operationName: "lmTool.getCallHierarchy" });
+ const uri = resolveFileUri(options.input.uri);
+ const position = new vscode.Position(options.input.line, options.input.character);
+
+ // Step 1: Prepare call hierarchy item at the given position
+ const items = await vscode.commands.executeCommand(
+ "vscode.prepareCallHierarchy", uri, position,
+ );
+ if (!items?.length) {
+ return toResult({ error: "No callable symbol at this position" });
+ }
+
+ // Step 2: Get incoming or outgoing calls
+ const isIncoming = options.input.direction === "incoming";
+ const command = isIncoming ? "vscode.provideIncomingCalls" : "vscode.provideOutgoingCalls";
+ const calls = await vscode.commands.executeCommand(command, items[0]);
+
+ if (!calls || calls.length === 0) {
+ return toResult({
+ symbol: items[0].name,
+ direction: options.input.direction,
+ calls: [],
+ message: `No ${options.input.direction} calls found for '${items[0].name}'`,
+ });
+ }
+
+ const truncated = calls.length > MAX_CALL_RESULTS;
+ const capped = truncated ? calls.slice(0, MAX_CALL_RESULTS) : calls;
+ const results = capped.map((call: any) => {
+ const item = isIncoming ? call.from : call.to;
+ return {
+ name: item.name,
+ detail: item.detail || undefined,
+ location: `${vscode.workspace.asRelativePath(item.uri)}:${item.range.start.line + 1}`,
+ };
+ });
+
+ return toResult({
+ symbol: items[0].name,
+ direction: options.input.direction,
+ calls: results,
+ ...(truncated && { total: calls.length, truncated: true }),
+ });
+ },
+};
+
+// ============================================================
+// Tool 6: lsp_java_getTypeHierarchy (LSP — Type Hierarchy)
+// ============================================================
+
+interface TypeHierarchyInput {
+ uri: string;
+ line: number;
+ character: number;
+ direction: "supertypes" | "subtypes";
+}
+
+export const _typeHierarchyTool: vscode.LanguageModelTool = {
+ async invoke(options, _token) {
+ sendInfo("", { operationName: "lmTool.getTypeHierarchy" });
+ const uri = resolveFileUri(options.input.uri);
+ const position = new vscode.Position(options.input.line, options.input.character);
+
+ // Step 1: Prepare type hierarchy item at the given position
+ const items = await vscode.commands.executeCommand(
+ "vscode.prepareTypeHierarchy", uri, position,
+ );
+ if (!items?.length) {
+ return toResult({ error: "No type at this position" });
+ }
+
+ // Step 2: Get supertypes or subtypes
+ const isSuper = options.input.direction === "supertypes";
+ const command = isSuper ? "vscode.provideSupertypes" : "vscode.provideSubtypes";
+ const types = await vscode.commands.executeCommand(command, items[0]);
+
+ if (!types || types.length === 0) {
+ return toResult({
+ symbol: items[0].name,
+ direction: options.input.direction,
+ types: [],
+ message: `No ${options.input.direction} found for '${items[0].name}'`,
+ });
+ }
+
+ const truncated = types.length > MAX_TYPE_RESULTS;
+ const capped = truncated ? types.slice(0, MAX_TYPE_RESULTS) : types;
+ const results = capped.map(t => ({
+ name: t.name,
+ kind: vscode.SymbolKind[t.kind],
+ detail: t.detail || undefined,
+ location: `${vscode.workspace.asRelativePath(t.uri)}:${t.range.start.line + 1}`,
+ }));
+
+ return toResult({
+ symbol: items[0].name,
+ direction: options.input.direction,
+ types: results,
+ ...(truncated && { total: types.length, truncated: true }),
+ });
+ },
+};
+
+// ============================================================
+// Registration
+// ============================================================
+
+export function registerJavaContextTools(context: vscode.ExtensionContext): void {
+ sendInfo("", { operationName: "lmTool.register" });
+ context.subscriptions.push(
+ vscode.lm.registerTool("lsp_java_getFileStructure", fileStructureTool),
+ vscode.lm.registerTool("lsp_java_findSymbol", findSymbolTool),
+ );
+}
diff --git a/src/copilot/utils.ts b/src/copilot/utils.ts
new file mode 100644
index 00000000..4a2b424a
--- /dev/null
+++ b/src/copilot/utils.ts
@@ -0,0 +1,264 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+import * as vscode from 'vscode';
+import {
+ ContextProviderApiV1,
+ ResolveRequest,
+ SupportedContextItem,
+ type ContextProvider,
+} from '@github/copilot-language-server';
+import { sendInfo } from "vscode-extension-telemetry-wrapper";
+/**
+ * Error classes for Copilot context provider cancellation handling
+ */
+export class CancellationError extends Error {
+ static readonly CANCELED = "Canceled";
+ constructor() {
+ super(CancellationError.CANCELED);
+ this.name = this.message;
+ }
+}
+
+export class InternalCancellationError extends CancellationError {
+}
+
+export class CopilotCancellationError extends CancellationError {
+}
+
+/**
+ * Type definitions for common patterns
+ */
+export type ContextResolverFunction = (request: ResolveRequest, token: vscode.CancellationToken) => Promise;
+
+export interface CopilotApiWrapper {
+ clientApi?: CopilotApi;
+ chatApi?: CopilotApi;
+}
+
+export interface CopilotApi {
+ getContextProviderAPI(version: string): Promise;
+}
+
+/**
+ * Utility class for handling common operations in Java Context Provider
+ */
+export class JavaContextProviderUtils {
+ /**
+ * Check if operation should be cancelled and throw appropriate error
+ */
+ static checkCancellation(token: vscode.CancellationToken): void {
+ if (token.isCancellationRequested) {
+ throw new CopilotCancellationError();
+ }
+ }
+
+ static createContextItemsFromProjectDependencies(projectDepsResults: { key: string; value: string }[]): SupportedContextItem[] {
+ return projectDepsResults.map(dep => ({
+ name: dep.key,
+ value: dep.value,
+ importance: 70
+ }));
+ }
+
+ /**
+ * Create context items from import classes
+ */
+ static createContextItemsFromImports(importClasses: any[]): SupportedContextItem[] {
+ return importClasses.map((cls: any) => ({
+ uri: cls.uri,
+ value: cls.value,
+ importance: 80,
+ origin: 'request' as const
+ }));
+ }
+
+ /**
+ * Get and validate Copilot APIs
+ */
+ static async getCopilotApis(): Promise {
+ const copilotClientApi = await getCopilotClientApi();
+ const copilotChatApi = await getCopilotChatApi();
+ return { clientApi: copilotClientApi, chatApi: copilotChatApi };
+ }
+
+ /**
+ * Install context provider on available APIs
+ */
+ static async installContextProviderOnApis(
+ apis: CopilotApiWrapper,
+ provider: ContextProvider,
+ context: vscode.ExtensionContext,
+ installFn: (api: CopilotApi, provider: ContextProvider) => Promise
+ ): Promise {
+ let installCount = 0;
+
+ if (apis.clientApi) {
+ const disposable = await installFn(apis.clientApi, provider);
+ if (disposable) {
+ context.subscriptions.push(disposable);
+ installCount++;
+ }
+ }
+
+ if (apis.chatApi) {
+ const disposable = await installFn(apis.chatApi, provider);
+ if (disposable) {
+ context.subscriptions.push(disposable);
+ installCount++;
+ }
+ }
+
+ return installCount;
+ }
+
+ /**
+ * Calculate approximate token count for context items
+ * Using a simple heuristic: ~4 characters per token
+ * Optimized for performance by using reduce and direct property access
+ */
+ static calculateTokenCount(items: SupportedContextItem[]): number {
+ // Fast path: if no items, return 0
+ if (items.length === 0) {
+ return 0;
+ }
+
+ // Use reduce for better performance
+ const totalChars = items.reduce((sum, item) => {
+ let itemChars = 0;
+ // Direct property access is faster than 'in' operator
+ const value = (item as any).value;
+ const name = (item as any).name;
+
+ if (value && typeof value === 'string') {
+ itemChars += value.length;
+ }
+ if (name && typeof name === 'string') {
+ itemChars += name.length;
+ }
+
+ return sum + itemChars;
+ }, 0);
+
+ // Approximate: 1 token ≈ 4 characters
+ // Use bitwise shift for faster division by 4
+ return Math.ceil(totalChars / 4);
+ }
+}
+
+/**
+ * Get Copilot client API
+ */
+export async function getCopilotClientApi(): Promise {
+ const extension = vscode.extensions.getExtension('github.copilot');
+ if (!extension) {
+ return undefined;
+ }
+ try {
+ return await extension.activate();
+ } catch {
+ return undefined;
+ }
+}
+
+/**
+ * Get Copilot chat API
+ */
+export async function getCopilotChatApi(): Promise {
+ type CopilotChatApi = { getAPI?(version: number): CopilotApi | undefined };
+ const extension = vscode.extensions.getExtension('github.copilot-chat');
+ if (!extension) {
+ return undefined;
+ }
+
+ let exports: CopilotChatApi | undefined;
+ try {
+ exports = await extension.activate();
+ } catch {
+ return undefined;
+ }
+ if (!exports || typeof exports.getAPI !== 'function') {
+ return undefined;
+ }
+ return exports.getAPI(1);
+}
+
+export class ContextProviderRegistrationError extends Error {
+ constructor(message: string) {
+ super(message);
+ this.name = 'ContextProviderRegistrationError';
+ }
+}
+
+export class GetImportClassContentError extends Error {
+ constructor(message: string) {
+ super(message);
+ this.name = 'GetImportClassContentError';
+ }
+}
+
+export class GetProjectDependenciesError extends Error {
+ constructor(message: string) {
+ super(message);
+ this.name = 'GetProjectDependenciesError';
+ }
+}
+
+export class ContextProviderResolverError extends Error {
+ constructor(message: string) {
+ super(message);
+ this.name = 'ContextProviderResolverError';
+ }
+}
+
+/**
+ * Send consolidated telemetry data for Java context resolution
+ * This is the centralized function for sending context resolution telemetry
+ *
+ * @param request The resolve request from Copilot
+ * @param start Performance timestamp when resolution started
+ * @param items The resolved context items
+ * @param status Status of the resolution ("succeeded", "cancelled_by_copilot", "cancelled_internally", "error_partial_results")
+ * @param sendInfo The sendInfo function from vscode-extension-telemetry-wrapper
+ * @param error Optional error message
+ * @param dependenciesEmptyReason Optional reason why dependencies were empty
+ * @param importsEmptyReason Optional reason why imports were empty
+ * @param dependenciesCount Number of dependency items resolved
+ * @param importsCount Number of import items resolved
+ */
+export function sendContextResolutionTelemetry(
+ request: ResolveRequest,
+ start: number,
+ items: SupportedContextItem[],
+ status: string,
+ error?: string,
+ dependenciesEmptyReason?: string,
+ importsEmptyReason?: string,
+ dependenciesCount?: number,
+ importsCount?: number
+): void {
+ const duration = Math.round(performance.now() - start);
+ const tokenCount = JavaContextProviderUtils.calculateTokenCount(items);
+ const telemetryData: any = {
+ "action": "resolveJavaContext",
+ "completionId": request.completionId,
+ "duration": duration,
+ "itemCount": items.length,
+ "tokenCount": tokenCount,
+ "status": status,
+ "dependenciesCount": dependenciesCount ?? 0,
+ "importsCount": importsCount ?? 0
+ };
+
+ // Add empty reasons if present
+ if (dependenciesEmptyReason) {
+ telemetryData.dependenciesEmptyReason = dependenciesEmptyReason;
+ }
+ if (importsEmptyReason) {
+ telemetryData.importsEmptyReason = importsEmptyReason;
+ }
+ if (error) {
+ telemetryData.error = error;
+ }
+
+ sendInfo("", telemetryData);
+}
\ No newline at end of file
diff --git a/src/extension.ts b/src/extension.ts
index 531b5ac3..4142bfc8 100644
--- a/src/extension.ts
+++ b/src/extension.ts
@@ -2,8 +2,10 @@
// Licensed under the MIT license.
import * as path from "path";
-import { commands, Diagnostic, Extension, ExtensionContext, extensions, languages,
- Range, tasks, TextDocument, TextEditor, Uri, window, workspace } from "vscode";
+import {
+ commands, Diagnostic, Disposable, Extension, ExtensionContext, extensions, languages,
+ Range, tasks, TextDocument, TextEditor, Uri, window, workspace
+} from "vscode";
import { dispose as disposeTelemetryWrapper, initializeFromJsonFile, instrumentOperation, instrumentOperationAsVsCodeCommand, sendInfo } from "vscode-extension-telemetry-wrapper";
import { Commands, contextManager } from "../extension.bundle";
import { BuildTaskProvider } from "./tasks/build/buildTaskProvider";
@@ -20,9 +22,13 @@ import { DiagnosticProvider } from "./tasks/buildArtifact/migration/DiagnosticPr
import { setContextForDeprecatedTasks, updateExportTaskType } from "./tasks/buildArtifact/migration/utils";
import { CodeActionProvider } from "./tasks/buildArtifact/migration/CodeActionProvider";
import { newJavaFile } from "./explorerCommands/new";
+import upgradeManager from "./upgrade/upgradeManager";
+import { registerJavaContextTools } from "./copilot/tools/javaContextTools";
+import { languageServerApiManager } from "./languageServerApi/languageServerApiManager";
export async function activate(context: ExtensionContext): Promise {
contextManager.initialize(context);
+ upgradeManager.initialize(context);
await initializeFromJsonFile(context.asAbsolutePath("./package.json"));
await initExpService(context);
await instrumentOperation("activation", activateExtension)(context);
@@ -34,7 +40,63 @@ export async function activate(context: ExtensionContext): Promise {
contextManager.setContextValue(Context.WORKSPACE_CONTAINS_BUILD_FILES, true);
}
});
- contextManager.setContextValue(Context.EXTENSION_ACTIVATED, true);
+ await activateJavaProjectExplorerWhenJavaContentExists(context);
+}
+
+/**
+ * The extension is activated by `workspaceContains:*.gradle*` as well, which fires for any
+ * Gradle workspace regardless of language (Groovy/Grails/Kotlin/etc.). Showing the
+ * "Java Projects" view in such workspaces is annoying for non-Java users. To avoid that,
+ * we only flip the `java:projectManagerActivated` context (which controls the view's
+ * visibility) when we are confident the workspace actually contains Java content:
+ * 1. The active editor is a Java file (typical when activated via `onLanguage:java`).
+ * 2. The workspace contains Maven/Eclipse Java metadata (`pom.xml` / `.classpath`).
+ * 3. The workspace contains at least one `*.java` source file.
+ * For Gradle-only workspaces without Java sources we install a watcher so the view will
+ * appear automatically once a Java file is added later.
+ */
+async function activateJavaProjectExplorerWhenJavaContentExists(context: ExtensionContext): Promise {
+ let activated = false;
+ const setActivated = () => {
+ if (activated) {
+ return;
+ }
+ activated = true;
+ contextManager.setContextValue(Context.EXTENSION_ACTIVATED, true);
+ };
+
+ // Any already-loaded Java document (active or not) is a strong signal. This also covers
+ // the case where the extension is activated by `onLanguage:java` but `activeTextEditor`
+ // has not yet been populated.
+ if (workspace.textDocuments.some((doc) => doc.languageId === "java")
+ || window.activeTextEditor?.document.languageId === "java") {
+ setActivated();
+ return;
+ }
+
+ const [javaProjectMetadata, javaSources] = await Promise.all([
+ workspace.findFiles("{**/pom.xml,**/.classpath}", undefined, 1),
+ workspace.findFiles("**/*.java", undefined, 1),
+ ]);
+ if (javaProjectMetadata.length > 0 || javaSources.length > 0) {
+ setActivated();
+ return;
+ }
+
+ // No Java content detected yet. Listen for it to appear via any of these channels:
+ // - A `*.java` source file being created in the workspace (FileSystemWatcher).
+ // - A Java document being opened later (e.g. a single file from outside the workspace).
+ const javaFileWatcher = workspace.createFileSystemWatcher("**/*.java");
+ const disposables: Disposable[] = [
+ javaFileWatcher,
+ javaFileWatcher.onDidCreate(setActivated),
+ workspace.onDidOpenTextDocument((doc) => {
+ if (doc.languageId === "java") {
+ setActivated();
+ }
+ }),
+ ];
+ context.subscriptions.push(...disposables);
}
async function activateExtension(_operationId: string, context: ExtensionContext): Promise {
@@ -81,6 +143,20 @@ async function activateExtension(_operationId: string, context: ExtensionContext
}
));
setContextForDeprecatedTasks();
+
+ // Register Copilot context providers after Java Language Server is ready.
+ languageServerApiManager.ready().then((isReady) => {
+ const config = workspace.getConfiguration("vscode-java-dependency");
+ const isSettingEnabled = config.get("enableLspTools", false);
+ sendInfo("", {
+ operationName: "lmTool.registrationCheck",
+ javaLSReady: isReady ? "true" : "false",
+ lspToolsEnabled: isSettingEnabled ? "true" : "false",
+ });
+ if (isReady && isSettingEnabled) {
+ registerJavaContextTools(context);
+ }
+ });
}
// this method is called when your extension is deactivated
diff --git a/src/java/jdtls.ts b/src/java/jdtls.ts
index c1388253..84a372a0 100644
--- a/src/java/jdtls.ts
+++ b/src/java/jdtls.ts
@@ -82,6 +82,10 @@ export namespace Jdtls {
return commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.JAVA_PROJECT_CHECK_IMPORT_STATUS) || false;
}
+ export async function getProjectDependencies(projectUri: string): Promise {
+ return await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.JAVA_PROJECT_GET_DEPENDENCIES, projectUri) || [];
+ }
+
export enum CompileWorkspaceStatus {
Failed = 0,
Succeed = 1,
@@ -97,4 +101,9 @@ export namespace Jdtls {
interface IPackageDataParam {
projectUri: string | undefined;
[key: string]: any;
+}
+
+export interface IDependencyInfo {
+ key: string;
+ value: string;
}
\ No newline at end of file
diff --git a/src/languageServerApi/languageServerApiManager.ts b/src/languageServerApi/languageServerApiManager.ts
index 494c08a4..a89fe4ef 100644
--- a/src/languageServerApi/languageServerApiManager.ts
+++ b/src/languageServerApi/languageServerApiManager.ts
@@ -13,6 +13,8 @@ class LanguageServerApiManager {
private extensionApi: any;
private isServerReady: boolean = false;
+ private isServerRunning: boolean = false;
+ private serverReadyWaitStarted: boolean = false;
public async ready(): Promise {
if (this.isServerReady) {
@@ -28,11 +30,49 @@ class LanguageServerApiManager {
return false;
}
+ // Use serverRunning() if available (API >= 0.14) for progressive loading.
+ // This resolves when the server process is alive and can handle requests,
+ // even if project imports haven't completed yet. This enables the tree view
+ // to show projects incrementally as they are imported.
+ if (!this.isServerRunning && this.extensionApi.serverRunning) {
+ await this.extensionApi.serverRunning();
+ this.isServerRunning = true;
+ return true;
+ }
+ if (this.isServerRunning) {
+ return true;
+ }
+
+ // Fallback for older API versions: wait for full server readiness
await this.extensionApi.serverReady();
this.isServerReady = true;
return true;
}
+ /**
+ * Start a background wait for full server readiness (import complete).
+ * When the server finishes importing, trigger a full refresh to replace
+ * progressive placeholder items with proper data from the server.
+ * Guarded so it only starts once regardless of call order.
+ */
+ private startServerReadyWait(): void {
+ if (this.serverReadyWaitStarted || this.isServerReady) {
+ return;
+ }
+ if (this.extensionApi?.serverReady) {
+ this.serverReadyWaitStarted = true;
+ this.extensionApi.serverReady()
+ .then(() => {
+ this.isServerReady = true;
+ commands.executeCommand(Commands.VIEW_PACKAGE_INTERNAL_REFRESH, /* debounce = */false);
+ })
+ .catch((_error: unknown) => {
+ // Server failed to become ready (e.g., startup failure).
+ // Leave isServerReady as false; progressive items remain as-is.
+ });
+ }
+ }
+
public async initializeJavaLanguageServerApis(): Promise {
if (this.isApiInitialized()) {
return;
@@ -49,18 +89,43 @@ class LanguageServerApiManager {
}
this.extensionApi = extensionApi;
+ // Start background wait for full server readiness unconditionally.
+ // This ensures isServerReady is set and final refresh fires even
+ // if onDidProjectsImport sets isServerRunning before ready() runs.
+ this.startServerReadyWait();
+
if (extensionApi.onDidClasspathUpdate) {
const onDidClasspathUpdate: Event = extensionApi.onDidClasspathUpdate;
- contextManager.context.subscriptions.push(onDidClasspathUpdate(() => {
- commands.executeCommand(Commands.VIEW_PACKAGE_INTERNAL_REFRESH, /* debounce = */true);
+ contextManager.context.subscriptions.push(onDidClasspathUpdate((uri: Uri) => {
+ if (this.isServerReady) {
+ // Server is fully ready — do a normal refresh to get full project data.
+ commands.executeCommand(Commands.VIEW_PACKAGE_INTERNAL_REFRESH, /* debounce = */true);
+ } else {
+ // During import, the server is blocked and can't respond to queries.
+ // Don't clear progressive items. Try to add the project if not
+ // already present (typically a no-op since ProjectsImported fires first).
+ commands.executeCommand(Commands.VIEW_PACKAGE_INTERNAL_ADD_PROJECTS, [uri.toString()]);
+ }
syncHandler.updateFileWatcher(Settings.autoRefresh());
}));
}
if (extensionApi.onDidProjectsImport) {
const onDidProjectsImport: Event = extensionApi.onDidProjectsImport;
- contextManager.context.subscriptions.push(onDidProjectsImport(() => {
- commands.executeCommand(Commands.VIEW_PACKAGE_INTERNAL_REFRESH, /* debounce = */true);
+ contextManager.context.subscriptions.push(onDidProjectsImport((uris: Uri[]) => {
+ // Server is sending project data, so it's definitely running.
+ // Mark as running so ready() returns immediately on subsequent calls.
+ this.isServerRunning = true;
+ if (this.isServerReady) {
+ commands.executeCommand(Commands.VIEW_PACKAGE_INTERNAL_REFRESH, /* debounce = */true);
+ } else {
+ // During import, the JDTLS server is blocked by Eclipse workspace
+ // operations and cannot respond to queries. Instead of triggering
+ // a refresh (which queries the server), directly add projects to
+ // the tree view from the notification data.
+ const projectUris = uris.map(u => u.toString());
+ commands.executeCommand(Commands.VIEW_PACKAGE_INTERNAL_ADD_PROJECTS, projectUris);
+ }
syncHandler.updateFileWatcher(Settings.autoRefresh());
}));
}
@@ -91,6 +156,14 @@ class LanguageServerApiManager {
return this.extensionApi !== undefined;
}
+ /**
+ * Returns true if the server has fully completed initialization (import finished).
+ * During progressive loading, this returns false even though ready() has resolved.
+ */
+ public isFullyReady(): boolean {
+ return this.isServerReady;
+ }
+
/**
* Check if the language server is ready in the given timeout.
* @param timeout the timeout in milliseconds to wait
diff --git a/src/settings.ts b/src/settings.ts
index bea8e7c2..60bde619 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -108,6 +108,10 @@ export class Settings {
return workspace.getConfiguration("java.dependency").get("refreshDelay", 2000);
}
+ public static getEnableDependencyCheckup() {
+ return workspace.getConfiguration("java.dependency").get("enableDependencyCheckup", true);
+ }
+
public static getExportJarTargetPath(): string {
// tslint:disable-next-line: no-invalid-template-strings
return workspace.getConfiguration("java.project.exportJar").get("targetPath", "${workspaceFolder}/${workspaceFolderBasename}.jar");
diff --git a/src/syncHandler.ts b/src/syncHandler.ts
index d6d247c0..57dd97f9 100644
--- a/src/syncHandler.ts
+++ b/src/syncHandler.ts
@@ -13,6 +13,7 @@ import { DataNode } from "./views/dataNode";
import { ExplorerNode } from "./views/explorerNode";
import { explorerNodeCache } from "./views/nodeCache/explorerNodeCache";
import { Jdtls } from "./java/jdtls";
+import upgradeManager from "./upgrade/upgradeManager";
const ENABLE_AUTO_REFRESH: string = "java.view.package.enableAutoRefresh";
const DISABLE_AUTO_REFRESH: string = "java.view.package.disableAutoRefresh";
@@ -46,6 +47,7 @@ class SyncHandler implements Disposable {
this.disposables.push(workspace.onDidChangeWorkspaceFolders(() => {
this.refresh();
+ setImmediate(() => upgradeManager.scan()); // Deferred
}));
try {
@@ -88,7 +90,18 @@ class SyncHandler implements Disposable {
}));
this.disposables.push(watcher.onDidCreate((uri: Uri) => {
- this.refresh(this.getParentNodeInExplorer(uri));
+ const node: ExplorerNode | undefined = this.getParentNodeInExplorer(uri);
+ // When the created resource lands in a package that is not currently
+ // rendered, getParentNodeInExplorer resolves to the source root. Tell
+ // that root which path changed so the server can refresh only that
+ // subtree instead of deeply refreshing the whole source tree. Gate on
+ // the node kind (not instanceof) to avoid importing PackageRootNode
+ // here, which would create a module cycle and break activation.
+ // See https://github.com/microsoft/vscode-java-dependency/issues/914
+ if (node instanceof DataNode && node.nodeData?.kind === NodeKind.PackageRoot) {
+ (node as unknown as { pendingSyncPaths: Set }).pendingSyncPaths.add(uri.toString());
+ }
+ this.refresh(node);
}));
this.disposables.push(watcher.onDidDelete((uri: Uri) => {
diff --git a/src/tasks/build/buildTaskProvider.ts b/src/tasks/build/buildTaskProvider.ts
index 6844d68b..ef908fe0 100644
--- a/src/tasks/build/buildTaskProvider.ts
+++ b/src/tasks/build/buildTaskProvider.ts
@@ -28,7 +28,7 @@ export class BuildTaskProvider implements TaskProvider {
const defaultTaskDefinition = {
type: BuildTaskProvider.type,
paths: [ BuildTaskProvider.workspace ],
- isFullBuild: true,
+ isFullBuild: false,
};
const defaultTask = new Task(
defaultTaskDefinition,
@@ -58,6 +58,9 @@ export class BuildTaskProvider implements TaskProvider {
.filter(Boolean);
task.definition = taskDefinition;
}
+ if (taskDefinition.isFullBuild === undefined) {
+ taskDefinition.isFullBuild = false;
+ }
task.execution = new CustomExecution(async (resolvedDefinition: IBuildTaskDefinition): Promise => {
return new BuildTaskTerminal(resolvedDefinition, task.scope ?? TaskScope.Workspace);
});
diff --git a/src/upgrade/assessmentManager.ts b/src/upgrade/assessmentManager.ts
new file mode 100644
index 00000000..3a3c60fb
--- /dev/null
+++ b/src/upgrade/assessmentManager.ts
@@ -0,0 +1,392 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+import * as fs from 'fs';
+import * as semver from 'semver';
+import { globby } from 'globby';
+
+import { Uri } from 'vscode';
+import { Jdtls } from "../java/jdtls";
+import { NodeKind, type INodeData } from "../java/nodeData";
+import { type DependencyCheckItem, type UpgradeIssue, type PackageDescription, UpgradeReason } from "./type";
+import { DEPENDENCY_JAVA_RUNTIME } from "./dependency.metadata";
+import { Upgrade } from '../constants';
+import { buildPackageId } from './utility';
+import metadataManager from './metadataManager';
+import { sendInfo } from 'vscode-extension-telemetry-wrapper';
+import { batchGetCVEIssues } from './cve';
+import { ContainerPath } from '../views/containerNode';
+
+function packageNodeToDescription(node: INodeData): PackageDescription | null {
+ const version = node.metaData?.["maven.version"];
+ const groupId = node.metaData?.["maven.groupId"];
+ const artifactId = node.metaData?.["maven.artifactId"];
+ if (!version || !groupId || !artifactId) {
+ return null;
+ }
+
+ return { version, groupId, artifactId };
+}
+
+function getVersionRange(versions: Set) : string {
+ const versionList = [...versions].sort((a, b) => {
+ const semverA = semver.coerce(a);
+ const semverB = semver.coerce(b);
+ if (!semverA || !semverB) {
+ return a.localeCompare(b);
+ }
+ return semver.compare(semverA, semverB);
+ });
+ if (versionList.length === 1) {
+ return versionList[0];
+ }
+ return `${versionList[0]}|${versionList[versionList.length - 1]}`;
+}
+
+function collectVersionRange(pkgs: PackageDescription[]): Record {
+ const versionMap: Record> = {};
+ for (const pkg of pkgs) {
+ const groupId = pkg.groupId;
+ if (!versionMap[groupId]) {
+ versionMap[groupId] = new Set();
+ }
+ versionMap[groupId].add(pkg.version);
+ }
+
+ return Object.fromEntries(Object.entries(versionMap).map(([groupId, versions]) => [groupId, getVersionRange(versions)]));
+}
+
+function getJavaIssues(data: INodeData): UpgradeIssue[] {
+ const javaVersion = data.metaData?.MaxSourceVersion as number | undefined;
+ const { name, supportedVersion } = DEPENDENCY_JAVA_RUNTIME;
+ if (!javaVersion) {
+ return [];
+ }
+ const currentSemVer = semver.coerce(javaVersion);
+
+ const [javaRuntimeGroupId, javaRuntimeArtifactId] = Upgrade.PACKAGE_ID_FOR_JAVA_RUNTIME.split(":");
+ sendInfo("", {
+ operationName: "java.dependency.assessmentManager.getJavaVersionRange",
+ versionRangeByGroupId: JSON.stringify(
+ collectVersionRange([{
+ groupId: javaRuntimeGroupId,
+ artifactId: javaRuntimeArtifactId,
+ version: String(javaVersion),
+ }]),
+ ),
+ });
+
+ if (currentSemVer && !semver.satisfies(currentSemVer, supportedVersion)) {
+ return [{
+ ...DEPENDENCY_JAVA_RUNTIME,
+ packageId: Upgrade.PACKAGE_ID_FOR_JAVA_RUNTIME,
+ packageDisplayName: name,
+ currentVersion: String(javaVersion),
+ }];
+ }
+
+ return [];
+}
+
+function getUpgradeForDependency(versionString: string, supportedVersionDefinition: DependencyCheckItem, packageId: string): UpgradeIssue | null {
+ const reason = supportedVersionDefinition.reason;
+ switch (reason) {
+ case UpgradeReason.DEPRECATED: {
+ return {
+ ...supportedVersionDefinition,
+ packageDisplayName: supportedVersionDefinition.name,
+ reason,
+ currentVersion: versionString,
+ packageId,
+ };
+ }
+ case UpgradeReason.END_OF_LIFE: {
+ const currentSemVer = semver.coerce(versionString);
+ if (currentSemVer && !semver.satisfies(currentSemVer, supportedVersionDefinition.supportedVersion)) {
+ return {
+ ...supportedVersionDefinition,
+ packageDisplayName: supportedVersionDefinition.name,
+ reason,
+ currentVersion: versionString,
+ packageId,
+ };
+ }
+ }
+ }
+
+ return null;
+}
+
+function getPackageUpgradeMetadata(pkg: PackageDescription): DependencyCheckItem | null {
+ const { groupId, artifactId } = pkg;
+ const packageId = buildPackageId(groupId, artifactId);
+ return metadataManager.getMetadataById(packageId) ?? null;
+}
+
+function getDependencyIssue(pkg: PackageDescription): UpgradeIssue | null {
+ const supportedVersionDefinition = getPackageUpgradeMetadata(pkg);
+ const version = pkg.version;
+ if (!version || !supportedVersionDefinition) {
+ return null;
+ }
+ const { groupId, artifactId } = pkg;
+ const packageId = buildPackageId(groupId, artifactId);
+ return getUpgradeForDependency(version, supportedVersionDefinition, packageId);
+}
+
+async function getDependencyIssues(dependencies: PackageDescription[]): Promise {
+
+ const issues = dependencies.map(getDependencyIssue).filter((x): x is UpgradeIssue => Boolean(x));
+ const versionRangeByGroupId = collectVersionRange(dependencies.filter(pkg => getPackageUpgradeMetadata(pkg)));
+ if (Object.keys(versionRangeByGroupId).length > 0) {
+ sendInfo("", {
+ operationName: "java.dependency.assessmentManager.getDependencyVersionRange",
+ versionRangeByGroupId: JSON.stringify(versionRangeByGroupId),
+ });
+ }
+
+ return issues;
+}
+
+async function getWorkspaceIssues(projectDeps: {projectNode: INodeData, dependencies: PackageDescription[]}[]): Promise {
+
+ const issues: UpgradeIssue[] = [];
+ const dependencyMap: Map = new Map();
+ for (const { projectNode, dependencies } of projectDeps) {
+ issues.push(...getJavaIssues(projectNode));
+ for (const dep of dependencies) {
+ const key = `${dep.groupId}:${dep.artifactId}:${dep.version ?? ""}`;
+ if (!dependencyMap.has(key)) {
+ dependencyMap.set(key, dep);
+ }
+ }
+ }
+ const uniqueDependencies = Array.from(dependencyMap.values());
+ issues.push(...await getCVEIssues(uniqueDependencies));
+ issues.push(...await getDependencyIssues(uniqueDependencies));
+ return issues;
+}
+
+/**
+ * Find all pom.xml files in a directory using glob
+ */
+async function findAllPomFiles(dir: string): Promise {
+ try {
+ return await globby('**/pom.xml', {
+ cwd: dir,
+ absolute: true,
+ ignore: ['**/node_modules/**', '**/target/**', '**/.git/**', '**/.idea/**', '**/.vscode/**']
+ });
+ } catch {
+ return [];
+ }
+}
+
+/**
+ * Parse dependencies from a single pom.xml file
+ */
+function parseDependenciesFromSinglePom(pomPath: string): Set {
+ // TODO : Use a proper XML parser if needed
+ const directDeps = new Set();
+ try {
+ const pomContent = fs.readFileSync(pomPath, 'utf-8');
+
+ // Extract dependencies from section (not inside )
+ // First, remove dependencyManagement sections to avoid including managed deps
+ const withoutDepMgmt = pomContent.replace(/[\s\S]*?<\/dependencyManagement>/g, '');
+
+ // Match blocks and extract groupId and artifactId
+ const dependencyRegex = /\s*([^<]+)<\/groupId>\s*([^<]+)<\/artifactId>/g;
+ let match = dependencyRegex.exec(withoutDepMgmt);
+ while (match !== null) {
+ const groupId = match[1].trim();
+ const artifactId = match[2].trim();
+ // Skip property references like ${project.groupId}
+ if (!groupId.includes('${') && !artifactId.includes('${')) {
+ directDeps.add(`${groupId}:${artifactId}`);
+ }
+ match = dependencyRegex.exec(withoutDepMgmt);
+ }
+ } catch {
+ // If we can't read the pom, return empty set
+ }
+ return directDeps;
+}
+
+/**
+ * Parse direct dependencies from all pom.xml files in the project.
+ * Finds all pom.xml files starting from the project root and parses them to collect dependencies.
+ */
+async function parseDirectDependenciesFromPom(projectPath: string): Promise> {
+ const directDeps = new Set();
+
+ // Find all pom.xml files in the project starting from the project root
+ const allPomFiles = await findAllPomFiles(projectPath);
+
+ // Parse each pom.xml and collect dependencies
+ for (const pom of allPomFiles) {
+ const deps = parseDependenciesFromSinglePom(pom);
+ deps.forEach(dep => directDeps.add(dep));
+ }
+
+ return directDeps;
+}
+
+/**
+ * Find all Gradle build files in a directory using glob
+ */
+async function findAllGradleFiles(dir: string): Promise {
+ try {
+ return await globby('**/{build.gradle,build.gradle.kts}', {
+ cwd: dir,
+ absolute: true,
+ ignore: ['**/node_modules/**', '**/build/**', '**/.git/**', '**/.idea/**', '**/.vscode/**', '**/.gradle/**']
+ });
+ } catch {
+ return [];
+ }
+}
+
+/**
+ * Parse dependencies from a single Gradle build file
+ */
+function parseDependenciesFromSingleGradle(gradlePath: string): Set {
+ const directDeps = new Set();
+ try {
+ const gradleContent = fs.readFileSync(gradlePath, 'utf-8');
+
+ // Match common dependency configurations:
+ // implementation 'group:artifact:version'
+ // implementation "group:artifact:version"
+ // api 'group:artifact:version'
+ // compileOnly, runtimeOnly, testImplementation, etc.
+ const shortFormRegex = /(?:implementation|api|compile|compileOnly|runtimeOnly|testImplementation|testCompileOnly|testRuntimeOnly)\s*\(?['"]([^:'"]+):([^:'"]+)(?::[^'"]*)?['"]\)?/g;
+ let match = shortFormRegex.exec(gradleContent);
+ while (match !== null) {
+ const groupId = match[1].trim();
+ const artifactId = match[2].trim();
+ if (!groupId.includes('$') && !artifactId.includes('$')) {
+ directDeps.add(`${groupId}:${artifactId}`);
+ }
+ match = shortFormRegex.exec(gradleContent);
+ }
+
+ // Match map notation: implementation group: 'x', name: 'y', version: 'z'
+ const mapFormRegex = /(?:implementation|api|compile|compileOnly|runtimeOnly|testImplementation|testCompileOnly|testRuntimeOnly)\s*\(?group:\s*['"]([^'"]+)['"]\s*,\s*name:\s*['"]([^'"]+)['"]/g;
+ match = mapFormRegex.exec(gradleContent);
+ while (match !== null) {
+ const groupId = match[1].trim();
+ const artifactId = match[2].trim();
+ if (!groupId.includes('$') && !artifactId.includes('$')) {
+ directDeps.add(`${groupId}:${artifactId}`);
+ }
+ match = mapFormRegex.exec(gradleContent);
+ }
+ } catch {
+ // If we can't read the gradle file, return empty set
+ }
+ return directDeps;
+}
+
+/**
+ * Parse direct dependencies from all Gradle build files in the project.
+ * Finds all build.gradle and build.gradle.kts files and parses them to collect dependencies.
+ */
+async function parseDirectDependenciesFromGradle(projectPath: string): Promise> {
+ const directDeps = new Set();
+
+ // Find all Gradle build files in the project
+ const allGradleFiles = await findAllGradleFiles(projectPath);
+
+ // Parse each gradle file and collect dependencies
+ for (const gradleFile of allGradleFiles) {
+ const deps = parseDependenciesFromSingleGradle(gradleFile);
+ deps.forEach(dep => directDeps.add(dep));
+ }
+
+ return directDeps;
+}
+
+export async function getDirectDependencies(projectNode: INodeData): Promise {
+ const projectStructureData = await Jdtls.getPackageData({ kind: NodeKind.Project, projectUri: projectNode.uri });
+ // Only include Maven or Gradle containers (not JRE or other containers)
+ const dependencyContainers = projectStructureData.filter(x =>
+ x.kind === NodeKind.Container &&
+ (x.path?.startsWith(ContainerPath.Maven) || x.path?.startsWith(ContainerPath.Gradle))
+ );
+
+ if (dependencyContainers.length === 0) {
+ return [];
+ }
+
+ const allPackages = await Promise.allSettled(
+ dependencyContainers.map(async (packageContainer) => {
+ const packageNodes = await Jdtls.getPackageData({
+ kind: NodeKind.Container,
+ projectUri: projectNode.uri,
+ path: packageContainer.path,
+ });
+ return packageNodes
+ .map(packageNodeToDescription)
+ .filter((x): x is PackageDescription => Boolean(x));
+ })
+ );
+
+ const fulfilled = allPackages.filter((x): x is PromiseFulfilledResult => x.status === "fulfilled");
+ const failedPackageCount = allPackages.length - fulfilled.length;
+ if (failedPackageCount > 0) {
+ sendInfo("", {
+ operationName: "java.dependency.assessmentManager.getDirectDependencies.rejected",
+ failedPackageCount: String(failedPackageCount),
+ });
+ }
+
+ let dependencies = fulfilled.map(x => x.value).flat();
+
+ if (!dependencies || dependencies.length === 0) {
+ sendInfo("", {
+ operationName: "java.dependency.assessmentManager.getDirectDependencies.noDependencyInfo"
+ });
+ return [];
+ }
+
+ // Determine build type from dependency containers
+ const isMaven = dependencyContainers.some(x => x.path?.startsWith(ContainerPath.Maven));
+ // Get direct dependency identifiers from build files
+ let directDependencyIds: Set | null = null;
+ if (projectNode.uri && dependencyContainers.length > 0) {
+ try {
+ const projectPath = Uri.parse(projectNode.uri).fsPath;
+ if (isMaven) {
+ directDependencyIds = await parseDirectDependenciesFromPom(projectPath);
+ } else {
+ directDependencyIds = await parseDirectDependenciesFromGradle(projectPath);
+ }
+ } catch {
+ // Ignore errors
+ }
+ }
+
+ if (!directDependencyIds || directDependencyIds.size === 0) {
+ sendInfo("", {
+ operationName: "java.dependency.assessmentManager.getDirectDependencies.noDirectDependencyInfo"
+ });
+ // TODO: fallback to return all dependencies if we cannot parse direct dependencies or just return empty?
+ return dependencies;
+ }
+ // Filter to only direct dependencies if we have build file info
+ dependencies = dependencies.filter(pkg =>
+ directDependencyIds!.has(`${pkg.groupId}:${pkg.artifactId}`)
+ );
+
+ return dependencies;
+}
+
+async function getCVEIssues(dependencies: PackageDescription[]): Promise {
+ const gavCoordinates = dependencies.map(pkg => `${pkg.groupId}:${pkg.artifactId}:${pkg.version}`);
+ return batchGetCVEIssues(gavCoordinates);
+}
+
+export default {
+ getWorkspaceIssues,
+};
\ No newline at end of file
diff --git a/src/upgrade/cve.ts b/src/upgrade/cve.ts
new file mode 100644
index 00000000..804afa1a
--- /dev/null
+++ b/src/upgrade/cve.ts
@@ -0,0 +1,192 @@
+import { UpgradeIssue, UpgradeReason } from "./type";
+import { Octokit } from "@octokit/rest";
+import * as semver from "semver";
+
+/**
+ * Severity levels ordered by criticality (higher number = more critical)
+ * The official doc about the severity levels can be found at:
+ * https://docs.github.com/en/rest/security-advisories/global-advisories?apiVersion=2022-11-28
+ */
+export enum Severity {
+ unknown = 0,
+ low = 1,
+ medium = 2,
+ high = 3,
+ critical = 4,
+}
+
+export interface CVE {
+ id: string;
+ ghsa_id: string;
+ severity: keyof typeof Severity;
+ summary: string;
+ description: string;
+ html_url: string;
+ affectedDeps: {
+ name?: string | null;
+ vulVersions?: string | null;
+ patchedVersion?: string | null;
+ }[];
+}
+
+export type CveUpgradeIssue = UpgradeIssue & {
+ reason: UpgradeReason.CVE;
+ severity: string;
+ link: string;
+};
+
+export async function batchGetCVEIssues(
+ coordinates: string[]
+): Promise {
+ // Split dependencies into smaller batches to avoid URL length limit
+ const BATCH_SIZE = 30;
+ const allCVEUpgradeIssues: CveUpgradeIssue[] = [];
+
+ // Process dependencies in batches
+ for (let i = 0; i < coordinates.length; i += BATCH_SIZE) {
+ const batchCoordinates = coordinates.slice(i, i + BATCH_SIZE);
+ const cveUpgradeIssues = await getCveUpgradeIssues(batchCoordinates);
+ allCVEUpgradeIssues.push(...cveUpgradeIssues);
+ }
+
+ return allCVEUpgradeIssues;
+}
+
+async function getCveUpgradeIssues(
+ coordinates: string[]
+): Promise {
+ if (coordinates.length === 0) {
+ return [];
+ }
+ const deps = coordinates
+ .map((d) => d.split(":", 3))
+ .map((p) => ({ name: `${p[0]}:${p[1]}`, version: p[2] }))
+ .filter((d) => d.version);
+
+ const depsCves = await fetchCves(deps);
+ return mapCvesToUpgradeIssues(depsCves);
+}
+
+async function fetchCves(deps: { name: string; version: string }[]) {
+ if (deps.length === 0) {
+ return [];
+ }
+ try {
+ const allCves: CVE[] = await retrieveVulnerabilityData(deps);
+
+ if (allCves.length === 0) {
+ return [];
+ }
+ // group the cves by coordinate
+ const depsCves: { dep: string; version: string; cves: CVE[] }[] = [];
+
+ for (const dep of deps) {
+ const depCves: CVE[] = allCves.filter((cve) =>
+ isCveAffectingDep(cve, dep.name, dep.version)
+ );
+
+ if (depCves.length < 1) {
+ continue;
+ }
+
+ depsCves.push({
+ dep: dep.name,
+ version: dep.version,
+ cves: depCves,
+ });
+ }
+
+ return depsCves;
+ } catch (error) {
+ return [];
+ }
+}
+
+async function retrieveVulnerabilityData(
+ deps: { name: string; version: string }[]
+) {
+ if (deps.length === 0) {
+ return [];
+ }
+ const octokit = new Octokit();
+
+ // Use paginate to fetch all pages of results
+ const allAdvisories = await octokit.paginate(
+ octokit.securityAdvisories.listGlobalAdvisories,
+ {
+ ecosystem: "maven",
+ affects: deps.map((p) => `${p.name}@${p.version}`),
+ direction: "asc",
+ sort: "published",
+ per_page: 100,
+ }
+ );
+
+ const allCves: CVE[] = allAdvisories
+ .filter(
+ (c) =>
+ !c.withdrawn_at?.trim() &&
+ (c.severity === "critical" || c.severity === "high")
+ ) // only consider critical and high severity CVEs
+ .map((cve) => ({
+ id: cve.cve_id || cve.ghsa_id,
+ ghsa_id: cve.ghsa_id,
+ severity: cve.severity,
+ summary: cve.summary,
+ description: cve.description || cve.summary,
+ html_url: cve.html_url,
+ affectedDeps: (cve.vulnerabilities ?? []).map((v) => ({
+ name: v.package?.name,
+ vulVersions: v.vulnerable_version_range,
+ patchedVersion: v.first_patched_version,
+ })),
+ }));
+ return allCves;
+}
+
+function mapCvesToUpgradeIssues(
+ depsCves: { dep: string; version: string; cves: CVE[] }[]
+) {
+ if (depsCves.length === 0) {
+ return [];
+ }
+ const upgradeIssues = depsCves.map((depCve) => {
+ const mostCriticalCve = [...depCve.cves]
+ .sort((a, b) => Severity[b.severity] - Severity[a.severity])[0];
+ return {
+ packageId: depCve.dep,
+ packageDisplayName: depCve.dep,
+ currentVersion: depCve.version || "unknown",
+ name: `${mostCriticalCve.id || "CVE"}`,
+ reason: UpgradeReason.CVE as const,
+ suggestedVersion: {
+ name: "",
+ description: "",
+ },
+ severity: mostCriticalCve.severity,
+ description:
+ mostCriticalCve.description ||
+ mostCriticalCve.summary ||
+ "Security vulnerability detected",
+ link: mostCriticalCve.html_url,
+ };
+ });
+ return upgradeIssues;
+}
+
+function isCveAffectingDep(
+ cve: CVE,
+ depName: string,
+ depVersion: string
+): boolean {
+ if (!cve.affectedDeps || cve.affectedDeps.length === 0) {
+ return false;
+ }
+ return cve.affectedDeps.some((d) => {
+ if (d.name !== depName || !d.vulVersions) {
+ return false;
+ }
+
+ return semver.satisfies(depVersion || "0.0.0", d.vulVersions);
+ });
+}
diff --git a/src/upgrade/dependency.metadata.ts b/src/upgrade/dependency.metadata.ts
new file mode 100644
index 00000000..df7b3380
--- /dev/null
+++ b/src/upgrade/dependency.metadata.ts
@@ -0,0 +1,107 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+import { Upgrade } from "../constants";
+import { UpgradeReason, type DependencyCheckMetadata } from "./type";
+
+const MATURE_JAVA_LTS_VERSION = 25;
+
+export const DEPENDENCY_JAVA_RUNTIME = {
+ "name": "Java Runtime",
+ "reason": UpgradeReason.JRE_TOO_OLD,
+ "supportedVersion": `>=${MATURE_JAVA_LTS_VERSION}`,
+ "suggestedVersion": {
+ "name": `Java ${MATURE_JAVA_LTS_VERSION}`,
+ "description": "LTS version",
+ },
+} as const;
+
+const DEPENDENCIES_TO_SCAN: DependencyCheckMetadata = {
+ "org.springframework.boot:*": {
+ "reason": UpgradeReason.END_OF_LIFE,
+ "name": "Spring Boot",
+ "supportedVersion": "2.7.x || >=3.2.x",
+ "eolDate": {
+ "4.0.x": "2027-12",
+ "3.5.x": "2032-06",
+ "3.4.x": "2026-12",
+ "3.3.x": "2026-06",
+ "3.2.x": "2025-12",
+ "3.1.x": "2025-06",
+ "3.0.x": "2024-12",
+ "2.7.x": "2029-06",
+ "2.6.x": "2024-02",
+ "2.5.x": "2023-08",
+ "2.4.x": "2023-02",
+ "2.3.x": "2022-08",
+ "2.2.x": "2022-01",
+ "2.1.x": "2021-01",
+ "2.0.x": "2020-06",
+ "1.5.x": "2020-11",
+ },
+ "suggestedVersion": {
+ "name": "3.5",
+ "description": "latest stable release",
+ },
+ },
+ "org.springframework:*": {
+ "reason": UpgradeReason.END_OF_LIFE,
+ "name": "Spring Framework",
+ "supportedVersion": "5.3.x || >=6.2.x",
+ "eolDate": {
+ "7.0.x": "2028-06",
+ "6.2.x": "2032-06",
+ "6.1.x": "2026-06",
+ "6.0.x": "2025-08",
+ "5.3.x": "2029-06",
+ "5.2.x": "2023-12",
+ "5.1.x": "2022-12",
+ "5.0.x": "2022-12",
+ "4.3.x": "2020-12",
+ },
+ "suggestedVersion": {
+ "name": "6.2",
+ "description": "latest stable release",
+ },
+ },
+ "org.springframework.security:*": {
+ "reason": UpgradeReason.END_OF_LIFE,
+ "name": "Spring Security",
+ "supportedVersion": "5.7.x || 5.8.x || >=6.2.x",
+ "eolDate": {
+ "7.0.x": "2027-12",
+ "6.5.x": "2032-06",
+ "6.4.x": "2026-12",
+ "6.3.x": "2026-06",
+ "6.2.x": "2025-12",
+ "6.1.x": "2025-06",
+ "6.0.x": "2024-12",
+ "5.8.x": "2029-06",
+ "5.7.x": "2029-06",
+ "5.6.x": "2024-02",
+ "5.5.x": "2023-08",
+ "5.4.x": "2023-02",
+ "5.3.x": "2022-08",
+ "5.2.x": "2022-01",
+ "5.1.x": "2021-01",
+ "5.0.x": "2020-06",
+ "4.2.x": "2020-11",
+ },
+ "suggestedVersion": {
+ "name": "3.5",
+ "description": "latest stable release",
+ },
+ },
+ "javax:*": {
+ "reason": UpgradeReason.DEPRECATED,
+ "name": "Java EE",
+ "suggestedVersion": {
+ "name": "Jakarta EE 10",
+ "description": "latest release with wide Java runtime version support",
+
+ },
+ },
+ [Upgrade.PACKAGE_ID_FOR_JAVA_RUNTIME]: DEPENDENCY_JAVA_RUNTIME,
+};
+
+export default DEPENDENCIES_TO_SCAN;
\ No newline at end of file
diff --git a/src/upgrade/display/notificationManager.ts b/src/upgrade/display/notificationManager.ts
new file mode 100644
index 00000000..29f0f5ca
--- /dev/null
+++ b/src/upgrade/display/notificationManager.ts
@@ -0,0 +1,118 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+import { commands, ExtensionContext, window } from "vscode";
+import { UpgradeReason, type IUpgradeIssuesRenderer, type UpgradeIssue } from "../type";
+import { buildCVENotificationMessage, buildFixPrompt, buildNotificationMessage, getExtensionState, type ExtensionState } from "../utility";
+import { Commands } from "../../commands";
+import { Settings } from "../../settings";
+import { instrumentOperation, sendInfo } from "vscode-extension-telemetry-wrapper";
+import { ExtensionName, Upgrade } from "../../constants";
+import { CveUpgradeIssue } from "../cve";
+
+const KEY_PREFIX = 'javaupgrade.notificationManager';
+const NEXT_SHOW_TS_KEY = `${KEY_PREFIX}.nextShowTs`;
+
+const BUTTON_TEXT_NOT_NOW = "Not Now";
+
+// Action button label keyed by the install state of the app modernization extension.
+const UPGRADE_BUTTON_TEXT: Record = {
+ "up-to-date": "Upgrade Now",
+ "outdated": "Update Extension and Upgrade",
+ "not-installed": "Install Extension and Upgrade",
+};
+const FIX_CVE_BUTTON_TEXT: Record = {
+ "up-to-date": "Fix Now",
+ "outdated": "Update Extension and Fix",
+ "not-installed": "Install Extension and Fix",
+};
+
+const SECONDS_IN_A_DAY = 24 * 60 * 60;
+const SECONDS_COUNT_BEFORE_NOTIFICATION_RESHOW = 10 * SECONDS_IN_A_DAY;
+
+function getNowTs() {
+ return Number(new Date()) / 1000;
+}
+
+class NotificationManager implements IUpgradeIssuesRenderer {
+ private hasShown = false;
+ private context?: ExtensionContext;
+
+ initialize(context: ExtensionContext) {
+ this.context = context;
+ }
+
+ async render(issues: UpgradeIssue[]) {
+ return (instrumentOperation(
+ "java.dependency.showUpgradeNotification",
+ async (operationId: string) => {
+ if (issues.length === 0) {
+ return;
+ }
+
+ if (!this.shouldShow() || this.hasShown) {
+ return;
+ }
+ this.hasShown = true;
+
+ // Prefer Java upgrade recommendations over CVE fixes: only fall back
+ // to a CVE notification when there is no upgrade issue to recommend.
+ const cveIssues = issues.filter(
+ (i): i is CveUpgradeIssue => i.reason === UpgradeReason.CVE
+ );
+ const upgradeIssues = issues.filter(
+ (i) => i.reason !== UpgradeReason.CVE
+ );
+ const isCVE = upgradeIssues.length === 0;
+ const issue = isCVE ? cveIssues[0] : upgradeIssues[0];
+
+ const extensionState = getExtensionState(ExtensionName.APP_MODERNIZATION_UPGRADE_FOR_JAVA);
+ const source = isCVE ? Upgrade.SOURCE_CVE : Upgrade.SOURCE_JAVA_UPGRADE;
+ const notificationMessage = isCVE
+ ? buildCVENotificationMessage(cveIssues, extensionState)
+ : buildNotificationMessage(issue, extensionState);
+ const actionButtonText = isCVE
+ ? FIX_CVE_BUTTON_TEXT[extensionState]
+ : UPGRADE_BUTTON_TEXT[extensionState];
+
+ sendInfo(operationId, {
+ operationName: "java.dependency.upgradeNotification.show",
+ extensionState,
+ source,
+ });
+
+ const selection = await window.showInformationMessage(
+ notificationMessage,
+ actionButtonText,
+ BUTTON_TEXT_NOT_NOW
+ );
+ sendInfo(operationId, {
+ operationName: "java.dependency.upgradeNotification.runUpgrade",
+ choice: selection ?? "",
+ });
+
+ if (selection === actionButtonText) {
+ commands.executeCommand(Commands.JAVA_UPGRADE_WITH_COPILOT, buildFixPrompt(issue), source);
+ } else if (selection === BUTTON_TEXT_NOT_NOW) {
+ this.setNextShowTs(getNowTs() + SECONDS_COUNT_BEFORE_NOTIFICATION_RESHOW);
+ }
+ }
+ ))();
+ }
+
+ private shouldShow() {
+ return Settings.getEnableDependencyCheckup()
+ && ((this.getNextShowTs() ?? 0) <= getNowTs());
+ }
+
+ private getNextShowTs() {
+ return this.context?.globalState.get(NEXT_SHOW_TS_KEY);
+ }
+
+ private setNextShowTs(num: number) {
+ return this.context?.globalState.update(NEXT_SHOW_TS_KEY, num);
+ }
+}
+
+const notificationManager = new NotificationManager();
+export default notificationManager;
\ No newline at end of file
diff --git a/src/upgrade/metadataManager.ts b/src/upgrade/metadataManager.ts
new file mode 100644
index 00000000..f9f79dfd
--- /dev/null
+++ b/src/upgrade/metadataManager.ts
@@ -0,0 +1,28 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+import { type DependencyCheckMetadata, type DependencyCheckItem } from "./type";
+import { buildPackageId } from "./utility";
+import DEPENDENCIES_TO_SCAN from "./dependency.metadata";
+
+class MetadataManager {
+ private static dependencyCheckMetadata: DependencyCheckMetadata = DEPENDENCIES_TO_SCAN;
+
+ public static getMetadataById(givenPackageId: string): DependencyCheckItem | undefined {
+ const splits = givenPackageId.split(":", 2);
+ const groupId = splits[0];
+ const artifactId = splits[1] ?? "";
+
+ const packageId = buildPackageId(groupId, artifactId);
+ const packageIdWithWildcardArtifactId = buildPackageId(groupId, "*");
+ return this.getMetadata(packageId) ?? this.getMetadata(packageIdWithWildcardArtifactId);
+ }
+
+ private static getMetadata(packageRuleUsed: string) {
+ return this.dependencyCheckMetadata[packageRuleUsed] ? {
+ ...this.dependencyCheckMetadata[packageRuleUsed], packageRuleUsed
+ } : undefined;
+ }
+}
+
+export default MetadataManager;
\ No newline at end of file
diff --git a/src/upgrade/type.ts b/src/upgrade/type.ts
new file mode 100644
index 00000000..74802b82
--- /dev/null
+++ b/src/upgrade/type.ts
@@ -0,0 +1,38 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+export type UpgradeTarget = { name: string; description: string };
+export type DependencyCheckItemBase = { name: string, reason: UpgradeReason, suggestedVersion: UpgradeTarget };
+export type DependencyCheckItemEol = DependencyCheckItemBase & {
+ reason: UpgradeReason.END_OF_LIFE,
+ supportedVersion: string,
+ eolDate: Record
+};
+export type DependencyCheckItemJreTooOld = DependencyCheckItemBase & { reason: UpgradeReason.JRE_TOO_OLD };
+export type DependencyCheckItemDeprecated = DependencyCheckItemBase & { reason: UpgradeReason.DEPRECATED };
+export type DependencyCheckItemCve = DependencyCheckItemBase & { reason: UpgradeReason.CVE, severity: string, description: string, link: string };
+export type DependencyCheckItem = (DependencyCheckItemEol | DependencyCheckItemJreTooOld | DependencyCheckItemDeprecated | DependencyCheckItemCve);
+export type DependencyCheckMetadata = Record;
+
+export enum UpgradeReason {
+ END_OF_LIFE,
+ DEPRECATED,
+ CVE,
+ JRE_TOO_OLD,
+}
+
+export type UpgradeIssue = {
+ packageId: string;
+ packageDisplayName: string;
+ currentVersion: string;
+} & DependencyCheckItem;
+
+export interface IUpgradeIssuesRenderer {
+ render(issues: UpgradeIssue[]): void;
+}
+
+export type PackageDescription = {
+ groupId: string;
+ artifactId: string;
+ version: string;
+};
\ No newline at end of file
diff --git a/src/upgrade/upgradeManager.ts b/src/upgrade/upgradeManager.ts
new file mode 100644
index 00000000..90a60b2a
--- /dev/null
+++ b/src/upgrade/upgradeManager.ts
@@ -0,0 +1,102 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+import { commands, type ExtensionContext, workspace, type WorkspaceFolder } from "vscode";
+
+import { Jdtls } from "../java/jdtls";
+import { languageServerApiManager } from "../languageServerApi/languageServerApiManager";
+import { ExtensionName, Upgrade } from "../constants";
+import { instrumentOperation, instrumentOperationAsVsCodeCommand, sendInfo } from "vscode-extension-telemetry-wrapper";
+import { Commands } from "../commands";
+import notificationManager from "./display/notificationManager";
+import { Settings } from "../settings";
+import assessmentManager, { getDirectDependencies } from "./assessmentManager";
+import { checkOrInstallAppModExtensionForUpgrade, checkOrPopupToInstallAppModExtensionForModernization } from "./utility";
+
+const DEFAULT_UPGRADE_PROMPT = "Upgrade Java project dependency to latest version.";
+
+
+function shouldRunCheckup() {
+ return Settings.getEnableDependencyCheckup();
+}
+
+class UpgradeManager {
+ public static initialize(context: ExtensionContext) {
+ notificationManager.initialize(context);
+
+ // Upgrade project
+ context.subscriptions.push(instrumentOperationAsVsCodeCommand(
+ Commands.JAVA_UPGRADE_WITH_COPILOT, async (promptText?: string, source?: string) => {
+ const canProceed = await checkOrInstallAppModExtensionForUpgrade(
+ ExtensionName.APP_MODERNIZATION_UPGRADE_FOR_JAVA);
+ if (!canProceed) {
+ return;
+ }
+ const promptToUse = promptText ?? DEFAULT_UPGRADE_PROMPT;
+ const upgradeSource = source ?? Upgrade.SOURCE_JAVA_UPGRADE;
+ await commands.executeCommand(Commands.GOTO_AGENT_MODE, {
+ prompt: promptToUse, useCustomAgent: true, source: upgradeSource,
+ });
+ }));
+
+ // Show modernization view
+ context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_MODERNIZE_JAVA_PROJECT, async () => {
+ await checkOrPopupToInstallAppModExtensionForModernization(
+ ExtensionName.APP_MODERNIZATION_FOR_JAVA,
+ `${ExtensionName.APP_MODERNIZATION_EXTENSION_NAME} extension is required to modernize Java projects. Would you like to install it and modernize this project?`,
+ "Install Extension and Modernize");
+ await commands.executeCommand("workbench.view.extension.azureJavaMigrationExplorer");
+ }));
+
+ // Defer the expensive scan operation to not block extension activation
+ setImmediate(() => UpgradeManager.scan());
+ }
+
+ public static scan() {
+ if (!shouldRunCheckup()) {
+ return;
+ }
+ workspace.workspaceFolders?.forEach((folder) =>
+ UpgradeManager.runDependencyCheckup(folder)
+ );
+ }
+
+ private static async runDependencyCheckup(folder: WorkspaceFolder) {
+ return instrumentOperation("java.dependency.runDependencyCheckup", async (_operationId: string) => {
+ if (!(await languageServerApiManager.ready())) {
+ sendInfo(_operationId, { skipReason: "languageServerNotReady" });
+ return;
+ }
+
+ const hasJavaError: boolean = await Jdtls.checkImportStatus();
+ if (hasJavaError) {
+ sendInfo(_operationId, { skipReason: "hasJavaError" });
+ return;
+ }
+
+ const projects = await Jdtls.getProjects(folder.uri.toString());
+ const projectDirectDepsResults = await Promise.allSettled(
+ projects.map(async (projectNode) => ({
+ projectNode,
+ dependencies: await getDirectDependencies(projectNode),
+ }))
+ );
+
+ const allProjectDirectDeps = projectDirectDepsResults.flatMap(result =>
+ result.status === "fulfilled" ? [result.value] : []
+ );
+
+ if (allProjectDirectDeps.every((x) => x.dependencies.length === 0)) {
+ sendInfo(_operationId, { skipReason: "notMavenGradleProject" });
+ return;
+ }
+
+ const workspaceIssues = await assessmentManager.getWorkspaceIssues(allProjectDirectDeps);
+ if (workspaceIssues.length > 0) {
+ notificationManager.render(workspaceIssues);
+ }
+ })();
+ }
+}
+
+export default UpgradeManager;
\ No newline at end of file
diff --git a/src/upgrade/utility.ts b/src/upgrade/utility.ts
new file mode 100644
index 00000000..0f364a20
--- /dev/null
+++ b/src/upgrade/utility.ts
@@ -0,0 +1,258 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+import { commands, extensions, Uri, window } from "vscode";
+import * as semver from "semver";
+import { UpgradeReason, type UpgradeIssue } from "./type";
+import { ExtensionName, Upgrade } from "../constants";
+import { instrumentOperation, sendInfo } from "vscode-extension-telemetry-wrapper";
+import { CveUpgradeIssue } from "./cve";
+
+
+function findEolDate(currentVersion: string, eolDate: Record): string | null {
+ const currentVersionSemVer = semver.coerce(currentVersion);
+ if (!currentVersionSemVer) {
+ return null;
+ }
+ for (const [versionRange, date] of Object.entries(eolDate)) {
+ if (semver.satisfies(currentVersionSemVer, versionRange)) {
+ return date;
+ }
+ }
+ return null;
+}
+
+export type ExtensionState = "up-to-date" | "outdated" | "not-installed";
+
+export function getExtensionState(extensionId: string): ExtensionState {
+ const ext = extensions.getExtension(extensionId);
+ if (!ext) {
+ return "not-installed";
+ }
+ const version = ext.packageJSON?.version;
+ if (version && semver.gte(version, Upgrade.MIN_APPMOD_VERSION)) {
+ return "up-to-date";
+ }
+ // Treat missing version as outdated (conservative)
+ return "outdated";
+}
+
+function getActionWord(extensionState: ExtensionState, verb: string): string {
+ switch (extensionState) {
+ case "up-to-date":
+ return verb;
+ case "outdated":
+ return `update ${ExtensionName.APP_MODERNIZATION_EXTENSION_NAME} extension and ${verb}`;
+ case "not-installed":
+ return `install ${ExtensionName.APP_MODERNIZATION_EXTENSION_NAME} extension and ${verb}`;
+ }
+}
+
+export function buildNotificationMessage(issue: UpgradeIssue, extensionState: ExtensionState): string {
+ const {
+ packageId,
+ currentVersion,
+ reason,
+ suggestedVersion: { name: suggestedVersionName, description: suggestedVersionDescription },
+ packageDisplayName
+ } = issue;
+
+ const upgradeWord = getActionWord(extensionState, "upgrade");
+
+ if (packageId === Upgrade.PACKAGE_ID_FOR_JAVA_RUNTIME) {
+ return `This project is using an older Java runtime (${currentVersion}). Would you like to ${upgradeWord} it to the latest LTS version?`;
+ }
+
+ switch (reason) {
+ case UpgradeReason.END_OF_LIFE: {
+ const { eolDate } = issue;
+ const versionEolDate = findEolDate(currentVersion, eolDate);
+ return `This project is using ${packageDisplayName} ${currentVersion}, which has reached end of life${versionEolDate ? ` in ${versionEolDate}` : ""
+ }. Would you like to ${upgradeWord} it to ${suggestedVersionName} (${suggestedVersionDescription})?`;
+ }
+ case UpgradeReason.DEPRECATED:
+ default: {
+ return `This project is using ${packageDisplayName} ${currentVersion}, which has been deprecated. Would you like to ${upgradeWord} it to ${suggestedVersionName} (${suggestedVersionDescription})?`;
+ }
+ }
+}
+
+export function buildCVENotificationMessage(issues: CveUpgradeIssue[], extensionState: ExtensionState): string {
+
+ if (issues.length === 0) {
+ return "No CVE issues found.";
+ }
+ const severityCount: Record = issues.reduce>((acc, { reason, severity }) => {
+ if (reason === UpgradeReason.CVE && (severity === 'critical' || severity === 'high')) {
+ acc[severity] = (acc[severity] ?? 0) + 1;
+ }
+ return acc;
+ }, {});
+
+ const criticalCount = severityCount.critical || 0;
+ const highCount = severityCount.high || 0;
+
+ const parts: string[] = [];
+ if (criticalCount > 0) {
+ parts.push(`${criticalCount} critical`);
+ }
+ if (highCount > 0) {
+ parts.push(`${highCount} high-severity`);
+ }
+
+ const severityText = parts.join(" and ");
+
+ sendInfo("", {
+ operationName: "java.dependency.upgrade.getCVESeverityDistribution",
+ CVESeverityDistribution: severityText,
+ });
+
+ const fixWord = getActionWord(extensionState, "fix");
+
+ if (issues.length === 1) {
+ return `${severityText} CVE vulnerability is detected in this project. Would you like to ${fixWord} it now?`;
+ }
+
+ return `${severityText} CVE vulnerabilities are detected in this project. Would you like to ${fixWord} them now?`;
+}
+export function buildFixPrompt(issue: UpgradeIssue): string {
+ const { packageDisplayName, reason } = issue;
+
+ switch (reason) {
+ case UpgradeReason.JRE_TOO_OLD: {
+ return `upgrade java runtime to the latest LTS version`;
+ }
+ case UpgradeReason.END_OF_LIFE:
+ case UpgradeReason.DEPRECATED: {
+ const { suggestedVersion: { name: suggestedVersionName } } = issue;
+ return `upgrade ${packageDisplayName} to ${suggestedVersionName}`;
+ }
+ case UpgradeReason.CVE: {
+ return `fix all critical and high-severity CVE vulnerabilities in this project by invoking #appmod-validate-cves-for-java`;
+ }
+ }
+}
+
+export function buildPackageId(groupId: string, artifactId: string): string {
+ return `${groupId}:${artifactId}`;
+}
+
+export function normalizePath(path: string): string {
+ return Uri.parse(path).toString();
+}
+
+async function checkOrPromptToEnableAppModExtension(keyword: string) {
+ if (extensions.getExtension(ExtensionName.APP_MODERNIZATION_FOR_JAVA)) {
+ return;
+ }
+
+ // The extension is in a disabled state since we cannot detect the extension after installing it.
+ await instrumentOperation("java.dependency.extensionDisabled", async () => {
+ await commands.executeCommand("workbench.extensions.search", ExtensionName.APP_MODERNIZATION_FOR_JAVA);
+ const BTN_TEXT = "Show extension in sidebar";
+ const choice2 = await window.showInformationMessage(
+ `${ExtensionName.APP_MODERNIZATION_EXTENSION_NAME} extension is required to ${keyword} Java projects but it seems disabled. Please enable it manually and try again.`,
+ { modal: true },
+ BTN_TEXT
+ );
+ if (choice2 === BTN_TEXT) {
+ await commands.executeCommand("workbench.extensions.search", ExtensionName.APP_MODERNIZATION_FOR_JAVA);
+ }
+ })();
+}
+
+export async function checkOrPopupToInstallAppModExtensionForModernization(
+ extensionIdToCheck: string,
+ notificationText: string,
+ buttonText: string): Promise {
+ if (extensions.getExtension(extensionIdToCheck)) {
+ return;
+ }
+
+ const choice = await window.showInformationMessage(notificationText, { modal: true }, buttonText);
+ if (choice === buttonText) {
+ await commands.executeCommand("workbench.extensions.installExtension", ExtensionName.APP_MODERNIZATION_FOR_JAVA);
+ } else {
+ return;
+ }
+
+ await checkOrPromptToEnableAppModExtension("modernize");
+}
+
+export async function checkOrInstallAppModExtensionForUpgrade(
+ extensionIdToCheck: string): Promise {
+ return instrumentOperation("java.dependency.upgradeFlow", async (operationId: string) => {
+ const state = getExtensionState(extensionIdToCheck);
+ sendInfo(operationId, {
+ operationName: "java.dependency.upgradeFlow.start",
+ extensionState: state,
+ });
+
+ if (state === "up-to-date") {
+ sendInfo(operationId, {
+ operationName: "java.dependency.upgradeFlow.result",
+ upgradeFlowResult: "proceeded",
+ });
+ return true;
+ }
+
+ await commands.executeCommand("workbench.extensions.installExtension", ExtensionName.APP_MODERNIZATION_FOR_JAVA);
+ sendInfo(operationId, {
+ operationName: "java.dependency.upgradeFlow.result",
+ upgradeFlowStep: "installSucceeded",
+ installType: state === "outdated" ? "updated" : "installed",
+ });
+
+ if (state === "outdated") {
+ // Extension was updated (not freshly installed) — reload required
+ const reload = await window.showInformationMessage(
+ `${ExtensionName.APP_MODERNIZATION_EXTENSION_NAME} extension has been updated. Reload VS Code to start the upgrade experience.`,
+ "Reload Now"
+ );
+ if (reload === "Reload Now") {
+ sendInfo(operationId, {
+ operationName: "java.dependency.upgradeFlow.result",
+ upgradeFlowResult: "reload-accepted",
+ });
+ await commands.executeCommand("workbench.action.reloadWindow");
+ } else {
+ sendInfo(operationId, {
+ operationName: "java.dependency.upgradeFlow.result",
+ upgradeFlowResult: "reload-dismissed",
+ });
+ }
+ return false;
+ }
+
+ // Wait until the freshly installed extension is registered, returning as
+ // soon as it is ready, or after a 5s timeout fallback at the latest.
+ await waitForExtensionReady(extensionIdToCheck, 5000);
+
+ sendInfo(operationId, {
+ operationName: "java.dependency.upgradeFlow.result",
+ upgradeFlowResult: "proceeded",
+ });
+ return true;
+ })();
+}
+
+function waitForExtensionReady(extensionId: string, timeoutMs: number): Promise {
+ return new Promise(resolve => {
+ if (extensions.getExtension(extensionId)) {
+ resolve();
+ return;
+ }
+ let timer: NodeJS.Timeout;
+ const disposable = extensions.onDidChange(() => {
+ if (extensions.getExtension(extensionId)) {
+ clearTimeout(timer);
+ disposable.dispose();
+ resolve();
+ }
+ });
+ timer = setTimeout(() => {
+ disposable.dispose();
+ resolve();
+ }, timeoutMs);
+ });
+}
diff --git a/src/utility.ts b/src/utility.ts
index ee647dca..9ea08371 100644
--- a/src/utility.ts
+++ b/src/utility.ts
@@ -88,7 +88,9 @@ export function isKeyword(identifier: string): boolean {
return keywords.has(identifier);
}
-const identifierRegExp: RegExp = /^([a-zA-Z_$][a-zA-Z\d_$]*)$/;
+// Java identifier per JLS §3.8: start with a Unicode letter, underscore, or dollar sign;
+// continue with Unicode letters, digits, underscore, dollar sign, or combining marks.
+const identifierRegExp: RegExp = /^[\p{L}\p{Nl}_$][\p{L}\p{Nl}\p{Nd}\p{Mn}\p{Mc}\p{Pc}_$\u200c\u200d]*$/u;
export function isJavaIdentifier(identifier: string): boolean {
return identifierRegExp.test(identifier);
}
diff --git a/src/views/PrimaryTypeNode.ts b/src/views/PrimaryTypeNode.ts
index 8ee95223..0d80bf8b 100644
--- a/src/views/PrimaryTypeNode.ts
+++ b/src/views/PrimaryTypeNode.ts
@@ -34,6 +34,10 @@ export class PrimaryTypeNode extends DataNode {
return "";
}
+ public getLabel(): string {
+ return this._nodeData.displayName ?? this._nodeData.name;
+ }
+
protected async loadData(): Promise {
if (!this.hasChildren() || !this.nodeData.uri) {
return undefined;
diff --git a/src/views/containerNode.ts b/src/views/containerNode.ts
index 0245514c..8ae3e83b 100644
--- a/src/views/containerNode.ts
+++ b/src/views/containerNode.ts
@@ -15,23 +15,36 @@ export class ContainerNode extends DataNode {
super(nodeData, parent);
}
+ private _containerType: ContainerType;
+
public get projectBasePath() {
return this._project.uri && Uri.parse(this._project.uri).fsPath;
}
- public getContainerType(): string {
+ public getContainerType(): ContainerType {
+ if (this._containerType) {
+ return this._containerType;
+ }
+
const containerPath: string = this._nodeData.path || "";
if (containerPath.startsWith(ContainerPath.JRE)) {
- return ContainerType.JRE;
+ this._containerType = ContainerType.JRE;
} else if (containerPath.startsWith(ContainerPath.Maven)) {
- return ContainerType.Maven;
+ this._containerType = ContainerType.Maven;
} else if (containerPath.startsWith(ContainerPath.Gradle)) {
- return ContainerType.Gradle;
+ this._containerType = ContainerType.Gradle;
} else if (containerPath.startsWith(ContainerPath.ReferencedLibrary) && this._project.isUnmanagedFolder()) {
// currently, we only support editing referenced libraries in unmanaged folders
- return ContainerType.ReferencedLibrary;
+ this._containerType = ContainerType.ReferencedLibrary;
+ } else {
+ this._containerType = ContainerType.Unknown;
}
- return ContainerType.Unknown;
+
+ return this._containerType;
+ }
+
+ public isMavenType(): boolean {
+ return this._containerType === ContainerType.Maven;
}
protected async loadData(): Promise {
@@ -70,7 +83,7 @@ export enum ContainerType {
Unknown = "",
}
-const enum ContainerPath {
+export const enum ContainerPath {
JRE = "org.eclipse.jdt.launching.JRE_CONTAINER",
Maven = "org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER",
Gradle = "org.eclipse.buildship.core.gradleclasspathcontainer",
diff --git a/src/views/dataNode.ts b/src/views/dataNode.ts
index 21be07a7..200abf13 100644
--- a/src/views/dataNode.ts
+++ b/src/views/dataNode.ts
@@ -42,6 +42,10 @@ export abstract class DataNode extends ExplorerNode {
return item;
}
+ public getDisplayName(): string {
+ return this._nodeData.displayName || this._nodeData.name;
+ }
+
public get nodeData(): INodeData {
return this._nodeData;
}
diff --git a/src/views/dependencyDataProvider.ts b/src/views/dependencyDataProvider.ts
index dd0bd05b..a8b192d6 100644
--- a/src/views/dependencyDataProvider.ts
+++ b/src/views/dependencyDataProvider.ts
@@ -2,12 +2,13 @@
// Licensed under the MIT license.
import * as _ from "lodash";
+import * as path from "path";
import {
commands, Event, EventEmitter, ExtensionContext, ProviderResult,
RelativePattern, TreeDataProvider, TreeItem, Uri, window, workspace,
} from "vscode";
import { instrumentOperationAsVsCodeCommand, sendError } from "vscode-extension-telemetry-wrapper";
-import { contextManager } from "../../extension.bundle";
+import { ContainerNode, contextManager } from "../../extension.bundle";
import { Commands } from "../commands";
import { Context } from "../constants";
import { appendOutput, executeExportJarTask } from "../tasks/buildArtifact/BuildArtifactTaskProvider";
@@ -37,11 +38,16 @@ export class DependencyDataProvider implements TreeDataProvider {
* `null` means no node is pending.
*/
private pendingRefreshElement: ExplorerNode | undefined | null;
+ /** Resolved when the first batch of progressive items arrives. */
+ private _progressiveItemsReady: Promise | undefined;
+ private _resolveProgressiveItems: (() => void) | undefined;
constructor(public readonly context: ExtensionContext) {
// commands that do not send back telemetry
context.subscriptions.push(commands.registerCommand(Commands.VIEW_PACKAGE_INTERNAL_REFRESH, (debounce?: boolean, element?: ExplorerNode) =>
this.refresh(debounce, element)));
+ context.subscriptions.push(commands.registerCommand(Commands.VIEW_PACKAGE_INTERNAL_ADD_PROJECTS, (projectUris: string[]) =>
+ this.addProgressiveProjects(projectUris)));
context.subscriptions.push(commands.registerCommand(Commands.EXPORT_JAR_REPORT, (terminalId: string, message: string) => {
appendOutput(terminalId, message);
}));
@@ -55,6 +61,8 @@ export class DependencyDataProvider implements TreeDataProvider {
context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_OUTLINE, (uri, range) =>
window.showTextDocument(Uri.parse(uri), { selection: range })));
context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_BUILD_WORKSPACE, () =>
+ commands.executeCommand(Commands.JAVA_BUILD_WORKSPACE, false /*fullCompile*/)));
+ context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_REBUILD_WORKSPACE, () =>
commands.executeCommand(Commands.JAVA_BUILD_WORKSPACE, true /*fullCompile*/)));
context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_CLEAN_WORKSPACE, () =>
commands.executeCommand(Commands.JAVA_CLEAN_WORKSPACE)));
@@ -70,13 +78,21 @@ export class DependencyDataProvider implements TreeDataProvider {
commands.executeCommand(Commands.JAVA_PROJECT_CONFIGURATION_UPDATE, uris[0]);
}
}));
- context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_REBUILD, async (node: INodeData) => {
+ context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_BUILD_PROJECT, async (node: INodeData) => {
if (!node.uri) {
sendError(new Error("Uri not available when building project"));
- window.showErrorMessage("The URI of the project is not available, you can try to trigger the command 'Java: Rebuild Projects' from Command Palette.");
+ window.showErrorMessage("The URI of the project is not available, you can try to trigger the command 'Java: Build Project' from Command Palette.");
return;
}
- commands.executeCommand(Commands.BUILD_PROJECT, Uri.parse(node.uri), true);
+ return commands.executeCommand(Commands.BUILD_PROJECT, Uri.parse(node.uri), false /*isFullBuild*/);
+ }));
+ context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_REBUILD, async (node: INodeData) => {
+ if (!node.uri) {
+ sendError(new Error("Uri not available when rebuilding project"));
+ window.showErrorMessage("The URI of the project is not available, you can try to trigger the command 'Java: Rebuild Project' from Command Palette.");
+ return;
+ }
+ return commands.executeCommand(Commands.BUILD_PROJECT, Uri.parse(node.uri), true /*isFullBuild*/);
}));
this.setRefreshDebounceFunc();
@@ -117,13 +133,46 @@ export class DependencyDataProvider implements TreeDataProvider {
}
public async getChildren(element?: ExplorerNode): Promise {
+ // Fast path: if root items are already populated by progressive loading
+ // (addProgressiveProjects), return them directly without querying the
+ // server, which may be blocked during long-running imports.
+ if (!element && this._rootItems && this._rootItems.length > 0) {
+ explorerNodeCache.saveNodes(this._rootItems);
+ return this._rootItems;
+ }
+
if (!await languageServerApiManager.ready()) {
return [];
}
+ // During progressive loading (server running but not fully ready after
+ // a clean workspace), don't enter getRootNodes() — its server queries
+ // will block for the entire import duration. Instead, keep the TreeView
+ // progress spinner visible by awaiting until the first progressive
+ // notification delivers items.
+ if (!element && !languageServerApiManager.isFullyReady()) {
+ if (!this._rootItems || this._rootItems.length === 0) {
+ if (!this._progressiveItemsReady) {
+ this._progressiveItemsReady = new Promise((resolve) => {
+ this._resolveProgressiveItems = resolve;
+ });
+ }
+ await this._progressiveItemsReady;
+ }
+ return this._rootItems || [];
+ }
+
const children = (!this._rootItems || !element) ?
await this.getRootNodes() : await element.getChildren();
+ if (children && element instanceof ContainerNode) {
+ if (element.isMavenType()) {
+ children.sort((a, b) => {
+ return a.getDisplayName().localeCompare(b.getDisplayName());
+ });
+ }
+ }
+
explorerNodeCache.saveNodes(children || []);
return children;
}
@@ -159,12 +208,74 @@ export class DependencyDataProvider implements TreeDataProvider {
private doRefresh(element?: ExplorerNode): void {
if (!element) {
this._rootItems = undefined;
+ // Resolve any pending progressive await so getChildren() doesn't hang
+ if (this._resolveProgressiveItems) {
+ this._resolveProgressiveItems();
+ this._resolveProgressiveItems = undefined;
+ this._progressiveItemsReady = undefined;
+ }
}
explorerNodeCache.removeNodeChildren(element);
this._onDidChangeTreeData.fire(element);
this.pendingRefreshElement = null;
}
+ /**
+ * Add projects progressively from ProjectsImported notifications.
+ * This directly creates ProjectNode items from URIs without querying
+ * the JDTLS server, which may be blocked during long-running imports.
+ */
+ public addProgressiveProjects(projectUris: string[]): void {
+ const folders = workspace.workspaceFolders;
+ // Multi-root workspaces use WorkspaceNode roots. Those roots can remain
+ // cached briefly after switching to a single folder, so wait for the
+ // full refresh rather than creating a mixed root structure.
+ if (!folders || folders.length !== 1 || this._rootItems?.some(root => root instanceof WorkspaceNode)) {
+ return;
+ }
+
+ if (!this._rootItems) {
+ this._rootItems = [];
+ }
+
+ const existingUris = new Set(
+ this._rootItems
+ .filter((n): n is ProjectNode => n instanceof ProjectNode)
+ .map((n) => n.uri)
+ .filter((uri): uri is string => Boolean(uri))
+ .map(getProjectUriKey)
+ );
+
+ let added = false;
+ for (const uriStr of projectUris) {
+ const uriKey = getProjectUriKey(uriStr);
+ if (existingUris.has(uriKey)) {
+ continue;
+ }
+ // Extract project name from URI (last non-empty path segment)
+ const name = uriStr.replace(/\/+$/, "").split("/").pop() || "unknown";
+ const nodeData: INodeData = {
+ name,
+ uri: uriStr,
+ kind: NodeKind.Project,
+ };
+ this._rootItems.push(new ProjectNode(nodeData, undefined));
+ existingUris.add(uriKey);
+ added = true;
+ }
+
+ if (added) {
+ // Resolve the pending getChildren() promise so the TreeView
+ // spinner stops and items appear.
+ if (this._resolveProgressiveItems) {
+ this._resolveProgressiveItems();
+ this._resolveProgressiveItems = undefined;
+ this._progressiveItemsReady = undefined;
+ }
+ this._onDidChangeTreeData.fire(undefined);
+ }
+ }
+
private async getRootNodes(): Promise {
try {
await explorerLock.acquireAsync();
@@ -204,3 +315,16 @@ export class DependencyDataProvider implements TreeDataProvider {
}
}
}
+
+function getProjectUriKey(uriString: string): string {
+ const uri = Uri.parse(uriString);
+ if (uri.scheme !== "file") {
+ return uri.toString();
+ }
+
+ let fsPath = path.normalize(uri.fsPath);
+ if (fsPath !== path.parse(fsPath).root) {
+ fsPath = fsPath.replace(/[\\\/]+$/, "");
+ }
+ return process.platform === "win32" ? fsPath.toLowerCase() : fsPath;
+}
diff --git a/src/views/documentSymbolNode.ts b/src/views/documentSymbolNode.ts
index a6ead753..7552116e 100644
--- a/src/views/documentSymbolNode.ts
+++ b/src/views/documentSymbolNode.ts
@@ -28,6 +28,10 @@ export class DocumentSymbolNode extends ExplorerNode {
super(parent);
}
+ public getDisplayName(): string {
+ return this.symbolInfo.name;
+ }
+
public getChildren(): ExplorerNode[] | Promise {
const res: ExplorerNode[] = [];
if (this.symbolInfo?.children?.length) {
@@ -39,7 +43,7 @@ export class DocumentSymbolNode extends ExplorerNode {
}
public getTreeItem(): TreeItem | Promise {
- const item = new TreeItem(this.symbolInfo.name,
+ const item = new TreeItem(this.getDisplayName(),
this.symbolInfo?.children?.length ? TreeItemCollapsibleState.Collapsed
: TreeItemCollapsibleState.None);
item.iconPath = this.iconPath;
diff --git a/src/views/explorerNode.ts b/src/views/explorerNode.ts
index c5c29092..1dcac373 100644
--- a/src/views/explorerNode.ts
+++ b/src/views/explorerNode.ts
@@ -33,4 +33,6 @@ export abstract class ExplorerNode {
public abstract getTreeItem(): TreeItem | Promise;
public abstract computeContextValue(): string | undefined;
+
+ public abstract getDisplayName(): string;
}
diff --git a/src/views/packageRootNode.ts b/src/views/packageRootNode.ts
index 63de2c65..01327579 100644
--- a/src/views/packageRootNode.ts
+++ b/src/views/packageRootNode.ts
@@ -16,6 +16,14 @@ import { NodeFactory } from "./nodeFactory";
export class PackageRootNode extends DataNode {
+ /**
+ * Resource URIs reported by the file watcher as newly created under this
+ * source root since the last load. Consumed on the next loadData() so the
+ * server can scope its filesystem refresh to only the changed subtrees.
+ * See https://github.com/microsoft/vscode-java-dependency/issues/914
+ */
+ public pendingSyncPaths: Set = new Set();
+
constructor(nodeData: INodeData, parent: DataNode, protected _project: ProjectNode) {
super(nodeData, parent);
}
@@ -25,13 +33,28 @@ export class PackageRootNode extends DataNode {
}
protected async loadData(): Promise {
- return Jdtls.getPackageData({
- kind: NodeKind.PackageRoot,
- projectUri: this._project.nodeData.uri,
- rootPath: this.nodeData.path,
- handlerIdentifier: this.nodeData.handlerIdentifier,
- isHierarchicalView: Settings.isHierarchicalView(),
- });
+ let syncPaths: string[] | undefined;
+ if (this.pendingSyncPaths.size) {
+ // Snapshot and clear synchronously before the async server call so
+ // watcher events arriving during the await are not lost.
+ syncPaths = Array.from(this.pendingSyncPaths);
+ this.pendingSyncPaths.clear();
+ }
+ try {
+ return await Jdtls.getPackageData({
+ kind: NodeKind.PackageRoot,
+ projectUri: this._project.nodeData.uri,
+ rootPath: this.nodeData.path,
+ handlerIdentifier: this.nodeData.handlerIdentifier,
+ isHierarchicalView: Settings.isHierarchicalView(),
+ syncPaths,
+ });
+ } catch (error) {
+ // Restore the snapshot so a transient server error does not drop the
+ // pending paths; the next refresh will retry the targeted sync.
+ syncPaths?.forEach((path) => this.pendingSyncPaths.add(path));
+ throw error;
+ }
}
protected createChildNodeList(): ExplorerNode[] {
diff --git a/test/e2e-plans/java-dep-autorefresh-targeted.yaml b/test/e2e-plans/java-dep-autorefresh-targeted.yaml
new file mode 100644
index 00000000..124c8d77
--- /dev/null
+++ b/test/e2e-plans/java-dep-autorefresh-targeted.yaml
@@ -0,0 +1,105 @@
+# Validates the targeted (scoped) auto-refresh optimization for issue #914.
+# Companion to java-dep-refresh-generated-files.yaml (which tests manual Refresh).
+#
+# On auto-refresh the extension passes the changed URI to the server
+# (PackageParams.syncPaths); the server refreshes only the affected subtree (the
+# nearest existing ancestor) instead of the whole source root, then closes the
+# package root to rebuild its package-fragment list. This plan does NOT call
+# java.view.package.refresh — it relies solely on the FileSystemWatcher, so it
+# exercises the syncPaths path. Auto-refresh is on by default.
+#
+# Tree layout and verify policy are the same as the manual-Refresh plan: compact
+# virtualized tree, deterministic verifyTreeItem assertions, no `verify:` on the
+# file-write step (no reliable visual signal for the LLM judge).
+#
+# Usage:
+# npx autotest run test/e2e-plans/java-dep-autorefresh-targeted.yaml \
+# --override extensionPath=
+
+name: "Java Dependency — Auto-refresh surfaces a new package (targeted, #914)"
+description: |
+ Validates the targeted (scoped) auto-refresh optimization for issue #914: a
+ .java file written by an external generator into a brand-new sub-package must
+ appear in the Java Projects view via the file-watcher auto-refresh alone (no
+ manual Refresh), which routes the changed URI through PackageParams.syncPaths.
+
+setup:
+ extension: "redhat.java"
+ vscodeVersion: "stable"
+ workspace: "../maven"
+ timeout: 180
+ settings:
+ java.configuration.checkProjectSettingsExclusions: false
+ workbench.startupEditor: "none"
+ explorer.autoReveal: false
+
+steps:
+ - id: "ls-ready"
+ action: "waitForLanguageServer"
+ timeout: 180
+
+ # Free vertical space so the Java Projects tree is not virtualized.
+ - id: "close-aux-bar"
+ action: "executeVSCodeCommand workbench.action.closeAuxiliaryBar"
+
+ - id: "collapse-outline"
+ action: "collapseSidebarSection OUTLINE"
+
+ - id: "collapse-timeline"
+ action: "collapseSidebarSection TIMELINE"
+
+ - id: "collapse-explorer-folders"
+ action: "collapseSidebarSection maven"
+
+ - id: "focus-java-projects"
+ action: "executeVSCodeCommand javaProjectExplorer.focus"
+
+ - id: "wait-tree-load"
+ action: "wait 3 seconds"
+
+ # The source root must be expanded so a PackageRootNode exists to target.
+ - id: "expand-project"
+ action: "expandTreeItem my-app"
+ verify: "my-app project expanded"
+
+ - id: "expand-source-root"
+ action: "expandTreeItem src/main/java"
+ verify: "source root src/main/java expanded"
+
+ - id: "baseline-existing-pkg"
+ action: "wait 1 seconds"
+ verifyTreeItem:
+ name: "com.mycompany.app"
+ visible: true
+
+ # Negative baseline: the brand-new package must be ABSENT before the file is
+ # written, so check-new-pkg-autorefresh later observes a genuine appearance
+ # driven by the watcher, not a pre-existing node.
+ - id: "baseline-new-pkg-absent"
+ action: "wait 1 seconds"
+ verifyTreeItem:
+ name: "com.mycompany.app.autogen"
+ visible: false
+ timeout: 5
+
+ # Write a file straight to disk into a brand-new sub-package.
+ - id: "gen-file-new-pkg"
+ action: "insertLineInFile src/main/java/com/mycompany/app/autogen/Gen914AutoNewPkg.java 1 package com.mycompany.app.autogen;\n\npublic class Gen914AutoNewPkg {\n}\n"
+
+ - id: "dismiss-overlay"
+ action: "pressKey Escape"
+
+ # Let the file watcher + debounced auto-refresh fire. No manual Refresh.
+ - id: "wait-for-auto-refresh"
+ action: "wait 6 seconds"
+
+ - id: "reexpand-source-root"
+ action: "expandTreeItem src/main/java"
+
+ # The brand-new package appears via auto-refresh alone.
+ - id: "check-new-pkg-autorefresh"
+ action: "wait 1 seconds"
+ verifyTreeItem:
+ name: "com.mycompany.app.autogen"
+ visible: true
+ timeout: 20
diff --git a/test/e2e-plans/java-dep-build-lifecycle.yaml b/test/e2e-plans/java-dep-build-lifecycle.yaml
new file mode 100644
index 00000000..b0f6df66
--- /dev/null
+++ b/test/e2e-plans/java-dep-build-lifecycle.yaml
@@ -0,0 +1,213 @@
+# Test Plan: Java Dependency — Build Lifecycle
+#
+# Covers the project build / rebuild / reload commands contributed by
+# vscode-java-dependency. Each command is invoked through the documented
+# entry point (view title-bar action, overflow menu, project context menu,
+# or editor title-bar action) and verified by waiting for the Java Language
+# Server to return to the Ready state.
+#
+# Commands exercised:
+# - java.project.build.workspace (Build All — title-bar tools icon)
+# - java.project.rebuild.workspace (Rebuild All — overflow menu)
+# - java.project.build.project (Build Project — project context menu)
+# - java.project.rebuild (Rebuild Project — project context menu)
+# - java.project.reloadProjectFromActiveFile (Reload Project — pom.xml editor title)
+# - java.project.update (Reload Project — Maven submenu on project context menu)
+# - java.project.clean.workspace (Clean Workspace — view-title overflow; dialog cancelled to avoid VS Code reload)
+#
+# Verification strategy
+# ─────────────────────
+# Build commands have no visible editor side-effect — they trigger a
+# background compilation whose progress is reflected only in the status bar
+# (and briefly in the Java Language Server progress notifications). For each
+# build / rebuild, we run the command and then call `waitForLanguageServer`,
+# which polls the status bar until it returns to "Java: Ready" and the
+# post-Ready "Building - X%" phase has settled. A non-fatal command is
+# enough for the step to pass — the test asserts that the command does not
+# leave the LS hung or in an error state.
+#
+# Usage:
+# npx autotest run test/e2e-plans/java-dep-build-lifecycle.yaml --vsix
+
+name: "Java Dependency — Build Lifecycle"
+description: |
+ Tests the build / rebuild / reload commands contributed by the Java
+ Project Manager. Each command is verified by waiting for the Java
+ Language Server to return to the Ready state after the command runs.
+
+setup:
+ extension: "redhat.java"
+ vscodeVersion: "stable"
+ workspace: "../maven"
+ timeout: 240
+ settings:
+ java.configuration.checkProjectSettingsExclusions: false
+ workbench.startupEditor: "none"
+
+steps:
+ # ── Setup ──
+ - id: "ls-ready"
+ action: "waitForLanguageServer"
+ timeout: 180
+
+ - id: "close-aux-bar"
+ action: "executeVSCodeCommand workbench.action.closeAuxiliaryBar"
+ verify: "Auxiliary bar (Chat) closed"
+
+ # Collapse the MAVEN workspace-folder pane so JAVA PROJECTS gets the full
+ # vertical space. OUTLINE and TIMELINE are collapsed by default in fresh
+ # sessions, so no explicit step is needed.
+ - id: "collapse-maven-pane"
+ action: "collapseSidebarSection maven"
+
+ - id: "focus-java-projects"
+ action: "executeVSCodeCommand javaProjectExplorer.focus"
+ verify: "Java Projects view is focused"
+
+ - id: "wait-tree-load"
+ action: "wait 3 seconds"
+
+ # ── Test 1: Build All (incremental) — Java Projects view title-bar button ──
+ # The "Build All" toolbar action ($(tools) icon) is contributed under
+ # view/title group navigation@30 in package.json. Clicking it through the
+ # UI exercises the full button-rendering + when-clause + command-dispatch
+ # chain — unlike executeVSCodeCommand, which would only hit the command
+ # bus directly.
+ - id: "trigger-build-all"
+ action: 'clickViewTitleAction "Java Projects" "Build All"'
+
+ - id: "wait-build-all"
+ action: "waitForLanguageServer"
+ timeout: 120
+
+ # ── Test 2: Rebuild All (full compile) — Java Projects overflow menu ──
+ # "Rebuild All" lives in view/title group overflow_20@5, so it is reached
+ # via the "Views and More Actions..." (...) overflow menu. The
+ # clickViewTitleAction helper automatically falls through from the direct
+ # button path to the overflow menu when the action is not present in the
+ # toolbar's navigation group.
+ - id: "trigger-rebuild-all"
+ action: 'clickViewTitleAction "Java Projects" "Rebuild All"'
+
+ - id: "wait-rebuild-all"
+ action: "waitForLanguageServer"
+ timeout: 180
+
+ # ── Test 3: Build Project (per-project, via context menu) ──
+ # The `java.project.build.project` command requires a project URI, so it
+ # is gated behind the project context-menu in package.json (8_execution@5
+ # when viewItem matches /java:project.*\+java.*\+uri/). Invoke it via the
+ # project node context menu — the menu surface that real users hit.
+ - id: "click-project-build"
+ action: "click my-app tree item"
+ waitBefore: 1
+
+ - id: "context-build-project"
+ action: "contextMenu my-app Build Project"
+ # No `verify:` — context-menu click has no immediate visible effect
+ # beyond closing the menu; waitForLanguageServer below is the ground
+ # truth that the build executed and the LS settled.
+
+ - id: "wait-build-project"
+ action: "waitForLanguageServer"
+ timeout: 120
+
+ # ── Test 4: Rebuild Project (per-project, via context menu) ──
+ - id: "click-project-rebuild"
+ action: "click my-app tree item"
+ waitBefore: 1
+
+ - id: "context-rebuild-project"
+ action: "contextMenu my-app Rebuild Project"
+
+ - id: "wait-rebuild-project"
+ action: "waitForLanguageServer"
+ timeout: 180
+
+ # ── Test 5: Reload Project (editor title-bar action on pom.xml) ──
+ # `java.project.reloadProjectFromActiveFile` is contributed in editor/title
+ # group navigation when both `java:reloadProjectActive` and `javaLSReady`
+ # are true. The `java:reloadProjectActive` key is only set after the
+ # project file (pom.xml / build.gradle) has been modified — opening an
+ # unchanged pom.xml is NOT enough to make the $(sync) button appear.
+ #
+ # To exercise the real UI flow:
+ # 1. Open pom.xml.
+ # 2. Type a space at the cursor → file becomes dirty.
+ # 3. Save → JDT.LS detects the build file change and sets
+ # `java:reloadProjectActive`, which renders the $(sync) "Reload
+ # Java Project" button in the editor title bar.
+ # 4. Click the title-bar button → reload kicks off.
+ # 5. waitForLanguageServer confirms the reload completed.
+ # 6. Undo + save restores pom.xml to its original content so the
+ # fixture is left clean for subsequent runs.
+ # ── Test 5: Reload Project From Active File ──
+ # `java.project.reloadProjectFromActiveFile` is contributed to editor/title
+ # group navigation only when `java:reloadProjectActive && javaLSReady` are
+ # both true. The `java:reloadProjectActive` key is set by redhat.java when
+ # JDT.LS detects an out-of-date project descriptor — but that signal is
+ # racy and inconsistent for synthetic changes (trivial whitespace edits
+ # often get absorbed without flipping the key, and a substantive edit
+ # would risk corrupting the fixture pom.xml). For deterministic CI
+ # behaviour this step therefore invokes the command id directly through
+ # the keybinding-bridge path. The fact that the command exists and runs
+ # without breaking the language server is still meaningful coverage,
+ # complementing the UI-driven tests above.
+ - id: "open-pom"
+ action: "open file pom.xml"
+ waitBefore: 3
+
+ - id: "trigger-reload-project"
+ action: "executeVSCodeCommand java.project.reloadProjectFromActiveFile"
+
+ - id: "wait-reload-project"
+ action: "waitForLanguageServer"
+ timeout: 180
+
+ # ── Test 6: Reload Project (Maven submenu on project context menu) ──
+ # `java.project.update` lives in the `javaProject.maven` submenu under the
+ # project context menu's `9_configuration@10` group. Real users right-click
+ # the Maven project node → hover the "Maven" submenu → click "Reload
+ # Project". This is the only UI surface for this command (no command
+ # palette entry, no toolbar button).
+ - id: "close-pom-editors"
+ action: "run command View: Close All Editors"
+
+ - id: "focus-java-projects-reload"
+ action: "executeVSCodeCommand javaProjectExplorer.focus"
+ waitBefore: 1
+
+ - id: "click-project-update"
+ action: "click my-app tree item"
+ waitBefore: 1
+
+ - id: "context-update-maven"
+ action: 'contextMenuSubmenu my-app Maven "Reload Project"'
+
+ - id: "wait-update-project"
+ action: "waitForLanguageServer"
+ timeout: 180
+
+ # ── Test 7: Clean Workspace (overflow menu, dialog cancelled if shown) ──
+ # `java.project.clean.workspace` is contributed to the Java Projects view
+ # title-bar `overflow_20@10` group. When clicked it forwards to JDT.LS's
+ # `java.clean.workspace`. Depending on the redhat.java / JDT.LS version
+ # this may or may not raise a modal warning dialog ("…delete workspace
+ # cache and restart?") before doing the work. We use a *tolerant* dialog
+ # cancel (`tryClickDialogButton`) so the step passes whether or not the
+ # dialog appears — when it does appear we cancel to avoid the destructive
+ # VS Code reload; when it does not we proceed straight to the LS settle
+ # check. The primary coverage signal is the overflow-menu mount + click,
+ # which `trigger-clean-workspace` already exercises with a deterministic
+ # `clickViewTitleAction`.
+ - id: "trigger-clean-workspace"
+ action: 'clickViewTitleAction "Java Projects" "Clean Workspace"'
+
+ - id: "cancel-clean-dialog"
+ action: "tryClickDialogButton Cancel"
+ # No `verify:` — tolerant action: clicks Cancel if dialog appears, else
+ # silently no-ops. `trigger-clean-workspace` is the deterministic signal.
+
+ - id: "wait-clean-settle"
+ action: "waitForLanguageServer"
+ timeout: 60
diff --git a/test/e2e-plans/java-dep-classpath.yaml b/test/e2e-plans/java-dep-classpath.yaml
new file mode 100644
index 00000000..cd3e7d4a
--- /dev/null
+++ b/test/e2e-plans/java-dep-classpath.yaml
@@ -0,0 +1,290 @@
+# Test Plan: Java Dependency — Classpath / Referenced Libraries
+#
+# Covers the referenced-library management commands contributed by
+# vscode-java-dependency. These commands are only active for invisible
+# (unmanaged-folder) projects — Maven / Gradle projects manage their
+# classpath through pom.xml / build.gradle and do NOT expose the
+# Referenced Libraries container's inline actions.
+#
+# Commands exercised:
+# - java.project.refreshLibraries (Refresh — inline title icon on Referenced Libraries)
+# - java.project.addLibraries (Add Jar Libraries… — inline `+` icon)
+# - java.project.removeLibrary (Remove from Project Classpath — invoked
+# by command id in both `include`-removal
+# and `exclude`-addition modes)
+# - java.project.addLibraryFolders (Add Library Folders… — Alt-variant of `+` icon;
+# no plain-click UI affordance, invoked via command path)
+#
+# Verification strategy
+# ─────────────────────
+# `referencedLibraries` is a workspace setting (`java.project.referencedLibraries`)
+# whose include/exclude globs are reflected live in the JAVA PROJECTS tree under
+# the "Referenced Libraries" container. Each command we exercise either inserts
+# a new include glob (addLibraries / addLibraryFolders), removes/excludes one
+# (removeLibrary), or re-reads the setting from disk (refreshLibraries). We
+# therefore assert state by name-matching jar leaves in the tree with the
+# deterministic `verifyTreeItem` block — both presence (`visible: true`, the
+# default) and absence (`visible: false`).
+#
+# Substring matching for jar leaves
+# ─────────────────────────────────
+# Each jar leaf is rendered as ".jar ",
+# so the accessible name carries the full resolved path. We deliberately omit
+# `exact: true` on jar `verifyTreeItem` blocks — the driver falls back to
+# substring matching, which is exactly what we need to locate a leaf by its
+# basename. The project root (`invisible`) keeps `exact: true` because no
+# description is appended to project-level rows.
+#
+# Fixture layout (test/invisible)
+# ───────────────────────────────
+# .vscode/settings.json java.project.referencedLibraries = ["lib/**/*.jar"]
+# lib/simple.jar already attached at startup via the include glob
+# libSource/simple.jar existing companion file (unrelated to this plan)
+# extraJars/extra-a.jar added/removed via the UI in cycles 2 + 3
+# extraJars/extra-b.jar surfaced by cycle 4's folder-add (extra-a stays excluded)
+#
+# Native file/folder pickers are intercepted by `setup.mockOpenDialog` — the
+# first entry is consumed by `addLibraries`, the second by `addLibraryFolders`.
+#
+# Usage:
+# npx autotest run test/e2e-plans/java-dep-classpath.yaml --vsix
+
+name: "Java Dependency — Classpath / Referenced Libraries"
+description: |
+ Tests the four referenced-library commands on an invisible (unmanaged)
+ Java project: refreshLibraries, addLibraries, removeLibrary, and
+ addLibraryFolders.
+
+setup:
+ extension: "redhat.java"
+ vscodeVersion: "stable"
+ workspace: "../invisible"
+ timeout: 240
+ settings:
+ java.configuration.checkProjectSettingsExclusions: false
+ workbench.startupEditor: "none"
+ # Native file/folder pickers are mocked at the Electron `dialog.showOpenDialog`
+ # layer, but VS Code's smoke-test driver suppresses the native dialog and
+ # falls back to its internal quick-pick `simpleFileDialog`. The mock therefore
+ # never fires — instead we drive the simple dialog with `fillQuickInput`,
+ # typing the resolved jar / folder path and pressing Enter. The mockOpenDialog
+ # block below is kept as a behavioural reference (and harmless no-op).
+ mockOpenDialog:
+ - ["~/extraJars/extra-a.jar"]
+ - ["~/extraJars"]
+
+steps:
+ # ── Setup: activate the Java extension, wait for LS, clear sidebar ──
+ # Invisible projects do not auto-activate redhat.java the way Maven /
+ # Gradle workspaces do (those activate via the pom.xml / build.gradle
+ # workspaceContains contributions). Open `src/App.java` first so the
+ # Language Server actually starts — otherwise `waitForLanguageServer`
+ # times out and the Java Projects view never registers.
+ - id: "open-bootstrap-file"
+ action: "open file src/App.java"
+
+ - id: "ls-ready"
+ action: "waitForLanguageServer"
+ # No `verify:` — `waitForLanguageServer` is itself the deterministic
+ # readiness check. The AFTER screenshot may transiently show
+ # "Java: Building - 0%" which a strict LLM mis-reads as a failure.
+ timeout: 180
+
+ - id: "close-aux-bar"
+ action: "executeVSCodeCommand workbench.action.closeAuxiliaryBar"
+ verify: "Auxiliary bar (Chat) closed"
+
+ - id: "collapse-outline"
+ action: "collapseSidebarSection OUTLINE"
+
+ - id: "collapse-timeline"
+ action: "collapseSidebarSection TIMELINE"
+
+ # Single-folder workspaces don't have a collapsible aria-level=1 workspace
+ # root inside `.explorer-folders-view`, so `collapseWorkspaceRoot` is a
+ # no-op here. Instead collapse the whole `invisible` pane in the EXPLORER
+ # view container — otherwise its top-level entries (.vscode/extraJars/
+ # lib/libSource/src) push the JAVA PROJECTS pane down so far that the
+ # virtualised list does not render the jar leaves and `verifyTreeItem`
+ # times out hunting an off-screen node.
+ - id: "collapse-explorer-pane"
+ action: "collapseSidebarSection invisible"
+
+ - id: "focus-java-projects"
+ action: "executeVSCodeCommand javaProjectExplorer.focus"
+ verify: "Java Projects view is focused"
+
+ - id: "wait-tree-load"
+ action: "wait 5 seconds"
+
+ # Invisible-project root takes the worktree folder name (`invisible`).
+ - id: "verify-project-node"
+ action: "wait 1 seconds"
+ # No `verify:` — state-check step; `verifyTreeItem` is authoritative.
+ verifyTreeItem:
+ name: "invisible"
+ exact: true
+ timeout: 15
+
+ - id: "expand-project"
+ action: "expandTreeItem invisible"
+ waitBefore: 2
+
+ - id: "expand-referenced-libraries"
+ action: "expandTreeItem Referenced Libraries"
+ waitBefore: 2
+
+ # Baseline: lib/simple.jar matches the default include glob `lib/**/*.jar`.
+ # No `exact:` — the jar row's accessible name includes a description with the
+ # resolved jar path; substring match on the basename is sufficient and stable.
+ - id: "verify-baseline-simple-jar"
+ action: "wait 1 seconds"
+ verifyTreeItem:
+ name: "simple.jar"
+ timeout: 15
+
+ # ── Cycle 1: java.project.refreshLibraries ──
+ # Click the inline `$(refresh)` icon on the Referenced Libraries container.
+ # The aria-label is the localised command title — here "Refresh". The action
+ # is idempotent: nothing on disk changed, so simple.jar must remain attached.
+ - id: "click-refresh-libraries"
+ action: 'clickTreeItemAction "Referenced Libraries" "Refresh"'
+
+ - id: "wait-after-refresh"
+ action: "wait 3 seconds"
+
+ - id: "verify-refresh-stable"
+ action: "wait 1 seconds"
+ verifyTreeItem:
+ name: "simple.jar"
+ timeout: 15
+
+ # ── Cycle 2: java.project.addLibraries ──
+ # Click the inline `$(add)` icon on the Referenced Libraries container.
+ # aria-label = "Add Jar Libraries to Project Classpath...". Partial match
+ # on "Add Jar Libraries" is enough — the driver does `aria-label.includes()`.
+ # In smoke-test mode VS Code substitutes its quick-pick `simpleFileDialog`
+ # for the native picker, so we type the resolved jar path into the input
+ # bar and press Enter via `fillQuickInput`. The command then appends the
+ # new path to `java.project.referencedLibraries.include`.
+ - id: "click-add-libraries"
+ action: 'clickTreeItemAction "Referenced Libraries" "Add Jar Libraries"'
+
+ - id: "type-add-libraries-path"
+ action: "fillQuickInput ${workspaceFolder}/extraJars/extra-a.jar"
+
+ - id: "wait-after-add"
+ action: "wait 5 seconds"
+
+ - id: "verify-extra-a-added"
+ action: "wait 1 seconds"
+ verifyTreeItem:
+ name: "extra-a.jar"
+ timeout: 20
+
+ # ── Cycle 3: java.project.removeLibrary ──
+ # Invoke the command directly. The inline `$(remove)` icon on the jar leaf
+ # is rendered only on row hover and its `` hit-target
+ # is narrower than the wrapping `