diff --git a/.github/actions/maven-job/action.yml b/.github/actions/maven-job/action.yml
index 69240a861041..01cc05072608 100644
--- a/.github/actions/maven-job/action.yml
+++ b/.github/actions/maven-job/action.yml
@@ -99,43 +99,49 @@ runs:
echo "${DOTCMS_LICENSE_KEY}" > ${DOTCMS_LICENSE_PATH}/license.dat
echo "DOTCMS_LICENSE_FILE=${DOTCMS_LICENSE_PATH}/license.dat" >> "$GITHUB_ENV"
- - id: get-maven-month-key
- name: Get Maven Month Cache Key
- shell: bash
- run: |
- echo "month-key=$(/bin/date -u "+%Y-%m")" >> $GITHUB_OUTPUT
-
- id: restore-cache-maven
name: Restore Maven Repository Cache
if: ${{ inputs.artifacts-from == '' }}
uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-mavencore-${{ steps.get-maven-month-key.outputs.month-key }}
+ key: ${{ runner.os }}-mavencore-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-mavencore-
- id: restore-cache-node
name: Restore Node Binary Cache
if: ${{ inputs.requires-node == 'true' }}
- uses: actions/cache@v4
+ uses: actions/cache/restore@v4
with:
path: installs
key: node-binary-${{ hashFiles('core-web/.nvmrc') }}
+ - name: Get yarn cache directory path
+ id: yarn-info
+ if: ${{ inputs.requires-node == 'true' }}
+ shell: bash
+ run: |
+ echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ echo "version=$(yarn -v)" >> $GITHUB_OUTPUT
+
+
- id: restore-cache-yarn
name: Restore Yarn Cache
if: ${{ inputs.requires-node == 'true' }}
uses: actions/cache/restore@v4
with:
- path: ~/.cache/yarn
- key: yarn-${{ hashFiles('**/yarn.lock') }}
- restore-keys: yarn-
+ path: ${{ steps.yarn-info.outputs.dir }}
+ key: ${{ runner.os }}-yarn-${{ steps.yarn-info.outputs.version }}-${{ hashFiles('**/yarn.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-yarn-${{ steps.yarn-info.outputs.version }}
+ ${{ runner.os }}-yarn-
+
- id: cache-sonar
name: Cache SonarQube Packages
if: ${{ inputs.cache-sonar == 'true' }}
- uses: actions/cache@v4
+ uses: actions/cache/restore@v4
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
@@ -177,7 +183,7 @@ runs:
name: Run Maven Build
shell: ${{ runner.os == 'Windows' && 'pwsh' || 'bash' }}
run: |
- DEFAULT_ARGS="-e -B --no-transfer-progress --show-version -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Pprod"
+ DEFAULT_ARGS="-e -B --no-transfer-progress --show-version -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Dprod=true"
MAVEN_ARGS="${{ inputs.maven-args }}"
if [[ "${{ inputs.generate-docker }}" == "true" ]]; then
DEFAULT_ARGS="$DEFAULT_ARGS -Ddocker.buildArchiveOnly=dotCMS/target"
@@ -250,7 +256,7 @@ runs:
uses: actions/cache/save@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-mavencore-${{ steps.get-maven-month-key.outputs.month-key }}
+ key: ${{ steps.restore-cache-maven.outputs.cache-primary-key }}
- id: save-cache-node
name: Save Node Binary Cache
@@ -258,15 +264,15 @@ runs:
uses: actions/cache/save@v4
with:
path: installs
- key: node-binary-${{ hashFiles('core-web/.nvmrc') }}
+ key: ${{ steps.restore-cache-node.outputs.cache-primary-key }}
- id: save-cache-yarn
name: Save Yarn Cache
if: ${{ inputs.generate-artifacts == 'true' && steps.restore-cache-yarn.outputs.cache-hit != 'true' }}
uses: actions/cache/save@v4
with:
- path: ~/.cache/yarn
- key: yarn-${{ hashFiles('**/yarn.lock') }}
+ path: ${{ steps.yarn-info.outputs.dir }}
+ key: ${{ steps.restore-cache-yarn.outputs.cache-primary-key }}
- id: save-cache-sonar
name: Save SonarQube Cache
@@ -274,7 +280,7 @@ runs:
uses: actions/cache/save@v4
with:
path: ~/.sonar/cache
- key: ${{ runner.os }}-sonar
+ key: ${{ steps.cache-sonar.outputs.cache-primary-key }}
# ---------------------------- Generate Reports Artifacts ----------------------------
- id: generate-build-reports-artifact
diff --git a/.github/workflows/reusable-ci-build.yml b/.github/workflows/reusable-ci-build.yml
index a43492cd1a63..d7319eea6117 100644
--- a/.github/workflows/reusable-ci-build.yml
+++ b/.github/workflows/reusable-ci-build.yml
@@ -77,7 +77,7 @@ jobs:
- uses: ./.github/actions/maven-job
with:
stage-name: "Initial Artifact Build"
- maven-args: "clean install ${{ env.VALIDATE_PROFILE }} -DskipTests=true -Dgithub.event.name=${{ github.event_name }}"
+ maven-args: "clean install ${{ env.VALIDATE_PROFILE }} -Dprod=true -DskipTests=true -Dgithub.event.name=${{ github.event_name }}"
generate-artifacts: true
require-master: ${{ inputs.version == '1.0.0-SNAPSHOT' }}
github-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/reusable-ci-test.yml b/.github/workflows/reusable-ci-test.yml
index 6afc84dbe819..48be32bf0d45 100644
--- a/.github/workflows/reusable-ci-test.yml
+++ b/.github/workflows/reusable-ci-test.yml
@@ -159,7 +159,7 @@ jobs:
maven-args: "-Pcoverage verify -pl :dotcms-postman -Dpostman.test.skip=false -Dpostman.collections=${{ matrix.collection_group }}"
generates-test-results: true
dotcms-license: ${{ secrets.DOTCMS_LICENSE }}
- requires-node: false
+ requires-node: true
needs-docker-image: true
github-token: ${{ secrets.GITHUB_TOKEN }}
artifacts-from: ${{ env.ARTIFACT_RUN_ID }}
\ No newline at end of file
diff --git a/core-web/.husky/pre-commit b/core-web/.husky/pre-commit
index 1ae3e86b6e56..5c5aeb6fb40c 100755
--- a/core-web/.husky/pre-commit
+++ b/core-web/.husky/pre-commit
@@ -1,29 +1,80 @@
#!/usr/bin/env bash
+
+# Color definitions
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+BLUE='\033[0;34m'
+NC='\033[0m' # No Color
+
# This script is used as a pre-commit hook for a Git repository.
# It performs operations such as formatting and linting on staged files.
-. "$(dirname "$0")/_/husky.sh" # Source the husky.sh script
+# Source husky script
+. "$(dirname "$0")/_/husky.sh" || {
+ echo "Failed to source husky.sh"
+ exit 1
+}
+
+check_sdkman() {
+ SDKMAN_INIT="$HOME/.sdkman/bin/sdkman-init.sh"
+
+ # Check if sdkman-init.sh exists and is readable
+ if [[ -s "$SDKMAN_INIT" ]]; then
+ source "$SDKMAN_INIT" # Source sdkman to make sdk command available
+ echo "${GREEN}SDKMAN! sourced from $SDKMAN_INIT${NC}"
+
+ # Optionally check if sdk command is available
+ if command -v sdk >/dev/null 2>&1; then
+ echo "${GREEN}SDKMAN! is installed and functional.${NC}"
+ else
+ echo "${RED}SDKMAN! command is not available. Please check the installation.${NC}"
+ exit 1
+ fi
+ else
+ echo "${RED}SDKMAN! not found at $SDKMAN_INIT. Please install SDKMAN! first.${NC}"
+ echo "${RED}You can install this and other required utilities from${NC} https://github.com/dotCMS/dotcms-utilities"
+ exit 1
+ fi
+}
-error_occurred=false
+has_errors=false
# Perform fix operations on the staged files
-perform_fixes() {
+perform_frontend_fixes() {
local files="$1"
local add_to_index="$2"
local file
- YARN_EXEC="${root_dir}/installs/node/yarn/dist/bin/yarn"
- NODE_EXEC="${root_dir}/installs/node/node"
+ local YARN_EXEC="${root_dir}/installs/node/yarn/dist/bin/yarn"
+ local NODE_EXEC="${root_dir}/installs/node/node"
+
+ # Check if Yarn and Node executables are present
+ if [[ ! -x "$YARN_EXEC" || ! -x "$NODE_EXEC" ]]; then
+ echo "Yarn or Node executables are missing."
+ exit 1
+ fi
echo "Yarn version: $($YARN_EXEC --version 2>/dev/null)"
echo "Node version: $($NODE_EXEC --version)"
+ $YARN_EXEC config set registry https://dotcms-npm.b-cdn.net
+ # Check if yarn.lock is present
+ if ! $YARN_EXEC install; then
+ echo "Failed to install dependencies with yarn install"
+ echo "Please run 'yarn install' to update the lockfile and make sure you commit this with any package.json changes."
+ has_errors=true
+ return 1
+ else
+ echo "Completed yarn install adding yarn.lock if it was modified"
+ git add "${root_dir}/core-web/yarn.lock"
+ fi
if ! $YARN_EXEC nx affected -t lint --exclude='tag:skip:lint' --fix=true; then
- error_occurred=true
+ has_errors=true
fi
if ! $YARN_EXEC nx format:write; then
- error_occurred=true
+ has_errors=true
fi
if [ "$add_to_index" = "true" ]; then
@@ -35,7 +86,7 @@ perform_fixes() {
for file in $files; do
if echo "$modified_files" | grep -Fxq "$file"; then
if ! git add -- "${root_dir}/${file}"; then
- error_occurred=true
+ has_errors=true
fi
else
unmatched_files+=("$file")
@@ -58,22 +109,46 @@ perform_fixes() {
fi
}
-# Function to run yarn install with --frozen-lockfile and handle failure
-run_yarn_install_frozen_lockfile() {
- if ! yarn install --frozen-lockfile; then
- echo "Failed to install dependencies with --frozen-lockfile."
- echo "Please run 'yarn install' to update the lockfile and make sure you commit this with any package.json changes."
- exit 1
+restore_untracked_files() {
+ if [ "$backup_untracked" = true ] && [ -n "${untracked_files}" ] && [ "$(ls -A "${temp_dir}")" ]; then
+ echo "Restoring untracked files..."
+ # Copy each file back from the temporary directory while maintaining the directory structure
+ find "${temp_dir}" -type f -exec sh -c '
+ for file; do
+ temp_dir='"${temp_dir}"'
+ root_dir='"${root_dir}"'
+ rel_path="${file#${temp_dir}/}" # Extract the relative path by removing the temp directory prefix
+ dest_dir="$(dirname "${rel_path}")" # Determine the destination directory based on the relative path
+ full_dest_path="${root_dir}/${rel_path}" # Construct the full destination path
+ mkdir -p "${root_dir}/${dest_dir}" # Ensure the destination directory exists
+ cp "${file}" "${full_dest_path}" # Copy the file to the destination directory
+ done
+ ' sh {} +
+
+ fi
+
+ # Clean up temporary directory
+ if [ "$backup_untracked" = true ] && [ -n "${untracked_files}" ]; then
+ rm -rf "${temp_dir}"
fi
}
original_pwd=${PWD}
root_dir="$(git rev-parse --show-toplevel)"
+
+
+# Check for sdkman before running other initializations
+
# This will ensure that the correct version of node and yarn is installed
# from core-web/pom.xml and .nvmrc files are updated
-cd "${root_dir}" || exit
-echo "Initializing maven, node and yarn versions"
+cd "${root_dir}" || exit 1
+
+check_sdkman
+
+echo "Setting up Java"
+sdk env install
+echo "Initializing Maven, Node, and Yarn versions"
if ! ./mvnw validate -pl :dotcms-core --am -q; then
echo "Failed to run './mvnw validate -pl :dotcms-core --am'"
echo "Please run the following command to see the detailed output:"
@@ -85,85 +160,76 @@ fi
core_web_dir="${root_dir}/core-web"
-cd "${core_web_dir}" || exit
-
-yarn config set registry https://dotcms-npm.b-cdn.net
-run_yarn_install_frozen_lockfile
+cd "${core_web_dir}" || exit 1
staged_files=$(git diff --cached --name-only)
modified_files=$(git diff --name-only)
untracked_files=$(printf "%s\n%s" "$staged_files" "$modified_files" | sort | uniq -d)
+if [ -n "${staged_files}" ]; then
+ # Check if there are any staged files in the core-web directory
+ core_web_files_staged=$(echo "$staged_files" | grep -E '^core-web/' || true )
+
+ # Determine if untracked files should be backed up
+ backup_untracked=true # Default to false if not set
+fi
+echo ${core_web_files_staged}
-# Only create a temporary directory if there are untracked files
-if [ -n "${untracked_files}" ]; then
+# Only create a temporary directory if there are untracked files and backup_untracked is true
+if [ "$backup_untracked" = true ] && [ -n "${untracked_files}" ]; then
temp_dir=$(mktemp -d)
if [ ! -d "${temp_dir}" ]; then
echo "Failed to create temporary directory."
exit 1
fi
-fi
+ echo "Created temporary directory ${temp_dir}"
-current_subdir=$(basename "$(pwd)") # Get the current subdirectory
-# Convert paths if necessary (adjust this logic based on your exact directory structure)
-for file in $untracked_files; do
- relative_path="${file#${current_subdir}/}" # Construct the path relative to the current directory
+ for file in $untracked_files; do
+ if echo "${staged_files}" | grep -q "^${file}$"; then
+ mkdir -p "${temp_dir}/$(dirname "${file}")" # Ensure the directory structure exists in the temp directory
+ cp "${root_dir}/${file}" "${temp_dir}/${file}" # Copy the file to the temp directory, preserving the directory structure
+ echo "Backing up ${file} to ${temp_dir}/${file}"
+ # Restore the original file state in the repo, removing unstaged changes
+ git restore "${root_dir}/${file}" # Using relative path relative to current directory
+ fi
+ done
- if echo "${staged_files}" | grep -q "^${file}$"; then
- mkdir -p "${temp_dir}/$(dirname "${file}")" # Ensure the directory structure exists in the temp directory
- cp "${root_dir}/${file}" "${temp_dir}/${file}" # Copy the file to the temp directory, preserving the directory structure
- echo "Backing up ${file} to ${temp_dir}/${file}"
- # Restore the original file state in the repo, removing unstaged changes
- git checkout -- "${relative_path}" # Using relative path relative to current directory
- fi
-done
+ # Set trap to ensure restore_untracked_files is called on exit
+ trap restore_untracked_files EXIT
-echo "Backed up workspace to ${temp_dir}"
+ for file in $untracked_files; do
+ if echo "${staged_files}" | grep -q "^${file}$"; then
+ git restore "${root_dir}/${file}" # Using relative path relative to current directory
+ fi
+ done
-# Perform operations on staged files and capture the error count
-if [ -n "${staged_files}" ]; then
- perform_fixes "${staged_files}" true
- errors=$? # Capture the return value from perform_fixes
+ echo "Backed up workspace to ${temp_dir}"
fi
-
-# Check if the temporary directory is not empty
-if [ -n "${untracked_files}" ] && [ "$(ls -A "${temp_dir}")" ]; then
- echo "Restoring untracked files..."
- # Copy each file back from the temporary directory while maintaining the directory structure
- find "${temp_dir}" -type f -exec sh -c '
- for file; do
- temp_dir='"${temp_dir}"'
- root_dir='"${root_dir}"'
- rel_path="${file#${temp_dir}/}" # Extract the relative path by removing the temp directory prefix
- dest_dir="$(dirname "${rel_path}")" # Determine the destination directory based on the relative path
- full_dest_path="${root_dir}/${rel_path}" # Construct the full destination path
- mkdir -p "${root_dir}/${dest_dir}" # Ensure the destination directory exists
- cp "${file}" "${full_dest_path}" # Copy the file to the destination directory
- done
- ' sh {} +
-
- # After restoring, perform actions like formatting on the originally staged files
- if [ -n "${staged_files}" ]; then
- perform_fixes "${untracked_files}" false
- fi
+# Run fixes on staged files
+if [ -n "$core_web_files_staged" ]; then
+ perform_frontend_fixes "${core_web_files_staged}" true
+ errors=$? # Capture the return value from perform_frontend_fixes
fi
+# Restore untracked files if necessary
+restore_untracked_files
-# After restoring files and before exiting, check if there were any errors
-if [ -n "${untracked_files}" ]; then
- rm -r "${temp_dir}"
+## Running fixes on untracked files
+core_web_files_untracked=$(echo "untracked_files" | grep -E '^core-web/' || true )
+if [ -n "$core_web_files_untracked" ]; then
+ perform_frontend_fixes "${core_web_files_untracked}" false
fi
# Restore original working directory
-cd "${original_pwd}" || exit # Exit if the directory does not exist
+cd "${original_pwd}" || exit 1 # Exit if the directory does not exist
# Final check before exiting
-if [ "$error_occurred" = true ]; then
- echo "Checks failed. force commit with --no-verify option if bypass required"
+if [ "$has_errors" = true ]; then
+ echo "Checks failed. Force commit with --no-verify option if bypass required."
exit 1 # Change the exit code to reflect that an error occurred
else
- echo "Commit checks completed OK"
+ echo "Commit checks completed successfully."
exit 0 # No errors, exit normally
fi
diff --git a/core-web/.nxignore b/core-web/.nxignore
index 462b1ba02576..8812a44d7b5f 100644
--- a/core-web/.nxignore
+++ b/core-web/.nxignore
@@ -1,3 +1,4 @@
.nx
dist
node_modules
+target
diff --git a/core-web/pom.xml b/core-web/pom.xml
index 6099bd0d9663..126f83cee6c1 100644
--- a/core-web/pom.xml
+++ b/core-web/pom.xml
@@ -19,7 +19,7 @@
9
8084
- install --frozen-lockfile
+ --frozen-lockfile
false
apps,libs
**/node_modules/**,**/*.spec.ts
@@ -80,6 +80,7 @@
+
install
@@ -96,6 +97,8 @@
+
+
lint-test
@@ -132,7 +135,7 @@
compile
- run nx build dotcms-ui ${nx.build.options}
+ run nx --verbose build dotcms-ui ${nx.build.options}
@@ -277,7 +280,7 @@
--prod
- --frozen-lockfile
+ --frozen-lockfile --prefer-offline
diff --git a/core-web/yarn.lock b/core-web/yarn.lock
index fb9eb00b9e27..7e9ffc2c1fdd 100644
--- a/core-web/yarn.lock
+++ b/core-web/yarn.lock
@@ -11057,7 +11057,7 @@ debug@^3.1.0, debug@^3.2.7:
dependencies:
ms "^2.1.1"
-debuglog@*, debuglog@^1.0.1:
+debuglog@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==
@@ -14187,7 +14187,7 @@ import-local@^3.0.2:
pkg-dir "^4.2.0"
resolve-cwd "^3.0.0"
-imurmurhash@*, imurmurhash@^0.1.4:
+imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
@@ -16287,11 +16287,6 @@ lodash-es@^4.17.21:
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
-lodash._baseindexof@*:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c"
- integrity sha512-bSYo8Pc/f0qAkr8fPJydpJjtrHiSynYfYBjtANIgXv5xEf1WlTC63dIDlgu0s9dmTvzRu1+JJTxcIAHe+sH0FQ==
-
lodash._baseuniq@~4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
@@ -16300,33 +16295,11 @@ lodash._baseuniq@~4.6.0:
lodash._createset "~4.0.0"
lodash._root "~3.0.0"
-lodash._bindcallback@*:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
- integrity sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ==
-
-lodash._cacheindexof@*:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92"
- integrity sha512-S8dUjWr7SUT/X6TBIQ/OYoCHo1Stu1ZRy6uMUSKqzFnZp5G5RyQizSm6kvxD2Ewyy6AVfMg4AToeZzKfF99T5w==
-
-lodash._createcache@*:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093"
- integrity sha512-ev5SP+iFpZOugyab/DEUQxUeZP5qyciVTlgQ1f4Vlw7VUcCD8fVnyIqVUEIaoFH9zjAqdgi69KiofzvVmda/ZQ==
- dependencies:
- lodash._getnative "^3.0.0"
-
lodash._createset@~4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
integrity sha512-GTkC6YMprrJZCYU3zcqZj+jkXkrXzq3IPBcF/fIPpNEAB4hZEtXU8zp/RwKOvZl43NUmwDbyRk3+ZTbeRdEBXA==
-lodash._getnative@*, lodash._getnative@^3.0.0:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
- integrity sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==
-
lodash._root@~3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
@@ -16402,11 +16375,6 @@ lodash.once@^4.0.0, lodash.once@^4.1.1:
resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==
-lodash.restparam@*:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
- integrity sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==
-
lodash.sortby@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
@@ -22158,7 +22126,7 @@ string-length@^4.0.1:
char-regex "^1.0.2"
strip-ansi "^6.0.0"
-"string-width-cjs@npm:string-width@^4.2.0":
+"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -22176,15 +22144,6 @@ string-width@^1.0.1:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
-"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.1"
-
string-width@^2.0.0, string-width@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
@@ -22281,7 +22240,7 @@ stringify-package@^1.0.0, stringify-package@^1.0.1:
resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85"
integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -22309,13 +22268,6 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
dependencies:
ansi-regex "^4.1.0"
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
- dependencies:
- ansi-regex "^5.0.1"
-
strip-ansi@^7.0.1:
version "7.1.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
@@ -24315,7 +24267,7 @@ worker-farm@^1.6.0, worker-farm@^1.7.0:
dependencies:
errno "~0.1.7"
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -24350,15 +24302,6 @@ wrap-ansi@^6.2.0:
string-width "^4.1.0"
strip-ansi "^6.0.0"
-wrap-ansi@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
wrap-ansi@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"