diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 9a2500a0..7ae530d3 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -6,6 +6,7 @@
-- [x] Read the contribution [guide](../CONTRIBUTING.md) and accept the [code](../CODE_OF_CONDUCT.md) of conduct
+- [x] Read the contribution [guide](https://github.com/game-ci/unity-builder/blob/main/CONTRIBUTING.md) and accept the
+ [code](https://github.com/game-ci/unity-builder/blob/main/CODE_OF_CONDUCT.md) of conduct
- [ ] Readme (updated or not needed)
- [ ] Tests (added, updated or not needed)
diff --git a/.github/workflows/build-tests.yml b/.github/workflows/build-tests.yml
index 92c4d926..52b894d7 100644
--- a/.github/workflows/build-tests.yml
+++ b/.github/workflows/build-tests.yml
@@ -1,6 +1,7 @@
name: Builds
on:
+ workflow_dispatch:
push: { branches: [main] }
pull_request:
paths-ignore:
@@ -45,12 +46,24 @@ jobs:
projectPath:
- test-project
unityVersion:
- - 2019.2.11f1
+ - 2018.3.14f1
+ - 2018.4.36f1
+ - 2019.1.14f1
+ - 2019.2.21f1
- 2019.3.15f1
+ - 2019.4.40f1
+ - 2020.1.17f1
+ - 2020.2.7f1
+ - 2020.3.44f1
+ - 2021.1.28f1
+ - 2021.2.19f1
+ - 2021.3.18f1
+ - 2022.1.24f1
+ - 2022.2.6f1
targetPlatform:
- - StandaloneOSX # Build a macOS standalone (Intel 64-bit).
- - StandaloneWindows64 # Build a Windows 64-bit standalone.
- - StandaloneLinux64 # Build a Linux 64-bit standalone.
+ - StandaloneOSX # Build a macOS standalone (Intel 64-bit) with mono backend.
+ - StandaloneWindows64 # Build a Windows 64-bit standalone with mono backend.
+ - StandaloneLinux64 # Build a Linux 64-bit standalone with mono backend.
- iOS # Build an iOS player.
- Android # Build an Android .apk.
- WebGL # WebGL.
diff --git a/.github/workflows/mac-build-tests.yml b/.github/workflows/mac-build-tests.yml
index ec5a50e3..05d5c43c 100644
--- a/.github/workflows/mac-build-tests.yml
+++ b/.github/workflows/mac-build-tests.yml
@@ -1,12 +1,36 @@
name: Mac Builds
on:
+ workflow_dispatch:
push:
branches:
- main
env:
- UNITY_LICENSE: "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \nm0Db8UK+ktnOLJBtHybkfetpcKo=o/pUbSQAukz7+ZYAWhnA0AJbIlyyCPL7bKVEM2lVqbrXt7cyey+umkCXamuOgsWPVUKBMkXtMH8L\n5etLmD0getWIhTGhzOnDCk+gtIPfL4jMo9tkEuOCROQAXCci23VFscKcrkB+3X6h4wEOtA2APhOY\nB+wvC794o8/82ffjP79aVAi57rp3Wmzx+9pe9yMwoJuljAy2sc2tIMgdQGWVmOGBpQm3JqsidyzI\nJWG2kjnc7pDXK9pwYzXoKiqUqqrut90d+kQqRyv7MSZXR50HFqD/LI69h68b7P8Bjo3bPXOhNXGR\n9YCoemH6EkfCJxp2gIjzjWW+l2Hj2EsFQi8YXw=="
+ UNITY_LICENSE:
+ "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \nm0Db8UK+ktnOLJBtHybkfetpcKo=o/pUbSQAukz7+ZYAWhnA0AJbIlyyCPL7bKVEM2lVqbrXt7cyey+umkCXamuOgsWPVUKBMkXtMH8L\n5etLmD0getWIhTGhzOnDCk+gtIPfL4jMo9tkEuOCROQAXCci23VFscKcrkB+3X6h4wEOtA2APhOY\nB+wvC794o8/82ffjP79aVAi57rp3Wmzx+9pe9yMwoJuljAy2sc2tIMgdQGWVmOGBpQm3JqsidyzI\nJWG2kjnc7pDXK9pwYzXoKiqUqqrut90d+kQqRyv7MSZXR50HFqD/LI69h68b7P8Bjo3bPXOhNXGR\n9YCoemH6EkfCJxp2gIjzjWW+l2Hj2EsFQi8YXw=="
jobs:
buildForAllPlatformsWindows:
@@ -18,7 +42,15 @@ jobs:
projectPath:
- test-project
unityVersion:
- - 2020.3.24f1
+ - 2019.4.40f1 # Minimum version for IL2CPP
+ - 2020.1.17f1
+ - 2020.2.7f1
+ - 2020.3.44f1
+ - 2021.1.28f1
+ - 2021.2.19f1
+ - 2021.3.18f1
+ - 2022.1.24f1
+ - 2022.2.6f1
targetPlatform:
- StandaloneOSX # Build a MacOS executable
diff --git a/.github/workflows/windows-build-tests.yml b/.github/workflows/windows-build-tests.yml
index f01c4946..6a83ad8d 100644
--- a/.github/workflows/windows-build-tests.yml
+++ b/.github/workflows/windows-build-tests.yml
@@ -1,12 +1,36 @@
name: Windows Builds
on:
+ workflow_dispatch:
push:
branches:
- main
env:
- UNITY_LICENSE: "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \nm0Db8UK+ktnOLJBtHybkfetpcKo=o/pUbSQAukz7+ZYAWhnA0AJbIlyyCPL7bKVEM2lVqbrXt7cyey+umkCXamuOgsWPVUKBMkXtMH8L\n5etLmD0getWIhTGhzOnDCk+gtIPfL4jMo9tkEuOCROQAXCci23VFscKcrkB+3X6h4wEOtA2APhOY\nB+wvC794o8/82ffjP79aVAi57rp3Wmzx+9pe9yMwoJuljAy2sc2tIMgdQGWVmOGBpQm3JqsidyzI\nJWG2kjnc7pDXK9pwYzXoKiqUqqrut90d+kQqRyv7MSZXR50HFqD/LI69h68b7P8Bjo3bPXOhNXGR\n9YCoemH6EkfCJxp2gIjzjWW+l2Hj2EsFQi8YXw=="
+ UNITY_LICENSE:
+ "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \nm0Db8UK+ktnOLJBtHybkfetpcKo=o/pUbSQAukz7+ZYAWhnA0AJbIlyyCPL7bKVEM2lVqbrXt7cyey+umkCXamuOgsWPVUKBMkXtMH8L\n5etLmD0getWIhTGhzOnDCk+gtIPfL4jMo9tkEuOCROQAXCci23VFscKcrkB+3X6h4wEOtA2APhOY\nB+wvC794o8/82ffjP79aVAi57rp3Wmzx+9pe9yMwoJuljAy2sc2tIMgdQGWVmOGBpQm3JqsidyzI\nJWG2kjnc7pDXK9pwYzXoKiqUqqrut90d+kQqRyv7MSZXR50HFqD/LI69h68b7P8Bjo3bPXOhNXGR\n9YCoemH6EkfCJxp2gIjzjWW+l2Hj2EsFQi8YXw=="
jobs:
buildForAllPlatformsWindows:
@@ -18,7 +42,14 @@ jobs:
projectPath:
- test-project
unityVersion:
- - 2020.3.24f1
+ - 2019.3.15f1 # Minimum version for IL2CPP
+ - 2019.4.40f1
+ - 2020.1.17f1
+ - 2020.2.7f1
+ - 2020.3.44f1
+ - 2021.3.18f1 # 2021.1 and 2021.2 seem to have IL2CPP issues
+ - 2022.1.24f1
+ - 2022.2.6f1
targetPlatform:
- StandaloneWindows64 # Build a Windows 64-bit standalone.
- StandaloneWindows # Build a Windows 32-bit standalone.
@@ -54,7 +85,56 @@ jobs:
###########################
# Build #
###########################
- - uses: ./
+ - name: Build
+ uses: ./
+ id: build-1
+ continue-on-error: true
+ timeout-minutes: 60
+ env:
+ UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
+ UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
+ UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }}
+ with:
+ projectPath: ${{ matrix.projectPath }}
+ unityVersion: ${{ matrix.unityVersion }}
+ targetPlatform: ${{ matrix.targetPlatform }}
+ customParameters: -profile SomeProfile -someBoolean -someValue exampleValue
+ allowDirtyBuild: true
+ # We use dirty build because we are replacing the default project settings file above
+
+ - name: Sleep for Retry
+ if: ${{ steps.build-1.outcome == 'failure' }}
+ run: |
+ Start-Sleep -s 120
+
+ - name: Build Retry 1
+ uses: ./
+ id: build-2
+ continue-on-error: true
+ timeout-minutes: 60
+ if: steps.build-1.outcome == 'failure'
+ env:
+ UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
+ UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
+ UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }}
+ with:
+ projectPath: ${{ matrix.projectPath }}
+ unityVersion: ${{ matrix.unityVersion }}
+ targetPlatform: ${{ matrix.targetPlatform }}
+ customParameters: -profile SomeProfile -someBoolean -someValue exampleValue
+ allowDirtyBuild: true
+ # We use dirty build because we are replacing the default project settings file above
+
+ - name: Sleep for Retry
+ if: ${{ steps.build-1.outcome == 'failure' && steps.build-2.outcome == 'failure' }}
+ run: |
+ Start-Sleep -s 240
+
+ - name: Build Retry 2
+ uses: ./
+ id: build-3
+ timeout-minutes: 60
+ if: ${{ steps.build-1.outcome == 'failure' && steps.build-2.outcome == 'failure' }}
env:
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 00000000..4fd02195
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+engine-strict=true
\ No newline at end of file
diff --git a/action.yml b/action.yml
index f7e111d7..f5539f52 100644
--- a/action.yml
+++ b/action.yml
@@ -22,7 +22,7 @@ inputs:
buildName:
required: false
default: ''
- description: 'Name of the build.'
+ description: 'Name of the build. Should not include a file extension.'
buildsPath:
required: false
default: ''
@@ -50,7 +50,12 @@ inputs:
androidAppBundle:
required: false
default: 'false'
- description: 'Whether to build .aab instead of .apk'
+ description: '[Deprecated] Use androidExportType instead. Whether to build .aab instead of .apk'
+ androidExportType:
+ required: false
+ description:
+ 'The android export type. Should be androidPackage for apk, androidAppBundle for aab, or androidStudioProject for
+ an android studio project.'
androidKeystoreName:
required: false
default: ''
@@ -75,9 +80,13 @@ inputs:
required: false
default: ''
description: 'The android target API level.'
+ androidSymbolType:
+ required: false
+ default: 'none'
+ description: 'The android symbol type to export. Should be "none", "public" or "debugging".'
sshAgent:
required: false
- default: ''
+ default: 'public'
description: 'SSH Agent path to forward to the container'
gitPrivateToken:
required: false
@@ -187,6 +196,17 @@ inputs:
description:
'[CloudRunner] Whether or not to watch the build to the end. Can be used for especially long running jobs e.g
imports or self-hosted ephemeral runners.'
+ cacheUnityInstallationOnMac:
+ default: 'false'
+ required: false
+ description: 'Whether to cache the Unity hub and editor installation on MacOS'
+ unityHubVersionOnMac:
+ default: ''
+ required: false
+ description:
+ 'The version of Unity Hub to install on MacOS (e.g. 3.4.0). Defaults to latest available on brew if empty string
+ or nothing is specified.'
+
outputs:
volume:
description: 'The Persistent Volume (PV) where the build artifacts have been stored by Kubernetes'
diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/AndroidSettings.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/AndroidSettings.cs
index cb3f4480..8008f79c 100644
--- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/AndroidSettings.cs
+++ b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/AndroidSettings.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using UnityEditor;
+using System.Reflection;
namespace UnityBuilderAction.Input
{
@@ -8,7 +9,6 @@ namespace UnityBuilderAction.Input
{
public static void Apply(Dictionary options)
{
- EditorUserBuildSettings.buildAppBundle = options["customBuildPath"].EndsWith(".aab");
#if UNITY_2019_1_OR_NEWER
if (options.TryGetValue("androidKeystoreName", out string keystoreName) && !string.IsNullOrEmpty(keystoreName))
{
@@ -16,13 +16,21 @@ namespace UnityBuilderAction.Input
PlayerSettings.Android.keystoreName = keystoreName;
}
#endif
- if (options.TryGetValue("androidKeystorePass", out string keystorePass) && !string.IsNullOrEmpty(keystorePass))
+ // Can't use out variable declaration as Unity 2018 doesn't support it
+ string keystorePass;
+ if (options.TryGetValue("androidKeystorePass", out keystorePass) && !string.IsNullOrEmpty(keystorePass))
PlayerSettings.Android.keystorePass = keystorePass;
- if (options.TryGetValue("androidKeyaliasName", out string keyaliasName) && !string.IsNullOrEmpty(keyaliasName))
+
+ string keyaliasName;
+ if (options.TryGetValue("androidKeyaliasName", out keyaliasName) && !string.IsNullOrEmpty(keyaliasName))
PlayerSettings.Android.keyaliasName = keyaliasName;
- if (options.TryGetValue("androidKeyaliasPass", out string keyaliasPass) && !string.IsNullOrEmpty(keyaliasPass))
+
+ string keyaliasPass;
+ if (options.TryGetValue("androidKeyaliasPass", out keyaliasPass) && !string.IsNullOrEmpty(keyaliasPass))
PlayerSettings.Android.keyaliasPass = keyaliasPass;
- if (options.TryGetValue("androidTargetSdkVersion", out string androidTargetSdkVersion) && !string.IsNullOrEmpty(androidTargetSdkVersion))
+
+ string androidTargetSdkVersion;
+ if (options.TryGetValue("androidTargetSdkVersion", out androidTargetSdkVersion) && !string.IsNullOrEmpty(androidTargetSdkVersion))
{
var targetSdkVersion = AndroidSdkVersions.AndroidApiLevelAuto;
try
@@ -36,6 +44,62 @@ namespace UnityBuilderAction.Input
}
PlayerSettings.Android.targetSdkVersion = targetSdkVersion;
}
+
+ string androidExportType;
+ if (options.TryGetValue("androidExportType", out androidExportType) && !string.IsNullOrEmpty(androidExportType))
+ {
+ // Only exists in 2018.3 and above
+ FieldInfo buildAppBundle = typeof(EditorUserBuildSettings)
+ .GetField("buildAppBundle", System.Reflection.BindingFlags.Public | BindingFlags.Instance);
+ switch (androidExportType)
+ {
+ case "androidStudioProject":
+ EditorUserBuildSettings.exportAsGoogleAndroidProject = true;
+ if (buildAppBundle != null)
+ buildAppBundle.SetValue(null, false);
+ break;
+ case "androidAppBundle":
+ EditorUserBuildSettings.exportAsGoogleAndroidProject = false;
+ if (buildAppBundle != null)
+ buildAppBundle.SetValue(null, true);
+ break;
+ case "androidPackage":
+ EditorUserBuildSettings.exportAsGoogleAndroidProject = false;
+ if (buildAppBundle != null)
+ buildAppBundle.SetValue(null, false);
+ break;
+ }
+ }
+
+ string symbolType;
+ if (options.TryGetValue("androidSymbolType", out symbolType) && !string.IsNullOrEmpty(symbolType))
+ {
+#if UNITY_2021_1_OR_NEWER
+ switch (symbolType)
+ {
+ case "public":
+ EditorUserBuildSettings.androidCreateSymbols = AndroidCreateSymbols.Public;
+ break;
+ case "debugging":
+ EditorUserBuildSettings.androidCreateSymbols = AndroidCreateSymbols.Debugging;
+ break;
+ case "none":
+ EditorUserBuildSettings.androidCreateSymbols = AndroidCreateSymbols.Disabled;
+ break;
+ }
+#elif UNITY_2019_2_OR_NEWER
+ switch (symbolType)
+ {
+ case "public":
+ case "debugging":
+ EditorUserBuildSettings.androidCreateSymbolsZip = true;
+ break;
+ case "none":
+ EditorUserBuildSettings.androidCreateSymbolsZip = false;
+ break;
+ }
+#endif
+ }
}
}
}
diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs
index 58ebe6b5..c53b7d37 100644
--- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs
+++ b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs
@@ -12,14 +12,17 @@ namespace UnityBuilderAction.Input
public static Dictionary GetValidatedOptions()
{
- ParseCommandLineArguments(out var validatedOptions);
+ Dictionary validatedOptions;
+ ParseCommandLineArguments(out validatedOptions);
- if (!validatedOptions.TryGetValue("projectPath", out var projectPath)) {
+ string projectPath;
+ if (!validatedOptions.TryGetValue("projectPath", out projectPath)) {
Console.WriteLine("Missing argument -projectPath");
EditorApplication.Exit(110);
}
- if (!validatedOptions.TryGetValue("buildTarget", out var buildTarget)) {
+ string buildTarget;
+ if (!validatedOptions.TryGetValue("buildTarget", out buildTarget)) {
Console.WriteLine("Missing argument -buildTarget");
EditorApplication.Exit(120);
}
@@ -28,13 +31,15 @@ namespace UnityBuilderAction.Input
EditorApplication.Exit(121);
}
- if (!validatedOptions.TryGetValue("customBuildPath", out var customBuildPath)) {
+ string customBuildPath;
+ if (!validatedOptions.TryGetValue("customBuildPath", out customBuildPath)) {
Console.WriteLine("Missing argument -customBuildPath");
EditorApplication.Exit(130);
}
const string defaultCustomBuildName = "TestBuild";
- if (!validatedOptions.TryGetValue("customBuildName", out var customBuildName)) {
+ string customBuildName;
+ if (!validatedOptions.TryGetValue("customBuildName", out customBuildName)) {
Console.WriteLine($"Missing argument -customBuildName, defaulting to {defaultCustomBuildName}.");
validatedOptions.Add("customBuildName", defaultCustomBuildName);
} else if (customBuildName == "") {
diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/Git.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/Git.cs
index c822da3e..dbf3c4fa 100644
--- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/Git.cs
+++ b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/Git.cs
@@ -106,7 +106,8 @@ namespace UnityBuilderAction.Versioning
using (var process = new System.Diagnostics.Process()) {
string workingDirectory = UnityEngine.Application.dataPath;
- int exitCode = process.Run(application, arguments, workingDirectory, out string output, out string errors);
+ string output, errors;
+ int exitCode = process.Run(application, arguments, workingDirectory, out output, out errors);
if (exitCode != 0) { throw new GitException(exitCode, errors); }
return output;
diff --git a/dist/index.js b/dist/index.js
index 552c8ab0..3bf6f6b8 100644
Binary files a/dist/index.js and b/dist/index.js differ
diff --git a/dist/index.js.map b/dist/index.js.map
index c88931c9..d877d297 100644
Binary files a/dist/index.js.map and b/dist/index.js.map differ
diff --git a/dist/licenses.txt b/dist/licenses.txt
index 98b21314..b7820d06 100644
Binary files a/dist/licenses.txt and b/dist/licenses.txt differ
diff --git a/dist/platforms/mac/steps/activate.sh b/dist/platforms/mac/steps/activate.sh
index 4a6d2e6f..c9511eb5 100755
--- a/dist/platforms/mac/steps/activate.sh
+++ b/dist/platforms/mac/steps/activate.sh
@@ -8,7 +8,7 @@ echo "Requesting activation"
# Activate license
/Applications/Unity/Hub/Editor/$UNITY_VERSION/Unity.app/Contents/MacOS/Unity \
- -logFile /dev/stdout \
+ -logFile - \
-batchmode \
-nographics \
-quit \
diff --git a/dist/platforms/mac/steps/build.sh b/dist/platforms/mac/steps/build.sh
index abacceef..8fd98f69 100755
--- a/dist/platforms/mac/steps/build.sh
+++ b/dist/platforms/mac/steps/build.sh
@@ -128,6 +128,7 @@ echo ""
# Reference: https://docs.unity3d.com/2019.3/Documentation/Manual/CommandLineArguments.html
/Applications/Unity/Hub/Editor/$UNITY_VERSION/Unity.app/Contents/MacOS/Unity \
+ -logFile - \
-quit \
-batchmode \
-nographics \
@@ -146,8 +147,9 @@ echo ""
-androidKeyaliasName "$ANDROID_KEYALIAS_NAME" \
-androidKeyaliasPass "$ANDROID_KEYALIAS_PASS" \
-androidTargetSdkVersion "$ANDROID_TARGET_SDK_VERSION" \
- $CUSTOM_PARAMETERS \
- > "$UNITY_PROJECT_PATH/out.log" 2>&1
+ -androidExportType "$ANDROID_EXPORT_TYPE" \
+ -androidSymbolType "$ANDROID_SYMBOL_TYPE" \
+ $CUSTOM_PARAMETERS
# Catch exit code
BUILD_EXIT_CODE=$?
diff --git a/dist/platforms/mac/steps/return_license.sh b/dist/platforms/mac/steps/return_license.sh
index 423a32f0..1749f9e7 100755
--- a/dist/platforms/mac/steps/return_license.sh
+++ b/dist/platforms/mac/steps/return_license.sh
@@ -5,7 +5,7 @@ echo "Changing to \"$ACTIVATE_LICENSE_PATH\" directory."
pushd "$ACTIVATE_LICENSE_PATH"
/Applications/Unity/Hub/Editor/$UNITY_VERSION/Unity.app/Contents/MacOS/Unity \
- -logFile /dev/stdout \
+ -logFile - \
-batchmode \
-nographics \
-quit \
diff --git a/dist/platforms/ubuntu/steps/build.sh b/dist/platforms/ubuntu/steps/build.sh
index ba9a3ad9..66149409 100755
--- a/dist/platforms/ubuntu/steps/build.sh
+++ b/dist/platforms/ubuntu/steps/build.sh
@@ -133,6 +133,8 @@ unity-editor \
-androidKeyaliasName "$ANDROID_KEYALIAS_NAME" \
-androidKeyaliasPass "$ANDROID_KEYALIAS_PASS" \
-androidTargetSdkVersion "$ANDROID_TARGET_SDK_VERSION" \
+ -androidExportType "$ANDROID_EXPORT_TYPE" \
+ -androidSymbolType "$ANDROID_SYMBOL_TYPE" \
$CUSTOM_PARAMETERS
# Catch exit code
diff --git a/dist/platforms/windows/build.ps1 b/dist/platforms/windows/build.ps1
index 150d2c9b..50ae2795 100644
--- a/dist/platforms/windows/build.ps1
+++ b/dist/platforms/windows/build.ps1
@@ -126,11 +126,13 @@ $_, $customParametersArray = Invoke-Expression('Write-Output -- "" ' + $Env:CUST
-androidKeyaliasName $Env:ANDROID_KEYALIAS_NAME `
-androidKeyaliasPass $Env:ANDROID_KEYALIAS_PASS `
-androidTargetSdkVersion $Env:ANDROID_TARGET_SDK_VERSION `
+ -androidExportType $Env:ANDROID_EXPORT_TYPE `
+ -androidSymbolType $Env:ANDROID_SYMBOL_TYPE `
$customParametersArray `
-logfile | Out-Host
# Catch exit code
-$Env:BUILD_EXIT_CODE=$?
+$Env:BUILD_EXIT_CODE=$LastExitCode
# Display results
if ($Env:BUILD_EXIT_CODE -eq 0)
diff --git a/package.json b/package.json
index ad2dc4f3..98d43e3f 100644
--- a/package.json
+++ b/package.json
@@ -24,7 +24,11 @@
"test-i-aws": "cross-env cloudRunnerTests=true cloudRunnerCluster=aws yarn test -i -t \"cloud runner\"",
"test-i-k8s": "cross-env cloudRunnerTests=true cloudRunnerCluster=k8s yarn test -i -t \"cloud runner\""
},
+ "engines": {
+ "node": ">=16.0.0"
+ },
"dependencies": {
+ "@actions/cache": "^3.1.3",
"@actions/core": "^1.10.0",
"@actions/exec": "^1.1.0",
"@actions/github": "^5.0.0",
@@ -64,6 +68,7 @@
"prettier": "^2.5.1",
"ts-jest": "^27.1.3",
"ts-node": "10.4.0",
- "typescript": "4.1.3"
+ "typescript": "4.1.3",
+ "yarn-audit-fix": "^9.3.8"
}
}
diff --git a/src/index.ts b/src/index.ts
index 99654f20..3478af03 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -24,7 +24,7 @@ async function runMain() {
core.info('Building locally');
await PlatformSetup.setup(buildParameters, actionFolder);
if (process.platform === 'darwin') {
- MacBuilder.run(actionFolder, workspace, buildParameters);
+ MacBuilder.run(actionFolder);
} else {
await Docker.run(baseImage, { workspace, actionFolder, ...buildParameters });
}
diff --git a/src/model/build-parameters.test.ts b/src/model/build-parameters.test.ts
index c41befba..2d44194b 100644
--- a/src/model/build-parameters.test.ts
+++ b/src/model/build-parameters.test.ts
@@ -95,34 +95,41 @@ describe('BuildParameters', () => {
await expect(BuildParameters.create()).resolves.toEqual(expect.objectContaining({ buildFile: mockValue }));
});
- test.each([Platform.types.StandaloneWindows, Platform.types.StandaloneWindows64])(
- 'appends exe for %s',
- async (targetPlatform) => {
+ test.each`
+ targetPlatform | expectedExtension | androidExportType
+ ${Platform.types.Android} | ${'.apk'} | ${'androidPackage'}
+ ${Platform.types.Android} | ${'.aab'} | ${'androidAppBundle'}
+ ${Platform.types.Android} | ${''} | ${'androidStudioProject'}
+ ${Platform.types.StandaloneWindows} | ${'.exe'} | ${'n/a'}
+ ${Platform.types.StandaloneWindows64} | ${'.exe'} | ${'n/a'}
+ `(
+ 'appends $expectedExtension for $targetPlatform with androidExportType $androidExportType',
+ async ({ targetPlatform, expectedExtension, androidExportType }) => {
jest.spyOn(Input, 'targetPlatform', 'get').mockReturnValue(targetPlatform);
jest.spyOn(Input, 'buildName', 'get').mockReturnValue(targetPlatform);
+ jest.spyOn(Input, 'androidExportType', 'get').mockReturnValue(androidExportType);
await expect(BuildParameters.create()).resolves.toEqual(
- expect.objectContaining({ buildFile: `${targetPlatform}.exe` }),
+ expect.objectContaining({ buildFile: `${targetPlatform}${expectedExtension}` }),
);
},
);
- test.each([Platform.types.Android])('appends apk for %s', async (targetPlatform) => {
- jest.spyOn(Input, 'targetPlatform', 'get').mockReturnValue(targetPlatform);
- jest.spyOn(Input, 'buildName', 'get').mockReturnValue(targetPlatform);
- jest.spyOn(Input, 'androidAppBundle', 'get').mockReturnValue(false);
- await expect(BuildParameters.create()).resolves.toEqual(
- expect.objectContaining({ buildFile: `${targetPlatform}.apk` }),
- );
- });
-
- test.each([Platform.types.Android])('appends aab for %s', async (targetPlatform) => {
- jest.spyOn(Input, 'targetPlatform', 'get').mockReturnValue(targetPlatform);
- jest.spyOn(Input, 'buildName', 'get').mockReturnValue(targetPlatform);
- jest.spyOn(Input, 'androidAppBundle', 'get').mockReturnValue(true);
- await expect(BuildParameters.create()).resolves.toEqual(
- expect.objectContaining({ buildFile: `${targetPlatform}.aab` }),
- );
- });
+ test.each`
+ targetPlatform | androidSymbolType
+ ${Platform.types.Android} | ${'none'}
+ ${Platform.types.Android} | ${'public'}
+ ${Platform.types.Android} | ${'debugging'}
+ ${Platform.types.StandaloneWindows} | ${'none'}
+ ${Platform.types.StandaloneWindows64} | ${'none'}
+ `(
+ 'androidSymbolType is set to $androidSymbolType when targetPlatform is $targetPlatform and input targetSymbolType is $androidSymbolType',
+ async ({ targetPlatform, androidSymbolType }) => {
+ jest.spyOn(Input, 'targetPlatform', 'get').mockReturnValue(targetPlatform);
+ jest.spyOn(Input, 'androidSymbolType', 'get').mockReturnValue(androidSymbolType);
+ jest.spyOn(Input, 'buildName', 'get').mockReturnValue(targetPlatform);
+ await expect(BuildParameters.create()).resolves.toEqual(expect.objectContaining({ androidSymbolType }));
+ },
+ );
it('returns the build method', async () => {
const mockValue = 'Namespace.ClassName.BuildMethod';
diff --git a/src/model/build-parameters.ts b/src/model/build-parameters.ts
index 581036d1..867b00c9 100644
--- a/src/model/build-parameters.ts
+++ b/src/model/build-parameters.ts
@@ -33,6 +33,9 @@ class BuildParameters {
public androidKeyaliasPass!: string;
public androidTargetSdkVersion!: string;
public androidSdkManagerParameters!: string;
+ public androidExportType!: string;
+ public androidSymbolType!: string;
+
public customParameters!: string;
public sshAgent!: string;
public cloudRunnerCluster!: string;
@@ -71,14 +74,30 @@ class BuildParameters {
public garbageCollectionMaxAge!: number;
public constantGarbageCollection!: boolean;
public githubChecks!: boolean;
+ public cacheUnityInstallationOnMac!: boolean;
+ public unityHubVersionOnMac!: string;
static async create(): Promise {
- const buildFile = this.parseBuildFile(Input.buildName, Input.targetPlatform, Input.androidAppBundle);
+ const buildFile = this.parseBuildFile(Input.buildName, Input.targetPlatform, Input.androidExportType);
const editorVersion = UnityVersioning.determineUnityVersion(Input.projectPath, Input.unityVersion);
const buildVersion = await Versioning.determineBuildVersion(Input.versioningStrategy, Input.specifiedVersion);
const androidVersionCode = AndroidVersioning.determineVersionCode(buildVersion, Input.androidVersionCode);
const androidSdkManagerParameters = AndroidVersioning.determineSdkManagerParameters(Input.androidTargetSdkVersion);
+ const androidSymbolExportType = Input.androidSymbolType;
+ if (Platform.isAndroid(Input.targetPlatform)) {
+ switch (androidSymbolExportType) {
+ case 'none':
+ case 'public':
+ case 'debugging':
+ break;
+ default:
+ throw new Error(
+ `Invalid androidSymbolType: ${Input.androidSymbolType}. Must be one of: none, public, debugging`,
+ );
+ }
+ }
+
// Todo - Don't use process.env directly, that's what the input model class is for.
// ---
let unitySerial = '';
@@ -118,6 +137,8 @@ class BuildParameters {
androidKeyaliasPass: Input.androidKeyaliasPass,
androidTargetSdkVersion: Input.androidTargetSdkVersion,
androidSdkManagerParameters,
+ androidExportType: Input.androidExportType,
+ androidSymbolType: androidSymbolExportType,
customParameters: Input.customParameters,
sshAgent: Input.sshAgent,
gitPrivateToken: Input.gitPrivateToken || (await GithubCliReader.GetGitHubAuthToken()),
@@ -155,22 +176,35 @@ class BuildParameters {
constantGarbageCollection: CloudRunnerOptions.constantGarbageCollection,
garbageCollectionMaxAge: CloudRunnerOptions.garbageCollectionMaxAge,
githubChecks: CloudRunnerOptions.githubChecks,
+ cacheUnityInstallationOnMac: Input.cacheUnityInstallationOnMac,
+ unityHubVersionOnMac: Input.unityHubVersionOnMac,
};
}
- static parseBuildFile(filename, platform, androidAppBundle) {
+ static parseBuildFile(filename: string, platform: string, androidExportType: string): string {
if (Platform.isWindows(platform)) {
return `${filename}.exe`;
}
if (Platform.isAndroid(platform)) {
- return androidAppBundle ? `${filename}.aab` : `${filename}.apk`;
+ switch (androidExportType) {
+ case `androidPackage`:
+ return `${filename}.apk`;
+ case `androidAppBundle`:
+ return `${filename}.aab`;
+ case `androidStudioProject`:
+ return filename;
+ default:
+ throw new Error(
+ `Unknown Android Export Type: ${androidExportType}. Must be one of androidPackage for apk, androidAppBundle for aab, androidStudioProject for android project`,
+ );
+ }
}
return filename;
}
- static getSerialFromLicenseFile(license) {
+ static getSerialFromLicenseFile(license: string) {
const startKey = ``;
const startIndex = license.indexOf(startKey) + startKey.length;
diff --git a/src/model/docker.ts b/src/model/docker.ts
index b7a00bec..b9943400 100644
--- a/src/model/docker.ts
+++ b/src/model/docker.ts
@@ -1,4 +1,4 @@
-import { exec } from '@actions/exec';
+import { execWithErrorCheck } from './exec-with-error-check';
import ImageEnvironmentFactory from './image-environment-factory';
import { existsSync, mkdirSync } from 'fs';
import path from 'path';
@@ -23,9 +23,9 @@ class Docker {
}
if (options !== false) {
options.silent = silent;
- await exec(runCommand, undefined, options);
+ await execWithErrorCheck(runCommand, undefined, options);
} else {
- await exec(runCommand, undefined, { silent });
+ await execWithErrorCheck(runCommand, undefined, { silent });
}
}
diff --git a/src/model/exec-with-error-check.ts b/src/model/exec-with-error-check.ts
new file mode 100644
index 00000000..529a2d7a
--- /dev/null
+++ b/src/model/exec-with-error-check.ts
@@ -0,0 +1,24 @@
+import { getExecOutput, ExecOptions } from '@actions/exec';
+
+export async function execWithErrorCheck(
+ commandLine: string,
+ arguments_?: string[],
+ options?: ExecOptions,
+): Promise {
+ const result = await getExecOutput(commandLine, arguments_, options);
+
+ // Check for errors in the Build Results section
+ const match = result.stdout.match(/^#\s*Build results\s*#(.*)^Size:/ms);
+
+ if (match) {
+ const buildResults = match[1];
+ const errorMatch = buildResults.match(/^Errors:\s*(\d+)$/m);
+ if (errorMatch && Number.parseInt(errorMatch[1], 10) !== 0) {
+ throw new Error(`There was an error building the project. Please read the logs for details.`);
+ }
+ } else {
+ throw new Error(`There was an error building the project. Please read the logs for details.`);
+ }
+
+ return result.exitCode;
+}
diff --git a/src/model/image-environment-factory.ts b/src/model/image-environment-factory.ts
index 014bd56e..8398acde 100644
--- a/src/model/image-environment-factory.ts
+++ b/src/model/image-environment-factory.ts
@@ -7,7 +7,7 @@ class Parameter {
}
class ImageEnvironmentFactory {
- public static getEnvVarString(parameters, additionalVariables: any[] = []) {
+ public static getEnvVarString(parameters: BuildParameters, additionalVariables: any[] = []) {
const environmentVariables = ImageEnvironmentFactory.getEnvironmentVariables(parameters, additionalVariables);
let string = '';
for (const p of environmentVariables) {
@@ -50,6 +50,8 @@ class ImageEnvironmentFactory {
{ name: 'ANDROID_KEYALIAS_PASS', value: parameters.androidKeyaliasPass },
{ name: 'ANDROID_TARGET_SDK_VERSION', value: parameters.androidTargetSdkVersion },
{ name: 'ANDROID_SDK_MANAGER_PARAMETERS', value: parameters.androidSdkManagerParameters },
+ { name: 'ANDROID_EXPORT_TYPE', value: parameters.androidExportType },
+ { name: 'ANDROID_SYMBOL_TYPE', value: parameters.androidSymbolType },
{ name: 'CUSTOM_PARAMETERS', value: parameters.customParameters },
{ name: 'CHOWN_FILES_TO', value: parameters.chownFilesTo },
{ name: 'GITHUB_REF', value: process.env.GITHUB_REF },
diff --git a/src/model/input.test.ts b/src/model/input.test.ts
index 7cf2fc54..20b3e6de 100644
--- a/src/model/input.test.ts
+++ b/src/model/input.test.ts
@@ -161,6 +161,82 @@ describe('Input', () => {
});
});
+ describe('androidExportType', () => {
+ it('returns the default value', () => {
+ expect(Input.androidExportType).toStrictEqual('androidPackage');
+ });
+
+ // TODO: Remove "and androidAppBundle is not set" in v3
+ test.each`
+ input | expected
+ ${'androidPackage'} | ${'androidPackage'}
+ ${'androidAppBundle'} | ${'androidAppBundle'}
+ ${'androidStudioProject'} | ${'androidStudioProject'}
+ `('returns $expected when $input is passed and androidAppBundle is not set', ({ input, expected }) => {
+ const spy = jest.spyOn(core, 'getInput').mockReturnValue(input);
+ expect(Input.androidExportType).toStrictEqual(expected);
+ expect(spy).toHaveBeenCalledTimes(1);
+ });
+
+ // TODO: Remove in v3
+ test.each`
+ input | expected
+ ${'androidPackage'} | ${'androidPackage'}
+ ${'androidAppBundle'} | ${'androidAppBundle'}
+ ${'androidStudioProject'} | ${'androidStudioProject'}
+ `('returns $expected when $input is passed and overrides androidAppBundle if it is set', ({ input, expected }) => {
+ const spy = jest.spyOn(Input, 'getInput');
+ spy.mockImplementationOnce(() => {
+ return input;
+ });
+
+ spy.mockImplementationOnce(() => {
+ return true;
+ });
+ expect(Input.androidExportType).toStrictEqual(expected);
+ expect(spy).toHaveBeenCalledTimes(1);
+ });
+
+ // TODO: Remove in v3
+ test.each`
+ input | expected
+ ${'true'} | ${'androidAppBundle'}
+ ${'false'} | ${'androidPackage'}
+ `(
+ 'returns $expected when androidExportType is undefined and androidAppBundle is set to $input',
+ ({ input, expected }) => {
+ const spy = jest.spyOn(Input, 'getInput');
+ spy.mockImplementationOnce(() => {
+ return;
+ });
+
+ spy.mockImplementationOnce(() => {
+ return input;
+ });
+
+ expect(Input.androidExportType).toStrictEqual(expected);
+ expect(spy).toHaveBeenCalledTimes(2);
+ },
+ );
+ });
+
+ describe('androidSymbolType', () => {
+ it('returns the default value', () => {
+ expect(Input.androidSymbolType).toStrictEqual('none');
+ });
+
+ test.each`
+ input | expected
+ ${'none'} | ${'none'}
+ ${'public'} | ${'public'}
+ ${'debugging'} | ${'debugging'}
+ `('returns $expected when $input is passed', ({ input, expected }) => {
+ const spy = jest.spyOn(core, 'getInput').mockReturnValue(input);
+ expect(Input.androidExportType).toStrictEqual(expected);
+ expect(spy).toHaveBeenCalledTimes(1);
+ });
+ });
+
describe('androidKeystoreName', () => {
it('returns the default value', () => {
expect(Input.androidKeystoreName).toStrictEqual('');
diff --git a/src/model/input.ts b/src/model/input.ts
index 4a0993ae..465663c4 100644
--- a/src/model/input.ts
+++ b/src/model/input.ts
@@ -134,11 +134,28 @@ class Input {
}
static get androidAppBundle() {
+ core.warning('androidAppBundle is deprecated, please use androidExportType instead');
const input = Input.getInput('androidAppBundle') || false;
return input === 'true';
}
+ static get androidExportType() {
+ // TODO: remove this in V3
+ const exportType = Input.getInput('androidExportType');
+
+ if (exportType) {
+ return exportType || 'androidPackage';
+ }
+
+ return Input.androidAppBundle ? 'androidAppBundle' : 'androidPackage';
+
+ // End TODO
+
+ // Use this in V3 when androidAppBundle is removed
+ // return Input.getInput('androidExportType') || 'androidPackage';
+ }
+
static get androidKeystoreName() {
return Input.getInput('androidKeystoreName') || '';
}
@@ -163,6 +180,10 @@ class Input {
return Input.getInput('androidTargetSdkVersion') || '';
}
+ static get androidSymbolType() {
+ return Input.getInput('androidSymbolType') || 'none';
+ }
+
static get sshAgent() {
return Input.getInput('sshAgent') || '';
}
@@ -181,6 +202,18 @@ class Input {
return input === 'true';
}
+ static get cacheUnityInstallationOnMac() {
+ const input = Input.getInput('cacheUnityInstallationOnMac') || false;
+
+ return input === 'true';
+ }
+
+ static get unityHubVersionOnMac() {
+ const input = Input.getInput('unityHubVersionOnMac') || '';
+
+ return input !== '' ? input : '';
+ }
+
public static ToEnvVarFormat(input: string) {
if (input.toUpperCase() === input) {
return input;
diff --git a/src/model/mac-builder.ts b/src/model/mac-builder.ts
index a95cf7cb..d4b9ae45 100644
--- a/src/model/mac-builder.ts
+++ b/src/model/mac-builder.ts
@@ -1,11 +1,9 @@
-import { exec } from '@actions/exec';
-import { BuildParameters } from '.';
+import { execWithErrorCheck } from './exec-with-error-check';
class MacBuilder {
- public static async run(actionFolder, workspace, buildParameters: BuildParameters, silent = false) {
- await exec('bash', [`${actionFolder}/platforms/mac/entrypoint.sh`], {
+ public static async run(actionFolder, silent = false) {
+ await execWithErrorCheck('bash', [`${actionFolder}/platforms/mac/entrypoint.sh`], {
silent,
- ignoreReturnCode: true,
});
}
}
diff --git a/src/model/platform-setup/setup-mac.ts b/src/model/platform-setup/setup-mac.ts
index 9a9f215a..bab218dc 100644
--- a/src/model/platform-setup/setup-mac.ts
+++ b/src/model/platform-setup/setup-mac.ts
@@ -1,16 +1,19 @@
import { BuildParameters } from '..';
import { getUnityChangeset } from 'unity-changeset';
-import { exec } from '@actions/exec';
+import { exec, getExecOutput } from '@actions/exec';
+import { restoreCache, saveCache } from '@actions/cache';
+
import fs from 'fs';
class SetupMac {
- static unityHubPath = `"/Applications/Unity Hub.app/Contents/MacOS/Unity Hub"`;
+ static unityHubBasePath = `/Applications/"Unity Hub.app"`;
+ static unityHubExecPath = `${SetupMac.unityHubBasePath}/Contents/MacOS/"Unity Hub"`;
public static async setup(buildParameters: BuildParameters, actionFolder: string) {
const unityEditorPath = `/Applications/Unity/Hub/Editor/${buildParameters.editorVersion}/Unity.app/Contents/MacOS/Unity`;
- if (!fs.existsSync(this.unityHubPath)) {
- await SetupMac.installUnityHub();
+ if (!fs.existsSync(this.unityHubExecPath)) {
+ await SetupMac.installUnityHub(buildParameters);
}
if (!fs.existsSync(unityEditorPath)) {
@@ -20,45 +23,27 @@ class SetupMac {
await SetupMac.setEnvironmentVariables(buildParameters, actionFolder);
}
- private static async installUnityHub(silent = false) {
- const command = 'brew install unity-hub';
- if (!fs.existsSync(this.unityHubPath)) {
- // Ignoring return code because the log seems to overflow the internal buffer which triggers
- // a false error
- const errorCode = await exec(command, undefined, { silent, ignoreReturnCode: true });
- if (errorCode) {
- throw new Error(`There was an error installing the Unity Editor. See logs above for details.`);
+ private static async installUnityHub(buildParameters, silent = false) {
+ // Can't use quotes in the cache package so we need a different path
+ const unityHubCachePath = `/Applications/Unity\\ Hub.app`;
+
+ const targetHubVersion =
+ buildParameters.unityHubVersionOnMac !== ''
+ ? buildParameters.unityHubVersionOnMac
+ : await SetupMac.getLatestUnityHubVersion();
+
+ const restoreKey = `Cache-MacOS-UnityHub@${targetHubVersion}`;
+
+ if (buildParameters.cacheUnityInstallationOnMac) {
+ const cacheId = await restoreCache([unityHubCachePath], restoreKey);
+ if (cacheId) {
+ // Cache restored successfully, unity hub is installed now
+ return;
}
}
- }
- private static async installUnity(buildParameters: BuildParameters, silent = false) {
- const unityChangeset = await getUnityChangeset(buildParameters.editorVersion);
- let command = `${this.unityHubPath} -- --headless install \
- --version ${buildParameters.editorVersion} \
- --changeset ${unityChangeset.changeset} `;
-
- switch (buildParameters.targetPlatform) {
- case 'iOS':
- command += `--module ios `;
- break;
- case 'tvOS':
- command += '--module tvos ';
- break;
- case 'StandaloneOSX':
- command += `--module mac-il2cpp `;
- break;
- case 'Android':
- command += `--module android `;
- break;
- case 'WebGL':
- command += '--module webgl ';
- break;
- default:
- throw new Error(`Unsupported module for target platform: ${buildParameters.targetPlatform}.`);
- }
-
- command += `--childModules`;
+ const commandSuffix = buildParameters.unityHubVersionOnMac !== '' ? `@${buildParameters.unityHubVersionOnMac}` : '';
+ const command = `brew install unity-hub${commandSuffix}`;
// Ignoring return code because the log seems to overflow the internal buffer which triggers
// a false error
@@ -66,6 +51,83 @@ class SetupMac {
if (errorCode) {
throw new Error(`There was an error installing the Unity Editor. See logs above for details.`);
}
+
+ if (buildParameters.cacheUnityInstallationOnMac) {
+ await saveCache([unityHubCachePath], restoreKey);
+ }
+ }
+
+ /**
+ * Gets the latest version of Unity Hub available on brew
+ * @returns The latest version of Unity Hub available on brew
+ */
+ private static async getLatestUnityHubVersion(): Promise {
+ // Need to check if the latest version available is the same as the one we have cached
+ const hubVersionCommand = `/bin/bash -c "brew info unity-hub | grep -o '[0-9]\\+\\.[0-9]\\+\\.[0-9]\\+'"`;
+ const result = await getExecOutput(hubVersionCommand, undefined, { silent: true });
+ if (result.exitCode === 0 && result.stdout !== '') {
+ return result.stdout;
+ }
+
+ return '';
+ }
+
+ private static getModuleParametersForTargetPlatform(targetPlatform: string): string {
+ let moduleArgument = '';
+ switch (targetPlatform) {
+ case 'iOS':
+ moduleArgument += `--module ios `;
+ break;
+ case 'tvOS':
+ moduleArgument += '--module tvos ';
+ break;
+ case 'StandaloneOSX':
+ moduleArgument += `--module mac-il2cpp `;
+ break;
+ case 'Android':
+ moduleArgument += `--module android `;
+ break;
+ case 'WebGL':
+ moduleArgument += '--module webgl ';
+ break;
+ default:
+ throw new Error(`Unsupported module for target platform: ${targetPlatform}.`);
+ }
+
+ return moduleArgument;
+ }
+
+ private static async installUnity(buildParameters: BuildParameters, silent = false) {
+ const unityEditorPath = `/Applications/Unity/Hub/Editor/${buildParameters.editorVersion}`;
+ const key = `Cache-MacOS-UnityEditor-With-Module-${buildParameters.targetPlatform}@${buildParameters.editorVersion}`;
+
+ if (buildParameters.cacheUnityInstallationOnMac) {
+ const cacheId = await restoreCache([unityEditorPath], key);
+ if (cacheId) {
+ // Cache restored successfully, unity editor is installed now
+ return;
+ }
+ }
+
+ const unityChangeset = await getUnityChangeset(buildParameters.editorVersion);
+ const moduleArgument = SetupMac.getModuleParametersForTargetPlatform(buildParameters.targetPlatform);
+
+ const command = `${this.unityHubExecPath} -- --headless install \
+ --version ${buildParameters.editorVersion} \
+ --changeset ${unityChangeset.changeset} \
+ ${moduleArgument} \
+ --childModules `;
+
+ // Ignoring return code because the log seems to overflow the internal buffer which triggers
+ // a false error
+ const errorCode = await exec(command, undefined, { silent, ignoreReturnCode: true });
+ if (errorCode) {
+ throw new Error(`There was an error installing the Unity Editor. See logs above for details.`);
+ }
+
+ if (buildParameters.cacheUnityInstallationOnMac) {
+ await saveCache([unityEditorPath], key);
+ }
}
private static async setEnvironmentVariables(buildParameters: BuildParameters, actionFolder: string) {
@@ -90,6 +152,8 @@ class SetupMac {
process.env.ANDROID_KEYALIAS_PASS = buildParameters.androidKeyaliasPass;
process.env.ANDROID_TARGET_SDK_VERSION = buildParameters.androidTargetSdkVersion;
process.env.ANDROID_SDK_MANAGER_PARAMETERS = buildParameters.androidSdkManagerParameters;
+ process.env.ANDROID_EXPORT_TYPE = buildParameters.androidExportType;
+ process.env.ANDROID_SYMBOL_TYPE = buildParameters.androidSymbolType;
process.env.CUSTOM_PARAMETERS = buildParameters.customParameters;
process.env.CHOWN_FILES_TO = buildParameters.chownFilesTo;
}
diff --git a/src/model/versioning.ts b/src/model/versioning.ts
index 7ef0ca47..e39dff42 100644
--- a/src/model/versioning.ts
+++ b/src/model/versioning.ts
@@ -62,10 +62,15 @@ export default class Versioning {
*/
static async logDiff() {
const diffCommand = `git --no-pager diff | head -n ${this.maxDiffLines.toString()}`;
- await System.run('sh', undefined, {
- input: Buffer.from(diffCommand),
- silent: true,
- });
+ await System.run(
+ 'sh',
+ undefined,
+ {
+ input: Buffer.from(diffCommand),
+ silent: true,
+ },
+ false,
+ );
}
/**
@@ -307,6 +312,6 @@ export default class Versioning {
* Run git in the specified project path
*/
static async git(arguments_, options = {}) {
- return System.run('git', arguments_, { cwd: this.projectPath, ...options });
+ return System.run('git', arguments_, { cwd: this.projectPath, ...options }, false);
}
}
diff --git a/test-project/ProjectSettings/ProjectSettings.asset b/test-project/ProjectSettings/ProjectSettings.asset
index aa060258..7b66fd1f 100644
--- a/test-project/ProjectSettings/ProjectSettings.asset
+++ b/test-project/ProjectSettings/ProjectSettings.asset
@@ -13,7 +13,7 @@ PlayerSettings:
useOnDemandResources: 0
accelerometerFrequency: 60
companyName: DefaultCompany
- productName: simple-test-project
+ productName: simpletestproject
defaultCursor: {fileID: 0}
cursorHotspot: {x: 0, y: 0}
m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
@@ -165,6 +165,7 @@ PlayerSettings:
androidMaxAspectRatio: 2.1
applicationIdentifier:
Standalone: com.Company.ProductName
+ Android: com.DefaultCompany.simpletestproject
buildNumber: {}
AndroidBundleVersionCode: 1
AndroidMinSdkVersion: 16
diff --git a/test-project/ProjectSettings/ProjectSettingsIl2cpp.asset b/test-project/ProjectSettings/ProjectSettingsIl2cpp.asset
index d62e93ca..81fa1255 100644
--- a/test-project/ProjectSettings/ProjectSettingsIl2cpp.asset
+++ b/test-project/ProjectSettings/ProjectSettingsIl2cpp.asset
@@ -13,7 +13,7 @@ PlayerSettings:
useOnDemandResources: 0
accelerometerFrequency: 60
companyName: DefaultCompany
- productName: simple-test-project
+ productName: simpletestproject
defaultCursor: {fileID: 0}
cursorHotspot: {x: 0, y: 0}
m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
@@ -154,11 +154,12 @@ PlayerSettings:
androidMaxAspectRatio: 2.1
applicationIdentifier:
Standalone: com.Company.ProductName
+ Android: com.DefaultCompany.simpletestproject
buildNumber:
Standalone: 0
iPhone: 0
tvOS: 0
- overrideDefaultApplicationIdentifier: 1
+ overrideDefaultApplicationIdentifier: 0
AndroidBundleVersionCode: 1
AndroidMinSdkVersion: 19
AndroidTargetSdkVersion: 0
diff --git a/yarn.lock b/yarn.lock
index c0868e38..aee0be74 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,7 +2,23 @@
# yarn lockfile v1
-"@actions/core@^1.10.0":
+"@actions/cache@^3.1.3":
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/@actions/cache/-/cache-3.1.3.tgz#6521648a259dab2ce981cdaadf98bf192293b569"
+ integrity sha512-5YbATJUS6nVs9EkpK7JaliC3G5koKdJT99NLreL0gJlznudzZzXGNIheW5+HUT9C2DBvubOxYIyfX4v2UpZWrA==
+ dependencies:
+ "@actions/core" "^1.10.0"
+ "@actions/exec" "^1.0.1"
+ "@actions/glob" "^0.1.0"
+ "@actions/http-client" "^2.0.1"
+ "@actions/io" "^1.0.1"
+ "@azure/abort-controller" "^1.1.0"
+ "@azure/ms-rest-js" "^2.6.0"
+ "@azure/storage-blob" "^12.8.0"
+ semver "^6.1.0"
+ uuid "^3.3.3"
+
+"@actions/core@^1.10.0", "@actions/core@^1.2.6":
version "1.10.0"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.10.0.tgz#44551c3c71163949a2f06e94d9ca2157a0cfac4f"
integrity sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==
@@ -10,6 +26,13 @@
"@actions/http-client" "^2.0.1"
uuid "^8.3.2"
+"@actions/exec@^1.0.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.1.1.tgz#2e43f28c54022537172819a7cf886c844221a611"
+ integrity sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==
+ dependencies:
+ "@actions/io" "^1.0.1"
+
"@actions/exec@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.1.0.tgz#53441d968e56d2fec69ad3f15773d4d94e01162c"
@@ -27,6 +50,14 @@
"@octokit/plugin-paginate-rest" "^2.13.3"
"@octokit/plugin-rest-endpoint-methods" "^5.1.1"
+"@actions/glob@^0.1.0":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@actions/glob/-/glob-0.1.2.tgz#9685ed2d6583093479c8f137d067c4329d7d0974"
+ integrity sha512-SclLR7Ia5sEqjkJTPs7Sd86maMDw43p769YxBOxvPvEWuPEhpAnBsQfENOpXjFYMmhCqd127bmf+YdvJqVqR4A==
+ dependencies:
+ "@actions/core" "^1.2.6"
+ minimatch "^3.0.4"
+
"@actions/http-client@^1.0.11":
version "1.0.11"
resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-1.0.11.tgz#c58b12e9aa8b159ee39e7dd6cbd0e91d905633c0"
@@ -58,6 +89,110 @@
resolved "https://registry.yarnpkg.com/@arkweid/lefthook/-/lefthook-0.7.7.tgz#12951b09b955d8054885ffe929aa07a49f39027c"
integrity sha512-Eq30OXKmjxIAIsTtbX2fcF3SNZIXS8yry1u8yty7PQFYRctx04rVlhOJCEB2UmfTh8T2vrOMC9IHHUvvo5zbaQ==
+"@azure/abort-controller@^1.0.0", "@azure/abort-controller@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249"
+ integrity sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==
+ dependencies:
+ tslib "^2.2.0"
+
+"@azure/core-auth@^1.1.4", "@azure/core-auth@^1.3.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.4.0.tgz#6fa9661c1705857820dbc216df5ba5665ac36a9e"
+ integrity sha512-HFrcTgmuSuukRf/EdPmqBrc5l6Q5Uu+2TbuhaKbgaCpP2TfAeiNaQPAadxO+CYBRHGUzIDteMAjFspFLDLnKVQ==
+ dependencies:
+ "@azure/abort-controller" "^1.0.0"
+ tslib "^2.2.0"
+
+"@azure/core-http@^2.0.0":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.3.1.tgz#eed8a7d012ba8c576c557828f66af0fc4e52b23a"
+ integrity sha512-cur03BUwV0Tbv81bQBOLafFB02B6G++K6F2O3IMl8pSE2QlXm3cu11bfyBNlDUKi5U+xnB3GC63ae3athhkx6Q==
+ dependencies:
+ "@azure/abort-controller" "^1.0.0"
+ "@azure/core-auth" "^1.3.0"
+ "@azure/core-tracing" "1.0.0-preview.13"
+ "@azure/core-util" "^1.1.1"
+ "@azure/logger" "^1.0.0"
+ "@types/node-fetch" "^2.5.0"
+ "@types/tunnel" "^0.0.3"
+ form-data "^4.0.0"
+ node-fetch "^2.6.7"
+ process "^0.11.10"
+ tough-cookie "^4.0.0"
+ tslib "^2.2.0"
+ tunnel "^0.0.6"
+ uuid "^8.3.0"
+ xml2js "^0.4.19"
+
+"@azure/core-lro@^2.2.0":
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-2.5.1.tgz#9c6be24b84f8a8c8e8ac376c5018460c5a585d0b"
+ integrity sha512-JHQy/bA3NOz2WuzOi5zEk6n/TJdAropupxUT521JIJvW7EXV2YN2SFYZrf/2RHeD28QAClGdynYadZsbmP+nyQ==
+ dependencies:
+ "@azure/abort-controller" "^1.0.0"
+ "@azure/logger" "^1.0.0"
+ tslib "^2.2.0"
+
+"@azure/core-paging@^1.1.1":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.5.0.tgz#5a5b09353e636072e6a7fc38f7879e11d0afb15f"
+ integrity sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw==
+ dependencies:
+ tslib "^2.2.0"
+
+"@azure/core-tracing@1.0.0-preview.13":
+ version "1.0.0-preview.13"
+ resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644"
+ integrity sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==
+ dependencies:
+ "@opentelemetry/api" "^1.0.1"
+ tslib "^2.2.0"
+
+"@azure/core-util@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.1.1.tgz#8f87b3dd468795df0f0849d9f096c3e7b29452c1"
+ integrity sha512-A4TBYVQCtHOigFb2ETiiKFDocBoI1Zk2Ui1KpI42aJSIDexF7DHQFpnjonltXAIU/ceH+1fsZAWWgvX6/AKzog==
+ dependencies:
+ "@azure/abort-controller" "^1.0.0"
+ tslib "^2.2.0"
+
+"@azure/logger@^1.0.0":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.3.tgz#6e36704aa51be7d4a1bae24731ea580836293c96"
+ integrity sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g==
+ dependencies:
+ tslib "^2.2.0"
+
+"@azure/ms-rest-js@^2.6.0":
+ version "2.6.4"
+ resolved "https://registry.yarnpkg.com/@azure/ms-rest-js/-/ms-rest-js-2.6.4.tgz#b0a0f89841434471adf757d09e7e39e8ecfcd650"
+ integrity sha512-2sbOpGhlBfv9itWdF7Qlk0CmoQCARxe5unwjNOprU7OdgEgabQncZ35L5u1A+zgdkVtNYF9Eo6XAhXzTweIhag==
+ dependencies:
+ "@azure/core-auth" "^1.1.4"
+ abort-controller "^3.0.0"
+ form-data "^2.5.0"
+ node-fetch "^2.6.7"
+ tough-cookie "^3.0.1"
+ tslib "^1.10.0"
+ tunnel "0.0.6"
+ uuid "^8.3.2"
+ xml2js "^0.4.19"
+
+"@azure/storage-blob@^12.8.0":
+ version "12.12.0"
+ resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.12.0.tgz#25e277c885692d5adcd8c2a949789b2837a74c59"
+ integrity sha512-o/Mf6lkyYG/eBW4/hXB9864RxVNmAkcKHjsGR6Inlp5hupa3exjSyH2KjO3tLO//YGA+tS+17hM2bxRl9Sn16g==
+ dependencies:
+ "@azure/abort-controller" "^1.0.0"
+ "@azure/core-http" "^2.0.0"
+ "@azure/core-lro" "^2.2.0"
+ "@azure/core-paging" "^1.1.1"
+ "@azure/core-tracing" "1.0.0-preview.13"
+ "@azure/logger" "^1.0.0"
+ events "^3.0.0"
+ tslib "^2.2.0"
+
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13":
version "7.12.13"
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz"
@@ -956,6 +1091,11 @@
dependencies:
"@octokit/openapi-types" "^11.2.0"
+"@opentelemetry/api@^1.0.1":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.0.tgz#2c91791a9ba6ca0a0f4aaac5e45d58df13639ac8"
+ integrity sha512-IgMK9i3sFGNUqPMbjABm0G26g0QCKCUBfglhQ7rQq6WcxbKfEHRcmwsoER4hZcuYqJgkYn2OeuoJIv7Jsftp7g==
+
"@panva/asn1.js@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6"
@@ -1083,6 +1223,18 @@
resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8"
integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==
+"@types/find-cache-dir@^3.2.1":
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz#7b959a4b9643a1e6a1a5fe49032693cc36773501"
+ integrity sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==
+
+"@types/fs-extra@^9.0.13":
+ version "9.0.13"
+ resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45"
+ integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==
+ dependencies:
+ "@types/node" "*"
+
"@types/got@^9.6.9":
version "9.6.12"
resolved "https://registry.yarnpkg.com/@types/got/-/got-9.6.12.tgz#fd42a6e1f5f64cd6bb422279b08c30bb5a15a56f"
@@ -1158,6 +1310,18 @@
dependencies:
"@types/node" "*"
+"@types/lodash-es@^4.17.6":
+ version "4.17.6"
+ resolved "https://registry.yarnpkg.com/@types/lodash-es/-/lodash-es-4.17.6.tgz#c2ed4c8320ffa6f11b43eb89e9eaeec65966a0a0"
+ integrity sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==
+ dependencies:
+ "@types/lodash" "*"
+
+"@types/lodash@*":
+ version "4.14.191"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa"
+ integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==
+
"@types/minipass@*":
version "3.1.2"
resolved "https://registry.yarnpkg.com/@types/minipass/-/minipass-3.1.2.tgz#e2d7f9df0698aff421dcf145b4fc05b8183b9030"
@@ -1165,6 +1329,14 @@
dependencies:
"@types/node" "*"
+"@types/node-fetch@^2.5.0":
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da"
+ integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==
+ dependencies:
+ "@types/node" "*"
+ form-data "^3.0.0"
+
"@types/node@*":
version "17.0.21"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644"
@@ -1207,6 +1379,11 @@
dependencies:
"@types/node" "*"
+"@types/semver@^7.3.12":
+ version "7.3.13"
+ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91"
+ integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
+
"@types/semver@^7.3.9":
version "7.3.9"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc"
@@ -1237,6 +1414,13 @@
resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40"
integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg==
+"@types/tunnel@^0.0.3":
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9"
+ integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==
+ dependencies:
+ "@types/node" "*"
+
"@types/underscore@^1.8.9":
version "1.11.4"
resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.11.4.tgz#62e393f8bc4bd8a06154d110c7d042a93751def3"
@@ -1261,6 +1445,11 @@
dependencies:
"@types/yargs-parser" "*"
+"@types/yarnpkg__lockfile@^1.1.5":
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/@types/yarnpkg__lockfile/-/yarnpkg__lockfile-1.1.5.tgz#9639020e1fb65120a2f4387db8f1e8b63efdf229"
+ integrity sha512-8NYnGOctzsI4W0ApsP/BIHD/LnxpJ6XaGf2AZmz4EyDYJMxtprN4279dLNI1CPZcwC9H18qYcaFv4bXi0wmokg==
+
"@typescript-eslint/eslint-plugin@^4.20.0":
version "4.22.0"
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.0.tgz"
@@ -1381,11 +1570,23 @@
resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.33.3.tgz#aacc6b3ea9f7b175e0c9a18c9b97e4005a2f4fcc"
integrity sha512-JGZ11QV+/ZcfudW2Cz2JVp54/pJNXbsuWRgSh2ZmmZdQBKXqBtIGrwI1Wyx8nlbzAiEFe7FHi4K1zX4//jxTnQ==
+"@yarnpkg/lockfile@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
+ integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
+
abab@^2.0.3, abab@^2.0.5:
version "2.0.5"
resolved "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz"
integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==
+abort-controller@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
+ integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
+ dependencies:
+ event-target-shim "^5.0.0"
+
acorn-globals@^6.0.0:
version "6.0.0"
resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz"
@@ -1520,6 +1721,11 @@ argparse@^2.0.1:
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==
+
array-includes@^3.1.1:
version "3.1.3"
resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz"
@@ -1683,6 +1889,27 @@ base64url@^3.0.1:
resolved "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz"
integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==
+bash-glob@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/bash-glob/-/bash-glob-2.0.0.tgz#a8ef19450783403ed93fccca2dbe09f2cf6320dc"
+ integrity sha512-53/NJ+t2UAkEYgQPO6aFjbx1Ue8vNNXCYaA4EljNKP1SR8A9dSQQoBmYWR8BLXO0/NDRJEMSJ4BxWihi//m3Kw==
+ dependencies:
+ bash-path "^1.0.1"
+ component-emitter "^1.2.1"
+ cross-spawn "^5.1.0"
+ each-parallel-async "^1.0.0"
+ extend-shallow "^2.0.1"
+ is-extglob "^2.1.1"
+ is-glob "^4.0.0"
+
+bash-path@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/bash-path/-/bash-path-1.0.3.tgz#dbc9efbdf18b1c11413dcb59b960e6aa56c84258"
+ integrity sha512-mGrYvOa6yTY/qNCiZkPFJqWmODK68y6kmVRAJ1NNbWlNoJrUrsFxu7FU2EKg7gbrer6ttrKkF2s/E/lhRy7/OA==
+ dependencies:
+ arr-union "^3.1.0"
+ is-windows "^1.0.1"
+
bcrypt-pbkdf@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
@@ -1874,6 +2101,11 @@ chalk@^4.1.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
+chalk@^5.0.1:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3"
+ integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==
+
char-regex@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz"
@@ -1966,6 +2198,11 @@ colorette@^1.2.2:
resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz"
integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
+colors@1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+ integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+
combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
@@ -1980,6 +2217,16 @@ commander-ts@^0.2.0:
dependencies:
commander "^7.2.0"
+commander@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.0.tgz#71797971162cd3cf65f0b9d24eb28f8d303acdf1"
+ integrity sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==
+
+commander@^2.11.0:
+ version "2.20.3"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
commander@^7.2.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
@@ -1990,6 +2237,16 @@ commander@^9.0.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-9.0.0.tgz#86d58f24ee98126568936bd1d3574e0308a99a40"
integrity sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==
+common-path-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0"
+ integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==
+
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -2024,6 +2281,15 @@ cross-env@^7.0.3:
dependencies:
cross-spawn "^7.0.1"
+cross-spawn@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+ integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
@@ -2195,6 +2461,11 @@ duplexer3@^0.1.4:
resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz"
integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
+each-parallel-async@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/each-parallel-async/-/each-parallel-async-1.0.0.tgz#91783e190000c7dd588336b2d468ebaf71980f7b"
+ integrity sha512-P/9kLQiQj0vZNzphvKKTgRgMnlqs5cJsxeAiuog1jrUnwv0Z3hVUwJDQiP7MnLb2I9S15nR9SRUceFT9IxtqRg==
+
ecc-jsbn@~0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
@@ -2237,6 +2508,11 @@ enquirer@^2.3.5:
dependencies:
ansi-colors "^4.1.1"
+eol@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd"
+ integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==
+
error-ex@^1.2.0, error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
@@ -2530,11 +2806,21 @@ esutils@^2.0.2:
resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+event-target-shim@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
+ integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
+
events@1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/events/-/events-1.1.1.tgz"
integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
+events@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+
execa@5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376"
@@ -2580,6 +2866,13 @@ expect@^27.5.1:
jest-matcher-utils "^27.5.1"
jest-message-util "^27.5.1"
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
+ dependencies:
+ is-extendable "^0.1.0"
+
extend@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
@@ -2617,6 +2910,17 @@ fast-glob@^3.1.1:
micromatch "^4.0.2"
picomatch "^2.2.1"
+fast-glob@^3.2.11:
+ version "3.2.12"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
+ integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
+ 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"
+
fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
@@ -2655,6 +2959,14 @@ fill-range@^7.0.1:
dependencies:
to-regex-range "^5.0.1"
+find-cache-dir@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2"
+ integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==
+ dependencies:
+ common-path-prefix "^3.0.0"
+ pkg-dir "^7.0.0"
+
find-up@^2.0.0, find-up@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz"
@@ -2670,6 +2982,14 @@ find-up@^4.0.0, find-up@^4.1.0:
locate-path "^5.0.0"
path-exists "^4.0.0"
+find-up@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790"
+ integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==
+ dependencies:
+ locate-path "^7.1.0"
+ path-exists "^5.0.0"
+
flat-cache@^3.0.4:
version "3.0.4"
resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz"
@@ -2706,6 +3026,15 @@ form-data@^3.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
form-data@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
@@ -2715,6 +3044,15 @@ form-data@~2.3.2:
combined-stream "^1.0.6"
mime-types "^2.1.12"
+fs-extra@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
+ integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
fs-minipass@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
@@ -2792,7 +3130,7 @@ getpass@^0.1.1:
dependencies:
assert-plus "^1.0.0"
-glob-parent@^5.0.0, glob-parent@^5.1.0:
+glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.2:
version "5.1.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@@ -2835,10 +3173,21 @@ globby@^11.0.1:
merge2 "^1.3.0"
slash "^3.0.0"
+globby@^13.1.2:
+ version "13.1.3"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.3.tgz#f62baf5720bcb2c1330c8d4ef222ee12318563ff"
+ integrity sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==
+ dependencies:
+ dir-glob "^3.0.1"
+ fast-glob "^3.2.11"
+ ignore "^5.2.0"
+ merge2 "^1.4.1"
+ slash "^4.0.0"
+
got@^11.8.0:
- version "11.8.3"
- resolved "https://registry.yarnpkg.com/got/-/got-11.8.3.tgz#f496c8fdda5d729a90b4905d2b07dbd148170770"
- integrity sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==
+ version "11.8.6"
+ resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a"
+ integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==
dependencies:
"@sindresorhus/is" "^4.0.0"
"@szmarczak/http-timer" "^4.0.5"
@@ -2874,6 +3223,11 @@ graceful-fs@^4.1.2:
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz"
integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
+graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+ version "4.2.10"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
+ integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
+
graceful-fs@^4.2.9:
version "4.2.9"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
@@ -3007,6 +3361,11 @@ ignore@^5.0.5, ignore@^5.1.4:
resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz"
integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
+ignore@^5.2.0:
+ version "5.2.4"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
+ integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
+
import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
@@ -3056,6 +3415,11 @@ interpret@^1.0.0:
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
+ip-regex@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
+ integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==
+
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
@@ -3097,6 +3461,11 @@ is-date-object@^1.0.1:
resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz"
integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
+is-extendable@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
+
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
@@ -3179,6 +3548,11 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0:
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+is-windows@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
isarray@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
@@ -3671,9 +4045,9 @@ jose@^1.27.1:
"@panva/asn1.js" "^1.0.0"
jose@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/jose/-/jose-2.0.5.tgz#29746a18d9fff7dcf9d5d2a6f62cb0c7cd27abd3"
- integrity sha512-BAiDNeDKTMgk4tvD0BbxJ8xHEHBZgpeRZ1zGPPsitSyMgjoMWiLGYAE7H7NpP5h0lPppQajQs871E8NHUrzVPA==
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/jose/-/jose-2.0.6.tgz#894ba19169af339d3911be933f913dd02fc57c7c"
+ integrity sha512-FVoPY7SflDodE4lknJmbAHSUjLCzE2H1F6MS0RYKMQ8SR+lNccpMf8R4eqkNYyyUjR5qZReOzZo5C5YiHOCjjg==
dependencies:
"@panva/asn1.js" "^1.0.0"
@@ -3818,11 +4192,9 @@ json-stringify-safe@~5.0.1:
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
json5@2.x, json5@^2.1.2:
- version "2.2.0"
- resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz"
- integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
- dependencies:
- minimist "^1.2.5"
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
json5@^1.0.1:
version "1.0.2"
@@ -3831,6 +4203,15 @@ json5@^1.0.1:
dependencies:
minimist "^1.2.0"
+jsonfile@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+ dependencies:
+ universalify "^2.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
jsonpath-plus@^0.19.0:
version "0.19.0"
resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-0.19.0.tgz#b901e57607055933dc9a8bef0cc25160ee9dd64c"
@@ -3935,6 +4316,18 @@ locate-path@^5.0.0:
dependencies:
p-locate "^4.1.0"
+locate-path@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a"
+ integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==
+ dependencies:
+ p-locate "^6.0.0"
+
+lodash-es@^4.17.21:
+ version "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.clonedeep@^4.5.0:
version "4.5.0"
resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz"
@@ -3955,7 +4348,7 @@ lodash.truncate@^4.4.2:
resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz"
integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
-lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.7.0:
+lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.7.0:
version "4.17.21"
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -3970,6 +4363,14 @@ lowercase-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
+lru-cache@^4.0.1:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
lru-cache@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
@@ -4001,7 +4402,7 @@ merge-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-merge2@^1.3.0:
+merge2@^1.3.0, merge2@^1.4.1:
version "1.4.1"
resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
@@ -4048,7 +4449,7 @@ minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
-minimist@^1.2.0, minimist@^1.2.5:
+minimist@^1.2.0:
version "1.2.7"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
@@ -4098,6 +4499,13 @@ natural-compare@^1.4.0:
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+nmtree@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/nmtree/-/nmtree-1.0.6.tgz#953e057ad545e9e627f1275bd25fea4e92c1cf63"
+ integrity sha512-SUPCoyX5w/lOT6wD/PZEymR+J899984tYEOYjuDqQlIOeX5NSb1MEsCcT0az+dhZD0MLAj5hGBZEpKQxuDdniA==
+ dependencies:
+ commander "^2.11.0"
+
node-fetch@^2.6.1:
version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
@@ -4105,6 +4513,13 @@ node-fetch@^2.6.1:
dependencies:
whatwg-url "^5.0.0"
+node-fetch@^2.6.7:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6"
+ integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==
+ dependencies:
+ whatwg-url "^5.0.0"
+
node-int64@^0.4.0:
version "0.4.0"
resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz"
@@ -4300,6 +4715,13 @@ p-limit@^2.2.0:
dependencies:
p-try "^2.0.0"
+p-limit@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644"
+ integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==
+ dependencies:
+ yocto-queue "^1.0.0"
+
p-locate@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz"
@@ -4314,6 +4736,13 @@ p-locate@^4.1.0:
dependencies:
p-limit "^2.2.0"
+p-locate@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f"
+ integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==
+ dependencies:
+ p-limit "^4.0.0"
+
p-some@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/p-some/-/p-some-5.0.0.tgz"
@@ -4371,6 +4800,11 @@ path-exists@^4.0.0:
resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+path-exists@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7"
+ integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==
+
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -4437,6 +4871,13 @@ pkg-dir@^4.2.0:
dependencies:
find-up "^4.0.0"
+pkg-dir@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11"
+ integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==
+ dependencies:
+ find-up "^6.3.0"
+
pluralize@^8.0.0:
version "8.0.0"
resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz"
@@ -4493,6 +4934,11 @@ pretty-format@^27.5.1:
ansi-styles "^5.0.0"
react-is "^17.0.1"
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
+
progress@^2.0.0:
version "2.0.3"
resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz"
@@ -4506,6 +4952,11 @@ prompts@^2.0.1:
kleur "^3.0.3"
sisteransi "^1.0.5"
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==
+
psl@^1.1.28, psl@^1.1.33:
version "1.8.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
@@ -4530,9 +4981,9 @@ punycode@^2.1.0, punycode@^2.1.1:
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
qs@^6.9.0:
- version "6.10.1"
- resolved "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz"
- integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==
+ version "6.11.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
+ integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
dependencies:
side-channel "^1.0.4"
@@ -4809,11 +5260,25 @@ semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
dependencies:
lru-cache "^6.0.0"
-semver@^6.0.0, semver@^6.3.0:
+semver@^6.0.0, semver@^6.1.0, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+semver@^7.3.7:
+ version "7.3.8"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
+ integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
+ dependencies:
+ lru-cache "^6.0.0"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
+ dependencies:
+ shebang-regex "^1.0.0"
+
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@@ -4821,6 +5286,11 @@ shebang-command@^2.0.0:
dependencies:
shebang-regex "^3.0.0"
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
+
shebang-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
@@ -4864,6 +5334,11 @@ slash@^3.0.0:
resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+slash@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
+ integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
+
slice-ansi@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz"
@@ -4873,6 +5348,11 @@ slice-ansi@^4.0.0:
astral-regex "^2.0.0"
is-fullwidth-code-point "^3.0.0"
+sort-object-keys@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45"
+ integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==
+
source-map-support@^0.5.6:
version "0.5.19"
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz"
@@ -5072,6 +5552,21 @@ symbol-tree@^3.2.4:
resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+synp@^1.9.10:
+ version "1.9.10"
+ resolved "https://registry.yarnpkg.com/synp/-/synp-1.9.10.tgz#53163321a600418c9b06af0db499939ffce12907"
+ integrity sha512-G9Z/TXTaBG1xNslUf3dHFidz/8tvvRaR560WWyOwyI7XrGGEGBTEIIg4hdRh1qFtz8mPYynAUYwWXUg/Zh0Pzw==
+ dependencies:
+ "@yarnpkg/lockfile" "^1.1.0"
+ bash-glob "^2.0.0"
+ colors "1.4.0"
+ commander "^7.2.0"
+ eol "^0.9.1"
+ lodash "4.17.21"
+ nmtree "^1.0.6"
+ semver "^7.3.5"
+ sort-object-keys "^1.1.3"
+
table@^6.0.4:
version "6.3.1"
resolved "https://registry.npmjs.org/table/-/table-6.3.1.tgz"
@@ -5170,6 +5665,15 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0:
psl "^1.1.28"
punycode "^2.1.1"
+tough-cookie@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
+ integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
+ dependencies:
+ ip-regex "^2.1.0"
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
tough-cookie@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz"
@@ -5233,11 +5737,16 @@ tsconfig-paths@^3.9.0:
minimist "^1.2.0"
strip-bom "^3.0.0"
-tslib@^1.8.1, tslib@^1.9.3:
+tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.3:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+tslib@^2.2.0, tslib@^2.4.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
+ integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
+
tsutils@^3.17.1:
version "3.21.0"
resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz"
@@ -5342,6 +5851,11 @@ universalify@^0.1.2:
resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz"
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+universalify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+ integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+
uri-js@^4.2.2:
version "4.4.1"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
@@ -5374,12 +5888,12 @@ uuid@3.3.2:
resolved "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz"
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
-uuid@^3.3.2:
+uuid@^3.3.2, uuid@^3.3.3:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
-uuid@^8.3.2:
+uuid@^8.3.0, uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
@@ -5491,6 +6005,13 @@ which-boxed-primitive@^1.0.2:
is-string "^1.0.5"
is-symbol "^1.0.3"
+which@^1.2.9:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
which@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
@@ -5557,6 +6078,19 @@ xml2js@0.4.19:
sax ">=0.6.0"
xmlbuilder "~9.0.1"
+xml2js@^0.4.19:
+ version "0.4.23"
+ resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
+ integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==
+ dependencies:
+ sax ">=0.6.0"
+ xmlbuilder "~11.0.0"
+
+xmlbuilder@~11.0.0:
+ version "11.0.1"
+ resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
+ integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
+
xmlbuilder@~9.0.1:
version "9.0.7"
resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz"
@@ -5572,6 +6106,11 @@ y18n@^5.0.5:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==
+
yallist@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
@@ -5605,7 +6144,36 @@ yargs@^16.2.0:
y18n "^5.0.5"
yargs-parser "^20.2.2"
+yarn-audit-fix@^9.3.8:
+ version "9.3.8"
+ resolved "https://registry.yarnpkg.com/yarn-audit-fix/-/yarn-audit-fix-9.3.8.tgz#2f83deb3519a4d390bc913ce6b1cd58c0a6558d8"
+ integrity sha512-ftjmghVUrBUYDqgi4dw079duxRwu8PwwwvnsCUwPJgARrmT+f+OkHQiaDqY9PsGxDcYSRv16okZtdOH7p/WgXA==
+ dependencies:
+ "@types/find-cache-dir" "^3.2.1"
+ "@types/fs-extra" "^9.0.13"
+ "@types/lodash-es" "^4.17.6"
+ "@types/semver" "^7.3.12"
+ "@types/yarnpkg__lockfile" "^1.1.5"
+ "@yarnpkg/lockfile" "^1.1.0"
+ chalk "^5.0.1"
+ commander "^10.0.0"
+ find-cache-dir "^4.0.0"
+ find-up "^6.3.0"
+ fs-extra "^10.1.0"
+ globby "^13.1.2"
+ js-yaml "^4.1.0"
+ lodash-es "^4.17.21"
+ pkg-dir "^7.0.0"
+ semver "^7.3.7"
+ synp "^1.9.10"
+ tslib "^2.4.0"
+
yn@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
+
+yocto-queue@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"
+ integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==