update libs

This commit is contained in:
Kirill Chikalin
2025-02-13 17:48:12 +03:00
parent e17e7c2786
commit 275dc598c7
816 changed files with 22479 additions and 10792 deletions

View File

@@ -0,0 +1,34 @@
using System;
using UnityEngine;
using PackageModel = AssetStoreTools.Api.Models.Package;
namespace AssetStoreTools.Uploader.Data
{
internal interface IPackage
{
string PackageId { get; }
string VersionId { get; }
string Name { get; }
string Status { get; }
string Category { get; }
bool IsCompleteProject { get; }
string RootGuid { get; }
string RootPath { get; }
string ProjectPath { get; }
string Modified { get; }
string Size { get; }
bool IsDraft { get; }
Texture2D Icon { get; }
event Action OnUpdate;
event Action OnIconUpdate;
string FormattedSize();
string FormattedModified();
void UpdateData(PackageModel source);
void UpdateIcon(Texture2D texture);
PackageModel ToModel();
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: b92f2ed98d0b31a479aa2bfd95528fbd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 115
packageName: Asset Store Publishing Tools
packageVersion: 12.0.1
assetPath: Packages/com.unity.asset-store-tools/Editor/Uploader/Scripts/Data/Abstractions/IPackage.cs
uploadId: 724584

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
namespace AssetStoreTools.Uploader.Data
{
internal interface IPackageContent
{
event Action<IWorkflow> OnActiveWorkflowChanged;
IWorkflow GetActiveWorkflow();
List<IWorkflow> GetAvailableWorkflows();
void SetActiveWorkflow(IWorkflow workflow);
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 45ce41158c3174149b7056a30ac901db
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 115
packageName: Asset Store Publishing Tools
packageVersion: 12.0.1
assetPath: Packages/com.unity.asset-store-tools/Editor/Uploader/Scripts/Data/Abstractions/IPackageContent.cs
uploadId: 724584

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
namespace AssetStoreTools.Uploader.Data
{
internal interface IPackageGroup
{
string Name { get; }
List<IPackage> Packages { get; }
event Action<List<IPackage>> OnPackagesSorted;
event Action<List<IPackage>> OnPackagesFiltered;
void Sort(PackageSorting sortingType);
void Filter(string filter);
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: f683845071b8891498156d95a1a5c2dd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 115
packageName: Asset Store Publishing Tools
packageVersion: 12.0.1
assetPath: Packages/com.unity.asset-store-tools/Editor/Uploader/Scripts/Data/Abstractions/IPackageGroup.cs
uploadId: 724584

View File

@@ -0,0 +1,36 @@
using AssetStoreTools.Api;
using AssetStoreTools.Api.Responses;
using AssetStoreTools.Exporter;
using AssetStoreTools.Validator.Data;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace AssetStoreTools.Uploader.Data
{
internal interface IWorkflow
{
string Name { get; }
string DisplayName { get; }
string PackageName { get; }
string PackageExtension { get; }
bool IsPathSet { get; }
event Action OnChanged;
event Action<UploadStatus?, float?> OnUploadStateChanged;
bool GenerateHighQualityPreviews { get; set; }
ValidationSettings LastValidationSettings { get; }
ValidationResult LastValidationResult { get; }
IEnumerable<string> GetAllPaths();
ValidationResult Validate();
Task<PackageExporterResult> ExportPackage(string outputPath);
Task<bool> ValidatePackageUploadedVersions();
Task<PackageUploadResponse> UploadPackage(string exportedPackagePath);
void AbortUpload();
void ResetUploadStatus();
Task RefreshPackage();
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 7a2f796eadafa774bae89cf3939611dd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 115
packageName: Asset Store Publishing Tools
packageVersion: 12.0.1
assetPath: Packages/com.unity.asset-store-tools/Editor/Uploader/Scripts/Data/Abstractions/IWorkflow.cs
uploadId: 724584

View File

@@ -0,0 +1,18 @@
using AssetStoreTools.Api;
using AssetStoreTools.Api.Responses;
using AssetStoreTools.Uploader.Services.Analytics.Data;
using System;
using System.Threading.Tasks;
using UnityEngine.Analytics;
namespace AssetStoreTools.Uploader.Data
{
internal interface IWorkflowServices
{
Task<PackageUploadedUnityVersionDataResponse> GetPackageUploadedVersions(IPackage package, int timeoutMs);
Task<PackageUploadResponse> UploadPackage(IPackageUploader uploader, IProgress<float> progress);
void StopUploading(IPackageUploader uploader);
AnalyticsResult SendAnalytic(IAssetStoreAnalytic data);
Task<RefreshedPackageDataResponse> UpdatePackageData(IPackage package);
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 0ae017363fa41ff4d9926dc4a5852246
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 115
packageName: Asset Store Publishing Tools
packageVersion: 12.0.1
assetPath: Packages/com.unity.asset-store-tools/Editor/Uploader/Scripts/Data/Abstractions/IWorkflowServices.cs
uploadId: 724584

View File

@@ -0,0 +1,253 @@
using AssetStoreTools.Api;
using AssetStoreTools.Api.Responses;
using AssetStoreTools.Exporter;
using AssetStoreTools.Previews;
using AssetStoreTools.Previews.Data;
using AssetStoreTools.Previews.Generators;
using AssetStoreTools.Uploader.Services.Analytics.Data;
using AssetStoreTools.Utility;
using AssetStoreTools.Validator;
using AssetStoreTools.Validator.Data;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using UnityEngine;
namespace AssetStoreTools.Uploader.Data
{
internal abstract class WorkflowBase : IWorkflow
{
protected IPackage Package;
public abstract string Name { get; }
public abstract string DisplayName { get; }
public string PackageName => Package.Name;
public abstract string PackageExtension { get; }
public abstract bool IsPathSet { get; }
protected string LocalPackageGuid;
protected string LocalPackagePath;
protected string LocalProjectPath;
public bool GenerateHighQualityPreviews { get; set; }
public ValidationSettings LastValidationSettings { get; private set; }
public ValidationResult LastValidationResult { get; private set; }
private IWorkflowServices _services;
private IPackageUploader _activeUploader;
public abstract event Action OnChanged;
public event Action<UploadStatus?, float?> OnUploadStateChanged;
public WorkflowBase(IPackage package, IWorkflowServices services)
{
Package = package;
_services = services;
}
public abstract IEnumerable<string> GetAllPaths();
public abstract IValidator CreateValidator();
public ValidationResult Validate()
{
var validator = CreateValidator();
var result = CreateValidator().Validate();
LastValidationSettings = validator.Settings;
LastValidationResult = result;
return result;
}
protected IPreviewGenerator CreatePreviewGenerator(List<string> inputPaths)
{
PreviewGenerationSettings settings;
IPreviewGenerator generator;
// Filter out ProjectSettings
inputPaths = inputPaths.Where(x => x == "Assets" || x.StartsWith("Assets/") || x.StartsWith("Packages/")).ToList();
if (!GenerateHighQualityPreviews)
{
settings = new NativePreviewGenerationSettings()
{
InputPaths = inputPaths.ToArray(),
OverwriteExisting = false,
OutputPath = Constants.Previews.Native.DefaultOutputPath,
Format = Constants.Previews.Native.DefaultFormat,
PreviewFileNamingFormat = Constants.Previews.DefaultFileNameFormat,
WaitForPreviews = Constants.Previews.Native.DefaultWaitForPreviews,
ChunkedPreviewLoading = Constants.Previews.Native.DefaultChunkedPreviewLoading,
ChunkSize = Constants.Previews.Native.DefaultChunkSize
};
generator = new NativePreviewGenerator((NativePreviewGenerationSettings)settings);
}
else
{
settings = new CustomPreviewGenerationSettings()
{
InputPaths = inputPaths.ToArray(),
OverwriteExisting = false,
Width = Constants.Previews.Custom.DefaultWidth,
Height = Constants.Previews.Custom.DefaultHeight,
Depth = Constants.Previews.Custom.DefaultDepth,
NativeWidth = Constants.Previews.Custom.DefaultNativeWidth,
NativeHeight = Constants.Previews.Custom.DefaultNativeHeight,
OutputPath = Constants.Previews.Custom.DefaultOutputPath,
Format = Constants.Previews.Custom.DefaultFormat,
PreviewFileNamingFormat = Constants.Previews.DefaultFileNameFormat,
AudioSampleColor = Constants.Previews.Custom.DefaultAudioSampleColor,
AudioBackgroundColor = Constants.Previews.Custom.DefaultAudioBackgroundColor,
};
generator = new CustomPreviewGenerator((CustomPreviewGenerationSettings)settings);
}
return generator;
}
public abstract IPackageExporter CreateExporter(string outputPath);
public virtual async Task<PackageExporterResult> ExportPackage(string outputPath)
{
var exporter = CreateExporter(outputPath);
var result = await exporter.Export();
return result;
}
public async Task<bool> ValidatePackageUploadedVersions()
{
var unityVersionSupported = string.Compare(Application.unityVersion, Constants.Uploader.MinRequiredUnitySupportVersion, StringComparison.Ordinal) >= 0;
if (unityVersionSupported)
return true;
var response = await _services.GetPackageUploadedVersions(Package, 5000);
if (response.Cancelled || response.Success == false)
return true;
return response.UnityVersions.Any(x => string.Compare(x, Constants.Uploader.MinRequiredUnitySupportVersion, StringComparison.Ordinal) >= 0);
}
private bool ValidatePackageBeforeUpload(string packagePath, out string error)
{
error = string.Empty;
if (!File.Exists(packagePath))
{
error = $"File '{packagePath}' was not found.";
return false;
}
if (!ValidatePackageSize(packagePath, out error))
{
return false;
}
return true;
}
private bool ValidatePackageSize(string packagePath, out string error)
{
error = string.Empty;
long packageSize = new FileInfo(packagePath).Length;
long packageSizeLimit = Constants.Uploader.MaxPackageSizeBytes;
if (packageSize <= packageSizeLimit)
return true;
float packageSizeInGB = packageSize / (float)1073741824; // (1024 * 1024 * 1024)
float maxPackageSizeInGB = packageSizeLimit / (float)1073741824;
error = $"The size of your package ({packageSizeInGB:0.0} GB) exceeds the maximum allowed package size of {maxPackageSizeInGB:0} GB. " +
$"Please reduce the size of your package.";
return false;
}
public async Task<PackageUploadResponse> UploadPackage(string packagePath)
{
if (!ValidatePackageBeforeUpload(packagePath, out var error))
{
return new PackageUploadResponse() { Success = false, Status = UploadStatus.Fail, Exception = new Exception(error) };
}
_activeUploader = CreatePackageUploader(packagePath);
var progress = new Progress<float>();
var time = System.Diagnostics.Stopwatch.StartNew();
progress.ProgressChanged += ReportUploadProgress;
var response = await _services.UploadPackage(_activeUploader, progress);
progress.ProgressChanged -= ReportUploadProgress;
// Send analytics
time.Stop();
if (!response.Cancelled)
SendAnalytics(packagePath, response.Status, time.Elapsed.TotalSeconds);
OnUploadStateChanged?.Invoke(response.Status, null);
_activeUploader = null;
return response;
}
protected abstract IPackageUploader CreatePackageUploader(string exportedPackagePath);
private void ReportUploadProgress(object _, float value)
{
OnUploadStateChanged?.Invoke(null, value);
}
private void SendAnalytics(string packagePath, UploadStatus uploadStatus, double timeTakenSeconds)
{
try
{
var analytic = new PackageUploadAnalytic(
packageId: Package.PackageId,
category: Package.Category,
usedValidator: LastValidationResult != null,
validationSettings: LastValidationSettings,
validationResult: LastValidationResult,
uploadFinishedReason: uploadStatus,
timeTaken: timeTakenSeconds,
packageSize: new FileInfo(packagePath).Length,
workflow: Name
);
var result = _services.SendAnalytic(analytic);
}
catch (Exception e) { ASDebug.LogError($"Could not send analytics: {e}"); }
}
public void AbortUpload()
{
if (_activeUploader != null)
_services.StopUploading(_activeUploader);
_activeUploader = null;
}
public void ResetUploadStatus()
{
OnUploadStateChanged?.Invoke(UploadStatus.Default, 0f);
}
public async Task RefreshPackage()
{
var response = await _services.UpdatePackageData(Package);
if (!response.Success)
return;
Package.UpdateData(response.Package);
}
public abstract bool IsPathValid(string path, out string reason);
protected abstract void Serialize();
protected abstract void Deserialize();
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: d0e87ee17aa944c42b1c335abe19daaf
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 115
packageName: Asset Store Publishing Tools
packageVersion: 12.0.1
assetPath: Packages/com.unity.asset-store-tools/Editor/Uploader/Scripts/Data/Abstractions/WorkflowBase.cs
uploadId: 724584