diff --git a/.vtexignore b/.vtexignore index 159ff15a..a6465303 100644 --- a/.vtexignore +++ b/.vtexignore @@ -1,8 +1,6 @@ node_modules/ +node/node_modules/ .editorconfig .eslintrc .gitignore README.md -dotnet/obj/ -dotnet/bin/ -dotnet-wrapper/ \ No newline at end of file diff --git a/availability-notify.sln b/availability-notify.sln deleted file mode 100644 index 41963a91..00000000 --- a/availability-notify.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31424.327 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "availability-notify", "dotnet\availability-notify.csproj", "{975DF5C0-2AC1-46FE-85D7-CE5FCF33D1B2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {975DF5C0-2AC1-46FE-85D7-CE5FCF33D1B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {975DF5C0-2AC1-46FE-85D7-CE5FCF33D1B2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {975DF5C0-2AC1-46FE-85D7-CE5FCF33D1B2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {975DF5C0-2AC1-46FE-85D7-CE5FCF33D1B2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {18AA643F-EED9-4E50-99A7-58DE45CF5539} - EndGlobalSection -EndGlobal diff --git a/dotnet/Controlers/EventsController.cs b/dotnet/Controlers/EventsController.cs deleted file mode 100644 index bc8ecc17..00000000 --- a/dotnet/Controlers/EventsController.cs +++ /dev/null @@ -1,129 +0,0 @@ -namespace service.Controllers -{ - using System; - using System.Threading; - using System.Threading.Tasks; - using AvailabilityNotify.Data; - using AvailabilityNotify.Models; - using AvailabilityNotify.Services; - using Microsoft.AspNetCore.Mvc; - using Newtonsoft.Json; - using Vtex.Api.Context; - - static class Throttle - { - public static int counter = 0; - } - - public class EventsController : Controller - { - private readonly IVtexAPIService _vtexAPIService; - private readonly IIOServiceContext _context; - private readonly IAvailabilityRepository _availabilityRepository; - - public EventsController(IVtexAPIService vtexAPIService, IIOServiceContext context, IAvailabilityRepository availabilityRepository) - { - this._vtexAPIService = vtexAPIService ?? throw new ArgumentNullException(nameof(vtexAPIService)); - this._context = context ?? throw new ArgumentNullException(nameof(context)); - this._availabilityRepository = availabilityRepository ?? throw new ArgumentNullException(nameof(availabilityRepository)); - } - - public async Task BroadcasterNotification(string account, string workspace) - { - var incremented_counter = Interlocked.Increment(ref Throttle.counter); - if (incremented_counter > 10) - { - // Throttling -- event system will retry the event later - Interlocked.Decrement(ref Throttle.counter); - return StatusCode(429); - } - - try - { - BroadcastNotification notification = null; - string bodyAsText = string.Empty; - try - { - bodyAsText = new System.IO.StreamReader(HttpContext.Request.Body).ReadToEndAsync().Result; - notification = JsonConvert.DeserializeObject(bodyAsText); - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("BroadcasterNotification", null, "Error reading Notification", ex); - Interlocked.Decrement(ref Throttle.counter); - return BadRequest(); - } - - string skuId = notification.IdSku; - if (string.IsNullOrEmpty(skuId)) - { - _context.Vtex.Logger.Warn("BroadcasterNotification", null, "Empty Sku"); - Interlocked.Decrement(ref Throttle.counter); - - // return OK so that notification is not retried - return Ok(); - } - - bool isActive = notification.IsActive; - bool inventoryUpdated = notification.StockModified; - if (!isActive || !inventoryUpdated) - { - // If SKU is not active or inventory hasn't changed, notification is not relevant - Interlocked.Decrement(ref Throttle.counter); - - // return OK so that notification is not retried - return Ok(); - } - - DateTime processingStarted = _availabilityRepository.CheckImportLock(skuId).Result; - TimeSpan elapsedTime = DateTime.Now - processingStarted; - if (elapsedTime.TotalMinutes < 1) - { - // Commenting this out to reduce noise - _context.Vtex.Logger.Warn("BroadcasterNotification", null, $"Sku {skuId} blocked by lock. Processing started: {processingStarted}"); - Interlocked.Decrement(ref Throttle.counter); - return Ok(); - } - - _ = _availabilityRepository.SetImportLock(DateTime.Now, skuId); - - bool processed = _vtexAPIService.ProcessNotification(notification).Result; - _context.Vtex.Logger.Info("BroadcasterNotification", null, $"Processed Notification? {processed} : {bodyAsText}"); - - // _ = _availabilityRepository.ClearImportLock(skuId); - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("BroadcasterNotification", null, "Error processing Notification", ex); - Interlocked.Decrement(ref Throttle.counter); - throw; - } - - Interlocked.Decrement(ref Throttle.counter); - return Ok(); - } - - public async Task OnAppInstalled([FromBody] AppInstalledEvent @event) - { - if (@event.To.Id.Contains(Constants.APP_SETTINGS)) - { - await _vtexAPIService.VerifySchema(); - await _vtexAPIService.CreateDefaultTemplate(); - } - } - - public void AllStates(string account, string workspace) - { - try - { - string bodyAsText = new System.IO.StreamReader(HttpContext.Request.Body).ReadToEndAsync().Result; - AllStatesNotification allStatesNotification = JsonConvert.DeserializeObject(bodyAsText); - _vtexAPIService.ProcessNotification(allStatesNotification); - } - catch (Exception ex) - { - _context.Vtex.Logger.Warn("AllStates", null, $"Error processing Orders Broadcaster Notification: {ex.Message}"); - } - } - } -} diff --git a/dotnet/Controlers/RoutesController.cs b/dotnet/Controlers/RoutesController.cs deleted file mode 100644 index 66b771e1..00000000 --- a/dotnet/Controlers/RoutesController.cs +++ /dev/null @@ -1,87 +0,0 @@ -namespace service.Controllers -{ - using System; - using System.Collections.Generic; - using System.Net; - using System.Threading.Tasks; - using AvailabilityNotify.Models; - using AvailabilityNotify.Services; - using Microsoft.AspNetCore.Http; - using Microsoft.AspNetCore.Mvc; - using Newtonsoft.Json; - using Vtex.Api.Context; - - public class RoutesController : Controller - { - private readonly IHttpContextAccessor _httpContextAccessor; - private readonly IIOServiceContext _context; - private readonly IVtexAPIService _vtexAPIService; - - public RoutesController(IHttpContextAccessor httpContextAccessor, IIOServiceContext context, IVtexAPIService vtexAPIService) - { - this._httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); - this._context = context ?? throw new ArgumentNullException(nameof(context)); - this._vtexAPIService = vtexAPIService ?? throw new ArgumentNullException(nameof(vtexAPIService)); - } - - public async Task ProcessNotification() - { - Response.Headers.Add("Cache-Control", "private"); - ActionResult status = BadRequest(); - if ("post".Equals(HttpContext.Request.Method, StringComparison.OrdinalIgnoreCase)) - { - string bodyAsText = await new System.IO.StreamReader(HttpContext.Request.Body).ReadToEndAsync(); - AffiliateNotification notification = JsonConvert.DeserializeObject(bodyAsText); - bool sent = await _vtexAPIService.ProcessNotification(notification); - if(sent) - { - status = Ok(); - } - } - - return status; - } - - public async Task Initialize() - { - Response.Headers.Add("Cache-Control", "private"); - ActionResult status = BadRequest(); - bool schema = await _vtexAPIService.VerifySchema(); - bool template = await _vtexAPIService.CreateDefaultTemplate(); - if(schema && template) - { - status = Ok(); - } - - return status; - } - - public async Task PrcocessAllRequests() - { - List results = await _vtexAPIService.ProcessAllRequests(); - _context.Vtex.Logger.Info("PrcocessAllRequests", null, string.Join( ", ", results)); - return Ok(); - } - - public async Task ProcessUnsentRequests() - { - ProcessingResult[] results = await _vtexAPIService.ProcessUnsentRequests(); - _context.Vtex.Logger.Info("ProcessUnsentRequests", null, JsonConvert.SerializeObject(results)); - return Json(results); - } - - public async Task ListNotifyRequests() - { - HttpStatusCode isValidAdminToken = await _vtexAPIService.IsValidAuthUser(); - if (isValidAdminToken.Equals(HttpStatusCode.OK)) - { - NotifyRequest[] results = await _vtexAPIService.ListNotifyRequests(); - return Json(results); - } - else - { - return Unauthorized(); - } - } - } -} diff --git a/dotnet/Data/AvailabilityRepository.cs b/dotnet/Data/AvailabilityRepository.cs deleted file mode 100644 index 9aae050f..00000000 --- a/dotnet/Data/AvailabilityRepository.cs +++ /dev/null @@ -1,425 +0,0 @@ -using Microsoft.AspNetCore.Http; -using Newtonsoft.Json; -using AvailabilityNotify.Data; -using AvailabilityNotify.Models; -using System; -using System.Net.Http; -using System.Text; -using System.Threading.Tasks; -using Vtex.Api.Context; -using System.Net; -using System.Collections.Generic; -using System.Net.Http.Headers; -using System.Linq; - -namespace AvailabilityNotify.Services -{ - public class AvailabilityRepository : IAvailabilityRepository - { - private readonly IVtexEnvironmentVariableProvider _environmentVariableProvider; - private readonly IHttpContextAccessor _httpContextAccessor; - private readonly IHttpClientFactory _clientFactory; - private readonly IIOServiceContext _context; - private readonly string _applicationName; - - - public AvailabilityRepository(IVtexEnvironmentVariableProvider environmentVariableProvider, IHttpContextAccessor httpContextAccessor, IHttpClientFactory clientFactory, IIOServiceContext context) - { - this._environmentVariableProvider = environmentVariableProvider ?? - throw new ArgumentNullException(nameof(environmentVariableProvider)); - - this._httpContextAccessor = httpContextAccessor ?? - throw new ArgumentNullException(nameof(httpContextAccessor)); - - this._clientFactory = clientFactory ?? - throw new ArgumentNullException(nameof(clientFactory)); - - this._context = context ?? - throw new ArgumentNullException(nameof(context)); - - this._applicationName = - $"{this._environmentVariableProvider.ApplicationVendor}.{this._environmentVariableProvider.ApplicationName}"; - } - - public async Task GetMerchantSettings() - { - // Load merchant settings - // 'http://apps.${region}.vtex.io/${account}/${workspace}/apps/${vendor.appName}/settings' - MerchantSettings merchantSettings = new MerchantSettings(); - string url = $"http://apps.{this._environmentVariableProvider.Region}.vtex.io/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_WORKSPACE]}/apps/{Constants.APP_SETTINGS}/settings"; - ResponseWrapper responseWrapper = await this.SendRequest(url, HttpMethod.Get); - if (!responseWrapper.IsSuccess) - { - _context.Vtex.Logger.Error("GetMerchantSettings", null, $"Failed to get merchant settings '{responseWrapper.Message}' "); - } - else - { - merchantSettings = JsonConvert.DeserializeObject(responseWrapper.ResponseText); - } - - return merchantSettings; - } - - public async Task SetMerchantSettings(MerchantSettings merchantSettings) - { - if (merchantSettings == null) - { - merchantSettings = new MerchantSettings(); - } - - string url = $"http://apps.{this._environmentVariableProvider.Region}.vtex.io/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_WORKSPACE]}/apps/{Constants.APP_SETTINGS}/settings"; - ResponseWrapper responseWrapper = await this.SendRequest(url, HttpMethod.Put, merchantSettings); - if (!responseWrapper.IsSuccess) - { - _context.Vtex.Logger.Error("SetMerchantSettings", null, $"Failed to set merchant settings '{responseWrapper.Message}' "); - } - } - - public async Task VerifySchema() - { - // https://{{accountName}}.vtexcommercestable.com.br/api/dataentities/{{data_entity_name}}/schemas/{{schema_name}} - - string url = $"http://{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}.vtexcommercestable.com.br/api/dataentities/{Constants.DATA_ENTITY}/schemas/{Constants.SCHEMA}"; - ResponseWrapper responseWrapper = await this.SendRequest(url, HttpMethod.Get); - if (!responseWrapper.IsSuccess) - { - _context.Vtex.Logger.Error("VerifySchema", null, $"Failed to get schema '{responseWrapper.Message}' "); - } - else if (!responseWrapper.ResponseText.Equals(Constants.SCHEMA_JSON)) - { - url = $"http://{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}.vtexcommercestable.com.br/api/dataentities/{Constants.DATA_ENTITY}/schemas/{Constants.SCHEMA}"; - responseWrapper = await this.SendRequest(url, HttpMethod.Put, null, null, null, Constants.SCHEMA_JSON); - _context.Vtex.Logger.Debug("VerifySchema", null, $"Applying Schema [{responseWrapper.IsSuccess}] '{responseWrapper.ResponseText}' "); - } - - return responseWrapper.IsSuccess; - } - - public async Task SaveNotifyRequest(NotifyRequest notifyRequest, RequestContext requestContext) - { - // PATCH https://{{accountName}}.vtexcommercestable.com.br/api/dataentities/{{data_entity_name}}/documents - - string url = $"http://{requestContext.Account}.vtexcommercestable.com.br/api/dataentities/{Constants.DATA_ENTITY}/documents"; - ResponseWrapper responseWrapper = await this.SendRequest(url, HttpMethod.Put, notifyRequest); - if (!responseWrapper.IsSuccess) - { - _context.Vtex.Logger.Error("SaveNotifyRequest", null, $"Failed to save '{JsonConvert.SerializeObject(notifyRequest)}' "); - } - - return responseWrapper.IsSuccess; - } - - public async Task DeleteNotifyRequest(string documentId) - { - // DELETE https://{accountName}.{environment}.com.br/api/dataentities/data_entity_name/documents/id - - string url = $"http://{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}.vtexcommercestable.com.br/api/dataentities/{Constants.DATA_ENTITY}/documents/{documentId}"; - ResponseWrapper responseWrapper = await this.SendRequest(url, HttpMethod.Delete); - if (!responseWrapper.IsSuccess) - { - _context.Vtex.Logger.Error("DeleteNotifyRequest", null, $"Failed to delete '{documentId}' "); - } - - return responseWrapper.IsSuccess; - } - - public async Task ListNotifyRequests() - { - NotifyRequest[] notifyRequests = new NotifyRequest[0]; - RequestContext requestContext = new RequestContext - { - Account = _context.Vtex.Account, - AuthToken = _context.Vtex.AuthToken - }; - - try - { - notifyRequests = await this.ScrollRequests(requestContext); - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("ListNotifyRequests", null, null, ex); - } - - return notifyRequests; - } - - public async Task ListUnsentNotifyRequests() - { - NotifyRequest[] notifyRequests = new NotifyRequest[0]; - RequestContext requestContext = new RequestContext - { - Account = _context.Vtex.Account, - AuthToken = _context.Vtex.AuthToken - }; - - try - { - notifyRequests = await this.SearchRequests(requestContext, "notificationSend=false"); - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("ListUnsentNotifyRequests", null, null, ex); - } - - return notifyRequests; - } - - public async Task ListRequestsForSkuId(string skuId, RequestContext requestContext) - { - NotifyRequest[] notifyRequests = new NotifyRequest[0]; - - try - { - notifyRequests = await this.SearchRequests(requestContext, $"notificationSend=false&skuId={skuId}"); - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("ListRequestsForSkuId", null, $"Sku '{skuId}' ", ex); - } - - return notifyRequests; - } - - public async Task SearchRequests(RequestContext requestContext, string searchString, int? searchFrom = null) - { - List notifyRequestsAll = new List(); - if (searchFrom == null) - { - searchFrom = 0; - } - - int searchTo = (searchFrom ?? 0) + 99; - - string url = $"http://{requestContext.Account}.vtexcommercestable.com.br/api/dataentities/{Constants.DATA_ENTITY}/search?_fields={Constants.FIELDS}&_schema={Constants.SCHEMA}&{searchString}"; - ResponseWrapper responseWrapper = await this.SendRequest(url, HttpMethod.Get, null, searchFrom.ToString(), searchTo.ToString()); - if (responseWrapper.IsSuccess) - { - NotifyRequest[] notifyRequests = JsonConvert.DeserializeObject(responseWrapper.ResponseText); - notifyRequestsAll.AddRange(notifyRequests); - int from = 0; - int to = 0; - int total = 0; - if (!string.IsNullOrEmpty(responseWrapper.To) && !string.IsNullOrEmpty(responseWrapper.From) && int.TryParse(responseWrapper.To, out to) && int.TryParse(responseWrapper.From, out from) && int.TryParse(responseWrapper.Total, out total) && to < total) - { - int newFrom = to + 1; - notifyRequests = await this.SearchRequests(requestContext, searchString, newFrom); - notifyRequestsAll.AddRange(notifyRequests); - } - } - - return notifyRequestsAll.ToArray(); - } - - public async Task ScrollRequests(RequestContext requestContext) - { - List notifyRequestsAll = new List(); - string url = $"http://{requestContext.Account}.vtexcommercestable.com.br/api/dataentities/{Constants.DATA_ENTITY}/scroll?_fields={Constants.FIELDS}"; - ResponseWrapper responseWrapper = await this.SendRequest(url, HttpMethod.Get); - if (responseWrapper.IsSuccess) - { - NotifyRequest[] notifyRequests = JsonConvert.DeserializeObject(responseWrapper.ResponseText); - notifyRequestsAll.AddRange(notifyRequests); - int returnedRecords = notifyRequests.Length; - while (!string.IsNullOrEmpty(responseWrapper.MasterDataToken) && returnedRecords > 0) - { - url = $"http://{requestContext.Account}.vtexcommercestable.com.br/api/dataentities/{Constants.DATA_ENTITY}/scroll?_token={responseWrapper.MasterDataToken}"; - responseWrapper = await this.SendRequest(url, HttpMethod.Get); - if (responseWrapper.IsSuccess) - { - notifyRequests = JsonConvert.DeserializeObject(responseWrapper.ResponseText); - returnedRecords = notifyRequests.Length; - if (returnedRecords > 0) - { - notifyRequestsAll.AddRange(notifyRequests); - } - } - else - { - _context.Vtex.Logger.Error("ScrollRequests", null, responseWrapper.ResponseText); - } - } - } - - return notifyRequestsAll.ToArray(); - } - - public async Task SetImportLock(DateTime importStartTime, string sku) - { - var processingLock = new Lock - { - ProcessingStarted = importStartTime, - }; - - string url = $"http://infra.io.vtex.com/vbase/v2/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_WORKSPACE]}/buckets/{this._applicationName}/{Constants.BUCKET}/files/{Constants.LOCK}-{sku}"; - ResponseWrapper responseWrapper = await this.SendRequest(url, HttpMethod.Put, processingLock); - if (!responseWrapper.IsSuccess) - { - _context.Vtex.Logger.Error("SetImportLock", null, responseWrapper.Message); - } - } - - public async Task CheckImportLock(string sku) - { - Lock processingLock = new Lock - { - ProcessingStarted = new DateTime() - }; - - string url = $"http://infra.io.vtex.com/vbase/v2/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_WORKSPACE]}/buckets/{this._applicationName}/{Constants.BUCKET}/files/{Constants.LOCK}-{sku}"; - ResponseWrapper responseWrapper = await this.SendRequest(url, HttpMethod.Get); - - if (responseWrapper.IsSuccess) - { - processingLock = JsonConvert.DeserializeObject(responseWrapper.ResponseText); - } - - return processingLock.ProcessingStarted; - } - - public async Task ClearImportLock(string sku) - { - string url = $"http://infra.io.vtex.com/vbase/v2/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_WORKSPACE]}/buckets/{this._applicationName}/{Constants.BUCKET}/files/{Constants.LOCK}-{sku}"; - ResponseWrapper responseWrapper = await this.SendRequest(url, HttpMethod.Delete); - if (!responseWrapper.IsSuccess) - { - _context.Vtex.Logger.Error("ClearImportLock", null, $"Failed to clear lock. {responseWrapper.Message} Sku: {sku}"); - } - } - - public async Task GetLastUnsentCheck() - { - DateTime lastCheck = DateTime.Now; - string url = $"http://vbase.{this._environmentVariableProvider.Region}.vtex.io/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_WORKSPACE]}/buckets/{this._applicationName}/{Constants.BUCKET}/files/{Constants.UNSENT_CHECK}"; - ResponseWrapper responseWrapper = await this.SendRequest(url, HttpMethod.Get); - if (responseWrapper.IsSuccess) - { - if (!string.IsNullOrEmpty(responseWrapper.ResponseText)) - { - lastCheck = JsonConvert.DeserializeObject(responseWrapper.ResponseText); - } - else - { - await this.SetLastUnsentCheck(lastCheck); - } - } - else - { - await this.SetLastUnsentCheck(lastCheck.AddDays(-7)); - } - - return lastCheck; - } - - public async Task SetLastUnsentCheck(DateTime lastCheck) - { - string url = $"http://vbase.{this._environmentVariableProvider.Region}.vtex.io/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}/{this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_WORKSPACE]}/buckets/{this._applicationName}/{Constants.BUCKET}/files/{Constants.UNSENT_CHECK}"; - ResponseWrapper responseWrapper = await this.SendRequest(url, HttpMethod.Put, lastCheck); - if (!responseWrapper.IsSuccess) - { - _context.Vtex.Logger.Error("SetLastUnsentCheck", null, $"Failed to set last check. {responseWrapper.Message}"); - } - } - - public async Task SendRequest(string url, HttpMethod httpMethod, object requestObject = null, string from = null, string to = null, string jsonSerializedData = null) - { - ResponseWrapper responseWrapper = null; - string jsonSerializedRequest = string.Empty; - - var request = new HttpRequestMessage - { - Method = httpMethod, - RequestUri = new Uri(url) - }; - - if (requestObject != null) - { - try - { - jsonSerializedRequest = JsonConvert.SerializeObject(requestObject); - request.Content = new StringContent(jsonSerializedRequest, Encoding.UTF8, Constants.APPLICATION_JSON); - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("SendRequest", null, $"Error Serializing Request Object", ex); - } - } - else if (!string.IsNullOrEmpty(jsonSerializedData)) - { - request.Content = new StringContent(jsonSerializedData, Encoding.UTF8, Constants.APPLICATION_JSON); - jsonSerializedRequest = jsonSerializedData; // for logging - } - - if (!string.IsNullOrEmpty(from) && !string.IsNullOrEmpty(to)) - { - request.Headers.Add("REST-Range", $"resources={from}-{to}"); - } - - request.Headers.Add(Constants.USE_HTTPS_HEADER_NAME, "true"); - string authToken = _context.Vtex.AuthToken; - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - request.Headers.Add(Constants.VTEX_ID_HEADER_NAME, authToken); - request.Headers.Add(Constants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); - } - - var client = _clientFactory.CreateClient(); - - try - { - HttpResponseMessage responseMessage = await client.SendAsync(request); - string responseContent = await responseMessage.Content.ReadAsStringAsync(); - responseWrapper = new ResponseWrapper - { - IsSuccess = responseMessage.IsSuccessStatusCode, - ResponseText = responseContent - }; - - if (!responseWrapper.IsSuccess) - { - _context.Vtex.Logger.Warn("SendRequest", null, $"Problem Sending Request '{request.RequestUri}'.\n'{responseWrapper.ResponseText}' {jsonSerializedRequest}"); - } - - HttpHeaders headers = responseMessage.Headers; - IEnumerable values; - if (headers.TryGetValues("REST-Content-Range", out values)) - { - // resources 0-10/168 - string resources = values.First(); - string[] split = resources.Split(' '); - string ranges = split[1]; - string[] splitRanges = ranges.Split('/'); - string fromTo = splitRanges[0]; - string total = splitRanges[1]; - string[] splitFromTo = fromTo.Split('-'); - string responseFrom = splitFromTo[0]; - string responseTo = splitFromTo[1]; - - responseWrapper.Total = total; - responseWrapper.From = responseFrom; - responseWrapper.To = responseTo; - - // _context.Vtex.Logger.Debug("SendRequest", "REST-Content-Range", resources); - } - - if (headers.TryGetValues("X-VTEX-MD-TOKEN", out values)) - { - string token = values.First(); - responseWrapper.MasterDataToken = token; - } - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("SendRequest", null, $"Error Sending Request to {request.RequestUri}\n{jsonSerializedRequest}", ex); - responseWrapper = new ResponseWrapper - { - IsSuccess = false, - Message = ex.Message - }; - } - - return responseWrapper; - } - } -} diff --git a/dotnet/Data/Constants.cs b/dotnet/Data/Constants.cs deleted file mode 100644 index b14ccde2..00000000 --- a/dotnet/Data/Constants.cs +++ /dev/null @@ -1,94 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Data -{ - public class Constants - { - public const string AppToken = "X-VTEX-API-AppToken"; - public const string AppKey = "X-VTEX-API-AppKey"; - public const string EndPointKey = "availability-notify"; - public const string AppName = "availability-notify"; - - public const string FORWARDED_HEADER = "X-Forwarded-For"; - public const string FORWARDED_HOST = "X-Forwarded-Host"; - public const string APPLICATION_JSON = "application/json"; - public const string HEADER_VTEX_CREDENTIAL = "X-Vtex-Credential"; - public const string AUTHORIZATION_HEADER_NAME = "Authorization"; - public const string PROXY_AUTHORIZATION_HEADER_NAME = "Proxy-Authorization"; - public const string USE_HTTPS_HEADER_NAME = "X-Vtex-Use-Https"; - public const string PROXY_TO_HEADER_NAME = "X-Vtex-Proxy-To"; - public const string VTEX_ACCOUNT_HEADER_NAME = "X-Vtex-Account"; - public const string ENVIRONMENT = "vtexcommercestable"; - public const string LOCAL_ENVIRONMENT = "myvtex"; - public const string VTEX_ID_HEADER_NAME = "VtexIdclientAutCookie"; - public const string HEADER_VTEX_WORKSPACE = "X-Vtex-Workspace"; - public const string APP_SETTINGS = "vtex.availability-notify"; - public const string ACCEPT = "Accept"; - public const string CONTENT_TYPE = "Content-Type"; - public const string MINICART = "application/vnd.vtex.checkout.minicart.v1+json"; - public const string HTTP_FORWARDED_HEADER = "HTTP_X_FORWARDED_FOR"; - public const string API_VERSION_HEADER = "'x-api-version"; - - public const string BUCKET = "availability-notify"; - public const string LOCK = "availability-notify-lock"; - public const string UNSENT_CHECK = "check-unsent"; - - public const string DATA_ENTITY = "notify"; - public const string SCHEMA = "notify"; - public const string SCHEMA_JSON = "{\"name\":\"notify\",\"properties\":{\"skuId\":{\"type\":\"string\",\"title\":\"skuId\"},\"sendAt\":{\"type\":\"string\",\"title\":\"sendAt\"},\"name\":{\"type\":\"string\",\"title\":\"name\"},\"email\":{\"type\":\"string\",\"title\":\"email\"},\"createdAt\":{\"type\":\"string\",\"title\":\"createdAt\"},\"notificationSend\":{\"type\":\"string\",\"title\":\"notificationSend\"},\"locale\":{\"type\":\"string\",\"title\":\"locale\"},\"seller\":{\"type\":\"object\",\"title\":\"seller\"}},\"v-indexed\":[\"skuId\",\"notificationSend\"],\"v-security\":{\"allowGetAll\":true}}"; - public const string FIELDS = "id,email,skuId,notificationSend,sendAt,name,createdAt,locale,seller"; - - public const string MAIL_SERVICE = "http://mailservice.vtex.com.br/api/mail-service/pvt/sendmail"; - public const string ACQUIERER = "AvailabilityNotify"; - - public const string GITHUB_URL = "https://raw.githubusercontent.com"; - public const string RESPOSITORY = "vtex-apps/availability-notify/master"; - public const string TEMPLATE_FOLDER = "templates"; - public const string TEMPLATE_FILE_EXTENSION = "json"; - public const string DEFAULT_TEMPLATE_NAME = "back-in-stock"; - - public class Availability - { - public const string CannotBeDelivered = "cannotBeDelivered"; - public const string Available = "available"; - } - - public static class Domain - { - public const string Fulfillment = "Fulfillment"; - public const string Marketplace = "Marketplace"; - } - - public static class VtexOrderStatus - { - public const string OrderCreated = "order-created"; - public const string OrderCompleted = "order-completed"; - public const string OnOrderCompleted = "on-order-completed"; - public const string PaymentPending = "payment-pending"; - public const string WaitingForOrderAuthorization = "waiting-for-order-authorization"; - public const string ApprovePayment = "approve-payment"; - public const string PaymentApproved = "payment-approved"; - public const string PaymentDenied = "payment-denied"; - public const string RequestCancel = "request-cancel"; - public const string WaitingForSellerDecision = "waiting-for-seller-decision"; - public const string AuthorizeFullfilment = "authorize-fulfillment"; - public const string OrderCreateError = "order-create-error"; - public const string OrderCreationError = "order-creation-error"; - public const string WindowToCancel = "window-to-cancel"; - public const string ReadyForHandling = "ready-for-handling"; - public const string StartHanding = "start-handling"; - public const string Handling = "handling"; - public const string InvoiceAfterCancellationDeny = "invoice-after-cancellation-deny"; - public const string OrderAccepted = "order-accepted"; - public const string Invoice = "invoice"; - public const string Invoiced = "invoiced"; - public const string Replaced = "replaced"; - public const string CancellationRequested = "cancellation-requested"; - public const string Cancel = "cancel"; - public const string Canceled = "canceled"; - public const string Cancelled = "cancelled"; - } - } -} diff --git a/dotnet/Data/IAvailabilityRepository.cs b/dotnet/Data/IAvailabilityRepository.cs deleted file mode 100644 index 7f62af97..00000000 --- a/dotnet/Data/IAvailabilityRepository.cs +++ /dev/null @@ -1,25 +0,0 @@ -using AvailabilityNotify.Models; -using System; -using System.Threading.Tasks; - -namespace AvailabilityNotify.Services -{ - public interface IAvailabilityRepository - { - Task GetMerchantSettings(); - Task SetMerchantSettings(MerchantSettings merchantSettings); - - Task VerifySchema(); - Task SetImportLock(DateTime importStartTime, string sku); - Task CheckImportLock(string sku); - Task ClearImportLock(string sku); - Task GetLastUnsentCheck(); - Task SetLastUnsentCheck(DateTime lastCheck); - - Task SaveNotifyRequest(NotifyRequest notifyRequest, RequestContext requestContext); - Task DeleteNotifyRequest(string documentId); - Task ListRequestsForSkuId(string skuId, RequestContext requestContext); - Task ListNotifyRequests(); - Task ListUnsentNotifyRequests(); - } -} \ No newline at end of file diff --git a/dotnet/GraphQL/Mutation.cs b/dotnet/GraphQL/Mutation.cs deleted file mode 100644 index 907e5772..00000000 --- a/dotnet/GraphQL/Mutation.cs +++ /dev/null @@ -1,83 +0,0 @@ -using AvailabilityNotify.GraphQL.Types; -using AvailabilityNotify.Models; -using AvailabilityNotify.Services; -using GraphQL; -using GraphQL.Types; -using Vtex.Api.Context; -using System.Net; - -namespace AvailabilityNotify.GraphQL -{ - [GraphQLMetadata("Mutation")] - public class Mutation : ObjectGraphType - { - public Mutation(IIOServiceContext contextService, IVtexAPIService vtexApiService, IAvailabilityRepository availabilityRepository) - { - Name = "Mutation"; - - Field( - "availabilitySubscribe", - arguments: new QueryArguments( - new QueryArgument {Name = "name"}, - new QueryArgument {Name = "email"}, - new QueryArgument {Name = "skuId"}, - new QueryArgument {Name = "locale"}, - new QueryArgument> {Name = "sellerObj"} - ), - resolve: context => - { - var name = context.GetArgument("name"); - var email = context.GetArgument("email"); - var skuId = context.GetArgument("skuId"); - var locale = context.GetArgument("locale"); - var sellerObj = context.GetArgument("sellerObj"); - contextService.Vtex.Logger.Debug("GraphQL", null, $"AvailabilitySubscribe Mutation called: '{name}' '{email}' '{skuId}' '{locale}'"); - - return vtexApiService.AvailabilitySubscribe(email, skuId, name, locale, sellerObj); - }); - - FieldAsync( - "deleteRequest", - arguments: new QueryArguments( - new QueryArgument {Name = "id"} - ), - resolve: async context => - { - HttpStatusCode isValidAuthUser = await vtexApiService.IsValidAuthUser(); - - if (isValidAuthUser != HttpStatusCode.OK) - { - context.Errors.Add(new ExecutionError(isValidAuthUser.ToString()) - { - Code = isValidAuthUser.ToString() - }); - - return default; - } - - var id = context.GetArgument("id"); - - return await availabilityRepository.DeleteNotifyRequest(id); - }); - - FieldAsync>( - "processUnsentRequests", - resolve: async context => - { - HttpStatusCode isValidAuthUser = await vtexApiService.IsValidAuthUser(); - - if (isValidAuthUser != HttpStatusCode.OK) - { - context.Errors.Add(new ExecutionError(isValidAuthUser.ToString()) - { - Code = isValidAuthUser.ToString() - }); - - return default; - } - - return await vtexApiService.ProcessUnsentRequests(); - }); - } - } -} diff --git a/dotnet/GraphQL/Query.cs b/dotnet/GraphQL/Query.cs deleted file mode 100644 index 8279e1e3..00000000 --- a/dotnet/GraphQL/Query.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Collections.Generic; -using AvailabilityNotify.GraphQL.Types; -using AvailabilityNotify.Models; -using AvailabilityNotify.Services; -using GraphQL; -using GraphQL.Types; -using Vtex.Api.Context; - -namespace AvailabilityNotify.GraphQL -{ - [GraphQLMetadata("Query")] - public class Query : ObjectGraphType - { - public Query(IIOServiceContext context, IVtexAPIService vtexApiService, IAvailabilityRepository availabilityRepository) - { - Name = "Query"; - - FieldAsync>( - "listRequests", - resolve: async context => - { - NotifyRequest[] notifyRequests = await availabilityRepository.ListNotifyRequests(); - List requestList = new List(notifyRequests); - return requestList; - } - ); - } - } -} \ No newline at end of file diff --git a/dotnet/GraphQL/Types/NotifyRequestType.cs b/dotnet/GraphQL/Types/NotifyRequestType.cs deleted file mode 100644 index 4bcd77b9..00000000 --- a/dotnet/GraphQL/Types/NotifyRequestType.cs +++ /dev/null @@ -1,22 +0,0 @@ -using AvailabilityNotify.Models; -using GraphQL; -using GraphQL.Types; - -namespace AvailabilityNotify.GraphQL.Types -{ - [GraphQLMetadata("NotifyRequest")] - public class NotifyRequestType : ObjectGraphType - { - public NotifyRequestType() - { - Name = "NotifyRequest"; - Field(c => c.Id, type: typeof(StringGraphType)).Description("Request Id"); - Field(c => c.Name, type: typeof(StringGraphType)).Description("Customer Name"); - Field(c => c.NotificationSent, type: typeof(StringGraphType)).Description("Was Notification Sent"); - Field(c => c.NotificationSentAt, type: typeof(StringGraphType)).Description("Notification Sent At"); - Field(c => c.RequestedAt, type: typeof(StringGraphType)).Description("Notification Was Requested At"); - Field(c => c.SkuId, type: typeof(StringGraphType)).Description("Sku Id"); - Field(c => c.Email, type: typeof(StringGraphType)).Description("Email"); - } - } -} diff --git a/dotnet/GraphQL/Types/ProcessingResultType.cs b/dotnet/GraphQL/Types/ProcessingResultType.cs deleted file mode 100644 index 9f52209d..00000000 --- a/dotnet/GraphQL/Types/ProcessingResultType.cs +++ /dev/null @@ -1,26 +0,0 @@ -using AvailabilityNotify.Models; -using GraphQL; -using GraphQL.Types; - - // public string SkuId { get; set; } - // public string QuantityAvailable { get; set; } - // public string Email { get; set; } - // public bool Sent { get; set; } - // public bool Updated { get; set; } - -namespace AvailabilityNotify.GraphQL.Types -{ - [GraphQLMetadata("ProcessingResult")] - public class ProcessingResultType : ObjectGraphType - { - public ProcessingResultType() - { - Name = "ProcessingResult"; - Field(c => c.SkuId, type: typeof(StringGraphType)).Description("SkuId"); - Field(c => c.Email, type: typeof(StringGraphType)).Description("Email"); - Field(c => c.QuantityAvailable, type: typeof(StringGraphType)).Description("QuantityAvailable"); - Field(c => c.Sent, type: typeof(BooleanGraphType)).Description("Sent"); - Field(c => c.Updated, type: typeof(BooleanGraphType)).Description("Updated"); - } - } -} diff --git a/dotnet/GraphQL/Types/SellerObjType.cs b/dotnet/GraphQL/Types/SellerObjType.cs deleted file mode 100644 index 8849f7fe..00000000 --- a/dotnet/GraphQL/Types/SellerObjType.cs +++ /dev/null @@ -1,22 +0,0 @@ -using AvailabilityNotify.Models; -using GraphQL; -using GraphQL.Types; -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.GraphQL.Types -{ - [GraphQLMetadata("SellerObjInputType")] - public class SellerObjInputType : InputObjectGraphType - { - public SellerObjInputType() - { - Name = "SellerObjInputType"; - Field(s => s.addToCartLink, type: typeof(StringGraphType)).Description("Add To Cart Link"); - Field(s => s.sellerDefault, type: typeof(BooleanGraphType)).Description("Seller Default"); - Field(s => s.sellerId, type: typeof(StringGraphType)).Description("Seller Id"); - Field(s => s.sellerName, type: typeof(StringGraphType)).Description("Seller Name"); - } - } -} diff --git a/dotnet/Markdown/MarkdownHelper.cs b/dotnet/Markdown/MarkdownHelper.cs deleted file mode 100644 index 3e0e3d12..00000000 --- a/dotnet/Markdown/MarkdownHelper.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Collections.Generic; - -namespace AvailabilityNotify.Markdown -{ - public class MarkdownHelper - { - private static Dictionary markdownDictionary = new Dictionary() - { - { "automatic-cache-updates/after", "automaticCacheUpdates/after.md" }, - { "automatic-cache-updates/before", "automaticCacheUpdates/before.md" }, - { "dynamic-pagination/after", "dynamicPagination/after.md" }, - { "dynamic-pagination/before", "dynamicPagination/before.md" }, - { "home/main", "home/main.md" }, - { "preview-with-cached-data/after", "previewWithCachedData/after.md" }, - { "preview-with-cached-data/before", "previewWithCachedData/before.md" }, - { "static-pagination/after", "staticPagination/after.md" }, - { "static-pagination/before", "staticPagination/before.md" }, - { "styleguide/after", "styleguide/after.md" }, - { "styleguide/before", "styleguide/before.md" } - }; - - public static string GetMarkdown(string source) - { - if (!markdownDictionary.ContainsKey(source)) - { - return null; - } - - var fileName = markdownDictionary[source]; - return System.IO.File.ReadAllText($"Markdown/docs/{fileName}"); - } - } - - -} \ No newline at end of file diff --git a/dotnet/Models/AffiliateNotification.cs b/dotnet/Models/AffiliateNotification.cs deleted file mode 100644 index 6da85060..00000000 --- a/dotnet/Models/AffiliateNotification.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Newtonsoft.Json; - -namespace AvailabilityNotify.Models -{ - public partial class AffiliateNotification - { - [JsonProperty("IdSku")] - public string IdSku { get; set; } - - [JsonProperty("ProductId")] - public long ProductId { get; set; } - - [JsonProperty("An")] - public string An { get; set; } - - [JsonProperty("IdAffiliate")] - public string IdAffiliate { get; set; } - - [JsonProperty("Version")] - public string Version { get; set; } - - [JsonProperty("DateModified")] - public string DateModified { get; set; } - - [JsonProperty("IsActive")] - public bool IsActive { get; set; } - - [JsonProperty("StockModified")] - public bool StockModified { get; set; } - - [JsonProperty("PriceModified")] - public bool PriceModified { get; set; } - - [JsonProperty("HasStockKeepingUnitModified")] - public bool HasStockKeepingUnitModified { get; set; } - - [JsonProperty("HasStockKeepingUnitRemovedFromAffiliate")] - public bool HasStockKeepingUnitRemovedFromAffiliate { get; set; } - } -} diff --git a/dotnet/Models/AllStatesNotification.cs b/dotnet/Models/AllStatesNotification.cs deleted file mode 100644 index 44f4cbd0..00000000 --- a/dotnet/Models/AllStatesNotification.cs +++ /dev/null @@ -1,48 +0,0 @@ -using Newtonsoft.Json; -using System; - -namespace AvailabilityNotify.Models -{ - public class AllStatesNotification - { - [JsonProperty("recorder")] - public Recorder Recorder { get; set; } - - [JsonProperty("domain")] - public string Domain { get; set; } - - [JsonProperty("orderId")] - public string OrderId { get; set; } - - [JsonProperty("currentState")] - public string CurrentState { get; set; } - - [JsonProperty("lastState")] - public string LastState { get; set; } - - [JsonProperty("currentChangeDate")] - public DateTimeOffset CurrentChangeDate { get; set; } - - [JsonProperty("lastChangeDate")] - public DateTimeOffset LastChangeDate { get; set; } - } - - public class Recorder - { - [JsonProperty("_record")] - public Record Record { get; set; } - } - - public class Record - { - [JsonProperty("x-vtex-meta")] - public XVtexMeta XVtexMeta { get; set; } - - [JsonProperty("x-vtex-meta-bucket")] - public XVtexMeta XVtexMetaBucket { get; set; } - } - - public class XVtexMeta - { - } -} diff --git a/dotnet/Models/AppInstalledEvent.cs b/dotnet/Models/AppInstalledEvent.cs deleted file mode 100644 index cc865f28..00000000 --- a/dotnet/Models/AppInstalledEvent.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace AvailabilityNotify.Models -{ - public class AppInstalledEvent - { - public InstalledApp To { get; set; } - } - - public class InstalledApp - { - public string Id { get; set; } - public string Registry { get; set; } - } -} \ No newline at end of file diff --git a/dotnet/Models/BroadcastNotification.cs b/dotnet/Models/BroadcastNotification.cs deleted file mode 100644 index aa228d59..00000000 --- a/dotnet/Models/BroadcastNotification.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Newtonsoft.Json; - -namespace AvailabilityNotify.Models -{ - public partial class BroadcastNotification - { - [JsonProperty("IdSku")] - public string IdSku { get; set; } - - [JsonProperty("ProductId")] - public long ProductId { get; set; } - - [JsonProperty("An")] - public string An { get; set; } - - [JsonProperty("IdAffiliate")] - public string IdAffiliate { get; set; } - - [JsonProperty("Version")] - public string Version { get; set; } - - [JsonProperty("DateModified")] - public string DateModified { get; set; } - - [JsonProperty("IsActive")] - public bool IsActive { get; set; } - - [JsonProperty("StockModified")] - public bool StockModified { get; set; } - - [JsonProperty("PriceModified")] - public bool PriceModified { get; set; } - - [JsonProperty("HasStockKeepingUnitModified")] - public bool HasStockKeepingUnitModified { get; set; } - - [JsonProperty("HasStockKeepingUnitRemovedFromAffiliate")] - public bool HasStockKeepingUnitRemovedFromAffiliate { get; set; } - } -} diff --git a/dotnet/Models/CartSimulationRequest.cs b/dotnet/Models/CartSimulationRequest.cs deleted file mode 100644 index dd38b5fe..00000000 --- a/dotnet/Models/CartSimulationRequest.cs +++ /dev/null @@ -1,78 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class CartSimulationRequest - { - [JsonProperty("items")] - public List Items { get; set; } - - [JsonProperty("postalCode")] - public string PostalCode { get; set; } - - [JsonProperty("country")] - public string Country { get; set; } - } - - public class CartItem - { - [JsonProperty("id")] - public string Id { get; set; } - - [JsonProperty("requestIndex")] - public long RequestIndex { get; set; } - - [JsonProperty("quantity")] - public long Quantity { get; set; } - - [JsonProperty("seller")] - public string Seller { get; set; } - - [JsonProperty("sellerChain")] - public string[] SellerChain { get; set; } - - [JsonProperty("tax")] - public long Tax { get; set; } - - [JsonProperty("priceValidUntil")] - public string PriceValidUntil { get; set; } - - [JsonProperty("price")] - public long Price { get; set; } - - [JsonProperty("listPrice")] - public long ListPrice { get; set; } - - [JsonProperty("rewardValue")] - public long RewardValue { get; set; } - - [JsonProperty("sellingPrice")] - public long SellingPrice { get; set; } - - [JsonProperty("offerings")] - public object[] Offerings { get; set; } - - [JsonProperty("priceTags")] - public object[] PriceTags { get; set; } - - [JsonProperty("measurementUnit")] - public string MeasurementUnit { get; set; } - - [JsonProperty("unitMultiplier")] - public long UnitMultiplier { get; set; } - - [JsonProperty("parentItemIndex")] - public object ParentItemIndex { get; set; } - - [JsonProperty("parentAssemblyBinding")] - public object ParentAssemblyBinding { get; set; } - - [JsonProperty("availability")] - public string Availability { get; set; } - } -} - - diff --git a/dotnet/Models/CartSimulationResponse.cs b/dotnet/Models/CartSimulationResponse.cs deleted file mode 100644 index 7dad186d..00000000 --- a/dotnet/Models/CartSimulationResponse.cs +++ /dev/null @@ -1,418 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class CartSimulationResponse -{ - [JsonProperty("items")] - public CartResponseItem[] Items { get; set; } - - [JsonProperty("ratesAndBenefitsData")] - public RatesAndBenefitsData RatesAndBenefitsData { get; set; } - - [JsonProperty("paymentData")] - public PaymentData PaymentData { get; set; } - - [JsonProperty("selectableGifts")] - public object[] SelectableGifts { get; set; } - - [JsonProperty("marketingData")] - public object MarketingData { get; set; } - - [JsonProperty("postalCode")] - public string PostalCode { get; set; } - - [JsonProperty("country")] - public string Country { get; set; } - - [JsonProperty("logisticsInfo")] - public LogisticsInfo[] LogisticsInfo { get; set; } - - [JsonProperty("messages")] - public object[] Messages { get; set; } - - [JsonProperty("purchaseConditions")] - public PurchaseConditions PurchaseConditions { get; set; } - - [JsonProperty("pickupPoints")] - public object[] PickupPoints { get; set; } - - [JsonProperty("subscriptionData")] - public object SubscriptionData { get; set; } - - [JsonProperty("totals")] - public Total[] Totals { get; set; } - - [JsonProperty("itemMetadata")] - public object ItemMetadata { get; set; } - } - - public class CartResponseItem - { - [JsonProperty("id")] - public string Id { get; set; } - - [JsonProperty("requestIndex")] - public string RequestIndex { get; set; } - - [JsonProperty("quantity")] - public long Quantity { get; set; } - - [JsonProperty("seller")] - public string Seller { get; set; } - - [JsonProperty("sellerChain")] - public string[] SellerChain { get; set; } - - [JsonProperty("tax")] - public string Tax { get; set; } - - [JsonProperty("priceValidUntil")] - public string PriceValidUntil { get; set; } - - [JsonProperty("price")] - public string Price { get; set; } - - [JsonProperty("listPrice")] - public string ListPrice { get; set; } - - [JsonProperty("rewardValue")] - public string RewardValue { get; set; } - - [JsonProperty("sellingPrice")] - public string SellingPrice { get; set; } - - [JsonProperty("offerings")] - public object[] Offerings { get; set; } - - [JsonProperty("priceTags")] - public object[] PriceTags { get; set; } - - [JsonProperty("measurementUnit")] - public string MeasurementUnit { get; set; } - - [JsonProperty("unitMultiplier")] - public string UnitMultiplier { get; set; } - - [JsonProperty("parentItemIndex")] - public object ParentItemIndex { get; set; } - - [JsonProperty("parentAssemblyBinding")] - public object ParentAssemblyBinding { get; set; } - - [JsonProperty("availability")] - public string Availability { get; set; } - - [JsonProperty("catalogProvider")] - public string CatalogProvider { get; set; } - - [JsonProperty("priceDefinition")] - public PriceDefinition PriceDefinition { get; set; } - } - - public class PriceDefinition - { - [JsonProperty("calculatedSellingPrice")] - public string CalculatedSellingPrice { get; set; } - - [JsonProperty("total")] - public string Total { get; set; } - - [JsonProperty("sellingPrices")] - public SellingPrice[] SellingPrices { get; set; } - } - - public class SellingPrice - { - [JsonProperty("value")] - public string Value { get; set; } - - [JsonProperty("quantity")] - public string Quantity { get; set; } - } - - public class LogisticsInfo - { - [JsonProperty("itemIndex")] - public long ItemIndex { get; set; } - - [JsonProperty("addressId")] - public object AddressId { get; set; } - - [JsonProperty("selectedSla")] - public object SelectedSla { get; set; } - - [JsonProperty("selectedDeliveryChannel")] - public object SelectedDeliveryChannel { get; set; } - - [JsonProperty("quantity")] - public long Quantity { get; set; } - - [JsonProperty("shipsTo")] - public string[] ShipsTo { get; set; } - - [JsonProperty("slas")] - public Sla[] Slas { get; set; } - - [JsonProperty("deliveryChannels")] - public DeliveryChannel[] DeliveryChannels { get; set; } - } - - public class DeliveryChannel - { - [JsonProperty("id")] - public string Id { get; set; } - } - - public class Sla - { - [JsonProperty("id")] - public string Id { get; set; } - - [JsonProperty("deliveryChannel")] - public string DeliveryChannel { get; set; } - - [JsonProperty("name")] - public string Name { get; set; } - - [JsonProperty("deliveryIds")] - public DeliveryId[] DeliveryIds { get; set; } - - [JsonProperty("shippingEstimate")] - public string ShippingEstimate { get; set; } - - [JsonProperty("shippingEstimateDate")] - public object ShippingEstimateDate { get; set; } - - [JsonProperty("lockTTL")] - public object LockTtl { get; set; } - - [JsonProperty("availableDeliveryWindows")] - public object[] AvailableDeliveryWindows { get; set; } - - [JsonProperty("deliveryWindow")] - public object DeliveryWindow { get; set; } - - [JsonProperty("price")] - public string Price { get; set; } - - [JsonProperty("listPrice")] - public string ListPrice { get; set; } - - [JsonProperty("tax")] - public string Tax { get; set; } - - [JsonProperty("pickupStoreInfo")] - public PickupStoreInfo PickupStoreInfo { get; set; } - - [JsonProperty("pickupPointId")] - public object PickupPointId { get; set; } - - [JsonProperty("pickupDistance")] - public string PickupDistance { get; set; } - - [JsonProperty("polygonName")] - public object PolygonName { get; set; } - - [JsonProperty("transitTime")] - public string TransitTime { get; set; } - } - - public class DeliveryId - { - [JsonProperty("courierId")] - public string CourierId { get; set; } - - [JsonProperty("warehouseId")] - public string WarehouseId { get; set; } - - [JsonProperty("dockId")] - public string DockId { get; set; } - - [JsonProperty("courierName")] - public string CourierName { get; set; } - - [JsonProperty("quantity")] - public long Quantity { get; set; } - - [JsonProperty("kitItemDetails")] - public object[] KitItemDetails { get; set; } - } - - public class PickupStoreInfo - { - [JsonProperty("isPickupStore")] - public bool IsPickupStore { get; set; } - - [JsonProperty("friendlyName")] - public object FriendlyName { get; set; } - - [JsonProperty("address")] - public object Address { get; set; } - - [JsonProperty("additionalInfo")] - public object AdditionalInfo { get; set; } - - [JsonProperty("dockId")] - public object DockId { get; set; } - } - - public class PaymentData - { - [JsonProperty("installmentOptions")] - public InstallmentOption[] InstallmentOptions { get; set; } - - [JsonProperty("paymentSystems")] - public PaymentSystem[] PaymentSystems { get; set; } - - [JsonProperty("payments")] - public object[] Payments { get; set; } - - [JsonProperty("giftCards")] - public object[] GiftCards { get; set; } - - [JsonProperty("giftCardMessages")] - public object[] GiftCardMessages { get; set; } - - [JsonProperty("availableAccounts")] - public object[] AvailableAccounts { get; set; } - - [JsonProperty("availableTokens")] - public object[] AvailableTokens { get; set; } - } - - public class InstallmentOption - { - [JsonProperty("paymentSystem")] - public string PaymentSystem { get; set; } - - [JsonProperty("bin")] - public object Bin { get; set; } - - [JsonProperty("paymentName")] - public string PaymentName { get; set; } - - [JsonProperty("paymentGroupName")] - public string PaymentGroupName { get; set; } - - [JsonProperty("value")] - public long Value { get; set; } - - [JsonProperty("installments")] - public Installment[] Installments { get; set; } - } - - public class Installment - { - [JsonProperty("count")] - public long Count { get; set; } - - [JsonProperty("hasInterestRate")] - public bool? HasInterestRate { get; set; } - - [JsonProperty("interestRate")] - public long? InterestRate { get; set; } - - [JsonProperty("value")] - public long? Value { get; set; } - - [JsonProperty("total")] - public long? Total { get; set; } - - [JsonProperty("sellerMerchantInstallments", NullValueHandling = NullValueHandling.Ignore)] - public Installment[] SellerMerchantInstallments { get; set; } - - [JsonProperty("id", NullValueHandling = NullValueHandling.Ignore)] - public string? Id { get; set; } - } - - public class PaymentSystem - { - [JsonProperty("id")] - public string Id { get; set; } - - [JsonProperty("name")] - public string Name { get; set; } - - [JsonProperty("groupName")] - public string GroupName { get; set; } - - [JsonProperty("validator")] - public object Validator { get; set; } - - [JsonProperty("stringId")] - public string StringId { get; set; } - - [JsonProperty("template")] - public string Template { get; set; } - - [JsonProperty("requiresDocument")] - public bool RequiresDocument { get; set; } - - [JsonProperty("isCustom")] - public bool IsCustom { get; set; } - - [JsonProperty("description")] - public string Description { get; set; } - - [JsonProperty("requiresAuthentication")] - public bool RequiresAuthentication { get; set; } - - [JsonProperty("dueDate")] - public DateTimeOffset DueDate { get; set; } - - [JsonProperty("availablePayments")] - public object AvailablePayments { get; set; } - } - - public class PurchaseConditions - { - [JsonProperty("itemPurchaseConditions")] - public ItemPurchaseCondition[] ItemPurchaseConditions { get; set; } - } - - public class ItemPurchaseCondition - { - [JsonProperty("id")] - public string Id { get; set; } - - [JsonProperty("seller")] - public string Seller { get; set; } - - [JsonProperty("sellerChain")] - public string[] SellerChain { get; set; } - - [JsonProperty("slas")] - public Sla[] Slas { get; set; } - - [JsonProperty("price")] - public string Price { get; set; } - - [JsonProperty("listPrice")] - public string ListPrice { get; set; } - } - - public class RatesAndBenefitsData - { - [JsonProperty("rateAndBenefitsIdentifiers")] - public object[] RateAndBenefitsIdentifiers { get; set; } - - [JsonProperty("teaser")] - public object[] Teaser { get; set; } - } - - public class Total - { - [JsonProperty("id")] - public string Id { get; set; } - - [JsonProperty("name")] - public string Name { get; set; } - - [JsonProperty("value")] - public string Value { get; set; } - } -} diff --git a/dotnet/Models/EmailMessage.cs b/dotnet/Models/EmailMessage.cs deleted file mode 100644 index ac3d08da..00000000 --- a/dotnet/Models/EmailMessage.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class JsonData - { - public GetSkuContextResponse SkuContext { get; set; } - public NotifyRequest NotifyRequest { get; set; } - } - - public class EmailMessage - { - public object ProviderName { get; set; } - public string TemplateName { get; set; } - public JsonData JsonData { get; set; } - } -} diff --git a/dotnet/Models/EmailTemplate.cs b/dotnet/Models/EmailTemplate.cs deleted file mode 100644 index d93e0df2..00000000 --- a/dotnet/Models/EmailTemplate.cs +++ /dev/null @@ -1,106 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class EmailTemplate - { - [JsonProperty("Name")] - public string Name { get; set; } - - [JsonProperty("FriendlyName")] - public string FriendlyName { get; set; } - - [JsonProperty("Description")] - public string Description { get; set; } - - [JsonProperty("IsDefaultTemplate")] - public bool IsDefaultTemplate { get; set; } - - [JsonProperty("AccountId")] - public object AccountId { get; set; } - - [JsonProperty("AccountName")] - public object AccountName { get; set; } - - [JsonProperty("ApplicationId")] - public object ApplicationId { get; set; } - - [JsonProperty("IsPersisted")] - public bool IsPersisted { get; set; } - - [JsonProperty("IsRemoved")] - public bool IsRemoved { get; set; } - - [JsonProperty("Type")] - public string Type { get; set; } - - [JsonProperty("Templates")] - public Templates Templates { get; set; } - } - - public class Templates - { - [JsonProperty("email")] - public Email Email { get; set; } - - [JsonProperty("sms")] - public Sms Sms { get; set; } - } - - public class Email - { - [JsonProperty("To")] - public string To { get; set; } - - [JsonProperty("CC")] - public object Cc { get; set; } - - [JsonProperty("BCC")] - public object Bcc { get; set; } - - [JsonProperty("Subject")] - public string Subject { get; set; } - - [JsonProperty("Message")] - public string Message { get; set; } - - [JsonProperty("Type")] - public string Type { get; set; } - - [JsonProperty("ProviderId")] - public object ProviderId { get; set; } - - [JsonProperty("ProviderName")] - public object ProviderName { get; set; } - - [JsonProperty("IsActive")] - public bool IsActive { get; set; } - - [JsonProperty("withError")] - public bool WithError { get; set; } - } - - public class Sms - { - [JsonProperty("Type")] - public string Type { get; set; } - - [JsonProperty("ProviderId")] - public object ProviderId { get; set; } - - [JsonProperty("ProviderName")] - public object ProviderName { get; set; } - - [JsonProperty("IsActive")] - public bool IsActive { get; set; } - - [JsonProperty("withError")] - public bool WithError { get; set; } - - [JsonProperty("Parameters")] - public List Parameters { get; set; } - } -} diff --git a/dotnet/Models/GetSkuContextResponse.cs b/dotnet/Models/GetSkuContextResponse.cs deleted file mode 100644 index cb2e58c1..00000000 --- a/dotnet/Models/GetSkuContextResponse.cs +++ /dev/null @@ -1,278 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class GetSkuContextResponse - { - [JsonProperty("Id")] - public long? Id { get; set; } - - [JsonProperty("ProductId")] - public long? ProductId { get; set; } - - [JsonProperty("NameComplete")] - public string NameComplete { get; set; } - - [JsonProperty("ProductName")] - public string ProductName { get; set; } - - [JsonProperty("ProductDescription")] - public string ProductDescription { get; set; } - - [JsonProperty("ProductRefId")] - public string ProductRefId { get; set; } - - [JsonProperty("TaxCode")] - public string TaxCode { get; set; } - - [JsonProperty("SkuName")] - public string SkuName { get; set; } - - [JsonProperty("IsActive")] - public bool IsActive { get; set; } - - [JsonProperty("IsTransported")] - public bool IsTransported { get; set; } - - [JsonProperty("IsInventoried")] - public bool IsInventoried { get; set; } - - [JsonProperty("IsGiftCardRecharge")] - public bool IsGiftCardRecharge { get; set; } - - [JsonProperty("ImageUrl")] - public Uri ImageUrl { get; set; } - - [JsonProperty("DetailUrl")] - public string DetailUrl { get; set; } - - [JsonProperty("CSCIdentification")] - public object CscIdentification { get; set; } - - [JsonProperty("BrandId")] - public string BrandId { get; set; } - - [JsonProperty("BrandName")] - public string BrandName { get; set; } - - [JsonProperty("IsBrandActive")] - public bool IsBrandActive { get; set; } - - [JsonProperty("Dimension")] - public Dimension Dimension { get; set; } - - [JsonProperty("RealDimension")] - public RealDimension RealDimension { get; set; } - - [JsonProperty("ManufacturerCode")] - public string ManufacturerCode { get; set; } - - [JsonProperty("IsKit")] - public bool IsKit { get; set; } - - [JsonProperty("KitItems")] - public object[] KitItems { get; set; } - - [JsonProperty("Services")] - public object[] Services { get; set; } - - [JsonProperty("Categories")] - public object[] Categories { get; set; } - - [JsonProperty("CategoriesFullPath")] - public string[] CategoriesFullPath { get; set; } - - [JsonProperty("Attachments")] - public object[] Attachments { get; set; } - - [JsonProperty("Collections")] - public object[] Collections { get; set; } - - [JsonProperty("SkuSellers")] - public SkuSeller[] SkuSellers { get; set; } - - [JsonProperty("SalesChannels")] - public long[] SalesChannels { get; set; } - - [JsonProperty("Images")] - public Image[] Images { get; set; } - - [JsonProperty("Videos")] - public object[] Videos { get; set; } - - [JsonProperty("SkuSpecifications")] - public Specification[] SkuSpecifications { get; set; } - - [JsonProperty("ProductSpecifications")] - public Specification[] ProductSpecifications { get; set; } - - [JsonProperty("ProductClustersIds")] - public string ProductClustersIds { get; set; } - - [JsonProperty("PositionsInClusters")] - public PositionsInClusters PositionsInClusters { get; set; } - - [JsonProperty("ProductCategoryIds")] - public string ProductCategoryIds { get; set; } - - [JsonProperty("IsDirectCategoryActive")] - public bool IsDirectCategoryActive { get; set; } - - [JsonProperty("ProductGlobalCategoryId")] - public long? ProductGlobalCategoryId { get; set; } - - [JsonProperty("ProductCategories")] - public object ProductCategories { get; set; } - - [JsonProperty("CommercialConditionId")] - public object CommercialConditionId { get; set; } - - [JsonProperty("RewardValue")] - public long RewardValue { get; set; } - - [JsonProperty("AlternateIds")] - public AlternateIds AlternateIds { get; set; } - - [JsonProperty("AlternateIdValues")] - public string[] AlternateIdValues { get; set; } - - [JsonProperty("EstimatedDateArrival")] - public string EstimatedDateArrival { get; set; } - - [JsonProperty("MeasurementUnit")] - public string MeasurementUnit { get; set; } - - [JsonProperty("UnitMultiplier")] - public long? UnitMultiplier { get; set; } - - [JsonProperty("InformationSource")] - public string InformationSource { get; set; } - - [JsonProperty("ModalType")] - public object ModalType { get; set; } - - [JsonProperty("KeyWords")] - public string KeyWords { get; set; } - - [JsonProperty("ReleaseDate")] - public string ReleaseDate { get; set; } - - [JsonProperty("ProductIsVisible")] - public bool ProductIsVisible { get; set; } - - [JsonProperty("ShowIfNotAvailable")] - public bool ShowIfNotAvailable { get; set; } - - [JsonProperty("IsProductActive")] - public bool IsProductActive { get; set; } - - [JsonProperty("ProductFinalScore")] - public long? ProductFinalScore { get; set; } - } - - public partial class AlternateIds - { - [JsonProperty("RefId")] - public string RefId { get; set; } - } - - public partial class Dimension - { - [JsonProperty("cubicweight")] - public long? Cubicweight { get; set; } - - [JsonProperty("height")] - public long? Height { get; set; } - - [JsonProperty("length")] - public long? Length { get; set; } - - [JsonProperty("weight")] - public long? Weight { get; set; } - - [JsonProperty("width")] - public long? Width { get; set; } - } - - public partial class Image - { - [JsonProperty("ImageUrl")] - public Uri ImageUrl { get; set; } - - [JsonProperty("ImageName")] - public string ImageName { get; set; } - - [JsonProperty("FileId")] - public long? FileId { get; set; } - } - - public partial class PositionsInClusters - { - } - - public class Specification - { - [JsonProperty("FieldId")] - public long? FieldId { get; set; } - - [JsonProperty("FieldName")] - public string FieldName { get; set; } - - [JsonProperty("FieldValueIds")] - public long[] FieldValueIds { get; set; } - - [JsonProperty("FieldValues")] - public string[] FieldValues { get; set; } - - [JsonProperty("IsFilter")] - public bool IsFilter { get; set; } - - [JsonProperty("FieldGroupId")] - public long? FieldGroupId { get; set; } - - [JsonProperty("FieldGroupName")] - public string FieldGroupName { get; set; } - } - - public partial class RealDimension - { - [JsonProperty("realCubicWeight")] - public long? RealCubicWeight { get; set; } - - [JsonProperty("realHeight")] - public long? RealHeight { get; set; } - - [JsonProperty("realLength")] - public long? RealLength { get; set; } - - [JsonProperty("realWeight")] - public long? RealWeight { get; set; } - - [JsonProperty("realWidth")] - public long? RealWidth { get; set; } - } - - public partial class SkuSeller - { - [JsonProperty("SellerId")] - public string SellerId { get; set; } - - [JsonProperty("StockKeepingUnitId")] - public long? StockKeepingUnitId { get; set; } - - [JsonProperty("SellerStockKeepingUnitId")] - public string SellerStockKeepingUnitId { get; set; } - - [JsonProperty("IsActive")] - public bool IsActive { get; set; } - - [JsonProperty("FreightCommissionPercentage")] - public long? FreightCommissionPercentage { get; set; } - - [JsonProperty("ProductCommissionPercentage")] - public long? ProductCommissionPercentage { get; set; } - } -} diff --git a/dotnet/Models/GetSkuSellerResponse.cs b/dotnet/Models/GetSkuSellerResponse.cs deleted file mode 100644 index 54f5fc84..00000000 --- a/dotnet/Models/GetSkuSellerResponse.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class GetSkuSellerResponse - { - [JsonProperty("StockKeepingUnitId")] - public int StockKeepingUnitId { get; set; } - } -} diff --git a/dotnet/Models/InventoryBySku.cs b/dotnet/Models/InventoryBySku.cs deleted file mode 100644 index 8fb0dcac..00000000 --- a/dotnet/Models/InventoryBySku.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Newtonsoft.Json; - -namespace AvailabilityNotify.Models -{ - public class InventoryBySku - { - [JsonProperty("skuId")] - public string SkuId { get; set; } - - [JsonProperty("balance")] - public Balance[] Balance { get; set; } - } - - public class Balance - { - [JsonProperty("warehouseId")] - public string WarehouseId { get; set; } - - [JsonProperty("warehouseName")] - public string WarehouseName { get; set; } - - [JsonProperty("totalQuantity")] - public long TotalQuantity { get; set; } - - [JsonProperty("reservedQuantity")] - public long ReservedQuantity { get; set; } - - [JsonProperty("hasUnlimitedQuantity")] - public bool HasUnlimitedQuantity { get; set; } - - [JsonProperty("timeToRefill")] - public object TimeToRefill { get; set; } - - [JsonProperty("dateOfSupplyUtc")] - public object DateOfSupplyUtc { get; set; } - } -} \ No newline at end of file diff --git a/dotnet/Models/ListAllWarehousesResponse.cs b/dotnet/Models/ListAllWarehousesResponse.cs deleted file mode 100644 index fa153cf9..00000000 --- a/dotnet/Models/ListAllWarehousesResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class ListAllWarehousesResponse - { - [JsonProperty("id")] - public string Id { get; set; } - - [JsonProperty("name")] - public string Name { get; set; } - - [JsonProperty("warehouseDocks")] - public List WarehouseDocks { get; set; } - - [JsonProperty("pickupPointIds")] - public object[] PickupPointIds { get; set; } - - [JsonProperty("priority")] - public long Priority { get; set; } - - [JsonProperty("isActive")] - public bool IsActive { get; set; } - } - - public class WarehouseDock - { - [JsonProperty("dockId")] - public string DockId { get; set; } - - [JsonProperty("time")] - public string Time { get; set; } - - [JsonProperty("cost")] - public long Cost { get; set; } - } -} diff --git a/dotnet/Models/Lock.cs b/dotnet/Models/Lock.cs deleted file mode 100644 index 42b028f8..00000000 --- a/dotnet/Models/Lock.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class Lock - { - [JsonProperty("processing_started")] - public DateTime ProcessingStarted { get; set; } - } -} diff --git a/dotnet/Models/MerchantSettings.cs b/dotnet/Models/MerchantSettings.cs deleted file mode 100644 index 1481fa65..00000000 --- a/dotnet/Models/MerchantSettings.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class MerchantSettings - { - public string AppKey { get; set; } - public string AppToken { get; set; } - public bool Initialized { get; set; } - public bool DoShippingSim { get; set; } - public string NotifyMarketplace { get; set; } - } -} diff --git a/dotnet/Models/NotifyRequest.cs b/dotnet/Models/NotifyRequest.cs deleted file mode 100644 index 2d231f9b..00000000 --- a/dotnet/Models/NotifyRequest.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using Newtonsoft.Json; - -namespace AvailabilityNotify.Models -{ - public class NotifyRequest - { - [JsonProperty("id", NullValueHandling = NullValueHandling.Ignore)] - public string Id { get; set; } - - [JsonProperty("name")] - public string Name { get; set; } - - [JsonProperty("email")] - public string Email { get; set; } - - [JsonProperty("skuId")] - public string SkuId { get; set; } - - [JsonProperty("createdAt")] - public string RequestedAt { get; set; } - - [JsonProperty("notificationSend")] - public string NotificationSent { get; set; } - - [JsonProperty("sendAt", NullValueHandling = NullValueHandling.Ignore)] - public string NotificationSentAt { get; set; } - - [JsonProperty("locale", NullValueHandling = NullValueHandling.Ignore)] - public string Locale { get; set; } - - [JsonProperty("seller", NullValueHandling = NullValueHandling.Ignore)] - public SellerObj Seller { get; set; } - } -} diff --git a/dotnet/Models/ProcessingResult.cs b/dotnet/Models/ProcessingResult.cs deleted file mode 100644 index 8cdbefe1..00000000 --- a/dotnet/Models/ProcessingResult.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace AvailabilityNotify.Models -{ - public class ProcessingResult - { - public string SkuId { get; set; } - public string QuantityAvailable { get; set; } - public string Email { get; set; } - public bool Sent { get; set; } - public bool Updated { get; set; } - } -} diff --git a/dotnet/Models/RequestContext.cs b/dotnet/Models/RequestContext.cs deleted file mode 100644 index 3b59b426..00000000 --- a/dotnet/Models/RequestContext.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class RequestContext - { - public string Account { get; set; } - public string AuthToken { get; set; } - } -} diff --git a/dotnet/Models/ResponseWrapper.cs b/dotnet/Models/ResponseWrapper.cs deleted file mode 100644 index 89cff96b..00000000 --- a/dotnet/Models/ResponseWrapper.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace AvailabilityNotify.Models -{ - public class ResponseWrapper - { - public string ResponseText { get; set; } - public string Message { get; set; } - public bool IsSuccess { get; set; } - public string MasterDataToken { get; set; } - public string Total { get; set; } - public string From { get; set; } - public string To { get; set; } - } -} diff --git a/dotnet/Models/SellerObj.cs b/dotnet/Models/SellerObj.cs deleted file mode 100644 index 4d89fb0b..00000000 --- a/dotnet/Models/SellerObj.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class SellerObj - { - public string sellerId { get; set; } - public string sellerName { get; set; } - public string addToCartLink { get; set; } - public bool sellerDefault { get; set; } - } -} diff --git a/dotnet/Models/ShopperAddress.cs b/dotnet/Models/ShopperAddress.cs deleted file mode 100644 index 2322b7f2..00000000 --- a/dotnet/Models/ShopperAddress.cs +++ /dev/null @@ -1,94 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class ShopperAddress -{ - [JsonProperty("addressName")] - public string AddressName { get; set; } - - [JsonProperty("addressType")] - public string AddressType { get; set; } - - [JsonProperty("city")] - public string City { get; set; } - - [JsonProperty("complement")] - public object Complement { get; set; } - - [JsonProperty("country")] - public string Country { get; set; } - - [JsonProperty("countryfake")] - public object Countryfake { get; set; } - - [JsonProperty("geoCoordinate")] - public double[] GeoCoordinate { get; set; } - - [JsonProperty("neighborhood")] - public object Neighborhood { get; set; } - - [JsonProperty("number")] - public object Number { get; set; } - - [JsonProperty("postalCode")] - public string PostalCode { get; set; } - - [JsonProperty("receiverName")] - public string ReceiverName { get; set; } - - [JsonProperty("reference")] - public object Reference { get; set; } - - [JsonProperty("state")] - public string State { get; set; } - - [JsonProperty("street")] - public string Street { get; set; } - - [JsonProperty("userId")] - public Guid UserId { get; set; } - - [JsonProperty("id")] - public Guid Id { get; set; } - - [JsonProperty("accountId")] - public Guid AccountId { get; set; } - - [JsonProperty("accountName")] - public string AccountName { get; set; } - - [JsonProperty("dataEntityId")] - public string DataEntityId { get; set; } - - [JsonProperty("createdBy")] - public Guid CreatedBy { get; set; } - - [JsonProperty("createdIn")] - public DateTimeOffset CreatedIn { get; set; } - - [JsonProperty("updatedBy")] - public Guid? UpdatedBy { get; set; } - - [JsonProperty("updatedIn")] - public DateTimeOffset? UpdatedIn { get; set; } - - [JsonProperty("lastInteractionBy")] - public Guid LastInteractionBy { get; set; } - - [JsonProperty("lastInteractionIn")] - public DateTimeOffset LastInteractionIn { get; set; } - - [JsonProperty("followers")] - public object[] Followers { get; set; } - - [JsonProperty("tags")] - public object[] Tags { get; set; } - - [JsonProperty("auto_filter")] - public object AutoFilter { get; set; } - } -} diff --git a/dotnet/Models/ShopperRecord.cs b/dotnet/Models/ShopperRecord.cs deleted file mode 100644 index 8940647e..00000000 --- a/dotnet/Models/ShopperRecord.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class ShopperRecord - { - [JsonProperty("email")] - public string Email { get; set; } - - [JsonProperty("id")] - public string Id { get; set; } - - [JsonProperty("accountId")] - public string AccountId { get; set; } - - [JsonProperty("accountName")] - public string AccountName { get; set; } - - [JsonProperty("dataEntityId")] - public string DataEntityId { get; set; } - } -} diff --git a/dotnet/Models/SlaRequest.cs b/dotnet/Models/SlaRequest.cs deleted file mode 100644 index 8c3169a4..00000000 --- a/dotnet/Models/SlaRequest.cs +++ /dev/null @@ -1,65 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class SlaRequest - { - [JsonProperty("items")] - public Item[] Items { get; set; } - - [JsonProperty("location")] - public Location Location { get; set; } - - [JsonProperty("salesChannel")] - public string SalesChannel { get; set; } - } - - public class Item - { - [JsonProperty("id")] - public string Id { get; set; } - - [JsonProperty("groupItemId")] - public object GroupItemId { get; set; } - - [JsonProperty("kitItem")] - public object[] KitItem { get; set; } - - [JsonProperty("quantity")] - public long Quantity { get; set; } - - [JsonProperty("price")] - public long Price { get; set; } - - [JsonProperty("additionalHandlingTime")] - public DateTimeOffset AdditionalHandlingTime { get; set; } - - [JsonProperty("dimension")] - public Dimension Dimension { get; set; } - } - - public class Location - { - [JsonProperty("zipCode")] - public string ZipCode { get; set; } - - [JsonProperty("country")] - public string Country { get; set; } - - [JsonProperty("instore")] - public Instore Instore { get; set; } - } - - public class Instore - { - [JsonProperty("isCheckedIn")] - public bool IsCheckedIn { get; set; } - - [JsonProperty("storeId")] - public string StoreId { get; set; } - } -} - diff --git a/dotnet/Models/ValidateToken.cs b/dotnet/Models/ValidateToken.cs deleted file mode 100644 index 746711dc..00000000 --- a/dotnet/Models/ValidateToken.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class ValidateToken - { - public string Token { get; set; } - } -} \ No newline at end of file diff --git a/dotnet/Models/ValidatedUser.cs b/dotnet/Models/ValidatedUser.cs deleted file mode 100644 index 7cb4dfca..00000000 --- a/dotnet/Models/ValidatedUser.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace AvailabilityNotify.Models -{ - public class ValidatedUser - { - public string AuthStatus { get; set; } - public string Id { get; set; } - public string User { get; set; } // email - } -} \ No newline at end of file diff --git a/dotnet/Services/IVtexAPIService.cs b/dotnet/Services/IVtexAPIService.cs deleted file mode 100644 index 75d4387f..00000000 --- a/dotnet/Services/IVtexAPIService.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using AvailabilityNotify.Models; -using System.Net; - -namespace AvailabilityNotify.Services -{ - public interface IVtexAPIService - { - Task AvailabilitySubscribe(string email, string sku, string name, string locale, SellerObj sellerObj); - Task ProcessNotification(AffiliateNotification notification); - Task ProcessNotification(BroadcastNotification notification); - Task ProcessNotification(AllStatesNotification notification); - Task VerifySchema(); - Task CreateDefaultTemplate(); - Task> ProcessAllRequests(); - Task ProcessUnsentRequests(); - Task CheckUnsentNotifications(); - Task CartSimulation(CartSimulationRequest cartSimulationRequest, RequestContext requestContext); - Task CanShipToShopper(NotifyRequest requestToNotify, RequestContext requestContext); - Task ListNotifyRequests(); - Task IsValidAuthUser(); - Task ValidateUserToken(string token); - } -} diff --git a/dotnet/Services/IVtexEnvironmentVariableProvider.cs b/dotnet/Services/IVtexEnvironmentVariableProvider.cs deleted file mode 100644 index 15ba7349..00000000 --- a/dotnet/Services/IVtexEnvironmentVariableProvider.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace AvailabilityNotify.Services -{ - public interface IVtexEnvironmentVariableProvider - { - string Account { get; } - string Workspace { get; } - string ApplicationName { get; } - string ApplicationVendor { get; } - string Region { get; } - } -} diff --git a/dotnet/Services/VtexAPIService.cs b/dotnet/Services/VtexAPIService.cs deleted file mode 100644 index 9dfb5d86..00000000 --- a/dotnet/Services/VtexAPIService.cs +++ /dev/null @@ -1,1148 +0,0 @@ -using AvailabilityNotify.Data; -using Microsoft.AspNetCore.Http; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Net.Http; -using System.Text; -using System.Threading.Tasks; -using Vtex.Api.Context; -using System.Linq; -using AvailabilityNotify.Models; -using System.Net; - -namespace AvailabilityNotify.Services -{ - public class VtexAPIService : IVtexAPIService - { - private readonly IIOServiceContext _context; - private readonly IVtexEnvironmentVariableProvider _environmentVariableProvider; - private readonly IHttpContextAccessor _httpContextAccessor; - private readonly IHttpClientFactory _clientFactory; - private readonly IAvailabilityRepository _availabilityRepository; - private readonly string _applicationName; - - public VtexAPIService(IIOServiceContext context, IVtexEnvironmentVariableProvider environmentVariableProvider, IHttpContextAccessor httpContextAccessor, IHttpClientFactory clientFactory, IAvailabilityRepository availabilityRepository) - { - this._context = context ?? - throw new ArgumentNullException(nameof(context)); - - this._environmentVariableProvider = environmentVariableProvider ?? - throw new ArgumentNullException(nameof(environmentVariableProvider)); - - this._httpContextAccessor = httpContextAccessor ?? - throw new ArgumentNullException(nameof(httpContextAccessor)); - - this._clientFactory = clientFactory ?? - throw new ArgumentNullException(nameof(clientFactory)); - - this._availabilityRepository = availabilityRepository ?? - throw new ArgumentNullException(nameof(availabilityRepository)); - - this._applicationName = - $"{this._environmentVariableProvider.ApplicationVendor}.{this._environmentVariableProvider.ApplicationName}"; - - this.VerifySchema(); - this.CreateDefaultTemplate(); - } - - public async Task ListInventoryBySku(string sku, RequestContext requestContext) - { - // GET https://{accountName}.{environment}.com.br/api/logistics/pvt/inventory/skus/skuId - - InventoryBySku inventoryBySku = new InventoryBySku(); - - try - { - var request = new HttpRequestMessage - { - Method = HttpMethod.Get, - RequestUri = new Uri($"http://{requestContext.Account}.{Constants.ENVIRONMENT}.com.br/api/logistics/pvt/inventory/skus/{sku}") - }; - - request.Headers.Add(Constants.USE_HTTPS_HEADER_NAME, "true"); - string authToken = requestContext.AuthToken; - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - request.Headers.Add(Constants.VTEX_ID_HEADER_NAME, authToken); - request.Headers.Add(Constants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); - } - - var client = _clientFactory.CreateClient(); - var response = await client.SendAsync(request); - if (response.IsSuccessStatusCode) - { - string responseContent = await response.Content.ReadAsStringAsync(); - inventoryBySku = JsonConvert.DeserializeObject(responseContent); - _context.Vtex.Logger.Debug("ListInventoryBySku", null, $"Sku '{sku}' {responseContent}"); - } - else - { - _context.Vtex.Logger.Debug("ListInventoryBySku", null, $"Sku '{sku}' [{response.StatusCode}]"); - } - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("ListInventoryBySku", null, $"Error getting inventory for sku '{sku}'", ex); - } - - return inventoryBySku; - } - - public async Task ListAllWarehouses() - { - ListAllWarehousesResponse[] listAllWarehousesResponse = null; - var request = new HttpRequestMessage - { - Method = HttpMethod.Get, - RequestUri = new Uri($"http://{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}.vtexcommercestable.com.br/api/logistics/pvt/configuration/warehouses") - }; - - request.Headers.Add(Constants.USE_HTTPS_HEADER_NAME, "true"); - string authToken = this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_CREDENTIAL]; - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - request.Headers.Add(Constants.VTEX_ID_HEADER_NAME, authToken); - request.Headers.Add(Constants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); - } - - var client = _clientFactory.CreateClient(); - var response = await client.SendAsync(request); - string responseContent = await response.Content.ReadAsStringAsync(); - if (response.IsSuccessStatusCode) - { - listAllWarehousesResponse = JsonConvert.DeserializeObject(responseContent); - } - - return listAllWarehousesResponse; - } - - public async Task GetTotalAvailableForSku(string sku, RequestContext requestContext) - { - long totalAvailable = 0; - ListAllWarehousesResponse[] listAllWarehouses = await this.ListAllWarehouses(); - InventoryBySku inventoryBySku = await this.ListInventoryBySku(sku, requestContext); - if (inventoryBySku != null && inventoryBySku.Balance != null) - { - try - { - List activeWarehouseIds = listAllWarehouses.Where(w => w.IsActive).Select(w => w.Id).ToList(); - if (inventoryBySku.Balance.Any(i => i.HasUnlimitedQuantity && activeWarehouseIds.Contains(i.WarehouseId))) - { - totalAvailable = 1; // We only need available to be greater than zero to be in stock - _context.Vtex.Logger.Debug("GetTotalAvailableForSku", null, $"Sku '{sku}' Has Unlimited Quantity."); - } - else - { - long totalQuantity = inventoryBySku.Balance.Where(i => activeWarehouseIds.Contains(i.WarehouseId)).Sum(i => i.TotalQuantity); - long totalReseved = inventoryBySku.Balance.Where(i => activeWarehouseIds.Contains(i.WarehouseId)).Sum(i => i.ReservedQuantity); - totalAvailable = totalQuantity - totalReseved; - _context.Vtex.Logger.Debug("GetTotalAvailableForSku", null, $"Sku '{sku}' {totalQuantity} - {totalReseved} = {totalAvailable}"); - } - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("GetTotalAvailableForSku", null, $"Error calculating total available for sku '{sku}' '{JsonConvert.SerializeObject(inventoryBySku)}'", ex); - } - } - - // if marketplace inventory is zero, check seller inventory - if (totalAvailable == 0) - { - GetSkuContextResponse skuContextResponse = await GetSkuContext(sku, requestContext); - if (skuContextResponse != null && skuContextResponse.SkuSellers != null) - { - CartSimulationRequest cartSimulationRequest = new CartSimulationRequest - { - Items = new List(), - PostalCode = string.Empty, - Country = string.Empty - }; - - foreach (SkuSeller skuSeller in skuContextResponse.SkuSellers) - { - cartSimulationRequest.Items.Add( - new CartItem - { - Id = sku, - Quantity = 1, - Seller = skuSeller.SellerId - } - ); - } - - try - { - CartSimulationResponse cartSimulationResponse = await this.CartSimulation(cartSimulationRequest, requestContext); - if (cartSimulationResponse != null) - { - var availabilityItems = cartSimulationResponse.Items.Where(i => i.Availability.Equals(Constants.Availability.Available)); - if (availabilityItems != null) - { - totalAvailable += availabilityItems.Sum(i => i.Quantity); - } - } - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("GetTotalAvailableForSku", null, $"Error calculating total available for sku '{sku}' from seller(s)", ex); - } - } - } - - return totalAvailable; - } - - public async Task CreateOrUpdateTemplate(string jsonSerializedTemplate) - { - // POST: "http://hostname/api/template-render/pvt/templates" - - var request = new HttpRequestMessage - { - Method = HttpMethod.Post, - RequestUri = new Uri($"http://{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}.{Constants.ENVIRONMENT}.com.br/api/template-render/pvt/templates"), - Content = new StringContent(jsonSerializedTemplate, Encoding.UTF8, Constants.APPLICATION_JSON) - }; - - string authToken = this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_CREDENTIAL]; - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - request.Headers.Add(Constants.VTEX_ID_HEADER_NAME, authToken); - request.Headers.Add(Constants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); - } - - request.Headers.Add(Constants.USE_HTTPS_HEADER_NAME, "true"); - - var client = _clientFactory.CreateClient(); - var response = await client.SendAsync(request); - string responseContent = await response.Content.ReadAsStringAsync(); - _context.Vtex.Logger.Info("Create Template", null, $"[{response.StatusCode}] {responseContent}"); - - return response.IsSuccessStatusCode; - } - - public async Task CreateOrUpdateTemplate(EmailTemplate template) - { - string jsonSerializedTemplate = JsonConvert.SerializeObject(template); - if (string.IsNullOrEmpty(jsonSerializedTemplate)) - { - return false; - } - else - { - return await this.CreateOrUpdateTemplate(jsonSerializedTemplate); - } - } - - public async Task TemplateExists(string templateName) - { - // POST: "http://hostname/api/template-render/pvt/templates" - - var request = new HttpRequestMessage - { - Method = HttpMethod.Get, - RequestUri = new Uri($"http://{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}.myvtex.com/api/template-render/pvt/templates/{templateName}") - }; - - string authToken = this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_CREDENTIAL]; - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - request.Headers.Add(Constants.VTEX_ID_HEADER_NAME, authToken); - } - - var client = _clientFactory.CreateClient(); - var response = await client.SendAsync(request); - - return (int)response.StatusCode == StatusCodes.Status200OK; - } - - public async Task GetDefaultTemplate(string templateName) - { - string templateBody = string.Empty; - var request = new HttpRequestMessage - { - Method = HttpMethod.Get, - RequestUri = new Uri($"{Constants.GITHUB_URL}/{Constants.RESPOSITORY}/{Constants.TEMPLATE_FOLDER}/{templateName}.{Constants.TEMPLATE_FILE_EXTENSION}") - }; - - request.Headers.Add(Constants.USE_HTTPS_HEADER_NAME, "true"); - string authToken = _context.Vtex.AuthToken; - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - } - - var client = _clientFactory.CreateClient(); - var response = await client.SendAsync(request); - string responseContent = await response.Content.ReadAsStringAsync(); - _context.Vtex.Logger.Debug("GetDefaultTemplate", "Response", $"[{response.StatusCode}] {responseContent}"); - if (response.IsSuccessStatusCode) - { - templateBody = responseContent; - } - else - { - _context.Vtex.Logger.Info("GetDefaultTemplate", "Response", $"[{response.StatusCode}] {responseContent} [{Constants.GITHUB_URL}/{Constants.RESPOSITORY}/{Constants.TEMPLATE_FOLDER}/{templateName}.{Constants.TEMPLATE_FILE_EXTENSION}]"); - } - - return templateBody; - } - - public async Task VerifySchema() - { - return await _availabilityRepository.VerifySchema(); - } - - public async Task CreateDefaultTemplate() - { - bool templateExists = false; - string templateName = Constants.DEFAULT_TEMPLATE_NAME; - - templateExists = await this.TemplateExists(templateName); - if (!templateExists) - { - string templateBody = await this.GetDefaultTemplate(templateName); - if (string.IsNullOrWhiteSpace(templateBody)) - { - _context.Vtex.Logger.Warn("SendEmail", "Create Template", $"Failed to Load Template {templateName}"); - } - else - { - EmailTemplate emailTemplate = JsonConvert.DeserializeObject(templateBody); - emailTemplate.Templates.Email.Message = emailTemplate.Templates.Email.Message.Replace(@"\r", string.Empty); - emailTemplate.Templates.Email.Message = emailTemplate.Templates.Email.Message.Replace(@"\n", "\n"); - templateExists = await this.CreateOrUpdateTemplate(emailTemplate); - } - } - - return templateExists; - } - - public async Task GetSkuSeller(string sellerId, string skuId, RequestContext requestContext) - { - // GET https://{accountName}.{environment}.com.br/api/catalog_system/pvt/skuseller/{sellerId}/{sellerSkuId} - - GetSkuSellerResponse skuSellerResponse = null; - - try - { - var request = new HttpRequestMessage - { - Method = HttpMethod.Get, - RequestUri = new Uri($"http://{requestContext.Account}.{Constants.ENVIRONMENT}.com.br/api/catalog_system/pvt/skuseller/{sellerId}/{skuId}") - }; - - request.Headers.Add(Constants.USE_HTTPS_HEADER_NAME, "true"); - string authToken = requestContext.AuthToken; - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - request.Headers.Add(Constants.VTEX_ID_HEADER_NAME, authToken); - request.Headers.Add(Constants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); - } - - var client = _clientFactory.CreateClient(); - var response = await client.SendAsync(request); - string responseContent = await response.Content.ReadAsStringAsync(); - if (response.IsSuccessStatusCode) - { - skuSellerResponse = JsonConvert.DeserializeObject(responseContent); - } - else - { - _context.Vtex.Logger.Warn("GetSkuSeller", null, $"Could not get sku for id '{skuId}' [{response.StatusCode}]"); - } - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("GetSkuSeller", null, $"Error getting sku for id '{skuId}'", ex); - } - - return skuSellerResponse; - } - - public async Task GetSkuContext(string skuId, RequestContext requestContext) - { - // GET https://{accountName}.{environment}.com.br/api/catalog_system/pvt/sku/stockkeepingunitbyid/skuId - - GetSkuContextResponse getSkuContextResponse = null; - - try - { - var request = new HttpRequestMessage - { - Method = HttpMethod.Get, - RequestUri = new Uri($"http://{requestContext.Account}.{Constants.ENVIRONMENT}.com.br/api/catalog_system/pvt/sku/stockkeepingunitbyid/{skuId}") - }; - - request.Headers.Add(Constants.USE_HTTPS_HEADER_NAME, "true"); - string authToken = requestContext.AuthToken; - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - request.Headers.Add(Constants.VTEX_ID_HEADER_NAME, authToken); - request.Headers.Add(Constants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); - } - - var client = _clientFactory.CreateClient(); - var response = await client.SendAsync(request); - string responseContent = await response.Content.ReadAsStringAsync(); - if (response.IsSuccessStatusCode) - { - getSkuContextResponse = JsonConvert.DeserializeObject(responseContent); - } - else - { - _context.Vtex.Logger.Warn("GetSkuContext", null, $"Could not get sku for id '{skuId}' [{response.StatusCode}]"); - } - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("GetSkuContext", null, $"Error getting sku for id '{skuId}'", ex); - } - - return getSkuContextResponse; - } - - public async Task SendEmail(NotifyRequest notifyRequest, GetSkuContextResponse skuContext, RequestContext requestContext) - { - bool success = false; - string templateName = Constants.DEFAULT_TEMPLATE_NAME; - - EmailMessage emailMessage = new EmailMessage - { - TemplateName = templateName, - ProviderName = requestContext.Account, - JsonData = new JsonData - { - SkuContext = skuContext, - NotifyRequest = notifyRequest - } - }; - - string accountName = requestContext.Account; - string message = JsonConvert.SerializeObject(emailMessage); - - var request = new HttpRequestMessage - { - Method = HttpMethod.Post, - RequestUri = new Uri($"{Constants.MAIL_SERVICE}?an={accountName}"), - Content = new StringContent(message, Encoding.UTF8, Constants.APPLICATION_JSON) - }; - - request.Headers.Add(Constants.USE_HTTPS_HEADER_NAME, "true"); - string authToken = requestContext.AuthToken; - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - request.Headers.Add(Constants.VTEX_ID_HEADER_NAME, authToken); - request.Headers.Add(Constants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); - } - - HttpClient client = _clientFactory.CreateClient(); - try - { - HttpResponseMessage responseMessage = await client.SendAsync(request); - string responseContent = await responseMessage.Content.ReadAsStringAsync(); - _context.Vtex.Logger.Debug("SendEmail", null, $"{message}\n[{responseMessage.StatusCode}]\n{responseContent}"); - success = responseMessage.IsSuccessStatusCode; - if (responseMessage.StatusCode.Equals(HttpStatusCode.NotFound)) - { - _context.Vtex.Logger.Error("SendEmail", null, $"Template {templateName} not found."); - } - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("SendEmail", null, $"Failure sending {message}", ex); - success = false; //jic - } - - return success; - } - - public async Task AvailabilitySubscribe(string email, string sku, string name, string locale, SellerObj sellerObj) - { - - bool success = false; - RequestContext requestContext = new RequestContext - { - Account = _context.Vtex.Account, - AuthToken = _context.Vtex.AuthToken - }; - - NotifyRequest[] requestsToNotify = await _availabilityRepository.ListRequestsForSkuId(sku, requestContext); - if (requestsToNotify.Any(x => x.Email.Equals(email))) - { - return success; - } - - NotifyRequest notifyRequest = new NotifyRequest - { - RequestedAt = DateTime.Now.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'"), - Email = email, - SkuId = sku, - Name = name, - NotificationSent = "false", - Locale = locale, - Seller = sellerObj - }; - - success = await _availabilityRepository.SaveNotifyRequest(notifyRequest, requestContext); - - return success; - } - - public async Task ProcessNotification(AffiliateNotification notification) - { - bool success = true; - RequestContext requestContext = new RequestContext - { - Account = _context.Vtex.Account, - AuthToken = _context.Vtex.AuthToken - }; - - - if (!notification.An.Equals(requestContext.Account)) - { - - GetSkuSellerResponse getSkuSellerResponse = await GetSkuSeller(notification.An, notification.IdSku, requestContext); - if (getSkuSellerResponse != null) - { - notification.IdSku = getSkuSellerResponse.StockKeepingUnitId.ToString(); - } - else - { - _context.Vtex.Logger.Warn("ProcessNotification", "AffiliateNotification", "SKU NOT FOUND"); - } - } - - bool isActive = notification.IsActive; - bool inventoryUpdated = notification.StockModified; - string skuId = notification.IdSku; - _context.Vtex.Logger.Debug("ProcessNotification", "AffiliateNotification", $"Sku:{skuId} Active?{isActive} Inventory Changed?{inventoryUpdated}"); - success = await this.ProcessNotification(requestContext, isActive, inventoryUpdated, skuId); - if (isActive && inventoryUpdated) - { - MerchantSettings merchantSettings = await _availabilityRepository.GetMerchantSettings(); - if (!string.IsNullOrEmpty(merchantSettings.NotifyMarketplace)) - { - StringBuilder sb = new StringBuilder(); - BroadcastNotification broadcastNotification = new BroadcastNotification - { - An = notification.An, - HasStockKeepingUnitRemovedFromAffiliate = notification.HasStockKeepingUnitRemovedFromAffiliate, - IdAffiliate = notification.IdAffiliate, - IsActive = notification.IsActive, - DateModified = notification.DateModified, - HasStockKeepingUnitModified = notification.HasStockKeepingUnitModified, - IdSku = notification.IdSku, - PriceModified = notification.PriceModified, - ProductId = notification.ProductId, - StockModified = notification.StockModified, - Version = notification.Version - }; - - string[] marketplaces = merchantSettings.NotifyMarketplace.Split(','); - foreach (string marketplace in marketplaces) - { - bool successThis = await this.ForwardNotification(broadcastNotification, marketplace, requestContext); - sb.AppendLine($"'{marketplace}' {successThis}"); - success &= successThis; - } - - _context.Vtex.Logger.Info("ProcessNotification", "ForwardNotification", $"Sku:{skuId}", new[] { ("accounts", sb.ToString()) }); - } - } - - return success; - } - - public async Task ProcessNotification(BroadcastNotification notification) - { - bool success = false; - RequestContext requestContext = new RequestContext - { - Account = _context.Vtex.Account, - AuthToken = _context.Vtex.AuthToken - }; - - bool isActive = notification.IsActive; - bool inventoryUpdated = notification.StockModified; - string skuId = notification.IdSku; - // _context.Vtex.Logger.Debug("ProcessNotification", "BroadcastNotification", $"Sku:{skuId} Active?{isActive} Inventory Changed?{inventoryUpdated}"); - success = await this.ProcessNotification(requestContext, isActive, inventoryUpdated, skuId); - if (isActive && inventoryUpdated) - { - MerchantSettings merchantSettings = await _availabilityRepository.GetMerchantSettings(); - if (!string.IsNullOrEmpty(merchantSettings.NotifyMarketplace)) - { - StringBuilder sb = new StringBuilder(); - string[] marketplaces = merchantSettings.NotifyMarketplace.Split(','); - foreach (string marketplace in marketplaces) - { - bool successThis = await this.ForwardNotification(notification, marketplace, requestContext); - sb.AppendLine($"'{marketplace}' {successThis}"); - // success &= successThis; // Ignore forwarding errors - } - - _context.Vtex.Logger.Info("ProcessNotification", "ForwardNotification", $"Sku:{skuId}", new[] { ("accounts", sb.ToString()) }); - } - } - - return success; - } - - public async Task ProcessNotification(AllStatesNotification notification) - { - switch (notification.CurrentState) - { - case Constants.VtexOrderStatus.StartHanding: // What state to trigger on? - await this.CheckUnsentNotifications(); - break; - } - } - - public async Task GetShopperByEmail(string email) - { - // GET https://{accountName}.{environment}.com.br/api/dataentities/CL/search?email= - - ShopperRecord[] shopperRecord = null; - - try - { - var request = new HttpRequestMessage - { - Method = HttpMethod.Get, - RequestUri = new Uri($"http://{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}.{Constants.ENVIRONMENT}.com.br/api/dataentities/CL/search?email={email}") - }; - - request.Headers.Add(Constants.USE_HTTPS_HEADER_NAME, "true"); - string authToken = this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_CREDENTIAL]; - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - request.Headers.Add(Constants.VTEX_ID_HEADER_NAME, authToken); - request.Headers.Add(Constants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); - } - - var client = _clientFactory.CreateClient(); - var response = await client.SendAsync(request); - string responseContent = await response.Content.ReadAsStringAsync(); - if (response.IsSuccessStatusCode) - { - _context.Vtex.Logger.Debug("GetShopperByEmail", null, $"Shopper '{email}'\n[{response.StatusCode}] '{responseContent}'"); - shopperRecord = JsonConvert.DeserializeObject(responseContent); - } - else - { - _context.Vtex.Logger.Warn("GetShopperByEmail", null, $"Could not find shopper '{email}'\n[{response.StatusCode}] '{responseContent}'"); - } - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("GetShopperByEmail", null, $"Error getting shopper '{email}'", ex); - } - - return shopperRecord; - } - - public async Task GetShopperAddressById(string id) - { - // GET https://{accountName}.{environment}.com.br/api/dataentities/AD/search?userId=&_fields= - - ShopperAddress[] shopperAddress = null; - string searchFields = "country,postalCode"; - - try - { - var request = new HttpRequestMessage - { - Method = HttpMethod.Get, - RequestUri = new Uri($"http://{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}.{Constants.ENVIRONMENT}.com.br/api/dataentities/AD/search?userId={id}&_fields={searchFields}") - }; - - request.Headers.Add(Constants.USE_HTTPS_HEADER_NAME, "true"); - string authToken = this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_CREDENTIAL]; - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - request.Headers.Add(Constants.VTEX_ID_HEADER_NAME, authToken); - request.Headers.Add(Constants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); - } - - var client = _clientFactory.CreateClient(); - var response = await client.SendAsync(request); - string responseContent = await response.Content.ReadAsStringAsync(); - if (response.IsSuccessStatusCode) - { - shopperAddress = JsonConvert.DeserializeObject(responseContent); - } - else - { - _context.Vtex.Logger.Warn("GetShopperAddressById", null, $"Could not find shopper '{id}'\n[{response.StatusCode}] '{responseContent}'"); - } - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("GetShopperAddressById", null, $"Error getting shopper '{id}'", ex); - } - - return shopperAddress; - } - - private async Task ProcessNotification(RequestContext requestContext, bool isActive, bool inventoryUpdated, string skuId) - { - bool success = false; - if (isActive && inventoryUpdated) - { - MerchantSettings merchantSettings = await _availabilityRepository.GetMerchantSettings(); - NotifyRequest[] requestsToNotify = await _availabilityRepository.ListRequestsForSkuId(skuId, requestContext); - if (requestsToNotify != null) - { - var distinct = requestsToNotify.GroupBy(x => x.Email).Select(x => x.First()).ToList(); - if (distinct != null && distinct.Any()) - { - long available = await GetTotalAvailableForSku(skuId, requestContext); - if (available > 0) - { - GetSkuContextResponse skuContextResponse = await GetSkuContext(skuId, requestContext); - if (skuContextResponse != null) - { - foreach (NotifyRequest requestToNotify in distinct) - { - bool sendMail = true; - if (merchantSettings.DoShippingSim) - { - sendMail = await this.CanShipToShopper(requestToNotify, requestContext); - } - - if (sendMail) - { - bool mailSent = await SendEmail(requestToNotify, skuContextResponse, requestContext); - if (mailSent) - { - requestToNotify.NotificationSent = "true"; - requestToNotify.NotificationSentAt = DateTime.Now.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'"); - bool updatedRequest = await _availabilityRepository.SaveNotifyRequest(requestToNotify, requestContext); - success = updatedRequest; - if (!updatedRequest) - { - _context.Vtex.Logger.Error("ProcessNotification", null, $"Mail was sent but failed to update record {JsonConvert.SerializeObject(requestToNotify)}"); - } - } - } - else - { - _context.Vtex.Logger.Debug("ProcessNotification", null, $"SkuId '{skuId}' can not be shipped to '{requestToNotify.Email}' "); - } - } - } - else - { - _context.Vtex.Logger.Warn("ProcessNotification", null, $"Null SkuContext for skuId {skuId}"); - } - } - else - { - _context.Vtex.Logger.Debug("ProcessNotification", null, $"SkuId '{skuId}' {available} available"); - } - } - // else - // { - // _context.Vtex.Logger.Debug("ProcessNotification", null, $"No requests to be notified for {skuId}"); - // } - } - else - { - _context.Vtex.Logger.Debug("ProcessNotification", null, $"Reuest returned NULL for {skuId}"); - } - } - - return success; - } - - public async Task> ProcessAllRequests() - { - List results = new List(); - RequestContext requestContext = new RequestContext - { - Account = _context.Vtex.Account, - AuthToken = _context.Vtex.AuthToken - }; - - NotifyRequest[] allRequests = await _availabilityRepository.ListNotifyRequests(); - if (allRequests != null && allRequests.Length > 0) - { - foreach (NotifyRequest requestToNotify in allRequests) - { - bool sendMail = false; - bool updatedRecord = false; - string skuId = requestToNotify.SkuId; - if (requestToNotify.NotificationSent.Equals("true")) - { - results.Add($"{skuId} {requestToNotify.Email} Sent at {requestToNotify.NotificationSentAt}"); - } - else - { - long available = await GetTotalAvailableForSku(skuId, requestContext); - if (available > 0) - { - bool canSend = true; - MerchantSettings merchantSettings = await _availabilityRepository.GetMerchantSettings(); - if (merchantSettings.DoShippingSim) - { - canSend = await this.CanShipToShopper(requestToNotify, requestContext); - } - - if (canSend) - { - GetSkuContextResponse skuContextResponse = await GetSkuContext(skuId, requestContext); - sendMail = await SendEmail(requestToNotify, skuContextResponse, requestContext); - if (sendMail) - { - requestToNotify.NotificationSent = "true"; - requestToNotify.NotificationSentAt = DateTime.Now.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'"); - updatedRecord = await _availabilityRepository.SaveNotifyRequest(requestToNotify, requestContext); - } - } - } - - results.Add($"{skuId} Qnty:{available} '{requestToNotify.Email}' Sent? {sendMail} Updated? {updatedRecord}"); - } - } - } - else - { - results.Add("No requests to notify."); - } - - return results; - } - - public async Task ProcessUnsentRequests() - { - List results = new List(); - RequestContext requestContext = new RequestContext - { - Account = _context.Vtex.Account, - AuthToken = _context.Vtex.AuthToken - }; - - NotifyRequest[] allRequests = await _availabilityRepository.ListUnsentNotifyRequests(); - if (allRequests != null && allRequests.Length > 0) - { - foreach (NotifyRequest requestToNotify in allRequests) - { - bool sendMail = false; - bool updatedRecord = false; - string skuId = requestToNotify.SkuId; - long available = await GetTotalAvailableForSku(skuId, requestContext); - if (available > 0) - { - bool canSend = true; - MerchantSettings merchantSettings = await _availabilityRepository.GetMerchantSettings(); - if (merchantSettings.DoShippingSim) - { - canSend = await this.CanShipToShopper(requestToNotify, requestContext); - } - - if (canSend) - { - GetSkuContextResponse skuContextResponse = await GetSkuContext(skuId, requestContext); - sendMail = await SendEmail(requestToNotify, skuContextResponse, requestContext); - if (sendMail) - { - requestToNotify.NotificationSent = "true"; - requestToNotify.NotificationSentAt = DateTime.Now.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'"); - updatedRecord = await _availabilityRepository.SaveNotifyRequest(requestToNotify, requestContext); - } - } - } - - //results.Add($"{skuId} Qnty:{available} '{requestToNotify.Email}' Sent? {sendMail} Updated? {updatedRecord}"); - ProcessingResult processingResult = new ProcessingResult - { - QuantityAvailable = available.ToString(), - Email = requestToNotify.Email, - Sent = sendMail, - SkuId = skuId, - Updated = updatedRecord - }; - - results.Add(processingResult); - } - } - else - { - results.Add(new ProcessingResult()); - } - - return results.ToArray(); - } - - public async Task CanShipToShopper(NotifyRequest requestToNotify, RequestContext requestContext) - { - bool sendMail = false; - ShopperRecord[] shopperRecord = await this.GetShopperByEmail(requestToNotify.Email); - if (shopperRecord != null && shopperRecord.Length > 0) - { - ShopperAddress[] shopperAddresses = await this.GetShopperAddressById(shopperRecord.Where(sr => sr.AccountName.Equals(_context.Vtex.Account)).Select(sr => sr.Id).FirstOrDefault()); - if (shopperAddresses != null && shopperAddresses.Length > 0) - { - string sellerId = string.Empty; - if (requestToNotify.Seller != null && requestToNotify.Seller.sellerId != null) - { - sellerId = requestToNotify.Seller.sellerId; - } - - CartSimulationRequest cartSimulationRequest = new CartSimulationRequest - { - Items = new List - { - new CartItem - { - Id = requestToNotify.SkuId, - Quantity = 1, - Seller = sellerId - } - }, - PostalCode = string.Empty, - Country = string.Empty - }; - - var addressList = shopperAddresses.Distinct(); - foreach (ShopperAddress shopperAddress in addressList) - { - cartSimulationRequest.PostalCode = shopperAddress.PostalCode; - cartSimulationRequest.Country = shopperAddress.Country; - CartSimulationResponse cartSimulationResponse = await this.CartSimulation(cartSimulationRequest, requestContext); - if (cartSimulationResponse != null - && cartSimulationResponse.Items != null - && cartSimulationResponse.Items.Length > 0 - && cartSimulationResponse.Items[0].Availability.Equals(Constants.Availability.Available)) - { - sendMail = true; - break; - } - } - } - } - - return sendMail; - } - - public async Task CartSimulation(CartSimulationRequest cartSimulationRequest, RequestContext requestContext) - { - CartSimulationResponse cartSimulationResponse = null; - string jsonSerializedData = JsonConvert.SerializeObject(cartSimulationRequest); - - try - { - var request = new HttpRequestMessage - { - Method = HttpMethod.Post, - RequestUri = new Uri($"http://{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}.{Constants.ENVIRONMENT}.com.br/api/checkout/pub/orderForms/simulation"), - Content = new StringContent(jsonSerializedData, Encoding.UTF8, Constants.APPLICATION_JSON) - }; - - request.Headers.Add(Constants.USE_HTTPS_HEADER_NAME, "true"); - string authToken = requestContext.AuthToken; - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - request.Headers.Add(Constants.VTEX_ID_HEADER_NAME, authToken); - request.Headers.Add(Constants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); - } - - var client = _clientFactory.CreateClient(); - var response = await client.SendAsync(request); - string responseContent = await response.Content.ReadAsStringAsync(); - if (response.IsSuccessStatusCode) - { - cartSimulationResponse = JsonConvert.DeserializeObject(responseContent); - } - else - { - _context.Vtex.Logger.Warn("CartSimulation", null, $"[{response.StatusCode}] '{responseContent}'\n{jsonSerializedData}"); - } - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("CartSimulation", null, $"Error in Cart Simulation '{jsonSerializedData}'", ex); - } - - return cartSimulationResponse; - } - - public async Task ForwardNotification(BroadcastNotification notification, string accountName, RequestContext requestContext) - { - bool success = false; - if (!string.IsNullOrEmpty(accountName)) - { - accountName = accountName.Trim(); - if (_context.Vtex.Account.Equals(accountName, StringComparison.OrdinalIgnoreCase)) - { - _context.Vtex.Logger.Warn("ForwardNotification", null, $"Skipping self reference. Please remove account from app settings."); - return true; - } - - AffiliateNotification affiliateNotification = new AffiliateNotification - { - An = notification.An, - HasStockKeepingUnitRemovedFromAffiliate = notification.HasStockKeepingUnitRemovedFromAffiliate, - IdAffiliate = notification.IdAffiliate, - IsActive = notification.IsActive, - DateModified = notification.DateModified, - HasStockKeepingUnitModified = notification.HasStockKeepingUnitModified, - IdSku = notification.IdSku, - PriceModified = notification.PriceModified, - ProductId = notification.ProductId, - StockModified = notification.StockModified, - Version = notification.Version - }; - - string jsonSerializedData = JsonConvert.SerializeObject(affiliateNotification); - - try - { - var request = new HttpRequestMessage - { - Method = HttpMethod.Post, - //RequestUri = new Uri($"http://{accountName}.{Constants.ENVIRONMENT}.com.br/_v/availability-notify/notify"), - RequestUri = new Uri($"http://app.io.vtex.com/vtex.availability-notify/v{_context.Vtex.App.Major}/{accountName}/master/_v/availability-notify/notify"), - Content = new StringContent(jsonSerializedData, Encoding.UTF8, Constants.APPLICATION_JSON) - }; - - request.Headers.Add(Constants.USE_HTTPS_HEADER_NAME, "true"); - - string authToken = requestContext.AuthToken; - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - request.Headers.Add(Constants.VTEX_ID_HEADER_NAME, authToken); - request.Headers.Add(Constants.PROXY_AUTHORIZATION_HEADER_NAME, authToken); - } - - var client = _clientFactory.CreateClient(); - var response = await client.SendAsync(request); - string responseContent = await response.Content.ReadAsStringAsync(); - if (response.IsSuccessStatusCode) - { - success = true; - } - else - { - _context.Vtex.Logger.Warn("ForwardNotification", null, $"[{response.StatusCode}] '{responseContent}' ", new[] { ("url", request.RequestUri.ToString()), ("Notification", jsonSerializedData) }); - } - } - catch (Exception ex) - { - _context.Vtex.Logger.Warn("ForwardNotification", null, $"Error forwarding request to '{accountName}' '{ex.Message}'", new[] { ("url", $"http://app.io.vtex.com/vtex.availability-notify/v{_context.Vtex.App.Major}/{accountName}/master/_v/availability-notify/notify"), ("Notification", jsonSerializedData) }); - } - } - else - { - _context.Vtex.Logger.Warn("ForwardNotification", null, "Account name is empty."); - } - - return success; - } - - public async Task CheckUnsentNotifications() - { - int windowInMinutes = 100; - DateTime lastCheck = await _availabilityRepository.GetLastUnsentCheck(); - if (lastCheck.AddMinutes(windowInMinutes) < DateTime.Now) - { - ProcessingResult[] processingResults = await this.ProcessUnsentRequests(); - _context.Vtex.Logger.Info("CheckUnsentNotifications", null, JsonConvert.SerializeObject(processingResults)); - - await _availabilityRepository.SetLastUnsentCheck(DateTime.Now); - } - } - - public async Task ListNotifyRequests() - { - return await _availabilityRepository.ListNotifyRequests(); - } - - public async Task ValidateUserToken(string token) - { - ValidatedUser validatedUser = null; - ValidateToken validateToken = new ValidateToken - { - Token = token - }; - - var jsonSerializedToken = JsonConvert.SerializeObject(validateToken); - var request = new HttpRequestMessage - { - Method = HttpMethod.Post, - RequestUri = new Uri($"http://{this._httpContextAccessor.HttpContext.Request.Headers[Constants.VTEX_ACCOUNT_HEADER_NAME]}.vtexcommercestable.com.br/api/vtexid/credential/validate"), - Content = new StringContent(jsonSerializedToken, Encoding.UTF8, Constants.APPLICATION_JSON) - }; - - string authToken = this._httpContextAccessor.HttpContext.Request.Headers[Constants.HEADER_VTEX_CREDENTIAL]; - - if (authToken != null) - { - request.Headers.Add(Constants.AUTHORIZATION_HEADER_NAME, authToken); - } - - var client = _clientFactory.CreateClient(); - - try - { - var response = await client.SendAsync(request); - string responseContent = await response.Content.ReadAsStringAsync(); - //_context.Vtex.Logger.Info("ValidateUserToken", null, $"[{response.StatusCode}] {responseContent}"); - if (response.IsSuccessStatusCode) - { - validatedUser = JsonConvert.DeserializeObject(responseContent); - } - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("ValidateUserToken", null, $"Error validating user token", ex); - } - - return validatedUser; - } - - public async Task IsValidAuthUser() - { - if (string.IsNullOrEmpty(_context.Vtex.AdminUserAuthToken)) - { - return HttpStatusCode.Unauthorized; - } - - ValidatedUser validatedUser = null; - - try - { - validatedUser = await ValidateUserToken(_context.Vtex.AdminUserAuthToken); - } - catch (Exception ex) - { - _context.Vtex.Logger.Error("IsValidAuthUser", null, "Error fetching user", ex); - - return HttpStatusCode.BadRequest; - } - - bool hasPermission = validatedUser != null && validatedUser.AuthStatus.Equals("Success"); - - if (!hasPermission) - { - _context.Vtex.Logger.Warn("IsValidAuthUser", null, "User Does Not Have Permission"); - - return HttpStatusCode.Forbidden; - } - - return HttpStatusCode.OK; - } - } -} diff --git a/dotnet/Services/VtexEnvironmentVariableProvider.cs b/dotnet/Services/VtexEnvironmentVariableProvider.cs deleted file mode 100644 index 61ad6f80..00000000 --- a/dotnet/Services/VtexEnvironmentVariableProvider.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace AvailabilityNotify.Services -{ - using System; - - public class VtexEnvironmentVariableProvider : IVtexEnvironmentVariableProvider - { - public VtexEnvironmentVariableProvider() - { - this.Account = Environment.GetEnvironmentVariable("VTEX_ACCOUNT"); - this.Workspace = Environment.GetEnvironmentVariable("VTEX_WORKSPACE"); - this.ApplicationName = Environment.GetEnvironmentVariable("VTEX_APP_NAME"); - this.ApplicationVendor = Environment.GetEnvironmentVariable("VTEX_APP_VENDOR"); - this.Region = Environment.GetEnvironmentVariable("VTEX_REGION"); - } - - public string Account { get; } - public string Workspace { get; } - public string ApplicationName { get; } - public string ApplicationVendor { get; } - public string Region { get; } - } -} diff --git a/dotnet/StartupExtender.cs b/dotnet/StartupExtender.cs deleted file mode 100644 index 7f0f4f75..00000000 --- a/dotnet/StartupExtender.cs +++ /dev/null @@ -1,48 +0,0 @@ -using AvailabilityNotify.Services; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Vtex.Api.Context; - -namespace Vtex -{ - public class StartupExtender - { - // This method is called inside Startup's constructor - // You can use it to build a custom configuration - public void ExtendConstructor(IConfiguration config, IWebHostEnvironment env) - { - - } - - // This method is called inside Startup.ConfigureServices() - // Note that you don't need to call AddControllers() here - public void ExtendConfigureServices(IServiceCollection services) - { - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddHttpContextAccessor(); - services.AddHttpClient(); - } - - // This method is called inside Startup.Configure() before calling app.UseRouting() - public void ExtendConfigureBeforeRouting(IApplicationBuilder app, IWebHostEnvironment env) - { - - } - - // This method is called inside Startup.Configure() before calling app.UseEndpoint() - public void ExtendConfigureBeforeEndpoint(IApplicationBuilder app, IWebHostEnvironment env) - { - - } - - // This method is called inside Startup.Configure() after calling app.UseEndpoint() - public void ExtendConfigureAfterEndpoint(IApplicationBuilder app, IWebHostEnvironment env) - { - - } - } -} \ No newline at end of file diff --git a/dotnet/availability-notify.csproj b/dotnet/availability-notify.csproj deleted file mode 100644 index f5e5672d..00000000 --- a/dotnet/availability-notify.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - netcoreapp3.0 - - - - - - - - - - - diff --git a/dotnet/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs b/dotnet/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs deleted file mode 100644 index cc083fe5..00000000 --- a/dotnet/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs +++ /dev/null @@ -1,4 +0,0 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v3.0", FrameworkDisplayName = "")] diff --git a/dotnet/obj/Debug/netcoreapp3.0/availability-notify.AssemblyInfo.cs b/dotnet/obj/Debug/netcoreapp3.0/availability-notify.AssemblyInfo.cs deleted file mode 100644 index 93827225..00000000 --- a/dotnet/obj/Debug/netcoreapp3.0/availability-notify.AssemblyInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("availability-notify")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] -[assembly: System.Reflection.AssemblyProductAttribute("availability-notify")] -[assembly: System.Reflection.AssemblyTitleAttribute("availability-notify")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] - -// Generated by the MSBuild WriteCodeFragment class. - diff --git a/dotnet/obj/Debug/netcoreapp3.0/availability-notify.AssemblyInfoInputs.cache b/dotnet/obj/Debug/netcoreapp3.0/availability-notify.AssemblyInfoInputs.cache deleted file mode 100644 index 13978a32..00000000 --- a/dotnet/obj/Debug/netcoreapp3.0/availability-notify.AssemblyInfoInputs.cache +++ /dev/null @@ -1 +0,0 @@ -987c58afc190c6b3c4adac46c5d170f6b96a0332 diff --git a/dotnet/obj/Debug/netcoreapp3.0/availability-notify.assets.cache b/dotnet/obj/Debug/netcoreapp3.0/availability-notify.assets.cache deleted file mode 100644 index 0acaab79..00000000 Binary files a/dotnet/obj/Debug/netcoreapp3.0/availability-notify.assets.cache and /dev/null differ diff --git a/dotnet/obj/Debug/netcoreapp3.0/availability-notify.csprojAssemblyReference.cache b/dotnet/obj/Debug/netcoreapp3.0/availability-notify.csprojAssemblyReference.cache deleted file mode 100644 index 9800147d..00000000 Binary files a/dotnet/obj/Debug/netcoreapp3.0/availability-notify.csprojAssemblyReference.cache and /dev/null differ diff --git a/dotnet/obj/availability-notify.csproj.nuget.dgspec.json b/dotnet/obj/availability-notify.csproj.nuget.dgspec.json deleted file mode 100644 index 58287b55..00000000 --- a/dotnet/obj/availability-notify.csproj.nuget.dgspec.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "format": 1, - "restore": { - "c:\\Users\\brian\\source\\repos\\availability-notify\\dotnet\\availability-notify.csproj": {} - }, - "projects": { - "c:\\Users\\brian\\source\\repos\\availability-notify\\dotnet\\availability-notify.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "c:\\Users\\brian\\source\\repos\\availability-notify\\dotnet\\availability-notify.csproj", - "projectName": "availability-notify", - "projectPath": "c:\\Users\\brian\\source\\repos\\availability-notify\\dotnet\\availability-notify.csproj", - "packagesPath": "C:\\Users\\brian\\.nuget\\packages\\", - "outputPath": "c:\\Users\\brian\\source\\repos\\availability-notify\\dotnet\\obj\\", - "projectStyle": "PackageReference", - "configFilePaths": [ - "C:\\Users\\brian\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "netcoreapp3.0" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netcoreapp3.0": { - "targetAlias": "netcoreapp3.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - } - }, - "frameworks": { - "netcoreapp3.0": { - "targetAlias": "netcoreapp3.0", - "dependencies": { - "GraphQL": { - "target": "Package", - "version": "[2.4.0, )" - }, - "Newtonsoft.Json": { - "target": "Package", - "version": "[12.0.3, )" - }, - "Vtex.Api": { - "target": "Package", - "version": "[0.1.1, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.AspNetCore.App": { - "privateAssets": "none" - }, - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\5.0.104\\RuntimeIdentifierGraph.json" - } - } - } - } -} \ No newline at end of file diff --git a/dotnet/obj/availability-notify.csproj.nuget.g.props b/dotnet/obj/availability-notify.csproj.nuget.g.props deleted file mode 100644 index 4910fda7..00000000 --- a/dotnet/obj/availability-notify.csproj.nuget.g.props +++ /dev/null @@ -1,18 +0,0 @@ - - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\brian\.nuget\packages\ - PackageReference - 5.8.0 - - - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - \ No newline at end of file diff --git a/dotnet/obj/availability-notify.csproj.nuget.g.targets b/dotnet/obj/availability-notify.csproj.nuget.g.targets deleted file mode 100644 index 53cfaa19..00000000 --- a/dotnet/obj/availability-notify.csproj.nuget.g.targets +++ /dev/null @@ -1,6 +0,0 @@ - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - \ No newline at end of file diff --git a/dotnet/obj/project.assets.json b/dotnet/obj/project.assets.json deleted file mode 100644 index ceebdc17..00000000 --- a/dotnet/obj/project.assets.json +++ /dev/null @@ -1,5283 +0,0 @@ -{ - "version": 3, - "targets": { - ".NETCoreApp,Version=v3.0": { - "GraphQL/2.4.0": { - "type": "package", - "dependencies": { - "GraphQL-Parser": "3.0.0", - "Newtonsoft.Json": "10.0.3", - "System.Buffers": "4.5.0", - "System.Reactive.Core": "3.1.1", - "System.Reactive.Linq": "3.1.1" - }, - "compile": { - "lib/netstandard2.0/GraphQL.dll": {} - }, - "runtime": { - "lib/netstandard2.0/GraphQL.dll": {} - } - }, - "GraphQL-Parser/3.0.0": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.6.0" - }, - "compile": { - "lib/netstandard1.1/GraphQL-Parser.dll": {} - }, - "runtime": { - "lib/netstandard1.1/GraphQL-Parser.dll": {} - } - }, - "Microsoft.AspNetCore.Http/2.2.2": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.2.0", - "Microsoft.AspNetCore.WebUtilities": "2.2.0", - "Microsoft.Extensions.ObjectPool": "2.2.0", - "Microsoft.Extensions.Options": "2.2.0", - "Microsoft.Net.Http.Headers": "2.2.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Abstractions/2.2.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.2.0", - "System.Text.Encodings.Web": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Features/2.2.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "2.2.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": {} - } - }, - "Microsoft.AspNetCore.WebUtilities/2.2.0": { - "type": "package", - "dependencies": { - "Microsoft.Net.Http.Headers": "2.2.0", - "System.Text.Encodings.Web": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/2.2.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.ObjectPool/2.2.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll": {} - } - }, - "Microsoft.Extensions.Options/2.2.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Primitives": "2.2.0", - "System.ComponentModel.Annotations": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Options.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Options.dll": {} - } - }, - "Microsoft.Extensions.Primitives/2.2.0": { - "type": "package", - "dependencies": { - "System.Memory": "4.5.1", - "System.Runtime.CompilerServices.Unsafe": "4.5.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": {} - } - }, - "Microsoft.Net.Http.Headers/2.2.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "2.2.0", - "System.Buffers": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": {} - } - }, - "Microsoft.NETCore.Platforms/1.0.1": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Targets/1.0.1": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.Win32.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll": {} - } - }, - "NETStandard.Library/1.6.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Console": "4.0.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tools": "4.0.1", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Calendars": "4.0.1", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.IO.Compression.ZipFile": "4.0.1", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.Sockets": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Timer": "4.0.1", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11" - } - }, - "Newtonsoft.Json/12.0.3": { - "type": "package", - "compile": { - "lib/netstandard2.0/Newtonsoft.Json.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Newtonsoft.Json.dll": {} - } - }, - "runtime.native.System/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.IO.Compression/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Net.Http/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Security.Cryptography/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "System.AppContext/4.1.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.AppContext.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.AppContext.dll": {} - } - }, - "System.Buffers/4.5.0": { - "type": "package", - "compile": { - "ref/netcoreapp2.0/_._": {} - }, - "runtime": { - "lib/netcoreapp2.0/_._": {} - } - }, - "System.Collections/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Collections.dll": {} - } - }, - "System.Collections.Concurrent/4.0.12": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Collections.Concurrent.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Collections.Concurrent.dll": {} - } - }, - "System.ComponentModel/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.ComponentModel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.ComponentModel.dll": {} - } - }, - "System.ComponentModel.Annotations/4.5.0": { - "type": "package", - "compile": { - "ref/netcoreapp2.0/_._": {} - }, - "runtime": { - "lib/netcoreapp2.0/_._": {} - } - }, - "System.Console/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Console.dll": {} - } - }, - "System.Diagnostics.Contracts/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Diagnostics.Contracts.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Diagnostics.Contracts.dll": {} - } - }, - "System.Diagnostics.Debug/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.Debug.dll": {} - } - }, - "System.Diagnostics.DiagnosticSource/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} - } - }, - "System.Diagnostics.Tools/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Diagnostics.Tools.dll": {} - } - }, - "System.Diagnostics.Tracing/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Diagnostics.Tracing.dll": {} - } - }, - "System.Dynamic.Runtime/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Dynamic.Runtime.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Dynamic.Runtime.dll": {} - } - }, - "System.Globalization/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.dll": {} - } - }, - "System.Globalization.Calendars/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Globalization": "4.0.11", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.Calendars.dll": {} - } - }, - "System.Globalization.Extensions/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.5/System.IO.dll": {} - } - }, - "System.IO.Compression/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.IO.Compression": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.Compression.ZipFile/4.0.1": { - "type": "package", - "dependencies": { - "System.Buffers": "4.0.0", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll": {} - } - }, - "System.IO.FileSystem/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.dll": {} - } - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - } - }, - "System.Linq/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.Linq.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Linq.dll": {} - } - }, - "System.Linq.Expressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Linq.Expressions.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Linq.Expressions.dll": {} - } - }, - "System.Memory/4.5.1": { - "type": "package", - "compile": { - "ref/netcoreapp2.1/_._": {} - }, - "runtime": { - "lib/netcoreapp2.1/_._": {} - } - }, - "System.Net.Http/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.DiagnosticSource": "4.0.0", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Net.Primitives": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Http": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Http.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Primitives/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/System.Net.Primitives.dll": {} - } - }, - "System.Net.Sockets/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.Sockets.dll": {} - } - }, - "System.ObjectModel/4.0.12": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.ObjectModel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.ObjectModel.dll": {} - } - }, - "System.Reactive.Core/3.1.1": { - "type": "package", - "dependencies": { - "System.ComponentModel": "4.0.1", - "System.Diagnostics.Contracts": "4.0.1", - "System.Dynamic.Runtime": "4.0.11", - "System.Reactive.Interfaces": "3.1.1", - "System.Threading.Thread": "4.0.0", - "System.Threading.ThreadPool": "4.0.10" - }, - "compile": { - "lib/netcoreapp1.0/System.Reactive.Core.dll": {} - }, - "runtime": { - "lib/netcoreapp1.0/System.Reactive.Core.dll": {} - } - }, - "System.Reactive.Interfaces/3.1.1": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.6.0" - }, - "compile": { - "lib/netstandard1.0/System.Reactive.Interfaces.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Reactive.Interfaces.dll": {} - } - }, - "System.Reactive.Linq/3.1.1": { - "type": "package", - "dependencies": { - "System.Reactive.Core": "3.1.1", - "System.Runtime.InteropServices.WindowsRuntime": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/System.Reactive.Linq.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reactive.Linq.dll": {} - } - }, - "System.Reflection/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.dll": {} - } - }, - "System.Reflection.Emit/4.0.1": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.1/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.dll": {} - } - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {} - } - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {} - } - }, - "System.Reflection.Extensions/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Extensions.dll": {} - } - }, - "System.Reflection.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Primitives.dll": {} - } - }, - "System.Reflection.TypeExtensions/4.1.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/_._": {} - }, - "runtime": { - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {} - } - }, - "System.Resources.ResourceManager/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Globalization": "4.0.11", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Resources.ResourceManager.dll": {} - } - }, - "System.Runtime/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.dll": {} - } - }, - "System.Runtime.CompilerServices.Unsafe/4.5.1": { - "type": "package", - "compile": { - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {} - }, - "runtime": { - "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll": {} - } - }, - "System.Runtime.Extensions/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.Extensions.dll": {} - } - }, - "System.Runtime.Handles/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Handles.dll": {} - } - }, - "System.Runtime.InteropServices/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.InteropServices.dll": {} - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Runtime.InteropServices.WindowsRuntime/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Runtime.InteropServices.WindowsRuntime.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.InteropServices.WindowsRuntime.dll": {} - } - }, - "System.Runtime.Numerics/4.0.1": { - "type": "package", - "dependencies": { - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.Numerics.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Numerics.dll": {} - } - }, - "System.Security.Cryptography.Algorithms/4.2.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Cng/4.2.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Csp/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Encoding/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.OpenSsl/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtime": { - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": { - "assetType": "runtime", - "rid": "unix" - } - } - }, - "System.Security.Cryptography.Primitives/4.0.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - } - }, - "System.Security.Cryptography.X509Certificates/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Globalization.Calendars": "4.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Cng": "4.2.0", - "System.Security.Cryptography.Csp": "4.0.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Http": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.dll": {} - } - }, - "System.Text.Encoding.Extensions/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": {} - } - }, - "System.Text.Encodings.Web/4.5.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/System.Text.Encodings.Web.dll": {} - }, - "runtime": { - "lib/netstandard2.0/System.Text.Encodings.Web.dll": {} - } - }, - "System.Text.RegularExpressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Text.RegularExpressions.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.0.11": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Threading.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.dll": {} - } - }, - "System.Threading.Tasks/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Tasks.dll": {} - } - }, - "System.Threading.Tasks.Extensions/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {} - } - }, - "System.Threading.Thread/4.0.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Thread.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.Thread.dll": {} - } - }, - "System.Threading.ThreadPool/4.0.10": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/System.Threading.ThreadPool.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.ThreadPool.dll": {} - } - }, - "System.Threading.Timer/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.2/System.Threading.Timer.dll": {} - } - }, - "System.Xml.ReaderWriter/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Tasks.Extensions": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Xml.ReaderWriter.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {} - } - }, - "System.Xml.XDocument/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tools": "4.0.1", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Xml.XDocument.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XDocument.dll": {} - } - }, - "Vtex.Api/0.1.1": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http": "2.2.2", - "Newtonsoft.Json": "12.0.3" - }, - "compile": { - "lib/netcoreapp3.0/Vtex.Api.dll": {} - }, - "runtime": { - "lib/netcoreapp3.0/Vtex.Api.dll": {} - } - } - } - }, - "libraries": { - "GraphQL/2.4.0": { - "sha512": "TMCyq9hB4rEyjZrI61BCtFIRUYfV+c3WrydeWefg4mOn4kVNRPDHTb2KtZrWbIlDriY6u5Dze0FkpXs4RlYVzQ==", - "type": "package", - "path": "graphql/2.4.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "graphql.2.4.0.nupkg.sha512", - "graphql.nuspec", - "lib/net45/GraphQL.dll", - "lib/netstandard1.3/GraphQL.dll", - "lib/netstandard2.0/GraphQL.dll" - ] - }, - "GraphQL-Parser/3.0.0": { - "sha512": "6vPhia+kfo44leH7GNAo4g/BRVxvprtu+96N4T218dTM/0KYhRCA8diqZFIib777TgKZpQfaaL014McoCuHTJA==", - "type": "package", - "path": "graphql-parser/3.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "graphql-parser.3.0.0.nupkg.sha512", - "graphql-parser.nuspec", - "lib/net45/GraphQL-Parser.dll", - "lib/netstandard1.1/GraphQL-Parser.dll" - ] - }, - "Microsoft.AspNetCore.Http/2.2.2": { - "sha512": "BAibpoItxI5puk7YJbIGj95arZueM8B8M5xT1fXBn3hb3L2G3ucrZcYXv1gXdaroLbntUs8qeV8iuBrpjQsrKw==", - "type": "package", - "path": "microsoft.aspnetcore.http/2.2.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.xml", - "microsoft.aspnetcore.http.2.2.2.nupkg.sha512", - "microsoft.aspnetcore.http.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Abstractions/2.2.0": { - "sha512": "Nxs7Z1q3f1STfLYKJSVXCs1iBl+Ya6E8o4Oy1bCxJ/rNI44E/0f6tbsrVqAWfB7jlnJfyaAtIalBVxPKUPQb4Q==", - "type": "package", - "path": "microsoft.aspnetcore.http.abstractions/2.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.xml", - "microsoft.aspnetcore.http.abstractions.2.2.0.nupkg.sha512", - "microsoft.aspnetcore.http.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Features/2.2.0": { - "sha512": "ziFz5zH8f33En4dX81LW84I6XrYXKf9jg6aM39cM+LffN9KJahViKZ61dGMSO2gd3e+qe5yBRwsesvyqlZaSMg==", - "type": "package", - "path": "microsoft.aspnetcore.http.features/2.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.xml", - "microsoft.aspnetcore.http.features.2.2.0.nupkg.sha512", - "microsoft.aspnetcore.http.features.nuspec" - ] - }, - "Microsoft.AspNetCore.WebUtilities/2.2.0": { - "sha512": "9ErxAAKaDzxXASB/b5uLEkLgUWv1QbeVxyJYEHQwMaxXOeFFVkQxiq8RyfVcifLU7NR0QY0p3acqx4ZpYfhHDg==", - "type": "package", - "path": "microsoft.aspnetcore.webutilities/2.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.xml", - "microsoft.aspnetcore.webutilities.2.2.0.nupkg.sha512", - "microsoft.aspnetcore.webutilities.nuspec" - ] - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/2.2.0": { - "sha512": "f9hstgjVmr6rmrfGSpfsVOl2irKAgr1QjrSi3FgnS7kulxband50f2brRLwySAQTADPZeTdow0mpSMcoAdadCw==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/2.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.2.2.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.ObjectPool/2.2.0": { - "sha512": "gA8H7uQOnM5gb+L0uTNjViHYr+hRDqCdfugheGo/MxQnuHzmhhzCBTIPm19qL1z1Xe0NEMabfcOBGv9QghlZ8g==", - "type": "package", - "path": "microsoft.extensions.objectpool/2.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll", - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.xml", - "microsoft.extensions.objectpool.2.2.0.nupkg.sha512", - "microsoft.extensions.objectpool.nuspec" - ] - }, - "Microsoft.Extensions.Options/2.2.0": { - "sha512": "UpZLNLBpIZ0GTebShui7xXYh6DmBHjWM8NxGxZbdQh/bPZ5e6YswqI+bru6BnEL5eWiOdodsXtEz3FROcgi/qg==", - "type": "package", - "path": "microsoft.extensions.options/2.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Options.dll", - "lib/netstandard2.0/Microsoft.Extensions.Options.xml", - "microsoft.extensions.options.2.2.0.nupkg.sha512", - "microsoft.extensions.options.nuspec" - ] - }, - "Microsoft.Extensions.Primitives/2.2.0": { - "sha512": "azyQtqbm4fSaDzZHD/J+V6oWMFaf2tWP4WEGIYePLCMw3+b2RQdj9ybgbQyjCshcitQKQ4lEDOZjmSlTTrHxUg==", - "type": "package", - "path": "microsoft.extensions.primitives/2.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", - "microsoft.extensions.primitives.2.2.0.nupkg.sha512", - "microsoft.extensions.primitives.nuspec" - ] - }, - "Microsoft.Net.Http.Headers/2.2.0": { - "sha512": "iZNkjYqlo8sIOI0bQfpsSoMTmB/kyvmV2h225ihyZT33aTp48ZpF6qYnXxzSXmHt8DpBAwBTX+1s1UFLbYfZKg==", - "type": "package", - "path": "microsoft.net.http.headers/2.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll", - "lib/netstandard2.0/Microsoft.Net.Http.Headers.xml", - "microsoft.net.http.headers.2.2.0.nupkg.sha512", - "microsoft.net.http.headers.nuspec" - ] - }, - "Microsoft.NETCore.Platforms/1.0.1": { - "sha512": "2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==", - "type": "package", - "path": "microsoft.netcore.platforms/1.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "microsoft.netcore.platforms.1.0.1.nupkg.sha512", - "microsoft.netcore.platforms.nuspec", - "runtime.json" - ] - }, - "Microsoft.NETCore.Targets/1.0.1": { - "sha512": "rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==", - "type": "package", - "path": "microsoft.netcore.targets/1.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "microsoft.netcore.targets.1.0.1.nupkg.sha512", - "microsoft.netcore.targets.nuspec", - "runtime.json" - ] - }, - "Microsoft.Win32.Primitives/4.0.1": { - "sha512": "fQnBHO9DgcmkC9dYSJoBqo6sH1VJwJprUHh8F3hbcRlxiQiBUuTntdk8tUwV490OqC2kQUrinGwZyQHTieuXRA==", - "type": "package", - "path": "microsoft.win32.primitives/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/Microsoft.Win32.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "microsoft.win32.primitives.4.0.1.nupkg.sha512", - "microsoft.win32.primitives.nuspec", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "NETStandard.Library/1.6.0": { - "sha512": "ypsCvIdCZ4IoYASJHt6tF2fMo7N30NLgV1EbmC+snO490OMl9FvVxmumw14rhReWU3j3g7BYudG6YCrchwHJlA==", - "type": "package", - "path": "netstandard.library/1.6.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "netstandard.library.1.6.0.nupkg.sha512", - "netstandard.library.nuspec" - ] - }, - "Newtonsoft.Json/12.0.3": { - "sha512": "6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg==", - "type": "package", - "path": "newtonsoft.json/12.0.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "lib/net20/Newtonsoft.Json.dll", - "lib/net20/Newtonsoft.Json.xml", - "lib/net35/Newtonsoft.Json.dll", - "lib/net35/Newtonsoft.Json.xml", - "lib/net40/Newtonsoft.Json.dll", - "lib/net40/Newtonsoft.Json.xml", - "lib/net45/Newtonsoft.Json.dll", - "lib/net45/Newtonsoft.Json.xml", - "lib/netstandard1.0/Newtonsoft.Json.dll", - "lib/netstandard1.0/Newtonsoft.Json.xml", - "lib/netstandard1.3/Newtonsoft.Json.dll", - "lib/netstandard1.3/Newtonsoft.Json.xml", - "lib/netstandard2.0/Newtonsoft.Json.dll", - "lib/netstandard2.0/Newtonsoft.Json.xml", - "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.xml", - "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.xml", - "newtonsoft.json.12.0.3.nupkg.sha512", - "newtonsoft.json.nuspec", - "packageIcon.png" - ] - }, - "runtime.native.System/4.0.0": { - "sha512": "QfS/nQI7k/BLgmLrw7qm7YBoULEvgWnPI+cYsbfCVFTW8Aj+i8JhccxcFMu1RWms0YZzF+UHguNBK4Qn89e2Sg==", - "type": "package", - "path": "runtime.native.system/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.4.0.0.nupkg.sha512", - "runtime.native.system.nuspec" - ] - }, - "runtime.native.System.IO.Compression/4.1.0": { - "sha512": "Ob7nvnJBox1aaB222zSVZSkf4WrebPG4qFscfK7vmD7P7NxoSxACQLtO7ytWpqXDn2wcd/+45+EAZ7xjaPip8A==", - "type": "package", - "path": "runtime.native.system.io.compression/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.io.compression.4.1.0.nupkg.sha512", - "runtime.native.system.io.compression.nuspec" - ] - }, - "runtime.native.System.Net.Http/4.0.1": { - "sha512": "Nh0UPZx2Vifh8r+J+H2jxifZUD3sBrmolgiFWJd2yiNrxO0xTa6bAw3YwRn1VOiSen/tUXMS31ttNItCZ6lKuA==", - "type": "package", - "path": "runtime.native.system.net.http/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.net.http.4.0.1.nupkg.sha512", - "runtime.native.system.net.http.nuspec" - ] - }, - "runtime.native.System.Security.Cryptography/4.0.0": { - "sha512": "2CQK0jmO6Eu7ZeMgD+LOFbNJSXHFVQbCJJkEyEwowh1SCgYnrn9W9RykMfpeeVGw7h4IBvYikzpGUlmZTUafJw==", - "type": "package", - "path": "runtime.native.system.security.cryptography/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.security.cryptography.4.0.0.nupkg.sha512", - "runtime.native.system.security.cryptography.nuspec" - ] - }, - "System.AppContext/4.1.0": { - "sha512": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==", - "type": "package", - "path": "system.appcontext/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.AppContext.dll", - "lib/net463/System.AppContext.dll", - "lib/netcore50/System.AppContext.dll", - "lib/netstandard1.6/System.AppContext.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.AppContext.dll", - "ref/net463/System.AppContext.dll", - "ref/netstandard/_._", - "ref/netstandard1.3/System.AppContext.dll", - "ref/netstandard1.3/System.AppContext.xml", - "ref/netstandard1.3/de/System.AppContext.xml", - "ref/netstandard1.3/es/System.AppContext.xml", - "ref/netstandard1.3/fr/System.AppContext.xml", - "ref/netstandard1.3/it/System.AppContext.xml", - "ref/netstandard1.3/ja/System.AppContext.xml", - "ref/netstandard1.3/ko/System.AppContext.xml", - "ref/netstandard1.3/ru/System.AppContext.xml", - "ref/netstandard1.3/zh-hans/System.AppContext.xml", - "ref/netstandard1.3/zh-hant/System.AppContext.xml", - "ref/netstandard1.6/System.AppContext.dll", - "ref/netstandard1.6/System.AppContext.xml", - "ref/netstandard1.6/de/System.AppContext.xml", - "ref/netstandard1.6/es/System.AppContext.xml", - "ref/netstandard1.6/fr/System.AppContext.xml", - "ref/netstandard1.6/it/System.AppContext.xml", - "ref/netstandard1.6/ja/System.AppContext.xml", - "ref/netstandard1.6/ko/System.AppContext.xml", - "ref/netstandard1.6/ru/System.AppContext.xml", - "ref/netstandard1.6/zh-hans/System.AppContext.xml", - "ref/netstandard1.6/zh-hant/System.AppContext.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.AppContext.dll", - "system.appcontext.4.1.0.nupkg.sha512", - "system.appcontext.nuspec" - ] - }, - "System.Buffers/4.5.0": { - "sha512": "pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A==", - "type": "package", - "path": "system.buffers/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.0/_._", - "lib/netstandard1.1/System.Buffers.dll", - "lib/netstandard1.1/System.Buffers.xml", - "lib/netstandard2.0/System.Buffers.dll", - "lib/netstandard2.0/System.Buffers.xml", - "lib/uap10.0.16299/_._", - "ref/net45/System.Buffers.dll", - "ref/net45/System.Buffers.xml", - "ref/netcoreapp2.0/_._", - "ref/netstandard1.1/System.Buffers.dll", - "ref/netstandard1.1/System.Buffers.xml", - "ref/netstandard2.0/System.Buffers.dll", - "ref/netstandard2.0/System.Buffers.xml", - "ref/uap10.0.16299/_._", - "system.buffers.4.5.0.nupkg.sha512", - "system.buffers.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Collections/4.0.11": { - "sha512": "YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==", - "type": "package", - "path": "system.collections/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.dll", - "ref/netcore50/System.Collections.xml", - "ref/netcore50/de/System.Collections.xml", - "ref/netcore50/es/System.Collections.xml", - "ref/netcore50/fr/System.Collections.xml", - "ref/netcore50/it/System.Collections.xml", - "ref/netcore50/ja/System.Collections.xml", - "ref/netcore50/ko/System.Collections.xml", - "ref/netcore50/ru/System.Collections.xml", - "ref/netcore50/zh-hans/System.Collections.xml", - "ref/netcore50/zh-hant/System.Collections.xml", - "ref/netstandard1.0/System.Collections.dll", - "ref/netstandard1.0/System.Collections.xml", - "ref/netstandard1.0/de/System.Collections.xml", - "ref/netstandard1.0/es/System.Collections.xml", - "ref/netstandard1.0/fr/System.Collections.xml", - "ref/netstandard1.0/it/System.Collections.xml", - "ref/netstandard1.0/ja/System.Collections.xml", - "ref/netstandard1.0/ko/System.Collections.xml", - "ref/netstandard1.0/ru/System.Collections.xml", - "ref/netstandard1.0/zh-hans/System.Collections.xml", - "ref/netstandard1.0/zh-hant/System.Collections.xml", - "ref/netstandard1.3/System.Collections.dll", - "ref/netstandard1.3/System.Collections.xml", - "ref/netstandard1.3/de/System.Collections.xml", - "ref/netstandard1.3/es/System.Collections.xml", - "ref/netstandard1.3/fr/System.Collections.xml", - "ref/netstandard1.3/it/System.Collections.xml", - "ref/netstandard1.3/ja/System.Collections.xml", - "ref/netstandard1.3/ko/System.Collections.xml", - "ref/netstandard1.3/ru/System.Collections.xml", - "ref/netstandard1.3/zh-hans/System.Collections.xml", - "ref/netstandard1.3/zh-hant/System.Collections.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.collections.4.0.11.nupkg.sha512", - "system.collections.nuspec" - ] - }, - "System.Collections.Concurrent/4.0.12": { - "sha512": "2gBcbb3drMLgxlI0fBfxMA31ec6AEyYCHygGse4vxceJan8mRIWeKJ24BFzN7+bi/NFTgdIgufzb94LWO5EERQ==", - "type": "package", - "path": "system.collections.concurrent/4.0.12", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Collections.Concurrent.dll", - "lib/netstandard1.3/System.Collections.Concurrent.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.Concurrent.dll", - "ref/netcore50/System.Collections.Concurrent.xml", - "ref/netcore50/de/System.Collections.Concurrent.xml", - "ref/netcore50/es/System.Collections.Concurrent.xml", - "ref/netcore50/fr/System.Collections.Concurrent.xml", - "ref/netcore50/it/System.Collections.Concurrent.xml", - "ref/netcore50/ja/System.Collections.Concurrent.xml", - "ref/netcore50/ko/System.Collections.Concurrent.xml", - "ref/netcore50/ru/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.1/System.Collections.Concurrent.dll", - "ref/netstandard1.1/System.Collections.Concurrent.xml", - "ref/netstandard1.1/de/System.Collections.Concurrent.xml", - "ref/netstandard1.1/es/System.Collections.Concurrent.xml", - "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.1/it/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.3/System.Collections.Concurrent.dll", - "ref/netstandard1.3/System.Collections.Concurrent.xml", - "ref/netstandard1.3/de/System.Collections.Concurrent.xml", - "ref/netstandard1.3/es/System.Collections.Concurrent.xml", - "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.3/it/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.collections.concurrent.4.0.12.nupkg.sha512", - "system.collections.concurrent.nuspec" - ] - }, - "System.ComponentModel/4.0.1": { - "sha512": "oBZFnm7seFiVfugsIyOvQCWobNZs7FzqDV/B7tx20Ep/l3UUFCPDkdTnCNaJZTU27zjeODmy2C/cP60u3D4c9w==", - "type": "package", - "path": "system.componentmodel/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ComponentModel.dll", - "lib/netstandard1.3/System.ComponentModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ComponentModel.dll", - "ref/netcore50/System.ComponentModel.xml", - "ref/netcore50/de/System.ComponentModel.xml", - "ref/netcore50/es/System.ComponentModel.xml", - "ref/netcore50/fr/System.ComponentModel.xml", - "ref/netcore50/it/System.ComponentModel.xml", - "ref/netcore50/ja/System.ComponentModel.xml", - "ref/netcore50/ko/System.ComponentModel.xml", - "ref/netcore50/ru/System.ComponentModel.xml", - "ref/netcore50/zh-hans/System.ComponentModel.xml", - "ref/netcore50/zh-hant/System.ComponentModel.xml", - "ref/netstandard1.0/System.ComponentModel.dll", - "ref/netstandard1.0/System.ComponentModel.xml", - "ref/netstandard1.0/de/System.ComponentModel.xml", - "ref/netstandard1.0/es/System.ComponentModel.xml", - "ref/netstandard1.0/fr/System.ComponentModel.xml", - "ref/netstandard1.0/it/System.ComponentModel.xml", - "ref/netstandard1.0/ja/System.ComponentModel.xml", - "ref/netstandard1.0/ko/System.ComponentModel.xml", - "ref/netstandard1.0/ru/System.ComponentModel.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.componentmodel.4.0.1.nupkg.sha512", - "system.componentmodel.nuspec" - ] - }, - "System.ComponentModel.Annotations/4.5.0": { - "sha512": "UxYQ3FGUOtzJ7LfSdnYSFd7+oEv6M8NgUatatIN2HxNtDdlcvFAf+VIq4Of9cDMJEJC0aSRv/x898RYhB4Yppg==", - "type": "package", - "path": "system.componentmodel.annotations/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net461/System.ComponentModel.Annotations.dll", - "lib/netcore50/System.ComponentModel.Annotations.dll", - "lib/netcoreapp2.0/_._", - "lib/netstandard1.4/System.ComponentModel.Annotations.dll", - "lib/netstandard2.0/System.ComponentModel.Annotations.dll", - "lib/portable-net45+win8/_._", - "lib/uap10.0.16299/_._", - "lib/win8/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net461/System.ComponentModel.Annotations.dll", - "ref/net461/System.ComponentModel.Annotations.xml", - "ref/netcore50/System.ComponentModel.Annotations.dll", - "ref/netcore50/System.ComponentModel.Annotations.xml", - "ref/netcore50/de/System.ComponentModel.Annotations.xml", - "ref/netcore50/es/System.ComponentModel.Annotations.xml", - "ref/netcore50/fr/System.ComponentModel.Annotations.xml", - "ref/netcore50/it/System.ComponentModel.Annotations.xml", - "ref/netcore50/ja/System.ComponentModel.Annotations.xml", - "ref/netcore50/ko/System.ComponentModel.Annotations.xml", - "ref/netcore50/ru/System.ComponentModel.Annotations.xml", - "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netcoreapp2.0/_._", - "ref/netstandard1.1/System.ComponentModel.Annotations.dll", - "ref/netstandard1.1/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/System.ComponentModel.Annotations.dll", - "ref/netstandard1.3/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/System.ComponentModel.Annotations.dll", - "ref/netstandard1.4/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard2.0/System.ComponentModel.Annotations.dll", - "ref/netstandard2.0/System.ComponentModel.Annotations.xml", - "ref/portable-net45+win8/_._", - "ref/uap10.0.16299/_._", - "ref/win8/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.componentmodel.annotations.4.5.0.nupkg.sha512", - "system.componentmodel.annotations.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Console/4.0.0": { - "sha512": "qSKUSOIiYA/a0g5XXdxFcUFmv1hNICBD7QZ0QhGYVipPIhvpiydY8VZqr1thmCXvmn8aipMg64zuanB4eotK9A==", - "type": "package", - "path": "system.console/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Console.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Console.dll", - "ref/netstandard1.3/System.Console.dll", - "ref/netstandard1.3/System.Console.xml", - "ref/netstandard1.3/de/System.Console.xml", - "ref/netstandard1.3/es/System.Console.xml", - "ref/netstandard1.3/fr/System.Console.xml", - "ref/netstandard1.3/it/System.Console.xml", - "ref/netstandard1.3/ja/System.Console.xml", - "ref/netstandard1.3/ko/System.Console.xml", - "ref/netstandard1.3/ru/System.Console.xml", - "ref/netstandard1.3/zh-hans/System.Console.xml", - "ref/netstandard1.3/zh-hant/System.Console.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.console.4.0.0.nupkg.sha512", - "system.console.nuspec" - ] - }, - "System.Diagnostics.Contracts/4.0.1": { - "sha512": "HvQQjy712vnlpPxaloZYkuE78Gn353L0SJLJVeLcNASeg9c4qla2a1Xq8I7B3jZoDzKPtHTkyVO7AZ5tpeQGuA==", - "type": "package", - "path": "system.diagnostics.contracts/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Diagnostics.Contracts.dll", - "lib/netstandard1.0/System.Diagnostics.Contracts.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Contracts.dll", - "ref/netcore50/System.Diagnostics.Contracts.xml", - "ref/netcore50/de/System.Diagnostics.Contracts.xml", - "ref/netcore50/es/System.Diagnostics.Contracts.xml", - "ref/netcore50/fr/System.Diagnostics.Contracts.xml", - "ref/netcore50/it/System.Diagnostics.Contracts.xml", - "ref/netcore50/ja/System.Diagnostics.Contracts.xml", - "ref/netcore50/ko/System.Diagnostics.Contracts.xml", - "ref/netcore50/ru/System.Diagnostics.Contracts.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Contracts.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/System.Diagnostics.Contracts.dll", - "ref/netstandard1.0/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/de/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/es/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/it/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Contracts.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll", - "system.diagnostics.contracts.4.0.1.nupkg.sha512", - "system.diagnostics.contracts.nuspec" - ] - }, - "System.Diagnostics.Debug/4.0.11": { - "sha512": "w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==", - "type": "package", - "path": "system.diagnostics.debug/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Debug.dll", - "ref/netcore50/System.Diagnostics.Debug.xml", - "ref/netcore50/de/System.Diagnostics.Debug.xml", - "ref/netcore50/es/System.Diagnostics.Debug.xml", - "ref/netcore50/fr/System.Diagnostics.Debug.xml", - "ref/netcore50/it/System.Diagnostics.Debug.xml", - "ref/netcore50/ja/System.Diagnostics.Debug.xml", - "ref/netcore50/ko/System.Diagnostics.Debug.xml", - "ref/netcore50/ru/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/System.Diagnostics.Debug.dll", - "ref/netstandard1.0/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/System.Diagnostics.Debug.dll", - "ref/netstandard1.3/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.debug.4.0.11.nupkg.sha512", - "system.diagnostics.debug.nuspec" - ] - }, - "System.Diagnostics.DiagnosticSource/4.0.0": { - "sha512": "YKglnq4BMTJxfcr6nuT08g+yJ0UxdePIHxosiLuljuHIUR6t4KhFsyaHOaOc1Ofqp0PUvJ0EmcgiEz6T7vEx3w==", - "type": "package", - "path": "system.diagnostics.diagnosticsource/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Diagnostics.DiagnosticSource.dll", - "lib/net46/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml", - "system.diagnostics.diagnosticsource.4.0.0.nupkg.sha512", - "system.diagnostics.diagnosticsource.nuspec" - ] - }, - "System.Diagnostics.Tools/4.0.1": { - "sha512": "xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==", - "type": "package", - "path": "system.diagnostics.tools/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Tools.dll", - "ref/netcore50/System.Diagnostics.Tools.xml", - "ref/netcore50/de/System.Diagnostics.Tools.xml", - "ref/netcore50/es/System.Diagnostics.Tools.xml", - "ref/netcore50/fr/System.Diagnostics.Tools.xml", - "ref/netcore50/it/System.Diagnostics.Tools.xml", - "ref/netcore50/ja/System.Diagnostics.Tools.xml", - "ref/netcore50/ko/System.Diagnostics.Tools.xml", - "ref/netcore50/ru/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/System.Diagnostics.Tools.dll", - "ref/netstandard1.0/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.tools.4.0.1.nupkg.sha512", - "system.diagnostics.tools.nuspec" - ] - }, - "System.Diagnostics.Tracing/4.1.0": { - "sha512": "vDN1PoMZCkkdNjvZLql592oYJZgS7URcJzJ7bxeBgGtx5UtR5leNm49VmfHGqIffX4FKacHbI3H6UyNSHQknBg==", - "type": "package", - "path": "system.diagnostics.tracing/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Diagnostics.Tracing.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.xml", - "ref/netcore50/de/System.Diagnostics.Tracing.xml", - "ref/netcore50/es/System.Diagnostics.Tracing.xml", - "ref/netcore50/fr/System.Diagnostics.Tracing.xml", - "ref/netcore50/it/System.Diagnostics.Tracing.xml", - "ref/netcore50/ja/System.Diagnostics.Tracing.xml", - "ref/netcore50/ko/System.Diagnostics.Tracing.xml", - "ref/netcore50/ru/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/System.Diagnostics.Tracing.dll", - "ref/netstandard1.1/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/System.Diagnostics.Tracing.dll", - "ref/netstandard1.2/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/System.Diagnostics.Tracing.dll", - "ref/netstandard1.3/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/System.Diagnostics.Tracing.dll", - "ref/netstandard1.5/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.tracing.4.1.0.nupkg.sha512", - "system.diagnostics.tracing.nuspec" - ] - }, - "System.Dynamic.Runtime/4.0.11": { - "sha512": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", - "type": "package", - "path": "system.dynamic.runtime/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Dynamic.Runtime.dll", - "lib/netstandard1.3/System.Dynamic.Runtime.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Dynamic.Runtime.dll", - "ref/netcore50/System.Dynamic.Runtime.xml", - "ref/netcore50/de/System.Dynamic.Runtime.xml", - "ref/netcore50/es/System.Dynamic.Runtime.xml", - "ref/netcore50/fr/System.Dynamic.Runtime.xml", - "ref/netcore50/it/System.Dynamic.Runtime.xml", - "ref/netcore50/ja/System.Dynamic.Runtime.xml", - "ref/netcore50/ko/System.Dynamic.Runtime.xml", - "ref/netcore50/ru/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hans/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/System.Dynamic.Runtime.dll", - "ref/netstandard1.0/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/System.Dynamic.Runtime.dll", - "ref/netstandard1.3/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll", - "system.dynamic.runtime.4.0.11.nupkg.sha512", - "system.dynamic.runtime.nuspec" - ] - }, - "System.Globalization/4.0.11": { - "sha512": "B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==", - "type": "package", - "path": "system.globalization/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Globalization.dll", - "ref/netcore50/System.Globalization.xml", - "ref/netcore50/de/System.Globalization.xml", - "ref/netcore50/es/System.Globalization.xml", - "ref/netcore50/fr/System.Globalization.xml", - "ref/netcore50/it/System.Globalization.xml", - "ref/netcore50/ja/System.Globalization.xml", - "ref/netcore50/ko/System.Globalization.xml", - "ref/netcore50/ru/System.Globalization.xml", - "ref/netcore50/zh-hans/System.Globalization.xml", - "ref/netcore50/zh-hant/System.Globalization.xml", - "ref/netstandard1.0/System.Globalization.dll", - "ref/netstandard1.0/System.Globalization.xml", - "ref/netstandard1.0/de/System.Globalization.xml", - "ref/netstandard1.0/es/System.Globalization.xml", - "ref/netstandard1.0/fr/System.Globalization.xml", - "ref/netstandard1.0/it/System.Globalization.xml", - "ref/netstandard1.0/ja/System.Globalization.xml", - "ref/netstandard1.0/ko/System.Globalization.xml", - "ref/netstandard1.0/ru/System.Globalization.xml", - "ref/netstandard1.0/zh-hans/System.Globalization.xml", - "ref/netstandard1.0/zh-hant/System.Globalization.xml", - "ref/netstandard1.3/System.Globalization.dll", - "ref/netstandard1.3/System.Globalization.xml", - "ref/netstandard1.3/de/System.Globalization.xml", - "ref/netstandard1.3/es/System.Globalization.xml", - "ref/netstandard1.3/fr/System.Globalization.xml", - "ref/netstandard1.3/it/System.Globalization.xml", - "ref/netstandard1.3/ja/System.Globalization.xml", - "ref/netstandard1.3/ko/System.Globalization.xml", - "ref/netstandard1.3/ru/System.Globalization.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.globalization.4.0.11.nupkg.sha512", - "system.globalization.nuspec" - ] - }, - "System.Globalization.Calendars/4.0.1": { - "sha512": "L1c6IqeQ88vuzC1P81JeHmHA8mxq8a18NUBNXnIY/BVb+TCyAaGIFbhpZt60h9FJNmisymoQkHEFSE9Vslja1Q==", - "type": "package", - "path": "system.globalization.calendars/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Calendars.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.xml", - "ref/netstandard1.3/de/System.Globalization.Calendars.xml", - "ref/netstandard1.3/es/System.Globalization.Calendars.xml", - "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", - "ref/netstandard1.3/it/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.globalization.calendars.4.0.1.nupkg.sha512", - "system.globalization.calendars.nuspec" - ] - }, - "System.Globalization.Extensions/4.0.1": { - "sha512": "KKo23iKeOaIg61SSXwjANN7QYDr/3op3OWGGzDzz7mypx0Za0fZSeG0l6cco8Ntp8YMYkIQcAqlk8yhm5/Uhcg==", - "type": "package", - "path": "system.globalization.extensions/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Extensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.xml", - "ref/netstandard1.3/de/System.Globalization.Extensions.xml", - "ref/netstandard1.3/es/System.Globalization.Extensions.xml", - "ref/netstandard1.3/fr/System.Globalization.Extensions.xml", - "ref/netstandard1.3/it/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ja/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ko/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ru/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll", - "runtimes/win/lib/net46/System.Globalization.Extensions.dll", - "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll", - "system.globalization.extensions.4.0.1.nupkg.sha512", - "system.globalization.extensions.nuspec" - ] - }, - "System.IO/4.1.0": { - "sha512": "3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==", - "type": "package", - "path": "system.io/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.IO.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.IO.dll", - "ref/netcore50/System.IO.dll", - "ref/netcore50/System.IO.xml", - "ref/netcore50/de/System.IO.xml", - "ref/netcore50/es/System.IO.xml", - "ref/netcore50/fr/System.IO.xml", - "ref/netcore50/it/System.IO.xml", - "ref/netcore50/ja/System.IO.xml", - "ref/netcore50/ko/System.IO.xml", - "ref/netcore50/ru/System.IO.xml", - "ref/netcore50/zh-hans/System.IO.xml", - "ref/netcore50/zh-hant/System.IO.xml", - "ref/netstandard1.0/System.IO.dll", - "ref/netstandard1.0/System.IO.xml", - "ref/netstandard1.0/de/System.IO.xml", - "ref/netstandard1.0/es/System.IO.xml", - "ref/netstandard1.0/fr/System.IO.xml", - "ref/netstandard1.0/it/System.IO.xml", - "ref/netstandard1.0/ja/System.IO.xml", - "ref/netstandard1.0/ko/System.IO.xml", - "ref/netstandard1.0/ru/System.IO.xml", - "ref/netstandard1.0/zh-hans/System.IO.xml", - "ref/netstandard1.0/zh-hant/System.IO.xml", - "ref/netstandard1.3/System.IO.dll", - "ref/netstandard1.3/System.IO.xml", - "ref/netstandard1.3/de/System.IO.xml", - "ref/netstandard1.3/es/System.IO.xml", - "ref/netstandard1.3/fr/System.IO.xml", - "ref/netstandard1.3/it/System.IO.xml", - "ref/netstandard1.3/ja/System.IO.xml", - "ref/netstandard1.3/ko/System.IO.xml", - "ref/netstandard1.3/ru/System.IO.xml", - "ref/netstandard1.3/zh-hans/System.IO.xml", - "ref/netstandard1.3/zh-hant/System.IO.xml", - "ref/netstandard1.5/System.IO.dll", - "ref/netstandard1.5/System.IO.xml", - "ref/netstandard1.5/de/System.IO.xml", - "ref/netstandard1.5/es/System.IO.xml", - "ref/netstandard1.5/fr/System.IO.xml", - "ref/netstandard1.5/it/System.IO.xml", - "ref/netstandard1.5/ja/System.IO.xml", - "ref/netstandard1.5/ko/System.IO.xml", - "ref/netstandard1.5/ru/System.IO.xml", - "ref/netstandard1.5/zh-hans/System.IO.xml", - "ref/netstandard1.5/zh-hant/System.IO.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.4.1.0.nupkg.sha512", - "system.io.nuspec" - ] - }, - "System.IO.Compression/4.1.0": { - "sha512": "TjnBS6eztThSzeSib+WyVbLzEdLKUcEHN69VtS3u8aAsSc18FU6xCZlNWWsEd8SKcXAE+y1sOu7VbU8sUeM0sg==", - "type": "package", - "path": "system.io.compression/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.IO.Compression.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.xml", - "ref/netcore50/de/System.IO.Compression.xml", - "ref/netcore50/es/System.IO.Compression.xml", - "ref/netcore50/fr/System.IO.Compression.xml", - "ref/netcore50/it/System.IO.Compression.xml", - "ref/netcore50/ja/System.IO.Compression.xml", - "ref/netcore50/ko/System.IO.Compression.xml", - "ref/netcore50/ru/System.IO.Compression.xml", - "ref/netcore50/zh-hans/System.IO.Compression.xml", - "ref/netcore50/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.1/System.IO.Compression.dll", - "ref/netstandard1.1/System.IO.Compression.xml", - "ref/netstandard1.1/de/System.IO.Compression.xml", - "ref/netstandard1.1/es/System.IO.Compression.xml", - "ref/netstandard1.1/fr/System.IO.Compression.xml", - "ref/netstandard1.1/it/System.IO.Compression.xml", - "ref/netstandard1.1/ja/System.IO.Compression.xml", - "ref/netstandard1.1/ko/System.IO.Compression.xml", - "ref/netstandard1.1/ru/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.3/System.IO.Compression.dll", - "ref/netstandard1.3/System.IO.Compression.xml", - "ref/netstandard1.3/de/System.IO.Compression.xml", - "ref/netstandard1.3/es/System.IO.Compression.xml", - "ref/netstandard1.3/fr/System.IO.Compression.xml", - "ref/netstandard1.3/it/System.IO.Compression.xml", - "ref/netstandard1.3/ja/System.IO.Compression.xml", - "ref/netstandard1.3/ko/System.IO.Compression.xml", - "ref/netstandard1.3/ru/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", - "runtimes/win/lib/net46/System.IO.Compression.dll", - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll", - "system.io.compression.4.1.0.nupkg.sha512", - "system.io.compression.nuspec" - ] - }, - "System.IO.Compression.ZipFile/4.0.1": { - "sha512": "hBQYJzfTbQURF10nLhd+az2NHxsU6MU7AB8RUf4IolBP5lOAm4Luho851xl+CqslmhI5ZH/el8BlngEk4lBkaQ==", - "type": "package", - "path": "system.io.compression.zipfile/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.Compression.ZipFile.dll", - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.compression.zipfile.4.0.1.nupkg.sha512", - "system.io.compression.zipfile.nuspec" - ] - }, - "System.IO.FileSystem/4.0.1": { - "sha512": "IBErlVq5jOggAD69bg1t0pJcHaDbJbWNUZTPI96fkYWzwYbN6D9wRHMULLDd9dHsl7C2YsxXL31LMfPI1SWt8w==", - "type": "package", - "path": "system.io.filesystem/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.filesystem.4.0.1.nupkg.sha512", - "system.io.filesystem.nuspec" - ] - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "sha512": "kWkKD203JJKxJeE74p8aF8y4Qc9r9WQx4C0cHzHPrY3fv/L/IhWnyCHaFJ3H1QPOH6A93whlQ2vG5nHlBDvzWQ==", - "type": "package", - "path": "system.io.filesystem.primitives/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.Primitives.dll", - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.filesystem.primitives.4.0.1.nupkg.sha512", - "system.io.filesystem.primitives.nuspec" - ] - }, - "System.Linq/4.1.0": { - "sha512": "bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==", - "type": "package", - "path": "system.linq/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.dll", - "lib/netcore50/System.Linq.dll", - "lib/netstandard1.6/System.Linq.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.dll", - "ref/netcore50/System.Linq.dll", - "ref/netcore50/System.Linq.xml", - "ref/netcore50/de/System.Linq.xml", - "ref/netcore50/es/System.Linq.xml", - "ref/netcore50/fr/System.Linq.xml", - "ref/netcore50/it/System.Linq.xml", - "ref/netcore50/ja/System.Linq.xml", - "ref/netcore50/ko/System.Linq.xml", - "ref/netcore50/ru/System.Linq.xml", - "ref/netcore50/zh-hans/System.Linq.xml", - "ref/netcore50/zh-hant/System.Linq.xml", - "ref/netstandard1.0/System.Linq.dll", - "ref/netstandard1.0/System.Linq.xml", - "ref/netstandard1.0/de/System.Linq.xml", - "ref/netstandard1.0/es/System.Linq.xml", - "ref/netstandard1.0/fr/System.Linq.xml", - "ref/netstandard1.0/it/System.Linq.xml", - "ref/netstandard1.0/ja/System.Linq.xml", - "ref/netstandard1.0/ko/System.Linq.xml", - "ref/netstandard1.0/ru/System.Linq.xml", - "ref/netstandard1.0/zh-hans/System.Linq.xml", - "ref/netstandard1.0/zh-hant/System.Linq.xml", - "ref/netstandard1.6/System.Linq.dll", - "ref/netstandard1.6/System.Linq.xml", - "ref/netstandard1.6/de/System.Linq.xml", - "ref/netstandard1.6/es/System.Linq.xml", - "ref/netstandard1.6/fr/System.Linq.xml", - "ref/netstandard1.6/it/System.Linq.xml", - "ref/netstandard1.6/ja/System.Linq.xml", - "ref/netstandard1.6/ko/System.Linq.xml", - "ref/netstandard1.6/ru/System.Linq.xml", - "ref/netstandard1.6/zh-hans/System.Linq.xml", - "ref/netstandard1.6/zh-hant/System.Linq.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.linq.4.1.0.nupkg.sha512", - "system.linq.nuspec" - ] - }, - "System.Linq.Expressions/4.1.0": { - "sha512": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", - "type": "package", - "path": "system.linq.expressions/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.Expressions.dll", - "lib/netcore50/System.Linq.Expressions.dll", - "lib/netstandard1.6/System.Linq.Expressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.xml", - "ref/netcore50/de/System.Linq.Expressions.xml", - "ref/netcore50/es/System.Linq.Expressions.xml", - "ref/netcore50/fr/System.Linq.Expressions.xml", - "ref/netcore50/it/System.Linq.Expressions.xml", - "ref/netcore50/ja/System.Linq.Expressions.xml", - "ref/netcore50/ko/System.Linq.Expressions.xml", - "ref/netcore50/ru/System.Linq.Expressions.xml", - "ref/netcore50/zh-hans/System.Linq.Expressions.xml", - "ref/netcore50/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.0/System.Linq.Expressions.dll", - "ref/netstandard1.0/System.Linq.Expressions.xml", - "ref/netstandard1.0/de/System.Linq.Expressions.xml", - "ref/netstandard1.0/es/System.Linq.Expressions.xml", - "ref/netstandard1.0/fr/System.Linq.Expressions.xml", - "ref/netstandard1.0/it/System.Linq.Expressions.xml", - "ref/netstandard1.0/ja/System.Linq.Expressions.xml", - "ref/netstandard1.0/ko/System.Linq.Expressions.xml", - "ref/netstandard1.0/ru/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.3/System.Linq.Expressions.dll", - "ref/netstandard1.3/System.Linq.Expressions.xml", - "ref/netstandard1.3/de/System.Linq.Expressions.xml", - "ref/netstandard1.3/es/System.Linq.Expressions.xml", - "ref/netstandard1.3/fr/System.Linq.Expressions.xml", - "ref/netstandard1.3/it/System.Linq.Expressions.xml", - "ref/netstandard1.3/ja/System.Linq.Expressions.xml", - "ref/netstandard1.3/ko/System.Linq.Expressions.xml", - "ref/netstandard1.3/ru/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.6/System.Linq.Expressions.dll", - "ref/netstandard1.6/System.Linq.Expressions.xml", - "ref/netstandard1.6/de/System.Linq.Expressions.xml", - "ref/netstandard1.6/es/System.Linq.Expressions.xml", - "ref/netstandard1.6/fr/System.Linq.Expressions.xml", - "ref/netstandard1.6/it/System.Linq.Expressions.xml", - "ref/netstandard1.6/ja/System.Linq.Expressions.xml", - "ref/netstandard1.6/ko/System.Linq.Expressions.xml", - "ref/netstandard1.6/ru/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll", - "system.linq.expressions.4.1.0.nupkg.sha512", - "system.linq.expressions.nuspec" - ] - }, - "System.Memory/4.5.1": { - "sha512": "sDJYJpGtTgx+23Ayu5euxG5mAXWdkDb4+b0rD0Cab0M1oQS9H0HXGPriKcqpXuiJDTV7fTp/d+fMDJmnr6sNvA==", - "type": "package", - "path": "system.memory/4.5.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.1/_._", - "lib/netstandard1.1/System.Memory.dll", - "lib/netstandard1.1/System.Memory.xml", - "lib/netstandard2.0/System.Memory.dll", - "lib/netstandard2.0/System.Memory.xml", - "ref/netcoreapp2.1/_._", - "ref/netstandard1.1/System.Memory.dll", - "ref/netstandard1.1/System.Memory.xml", - "ref/netstandard2.0/System.Memory.dll", - "ref/netstandard2.0/System.Memory.xml", - "system.memory.4.5.1.nupkg.sha512", - "system.memory.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Net.Http/4.1.0": { - "sha512": "ULq9g3SOPVuupt+Y3U+A37coXzdNisB1neFCSKzBwo182u0RDddKJF8I5+HfyXqK6OhJPgeoAwWXrbiUXuRDsg==", - "type": "package", - "path": "system.net.http/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/Xamarinmac20/_._", - "lib/monoandroid10/_._", - "lib/monotouch10/_._", - "lib/net45/_._", - "lib/net46/System.Net.Http.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/Xamarinmac20/_._", - "ref/monoandroid10/_._", - "ref/monotouch10/_._", - "ref/net45/_._", - "ref/net46/System.Net.Http.dll", - "ref/net46/System.Net.Http.xml", - "ref/net46/de/System.Net.Http.xml", - "ref/net46/es/System.Net.Http.xml", - "ref/net46/fr/System.Net.Http.xml", - "ref/net46/it/System.Net.Http.xml", - "ref/net46/ja/System.Net.Http.xml", - "ref/net46/ko/System.Net.Http.xml", - "ref/net46/ru/System.Net.Http.xml", - "ref/net46/zh-hans/System.Net.Http.xml", - "ref/net46/zh-hant/System.Net.Http.xml", - "ref/netcore50/System.Net.Http.dll", - "ref/netcore50/System.Net.Http.xml", - "ref/netcore50/de/System.Net.Http.xml", - "ref/netcore50/es/System.Net.Http.xml", - "ref/netcore50/fr/System.Net.Http.xml", - "ref/netcore50/it/System.Net.Http.xml", - "ref/netcore50/ja/System.Net.Http.xml", - "ref/netcore50/ko/System.Net.Http.xml", - "ref/netcore50/ru/System.Net.Http.xml", - "ref/netcore50/zh-hans/System.Net.Http.xml", - "ref/netcore50/zh-hant/System.Net.Http.xml", - "ref/netstandard1.1/System.Net.Http.dll", - "ref/netstandard1.1/System.Net.Http.xml", - "ref/netstandard1.1/de/System.Net.Http.xml", - "ref/netstandard1.1/es/System.Net.Http.xml", - "ref/netstandard1.1/fr/System.Net.Http.xml", - "ref/netstandard1.1/it/System.Net.Http.xml", - "ref/netstandard1.1/ja/System.Net.Http.xml", - "ref/netstandard1.1/ko/System.Net.Http.xml", - "ref/netstandard1.1/ru/System.Net.Http.xml", - "ref/netstandard1.1/zh-hans/System.Net.Http.xml", - "ref/netstandard1.1/zh-hant/System.Net.Http.xml", - "ref/netstandard1.3/System.Net.Http.dll", - "ref/netstandard1.3/System.Net.Http.xml", - "ref/netstandard1.3/de/System.Net.Http.xml", - "ref/netstandard1.3/es/System.Net.Http.xml", - "ref/netstandard1.3/fr/System.Net.Http.xml", - "ref/netstandard1.3/it/System.Net.Http.xml", - "ref/netstandard1.3/ja/System.Net.Http.xml", - "ref/netstandard1.3/ko/System.Net.Http.xml", - "ref/netstandard1.3/ru/System.Net.Http.xml", - "ref/netstandard1.3/zh-hans/System.Net.Http.xml", - "ref/netstandard1.3/zh-hant/System.Net.Http.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", - "runtimes/win/lib/net46/System.Net.Http.dll", - "runtimes/win/lib/netcore50/System.Net.Http.dll", - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll", - "system.net.http.4.1.0.nupkg.sha512", - "system.net.http.nuspec" - ] - }, - "System.Net.Primitives/4.0.11": { - "sha512": "hVvfl4405DRjA2408luZekbPhplJK03j2Y2lSfMlny7GHXlkByw1iLnc9mgKW0GdQn73vvMcWrWewAhylXA4Nw==", - "type": "package", - "path": "system.net.primitives/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Net.Primitives.dll", - "ref/netcore50/System.Net.Primitives.xml", - "ref/netcore50/de/System.Net.Primitives.xml", - "ref/netcore50/es/System.Net.Primitives.xml", - "ref/netcore50/fr/System.Net.Primitives.xml", - "ref/netcore50/it/System.Net.Primitives.xml", - "ref/netcore50/ja/System.Net.Primitives.xml", - "ref/netcore50/ko/System.Net.Primitives.xml", - "ref/netcore50/ru/System.Net.Primitives.xml", - "ref/netcore50/zh-hans/System.Net.Primitives.xml", - "ref/netcore50/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.0/System.Net.Primitives.dll", - "ref/netstandard1.0/System.Net.Primitives.xml", - "ref/netstandard1.0/de/System.Net.Primitives.xml", - "ref/netstandard1.0/es/System.Net.Primitives.xml", - "ref/netstandard1.0/fr/System.Net.Primitives.xml", - "ref/netstandard1.0/it/System.Net.Primitives.xml", - "ref/netstandard1.0/ja/System.Net.Primitives.xml", - "ref/netstandard1.0/ko/System.Net.Primitives.xml", - "ref/netstandard1.0/ru/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.1/System.Net.Primitives.dll", - "ref/netstandard1.1/System.Net.Primitives.xml", - "ref/netstandard1.1/de/System.Net.Primitives.xml", - "ref/netstandard1.1/es/System.Net.Primitives.xml", - "ref/netstandard1.1/fr/System.Net.Primitives.xml", - "ref/netstandard1.1/it/System.Net.Primitives.xml", - "ref/netstandard1.1/ja/System.Net.Primitives.xml", - "ref/netstandard1.1/ko/System.Net.Primitives.xml", - "ref/netstandard1.1/ru/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.3/System.Net.Primitives.dll", - "ref/netstandard1.3/System.Net.Primitives.xml", - "ref/netstandard1.3/de/System.Net.Primitives.xml", - "ref/netstandard1.3/es/System.Net.Primitives.xml", - "ref/netstandard1.3/fr/System.Net.Primitives.xml", - "ref/netstandard1.3/it/System.Net.Primitives.xml", - "ref/netstandard1.3/ja/System.Net.Primitives.xml", - "ref/netstandard1.3/ko/System.Net.Primitives.xml", - "ref/netstandard1.3/ru/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.net.primitives.4.0.11.nupkg.sha512", - "system.net.primitives.nuspec" - ] - }, - "System.Net.Sockets/4.1.0": { - "sha512": "xAz0N3dAV/aR/9g8r0Y5oEqU1JRsz29F5EGb/WVHmX3jVSLqi2/92M5hTad2aNWovruXrJpJtgZ9fccPMG9uSw==", - "type": "package", - "path": "system.net.sockets/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.Sockets.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.xml", - "ref/netstandard1.3/de/System.Net.Sockets.xml", - "ref/netstandard1.3/es/System.Net.Sockets.xml", - "ref/netstandard1.3/fr/System.Net.Sockets.xml", - "ref/netstandard1.3/it/System.Net.Sockets.xml", - "ref/netstandard1.3/ja/System.Net.Sockets.xml", - "ref/netstandard1.3/ko/System.Net.Sockets.xml", - "ref/netstandard1.3/ru/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.net.sockets.4.1.0.nupkg.sha512", - "system.net.sockets.nuspec" - ] - }, - "System.ObjectModel/4.0.12": { - "sha512": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", - "type": "package", - "path": "system.objectmodel/4.0.12", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ObjectModel.dll", - "lib/netstandard1.3/System.ObjectModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ObjectModel.dll", - "ref/netcore50/System.ObjectModel.xml", - "ref/netcore50/de/System.ObjectModel.xml", - "ref/netcore50/es/System.ObjectModel.xml", - "ref/netcore50/fr/System.ObjectModel.xml", - "ref/netcore50/it/System.ObjectModel.xml", - "ref/netcore50/ja/System.ObjectModel.xml", - "ref/netcore50/ko/System.ObjectModel.xml", - "ref/netcore50/ru/System.ObjectModel.xml", - "ref/netcore50/zh-hans/System.ObjectModel.xml", - "ref/netcore50/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.0/System.ObjectModel.dll", - "ref/netstandard1.0/System.ObjectModel.xml", - "ref/netstandard1.0/de/System.ObjectModel.xml", - "ref/netstandard1.0/es/System.ObjectModel.xml", - "ref/netstandard1.0/fr/System.ObjectModel.xml", - "ref/netstandard1.0/it/System.ObjectModel.xml", - "ref/netstandard1.0/ja/System.ObjectModel.xml", - "ref/netstandard1.0/ko/System.ObjectModel.xml", - "ref/netstandard1.0/ru/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.3/System.ObjectModel.dll", - "ref/netstandard1.3/System.ObjectModel.xml", - "ref/netstandard1.3/de/System.ObjectModel.xml", - "ref/netstandard1.3/es/System.ObjectModel.xml", - "ref/netstandard1.3/fr/System.ObjectModel.xml", - "ref/netstandard1.3/it/System.ObjectModel.xml", - "ref/netstandard1.3/ja/System.ObjectModel.xml", - "ref/netstandard1.3/ko/System.ObjectModel.xml", - "ref/netstandard1.3/ru/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.objectmodel.4.0.12.nupkg.sha512", - "system.objectmodel.nuspec" - ] - }, - "System.Reactive.Core/3.1.1": { - "sha512": "CKWC+UP1aM75taNX+sTBn2P97uHIUjKxq+z45iy7P91QGFqNFleR2tsqIC76HMVvYl7o8oWyMiycdsc9rC1Z/g==", - "type": "package", - "path": "system.reactive.core/3.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/System.Reactive.Core.dll", - "lib/net45/System.Reactive.Core.xml", - "lib/net46/System.Reactive.Core.dll", - "lib/net46/System.Reactive.Core.xml", - "lib/netcore451/System.Reactive.Core.dll", - "lib/netcore451/System.Reactive.Core.xml", - "lib/netcoreapp1.0/System.Reactive.Core.dll", - "lib/netcoreapp1.0/System.Reactive.Core.xml", - "lib/netstandard1.0/System.Reactive.Core.dll", - "lib/netstandard1.0/System.Reactive.Core.xml", - "lib/netstandard1.1/System.Reactive.Core.dll", - "lib/netstandard1.1/System.Reactive.Core.xml", - "lib/netstandard1.3/System.Reactive.Core.dll", - "lib/netstandard1.3/System.Reactive.Core.xml", - "lib/uap10.0/System.Reactive.Core.dll", - "lib/uap10.0/System.Reactive.Core.xml", - "lib/wpa81/System.Reactive.Core.dll", - "lib/wpa81/System.Reactive.Core.xml", - "system.reactive.core.3.1.1.nupkg.sha512", - "system.reactive.core.nuspec" - ] - }, - "System.Reactive.Interfaces/3.1.1": { - "sha512": "aNVY3QoRznGFeQ+w+bMqhD8ElNWoyYq+7XTQIoxKKjBOyTOjUqIMEf1wvSdtwC4y92zg2W9q38b4Sr6cYNHVLg==", - "type": "package", - "path": "system.reactive.interfaces/3.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/System.Reactive.Interfaces.dll", - "lib/net45/System.Reactive.Interfaces.xml", - "lib/netstandard1.0/System.Reactive.Interfaces.dll", - "lib/netstandard1.0/System.Reactive.Interfaces.xml", - "system.reactive.interfaces.3.1.1.nupkg.sha512", - "system.reactive.interfaces.nuspec" - ] - }, - "System.Reactive.Linq/3.1.1": { - "sha512": "HwsZsoYRg51cLGBOEa0uoZ5+d4CMcHEg/KrbqePhLxoz/SLA+ULISphBtn3woABPATOQ6j5YgGZWh4jxnJ3KYQ==", - "type": "package", - "path": "system.reactive.linq/3.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/System.Reactive.Linq.dll", - "lib/net45/System.Reactive.Linq.xml", - "lib/net46/System.Reactive.Linq.dll", - "lib/net46/System.Reactive.Linq.xml", - "lib/netstandard1.0/System.Reactive.Linq.dll", - "lib/netstandard1.0/System.Reactive.Linq.xml", - "lib/netstandard1.1/System.Reactive.Linq.dll", - "lib/netstandard1.1/System.Reactive.Linq.xml", - "lib/netstandard1.3/System.Reactive.Linq.dll", - "lib/netstandard1.3/System.Reactive.Linq.xml", - "system.reactive.linq.3.1.1.nupkg.sha512", - "system.reactive.linq.nuspec" - ] - }, - "System.Reflection/4.1.0": { - "sha512": "JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==", - "type": "package", - "path": "system.reflection/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Reflection.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Reflection.dll", - "ref/netcore50/System.Reflection.dll", - "ref/netcore50/System.Reflection.xml", - "ref/netcore50/de/System.Reflection.xml", - "ref/netcore50/es/System.Reflection.xml", - "ref/netcore50/fr/System.Reflection.xml", - "ref/netcore50/it/System.Reflection.xml", - "ref/netcore50/ja/System.Reflection.xml", - "ref/netcore50/ko/System.Reflection.xml", - "ref/netcore50/ru/System.Reflection.xml", - "ref/netcore50/zh-hans/System.Reflection.xml", - "ref/netcore50/zh-hant/System.Reflection.xml", - "ref/netstandard1.0/System.Reflection.dll", - "ref/netstandard1.0/System.Reflection.xml", - "ref/netstandard1.0/de/System.Reflection.xml", - "ref/netstandard1.0/es/System.Reflection.xml", - "ref/netstandard1.0/fr/System.Reflection.xml", - "ref/netstandard1.0/it/System.Reflection.xml", - "ref/netstandard1.0/ja/System.Reflection.xml", - "ref/netstandard1.0/ko/System.Reflection.xml", - "ref/netstandard1.0/ru/System.Reflection.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.xml", - "ref/netstandard1.3/System.Reflection.dll", - "ref/netstandard1.3/System.Reflection.xml", - "ref/netstandard1.3/de/System.Reflection.xml", - "ref/netstandard1.3/es/System.Reflection.xml", - "ref/netstandard1.3/fr/System.Reflection.xml", - "ref/netstandard1.3/it/System.Reflection.xml", - "ref/netstandard1.3/ja/System.Reflection.xml", - "ref/netstandard1.3/ko/System.Reflection.xml", - "ref/netstandard1.3/ru/System.Reflection.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.xml", - "ref/netstandard1.5/System.Reflection.dll", - "ref/netstandard1.5/System.Reflection.xml", - "ref/netstandard1.5/de/System.Reflection.xml", - "ref/netstandard1.5/es/System.Reflection.xml", - "ref/netstandard1.5/fr/System.Reflection.xml", - "ref/netstandard1.5/it/System.Reflection.xml", - "ref/netstandard1.5/ja/System.Reflection.xml", - "ref/netstandard1.5/ko/System.Reflection.xml", - "ref/netstandard1.5/ru/System.Reflection.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.4.1.0.nupkg.sha512", - "system.reflection.nuspec" - ] - }, - "System.Reflection.Emit/4.0.1": { - "sha512": "P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==", - "type": "package", - "path": "system.reflection.emit/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.dll", - "lib/netstandard1.3/System.Reflection.Emit.dll", - "lib/xamarinmac20/_._", - "ref/MonoAndroid10/_._", - "ref/net45/_._", - "ref/netstandard1.1/System.Reflection.Emit.dll", - "ref/netstandard1.1/System.Reflection.Emit.xml", - "ref/netstandard1.1/de/System.Reflection.Emit.xml", - "ref/netstandard1.1/es/System.Reflection.Emit.xml", - "ref/netstandard1.1/fr/System.Reflection.Emit.xml", - "ref/netstandard1.1/it/System.Reflection.Emit.xml", - "ref/netstandard1.1/ja/System.Reflection.Emit.xml", - "ref/netstandard1.1/ko/System.Reflection.Emit.xml", - "ref/netstandard1.1/ru/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", - "ref/xamarinmac20/_._", - "system.reflection.emit.4.0.1.nupkg.sha512", - "system.reflection.emit.nuspec" - ] - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "sha512": "Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==", - "type": "package", - "path": "system.reflection.emit.ilgeneration/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._", - "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512", - "system.reflection.emit.ilgeneration.nuspec" - ] - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "sha512": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", - "type": "package", - "path": "system.reflection.emit.lightweight/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.Lightweight.dll", - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._", - "system.reflection.emit.lightweight.4.0.1.nupkg.sha512", - "system.reflection.emit.lightweight.nuspec" - ] - }, - "System.Reflection.Extensions/4.0.1": { - "sha512": "GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==", - "type": "package", - "path": "system.reflection.extensions/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Extensions.dll", - "ref/netcore50/System.Reflection.Extensions.xml", - "ref/netcore50/de/System.Reflection.Extensions.xml", - "ref/netcore50/es/System.Reflection.Extensions.xml", - "ref/netcore50/fr/System.Reflection.Extensions.xml", - "ref/netcore50/it/System.Reflection.Extensions.xml", - "ref/netcore50/ja/System.Reflection.Extensions.xml", - "ref/netcore50/ko/System.Reflection.Extensions.xml", - "ref/netcore50/ru/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", - "ref/netstandard1.0/System.Reflection.Extensions.dll", - "ref/netstandard1.0/System.Reflection.Extensions.xml", - "ref/netstandard1.0/de/System.Reflection.Extensions.xml", - "ref/netstandard1.0/es/System.Reflection.Extensions.xml", - "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", - "ref/netstandard1.0/it/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.extensions.4.0.1.nupkg.sha512", - "system.reflection.extensions.nuspec" - ] - }, - "System.Reflection.Primitives/4.0.1": { - "sha512": "4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==", - "type": "package", - "path": "system.reflection.primitives/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Primitives.dll", - "ref/netcore50/System.Reflection.Primitives.xml", - "ref/netcore50/de/System.Reflection.Primitives.xml", - "ref/netcore50/es/System.Reflection.Primitives.xml", - "ref/netcore50/fr/System.Reflection.Primitives.xml", - "ref/netcore50/it/System.Reflection.Primitives.xml", - "ref/netcore50/ja/System.Reflection.Primitives.xml", - "ref/netcore50/ko/System.Reflection.Primitives.xml", - "ref/netcore50/ru/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", - "ref/netstandard1.0/System.Reflection.Primitives.dll", - "ref/netstandard1.0/System.Reflection.Primitives.xml", - "ref/netstandard1.0/de/System.Reflection.Primitives.xml", - "ref/netstandard1.0/es/System.Reflection.Primitives.xml", - "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", - "ref/netstandard1.0/it/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.primitives.4.0.1.nupkg.sha512", - "system.reflection.primitives.nuspec" - ] - }, - "System.Reflection.TypeExtensions/4.1.0": { - "sha512": "tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==", - "type": "package", - "path": "system.reflection.typeextensions/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Reflection.TypeExtensions.dll", - "lib/net462/System.Reflection.TypeExtensions.dll", - "lib/netcore50/System.Reflection.TypeExtensions.dll", - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Reflection.TypeExtensions.dll", - "ref/net462/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll", - "system.reflection.typeextensions.4.1.0.nupkg.sha512", - "system.reflection.typeextensions.nuspec" - ] - }, - "System.Resources.ResourceManager/4.0.1": { - "sha512": "TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==", - "type": "package", - "path": "system.resources.resourcemanager/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Resources.ResourceManager.dll", - "ref/netcore50/System.Resources.ResourceManager.xml", - "ref/netcore50/de/System.Resources.ResourceManager.xml", - "ref/netcore50/es/System.Resources.ResourceManager.xml", - "ref/netcore50/fr/System.Resources.ResourceManager.xml", - "ref/netcore50/it/System.Resources.ResourceManager.xml", - "ref/netcore50/ja/System.Resources.ResourceManager.xml", - "ref/netcore50/ko/System.Resources.ResourceManager.xml", - "ref/netcore50/ru/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/System.Resources.ResourceManager.dll", - "ref/netstandard1.0/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.resources.resourcemanager.4.0.1.nupkg.sha512", - "system.resources.resourcemanager.nuspec" - ] - }, - "System.Runtime/4.1.0": { - "sha512": "v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==", - "type": "package", - "path": "system.runtime/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.dll", - "lib/portable-net45+win8+wp80+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.dll", - "ref/netcore50/System.Runtime.dll", - "ref/netcore50/System.Runtime.xml", - "ref/netcore50/de/System.Runtime.xml", - "ref/netcore50/es/System.Runtime.xml", - "ref/netcore50/fr/System.Runtime.xml", - "ref/netcore50/it/System.Runtime.xml", - "ref/netcore50/ja/System.Runtime.xml", - "ref/netcore50/ko/System.Runtime.xml", - "ref/netcore50/ru/System.Runtime.xml", - "ref/netcore50/zh-hans/System.Runtime.xml", - "ref/netcore50/zh-hant/System.Runtime.xml", - "ref/netstandard1.0/System.Runtime.dll", - "ref/netstandard1.0/System.Runtime.xml", - "ref/netstandard1.0/de/System.Runtime.xml", - "ref/netstandard1.0/es/System.Runtime.xml", - "ref/netstandard1.0/fr/System.Runtime.xml", - "ref/netstandard1.0/it/System.Runtime.xml", - "ref/netstandard1.0/ja/System.Runtime.xml", - "ref/netstandard1.0/ko/System.Runtime.xml", - "ref/netstandard1.0/ru/System.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.xml", - "ref/netstandard1.2/System.Runtime.dll", - "ref/netstandard1.2/System.Runtime.xml", - "ref/netstandard1.2/de/System.Runtime.xml", - "ref/netstandard1.2/es/System.Runtime.xml", - "ref/netstandard1.2/fr/System.Runtime.xml", - "ref/netstandard1.2/it/System.Runtime.xml", - "ref/netstandard1.2/ja/System.Runtime.xml", - "ref/netstandard1.2/ko/System.Runtime.xml", - "ref/netstandard1.2/ru/System.Runtime.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.xml", - "ref/netstandard1.3/System.Runtime.dll", - "ref/netstandard1.3/System.Runtime.xml", - "ref/netstandard1.3/de/System.Runtime.xml", - "ref/netstandard1.3/es/System.Runtime.xml", - "ref/netstandard1.3/fr/System.Runtime.xml", - "ref/netstandard1.3/it/System.Runtime.xml", - "ref/netstandard1.3/ja/System.Runtime.xml", - "ref/netstandard1.3/ko/System.Runtime.xml", - "ref/netstandard1.3/ru/System.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.xml", - "ref/netstandard1.5/System.Runtime.dll", - "ref/netstandard1.5/System.Runtime.xml", - "ref/netstandard1.5/de/System.Runtime.xml", - "ref/netstandard1.5/es/System.Runtime.xml", - "ref/netstandard1.5/fr/System.Runtime.xml", - "ref/netstandard1.5/it/System.Runtime.xml", - "ref/netstandard1.5/ja/System.Runtime.xml", - "ref/netstandard1.5/ko/System.Runtime.xml", - "ref/netstandard1.5/ru/System.Runtime.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.xml", - "ref/portable-net45+win8+wp80+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.4.1.0.nupkg.sha512", - "system.runtime.nuspec" - ] - }, - "System.Runtime.CompilerServices.Unsafe/4.5.1": { - "sha512": "Zh8t8oqolRaFa9vmOZfdQm/qKejdqz0J9kr7o2Fu0vPeoH3BL1EOXipKWwkWtLT1JPzjByrF19fGuFlNbmPpiw==", - "type": "package", - "path": "system.runtime.compilerservices.unsafe/4.5.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.xml", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", - "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", - "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", - "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", - "system.runtime.compilerservices.unsafe.4.5.1.nupkg.sha512", - "system.runtime.compilerservices.unsafe.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Runtime.Extensions/4.1.0": { - "sha512": "CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==", - "type": "package", - "path": "system.runtime.extensions/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.xml", - "ref/netcore50/de/System.Runtime.Extensions.xml", - "ref/netcore50/es/System.Runtime.Extensions.xml", - "ref/netcore50/fr/System.Runtime.Extensions.xml", - "ref/netcore50/it/System.Runtime.Extensions.xml", - "ref/netcore50/ja/System.Runtime.Extensions.xml", - "ref/netcore50/ko/System.Runtime.Extensions.xml", - "ref/netcore50/ru/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.0/System.Runtime.Extensions.dll", - "ref/netstandard1.0/System.Runtime.Extensions.xml", - "ref/netstandard1.0/de/System.Runtime.Extensions.xml", - "ref/netstandard1.0/es/System.Runtime.Extensions.xml", - "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.0/it/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.3/System.Runtime.Extensions.dll", - "ref/netstandard1.3/System.Runtime.Extensions.xml", - "ref/netstandard1.3/de/System.Runtime.Extensions.xml", - "ref/netstandard1.3/es/System.Runtime.Extensions.xml", - "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.3/it/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.5/System.Runtime.Extensions.dll", - "ref/netstandard1.5/System.Runtime.Extensions.xml", - "ref/netstandard1.5/de/System.Runtime.Extensions.xml", - "ref/netstandard1.5/es/System.Runtime.Extensions.xml", - "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.5/it/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.extensions.4.1.0.nupkg.sha512", - "system.runtime.extensions.nuspec" - ] - }, - "System.Runtime.Handles/4.0.1": { - "sha512": "nCJvEKguXEvk2ymk1gqj625vVnlK3/xdGzx0vOKicQkoquaTBJTP13AIYkocSUwHCLNBwUbXTqTWGDxBTWpt7g==", - "type": "package", - "path": "system.runtime.handles/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/netstandard1.3/System.Runtime.Handles.dll", - "ref/netstandard1.3/System.Runtime.Handles.xml", - "ref/netstandard1.3/de/System.Runtime.Handles.xml", - "ref/netstandard1.3/es/System.Runtime.Handles.xml", - "ref/netstandard1.3/fr/System.Runtime.Handles.xml", - "ref/netstandard1.3/it/System.Runtime.Handles.xml", - "ref/netstandard1.3/ja/System.Runtime.Handles.xml", - "ref/netstandard1.3/ko/System.Runtime.Handles.xml", - "ref/netstandard1.3/ru/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.handles.4.0.1.nupkg.sha512", - "system.runtime.handles.nuspec" - ] - }, - "System.Runtime.InteropServices/4.1.0": { - "sha512": "16eu3kjHS633yYdkjwShDHZLRNMKVi/s0bY8ODiqJ2RfMhDMAwxZaUaWVnZ2P71kr/or+X9o/xFWtNqz8ivieQ==", - "type": "package", - "path": "system.runtime.interopservices/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.InteropServices.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.xml", - "ref/netcore50/de/System.Runtime.InteropServices.xml", - "ref/netcore50/es/System.Runtime.InteropServices.xml", - "ref/netcore50/fr/System.Runtime.InteropServices.xml", - "ref/netcore50/it/System.Runtime.InteropServices.xml", - "ref/netcore50/ja/System.Runtime.InteropServices.xml", - "ref/netcore50/ko/System.Runtime.InteropServices.xml", - "ref/netcore50/ru/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/System.Runtime.InteropServices.dll", - "ref/netstandard1.1/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/System.Runtime.InteropServices.dll", - "ref/netstandard1.2/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/System.Runtime.InteropServices.dll", - "ref/netstandard1.3/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/System.Runtime.InteropServices.dll", - "ref/netstandard1.5/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.interopservices.4.1.0.nupkg.sha512", - "system.runtime.interopservices.nuspec" - ] - }, - "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { - "sha512": "hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==", - "type": "package", - "path": "system.runtime.interopservices.runtimeinformation/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "system.runtime.interopservices.runtimeinformation.4.0.0.nupkg.sha512", - "system.runtime.interopservices.runtimeinformation.nuspec" - ] - }, - "System.Runtime.InteropServices.WindowsRuntime/4.0.1": { - "sha512": "oIIXM4w2y3MiEZEXA+RTtfPV+SZ1ymbFdWppHlUciNdNIL0/Uo3HW9q9iN2O7T7KUmRdvjA7C2Gv4exAyW4zEQ==", - "type": "package", - "path": "system.runtime.interopservices.windowsruntime/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll", - "lib/netstandard1.3/System.Runtime.InteropServices.WindowsRuntime.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios1/_._", - "ref/net45/_._", - "ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll", - "ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netcore50/de/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netcore50/es/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netcore50/fr/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netcore50/it/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netcore50/ja/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netcore50/ko/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netcore50/ru/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netcore50/zh-hans/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netcore50/zh-hant/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netstandard1.0/System.Runtime.InteropServices.WindowsRuntime.dll", - "ref/netstandard1.0/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netstandard1.0/de/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netstandard1.0/es/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netstandard1.0/fr/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netstandard1.0/it/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netstandard1.0/ja/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netstandard1.0/ko/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netstandard1.0/ru/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.InteropServices.WindowsRuntime.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll", - "system.runtime.interopservices.windowsruntime.4.0.1.nupkg.sha512", - "system.runtime.interopservices.windowsruntime.nuspec" - ] - }, - "System.Runtime.Numerics/4.0.1": { - "sha512": "+XbKFuzdmLP3d1o9pdHu2nxjNr2OEPqGzKeegPLCUMM71a0t50A/rOcIRmGs9wR7a8KuHX6hYs/7/TymIGLNqg==", - "type": "package", - "path": "system.runtime.numerics/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Runtime.Numerics.dll", - "lib/netstandard1.3/System.Runtime.Numerics.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Runtime.Numerics.dll", - "ref/netcore50/System.Runtime.Numerics.xml", - "ref/netcore50/de/System.Runtime.Numerics.xml", - "ref/netcore50/es/System.Runtime.Numerics.xml", - "ref/netcore50/fr/System.Runtime.Numerics.xml", - "ref/netcore50/it/System.Runtime.Numerics.xml", - "ref/netcore50/ja/System.Runtime.Numerics.xml", - "ref/netcore50/ko/System.Runtime.Numerics.xml", - "ref/netcore50/ru/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", - "ref/netstandard1.1/System.Runtime.Numerics.dll", - "ref/netstandard1.1/System.Runtime.Numerics.xml", - "ref/netstandard1.1/de/System.Runtime.Numerics.xml", - "ref/netstandard1.1/es/System.Runtime.Numerics.xml", - "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", - "ref/netstandard1.1/it/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.numerics.4.0.1.nupkg.sha512", - "system.runtime.numerics.nuspec" - ] - }, - "System.Security.Cryptography.Algorithms/4.2.0": { - "sha512": "8JQFxbLVdrtIOKMDN38Fn0GWnqYZw/oMlwOUG/qz1jqChvyZlnUmu+0s7wLx7JYua/nAXoESpHA3iw11QFWhXg==", - "type": "package", - "path": "system.security.cryptography.algorithms/4.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Algorithms.dll", - "lib/net461/System.Security.Cryptography.Algorithms.dll", - "lib/net463/System.Security.Cryptography.Algorithms.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Algorithms.dll", - "ref/net461/System.Security.Cryptography.Algorithms.dll", - "ref/net463/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "system.security.cryptography.algorithms.4.2.0.nupkg.sha512", - "system.security.cryptography.algorithms.nuspec" - ] - }, - "System.Security.Cryptography.Cng/4.2.0": { - "sha512": "cUJ2h+ZvONDe28Szw3st5dOHdjndhJzQ2WObDEXAWRPEQBtVItVoxbXM/OEsTthl3cNn2dk2k0I3y45igCQcLw==", - "type": "package", - "path": "system.security.cryptography.cng/4.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Security.Cryptography.Cng.dll", - "lib/net461/System.Security.Cryptography.Cng.dll", - "lib/net463/System.Security.Cryptography.Cng.dll", - "ref/net46/System.Security.Cryptography.Cng.dll", - "ref/net461/System.Security.Cryptography.Cng.dll", - "ref/net463/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", - "system.security.cryptography.cng.4.2.0.nupkg.sha512", - "system.security.cryptography.cng.nuspec" - ] - }, - "System.Security.Cryptography.Csp/4.0.0": { - "sha512": "/i1Usuo4PgAqgbPNC0NjbO3jPW//BoBlTpcWFD1EHVbidH21y4c1ap5bbEMSGAXjAShhMH4abi/K8fILrnu4BQ==", - "type": "package", - "path": "system.security.cryptography.csp/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Csp.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Csp.dll", - "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/netcore50/_._", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", - "system.security.cryptography.csp.4.0.0.nupkg.sha512", - "system.security.cryptography.csp.nuspec" - ] - }, - "System.Security.Cryptography.Encoding/4.0.0": { - "sha512": "FbKgE5MbxSQMPcSVRgwM6bXN3GtyAh04NkV8E5zKCBE26X0vYW0UtTa2FIgkH33WVqBVxRgxljlVYumWtU+HcQ==", - "type": "package", - "path": "system.security.cryptography.encoding/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Encoding.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "system.security.cryptography.encoding.4.0.0.nupkg.sha512", - "system.security.cryptography.encoding.nuspec" - ] - }, - "System.Security.Cryptography.OpenSsl/4.0.0": { - "sha512": "HUG/zNUJwEiLkoURDixzkzZdB5yGA5pQhDP93ArOpDPQMteURIGERRNzzoJlmTreLBWr5lkFSjjMSk8ySEpQMw==", - "type": "package", - "path": "system.security.cryptography.openssl/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "system.security.cryptography.openssl.4.0.0.nupkg.sha512", - "system.security.cryptography.openssl.nuspec" - ] - }, - "System.Security.Cryptography.Primitives/4.0.0": { - "sha512": "Wkd7QryWYjkQclX0bngpntW5HSlMzeJU24UaLJQ7YTfI8ydAVAaU2J+HXLLABOVJlKTVvAeL0Aj39VeTe7L+oA==", - "type": "package", - "path": "system.security.cryptography.primitives/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Primitives.dll", - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Primitives.dll", - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.security.cryptography.primitives.4.0.0.nupkg.sha512", - "system.security.cryptography.primitives.nuspec" - ] - }, - "System.Security.Cryptography.X509Certificates/4.1.0": { - "sha512": "4HEfsQIKAhA1+ApNn729Gi09zh+lYWwyIuViihoMDWp1vQnEkL2ct7mAbhBlLYm+x/L4Rr/pyGge1lIY635e0w==", - "type": "package", - "path": "system.security.cryptography.x509certificates/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.X509Certificates.dll", - "lib/net461/System.Security.Cryptography.X509Certificates.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.X509Certificates.dll", - "ref/net461/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", - "system.security.cryptography.x509certificates.4.1.0.nupkg.sha512", - "system.security.cryptography.x509certificates.nuspec" - ] - }, - "System.Text.Encoding/4.0.11": { - "sha512": "U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==", - "type": "package", - "path": "system.text.encoding/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.dll", - "ref/netcore50/System.Text.Encoding.xml", - "ref/netcore50/de/System.Text.Encoding.xml", - "ref/netcore50/es/System.Text.Encoding.xml", - "ref/netcore50/fr/System.Text.Encoding.xml", - "ref/netcore50/it/System.Text.Encoding.xml", - "ref/netcore50/ja/System.Text.Encoding.xml", - "ref/netcore50/ko/System.Text.Encoding.xml", - "ref/netcore50/ru/System.Text.Encoding.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.0/System.Text.Encoding.dll", - "ref/netstandard1.0/System.Text.Encoding.xml", - "ref/netstandard1.0/de/System.Text.Encoding.xml", - "ref/netstandard1.0/es/System.Text.Encoding.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.xml", - "ref/netstandard1.0/it/System.Text.Encoding.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.3/System.Text.Encoding.dll", - "ref/netstandard1.3/System.Text.Encoding.xml", - "ref/netstandard1.3/de/System.Text.Encoding.xml", - "ref/netstandard1.3/es/System.Text.Encoding.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.xml", - "ref/netstandard1.3/it/System.Text.Encoding.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.encoding.4.0.11.nupkg.sha512", - "system.text.encoding.nuspec" - ] - }, - "System.Text.Encoding.Extensions/4.0.11": { - "sha512": "jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==", - "type": "package", - "path": "system.text.encoding.extensions/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.Extensions.dll", - "ref/netcore50/System.Text.Encoding.Extensions.xml", - "ref/netcore50/de/System.Text.Encoding.Extensions.xml", - "ref/netcore50/es/System.Text.Encoding.Extensions.xml", - "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", - "ref/netcore50/it/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.encoding.extensions.4.0.11.nupkg.sha512", - "system.text.encoding.extensions.nuspec" - ] - }, - "System.Text.Encodings.Web/4.5.0": { - "sha512": "Xg4G4Indi4dqP1iuAiMSwpiWS54ZghzR644OtsRCm/m/lBMG8dUBhLVN7hLm8NNrNTR+iGbshCPTwrvxZPlm4g==", - "type": "package", - "path": "system.text.encodings.web/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.0/System.Text.Encodings.Web.dll", - "lib/netstandard1.0/System.Text.Encodings.Web.xml", - "lib/netstandard2.0/System.Text.Encodings.Web.dll", - "lib/netstandard2.0/System.Text.Encodings.Web.xml", - "system.text.encodings.web.4.5.0.nupkg.sha512", - "system.text.encodings.web.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Text.RegularExpressions/4.1.0": { - "sha512": "i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==", - "type": "package", - "path": "system.text.regularexpressions/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Text.RegularExpressions.dll", - "lib/netcore50/System.Text.RegularExpressions.dll", - "lib/netstandard1.6/System.Text.RegularExpressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.xml", - "ref/netcore50/de/System.Text.RegularExpressions.xml", - "ref/netcore50/es/System.Text.RegularExpressions.xml", - "ref/netcore50/fr/System.Text.RegularExpressions.xml", - "ref/netcore50/it/System.Text.RegularExpressions.xml", - "ref/netcore50/ja/System.Text.RegularExpressions.xml", - "ref/netcore50/ko/System.Text.RegularExpressions.xml", - "ref/netcore50/ru/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/System.Text.RegularExpressions.dll", - "ref/netstandard1.0/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/System.Text.RegularExpressions.dll", - "ref/netstandard1.3/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/System.Text.RegularExpressions.dll", - "ref/netstandard1.6/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.regularexpressions.4.1.0.nupkg.sha512", - "system.text.regularexpressions.nuspec" - ] - }, - "System.Threading/4.0.11": { - "sha512": "N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==", - "type": "package", - "path": "system.threading/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.dll", - "lib/netstandard1.3/System.Threading.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.dll", - "ref/netcore50/System.Threading.xml", - "ref/netcore50/de/System.Threading.xml", - "ref/netcore50/es/System.Threading.xml", - "ref/netcore50/fr/System.Threading.xml", - "ref/netcore50/it/System.Threading.xml", - "ref/netcore50/ja/System.Threading.xml", - "ref/netcore50/ko/System.Threading.xml", - "ref/netcore50/ru/System.Threading.xml", - "ref/netcore50/zh-hans/System.Threading.xml", - "ref/netcore50/zh-hant/System.Threading.xml", - "ref/netstandard1.0/System.Threading.dll", - "ref/netstandard1.0/System.Threading.xml", - "ref/netstandard1.0/de/System.Threading.xml", - "ref/netstandard1.0/es/System.Threading.xml", - "ref/netstandard1.0/fr/System.Threading.xml", - "ref/netstandard1.0/it/System.Threading.xml", - "ref/netstandard1.0/ja/System.Threading.xml", - "ref/netstandard1.0/ko/System.Threading.xml", - "ref/netstandard1.0/ru/System.Threading.xml", - "ref/netstandard1.0/zh-hans/System.Threading.xml", - "ref/netstandard1.0/zh-hant/System.Threading.xml", - "ref/netstandard1.3/System.Threading.dll", - "ref/netstandard1.3/System.Threading.xml", - "ref/netstandard1.3/de/System.Threading.xml", - "ref/netstandard1.3/es/System.Threading.xml", - "ref/netstandard1.3/fr/System.Threading.xml", - "ref/netstandard1.3/it/System.Threading.xml", - "ref/netstandard1.3/ja/System.Threading.xml", - "ref/netstandard1.3/ko/System.Threading.xml", - "ref/netstandard1.3/ru/System.Threading.xml", - "ref/netstandard1.3/zh-hans/System.Threading.xml", - "ref/netstandard1.3/zh-hant/System.Threading.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Threading.dll", - "system.threading.4.0.11.nupkg.sha512", - "system.threading.nuspec" - ] - }, - "System.Threading.Tasks/4.0.11": { - "sha512": "k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==", - "type": "package", - "path": "system.threading.tasks/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.dll", - "ref/netcore50/System.Threading.Tasks.xml", - "ref/netcore50/de/System.Threading.Tasks.xml", - "ref/netcore50/es/System.Threading.Tasks.xml", - "ref/netcore50/fr/System.Threading.Tasks.xml", - "ref/netcore50/it/System.Threading.Tasks.xml", - "ref/netcore50/ja/System.Threading.Tasks.xml", - "ref/netcore50/ko/System.Threading.Tasks.xml", - "ref/netcore50/ru/System.Threading.Tasks.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.0/System.Threading.Tasks.dll", - "ref/netstandard1.0/System.Threading.Tasks.xml", - "ref/netstandard1.0/de/System.Threading.Tasks.xml", - "ref/netstandard1.0/es/System.Threading.Tasks.xml", - "ref/netstandard1.0/fr/System.Threading.Tasks.xml", - "ref/netstandard1.0/it/System.Threading.Tasks.xml", - "ref/netstandard1.0/ja/System.Threading.Tasks.xml", - "ref/netstandard1.0/ko/System.Threading.Tasks.xml", - "ref/netstandard1.0/ru/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.3/System.Threading.Tasks.dll", - "ref/netstandard1.3/System.Threading.Tasks.xml", - "ref/netstandard1.3/de/System.Threading.Tasks.xml", - "ref/netstandard1.3/es/System.Threading.Tasks.xml", - "ref/netstandard1.3/fr/System.Threading.Tasks.xml", - "ref/netstandard1.3/it/System.Threading.Tasks.xml", - "ref/netstandard1.3/ja/System.Threading.Tasks.xml", - "ref/netstandard1.3/ko/System.Threading.Tasks.xml", - "ref/netstandard1.3/ru/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.tasks.4.0.11.nupkg.sha512", - "system.threading.tasks.nuspec" - ] - }, - "System.Threading.Tasks.Extensions/4.0.0": { - "sha512": "pH4FZDsZQ/WmgJtN4LWYmRdJAEeVkyriSwrv2Teoe5FOU0Yxlb6II6GL8dBPOfRmutHGATduj3ooMt7dJ2+i+w==", - "type": "package", - "path": "system.threading.tasks.extensions/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml", - "system.threading.tasks.extensions.4.0.0.nupkg.sha512", - "system.threading.tasks.extensions.nuspec" - ] - }, - "System.Threading.Thread/4.0.0": { - "sha512": "gIdJqDXlOr5W9zeqFErLw3dsOsiShSCYtF9SEHitACycmvNvY8odf9kiKvp6V7aibc8C4HzzNBkWXjyfn7plbQ==", - "type": "package", - "path": "system.threading.thread/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Threading.Thread.dll", - "lib/netcore50/_._", - "lib/netstandard1.3/System.Threading.Thread.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Threading.Thread.dll", - "ref/netstandard1.3/System.Threading.Thread.dll", - "ref/netstandard1.3/System.Threading.Thread.xml", - "ref/netstandard1.3/de/System.Threading.Thread.xml", - "ref/netstandard1.3/es/System.Threading.Thread.xml", - "ref/netstandard1.3/fr/System.Threading.Thread.xml", - "ref/netstandard1.3/it/System.Threading.Thread.xml", - "ref/netstandard1.3/ja/System.Threading.Thread.xml", - "ref/netstandard1.3/ko/System.Threading.Thread.xml", - "ref/netstandard1.3/ru/System.Threading.Thread.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Thread.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Thread.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.thread.4.0.0.nupkg.sha512", - "system.threading.thread.nuspec" - ] - }, - "System.Threading.ThreadPool/4.0.10": { - "sha512": "IMXgB5Vf/5Qw1kpoVgJMOvUO1l32aC+qC3OaIZjWJOjvcxuxNWOK2ZTWWYXfij22NHxT2j1yWX5vlAeQWld9vA==", - "type": "package", - "path": "system.threading.threadpool/4.0.10", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Threading.ThreadPool.dll", - "lib/netcore50/_._", - "lib/netstandard1.3/System.Threading.ThreadPool.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Threading.ThreadPool.dll", - "ref/netstandard1.3/System.Threading.ThreadPool.dll", - "ref/netstandard1.3/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/de/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/es/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/fr/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/it/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ja/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ko/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ru/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/zh-hans/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/zh-hant/System.Threading.ThreadPool.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.threadpool.4.0.10.nupkg.sha512", - "system.threading.threadpool.nuspec" - ] - }, - "System.Threading.Timer/4.0.1": { - "sha512": "saGfUV8uqVW6LeURiqxcGhZ24PzuRNaUBtbhVeuUAvky1naH395A/1nY0P2bWvrw/BreRtIB/EzTDkGBpqCwEw==", - "type": "package", - "path": "system.threading.timer/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net451/_._", - "lib/portable-net451+win81+wpa81/_._", - "lib/win81/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net451/_._", - "ref/netcore50/System.Threading.Timer.dll", - "ref/netcore50/System.Threading.Timer.xml", - "ref/netcore50/de/System.Threading.Timer.xml", - "ref/netcore50/es/System.Threading.Timer.xml", - "ref/netcore50/fr/System.Threading.Timer.xml", - "ref/netcore50/it/System.Threading.Timer.xml", - "ref/netcore50/ja/System.Threading.Timer.xml", - "ref/netcore50/ko/System.Threading.Timer.xml", - "ref/netcore50/ru/System.Threading.Timer.xml", - "ref/netcore50/zh-hans/System.Threading.Timer.xml", - "ref/netcore50/zh-hant/System.Threading.Timer.xml", - "ref/netstandard1.2/System.Threading.Timer.dll", - "ref/netstandard1.2/System.Threading.Timer.xml", - "ref/netstandard1.2/de/System.Threading.Timer.xml", - "ref/netstandard1.2/es/System.Threading.Timer.xml", - "ref/netstandard1.2/fr/System.Threading.Timer.xml", - "ref/netstandard1.2/it/System.Threading.Timer.xml", - "ref/netstandard1.2/ja/System.Threading.Timer.xml", - "ref/netstandard1.2/ko/System.Threading.Timer.xml", - "ref/netstandard1.2/ru/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", - "ref/portable-net451+win81+wpa81/_._", - "ref/win81/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.timer.4.0.1.nupkg.sha512", - "system.threading.timer.nuspec" - ] - }, - "System.Xml.ReaderWriter/4.0.11": { - "sha512": "ZIiLPsf67YZ9zgr31vzrFaYQqxRPX9cVHjtPSnmx4eN6lbS/yEyYNr2vs1doGDEscF0tjCZFsk9yUg1sC9e8tg==", - "type": "package", - "path": "system.xml.readerwriter/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.ReaderWriter.dll", - "lib/netstandard1.3/System.Xml.ReaderWriter.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.ReaderWriter.dll", - "ref/netcore50/System.Xml.ReaderWriter.xml", - "ref/netcore50/de/System.Xml.ReaderWriter.xml", - "ref/netcore50/es/System.Xml.ReaderWriter.xml", - "ref/netcore50/fr/System.Xml.ReaderWriter.xml", - "ref/netcore50/it/System.Xml.ReaderWriter.xml", - "ref/netcore50/ja/System.Xml.ReaderWriter.xml", - "ref/netcore50/ko/System.Xml.ReaderWriter.xml", - "ref/netcore50/ru/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/System.Xml.ReaderWriter.dll", - "ref/netstandard1.0/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/System.Xml.ReaderWriter.dll", - "ref/netstandard1.3/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.xml.readerwriter.4.0.11.nupkg.sha512", - "system.xml.readerwriter.nuspec" - ] - }, - "System.Xml.XDocument/4.0.11": { - "sha512": "Mk2mKmPi0nWaoiYeotq1dgeNK1fqWh61+EK+w4Wu8SWuTYLzpUnschb59bJtGywaPq7SmTuPf44wrXRwbIrukg==", - "type": "package", - "path": "system.xml.xdocument/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.XDocument.dll", - "lib/netstandard1.3/System.Xml.XDocument.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.XDocument.dll", - "ref/netcore50/System.Xml.XDocument.xml", - "ref/netcore50/de/System.Xml.XDocument.xml", - "ref/netcore50/es/System.Xml.XDocument.xml", - "ref/netcore50/fr/System.Xml.XDocument.xml", - "ref/netcore50/it/System.Xml.XDocument.xml", - "ref/netcore50/ja/System.Xml.XDocument.xml", - "ref/netcore50/ko/System.Xml.XDocument.xml", - "ref/netcore50/ru/System.Xml.XDocument.xml", - "ref/netcore50/zh-hans/System.Xml.XDocument.xml", - "ref/netcore50/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.0/System.Xml.XDocument.dll", - "ref/netstandard1.0/System.Xml.XDocument.xml", - "ref/netstandard1.0/de/System.Xml.XDocument.xml", - "ref/netstandard1.0/es/System.Xml.XDocument.xml", - "ref/netstandard1.0/fr/System.Xml.XDocument.xml", - "ref/netstandard1.0/it/System.Xml.XDocument.xml", - "ref/netstandard1.0/ja/System.Xml.XDocument.xml", - "ref/netstandard1.0/ko/System.Xml.XDocument.xml", - "ref/netstandard1.0/ru/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.3/System.Xml.XDocument.dll", - "ref/netstandard1.3/System.Xml.XDocument.xml", - "ref/netstandard1.3/de/System.Xml.XDocument.xml", - "ref/netstandard1.3/es/System.Xml.XDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XDocument.xml", - "ref/netstandard1.3/it/System.Xml.XDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.xml.xdocument.4.0.11.nupkg.sha512", - "system.xml.xdocument.nuspec" - ] - }, - "Vtex.Api/0.1.1": { - "sha512": "K8bfaEYTOqMVYT5kc79O5vKWFbR8pWvFXRkse4ikbFIgWXowQiTG2wfUN1IRptLKBpl0kuBa05NKUVFUCFB+mw==", - "type": "package", - "path": "vtex.api/0.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.0/Vtex.Api.dll", - "vtex.api.0.1.1.nupkg.sha512", - "vtex.api.nuspec" - ] - } - }, - "projectFileDependencyGroups": { - ".NETCoreApp,Version=v3.0": [ - "GraphQL >= 2.4.0", - "Newtonsoft.Json >= 12.0.3", - "Vtex.Api >= 0.1.1" - ] - }, - "packageFolders": { - "C:\\Users\\brian\\.nuget\\packages\\": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "c:\\Users\\brian\\source\\repos\\availability-notify\\dotnet\\availability-notify.csproj", - "projectName": "availability-notify", - "projectPath": "c:\\Users\\brian\\source\\repos\\availability-notify\\dotnet\\availability-notify.csproj", - "packagesPath": "C:\\Users\\brian\\.nuget\\packages\\", - "outputPath": "c:\\Users\\brian\\source\\repos\\availability-notify\\dotnet\\obj\\", - "projectStyle": "PackageReference", - "configFilePaths": [ - "C:\\Users\\brian\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "netcoreapp3.0" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netcoreapp3.0": { - "targetAlias": "netcoreapp3.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - } - }, - "frameworks": { - "netcoreapp3.0": { - "targetAlias": "netcoreapp3.0", - "dependencies": { - "GraphQL": { - "target": "Package", - "version": "[2.4.0, )" - }, - "Newtonsoft.Json": { - "target": "Package", - "version": "[12.0.3, )" - }, - "Vtex.Api": { - "target": "Package", - "version": "[0.1.1, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.AspNetCore.App": { - "privateAssets": "none" - }, - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\5.0.104\\RuntimeIdentifierGraph.json" - } - } - } -} \ No newline at end of file diff --git a/dotnet/obj/project.nuget.cache b/dotnet/obj/project.nuget.cache deleted file mode 100644 index 152fa63e..00000000 --- a/dotnet/obj/project.nuget.cache +++ /dev/null @@ -1,96 +0,0 @@ -{ - "version": 2, - "dgSpecHash": "TlsBhsaDLnJTrcRl02pT9MuJShWF8nq/O5Rg3XDQHbIGPb/tpJ5rqR8F4rz7bH0neuo2wDo0rJ4LiZlbt7b/xg==", - "success": true, - "projectFilePath": "c:\\Users\\brian\\source\\repos\\availability-notify\\dotnet\\availability-notify.csproj", - "expectedPackageFiles": [ - "C:\\Users\\brian\\.nuget\\packages\\graphql\\2.4.0\\graphql.2.4.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\graphql-parser\\3.0.0\\graphql-parser.3.0.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\microsoft.aspnetcore.http\\2.2.2\\microsoft.aspnetcore.http.2.2.2.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\microsoft.aspnetcore.http.abstractions\\2.2.0\\microsoft.aspnetcore.http.abstractions.2.2.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\microsoft.aspnetcore.http.features\\2.2.0\\microsoft.aspnetcore.http.features.2.2.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\microsoft.aspnetcore.webutilities\\2.2.0\\microsoft.aspnetcore.webutilities.2.2.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\2.2.0\\microsoft.extensions.dependencyinjection.abstractions.2.2.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\microsoft.extensions.objectpool\\2.2.0\\microsoft.extensions.objectpool.2.2.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\microsoft.extensions.options\\2.2.0\\microsoft.extensions.options.2.2.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\microsoft.extensions.primitives\\2.2.0\\microsoft.extensions.primitives.2.2.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\microsoft.net.http.headers\\2.2.0\\microsoft.net.http.headers.2.2.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\microsoft.netcore.platforms\\1.0.1\\microsoft.netcore.platforms.1.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\microsoft.netcore.targets\\1.0.1\\microsoft.netcore.targets.1.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\microsoft.win32.primitives\\4.0.1\\microsoft.win32.primitives.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\netstandard.library\\1.6.0\\netstandard.library.1.6.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\newtonsoft.json\\12.0.3\\newtonsoft.json.12.0.3.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\runtime.native.system\\4.0.0\\runtime.native.system.4.0.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\runtime.native.system.io.compression\\4.1.0\\runtime.native.system.io.compression.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\runtime.native.system.net.http\\4.0.1\\runtime.native.system.net.http.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\runtime.native.system.security.cryptography\\4.0.0\\runtime.native.system.security.cryptography.4.0.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.appcontext\\4.1.0\\system.appcontext.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.buffers\\4.5.0\\system.buffers.4.5.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.collections\\4.0.11\\system.collections.4.0.11.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.collections.concurrent\\4.0.12\\system.collections.concurrent.4.0.12.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.componentmodel\\4.0.1\\system.componentmodel.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.componentmodel.annotations\\4.5.0\\system.componentmodel.annotations.4.5.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.console\\4.0.0\\system.console.4.0.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.diagnostics.contracts\\4.0.1\\system.diagnostics.contracts.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.diagnostics.debug\\4.0.11\\system.diagnostics.debug.4.0.11.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.diagnostics.diagnosticsource\\4.0.0\\system.diagnostics.diagnosticsource.4.0.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.diagnostics.tools\\4.0.1\\system.diagnostics.tools.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.diagnostics.tracing\\4.1.0\\system.diagnostics.tracing.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.dynamic.runtime\\4.0.11\\system.dynamic.runtime.4.0.11.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.globalization\\4.0.11\\system.globalization.4.0.11.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.globalization.calendars\\4.0.1\\system.globalization.calendars.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.globalization.extensions\\4.0.1\\system.globalization.extensions.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.io\\4.1.0\\system.io.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.io.compression\\4.1.0\\system.io.compression.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.io.compression.zipfile\\4.0.1\\system.io.compression.zipfile.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.io.filesystem\\4.0.1\\system.io.filesystem.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.io.filesystem.primitives\\4.0.1\\system.io.filesystem.primitives.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.linq\\4.1.0\\system.linq.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.linq.expressions\\4.1.0\\system.linq.expressions.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.memory\\4.5.1\\system.memory.4.5.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.net.http\\4.1.0\\system.net.http.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.net.primitives\\4.0.11\\system.net.primitives.4.0.11.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.net.sockets\\4.1.0\\system.net.sockets.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.objectmodel\\4.0.12\\system.objectmodel.4.0.12.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.reactive.core\\3.1.1\\system.reactive.core.3.1.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.reactive.interfaces\\3.1.1\\system.reactive.interfaces.3.1.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.reactive.linq\\3.1.1\\system.reactive.linq.3.1.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.reflection\\4.1.0\\system.reflection.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.reflection.emit\\4.0.1\\system.reflection.emit.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.reflection.emit.ilgeneration\\4.0.1\\system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.reflection.emit.lightweight\\4.0.1\\system.reflection.emit.lightweight.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.reflection.extensions\\4.0.1\\system.reflection.extensions.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.reflection.primitives\\4.0.1\\system.reflection.primitives.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.reflection.typeextensions\\4.1.0\\system.reflection.typeextensions.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.resources.resourcemanager\\4.0.1\\system.resources.resourcemanager.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.runtime\\4.1.0\\system.runtime.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\4.5.1\\system.runtime.compilerservices.unsafe.4.5.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.runtime.extensions\\4.1.0\\system.runtime.extensions.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.runtime.handles\\4.0.1\\system.runtime.handles.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.runtime.interopservices\\4.1.0\\system.runtime.interopservices.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.runtime.interopservices.runtimeinformation\\4.0.0\\system.runtime.interopservices.runtimeinformation.4.0.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.runtime.interopservices.windowsruntime\\4.0.1\\system.runtime.interopservices.windowsruntime.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.runtime.numerics\\4.0.1\\system.runtime.numerics.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.security.cryptography.algorithms\\4.2.0\\system.security.cryptography.algorithms.4.2.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.security.cryptography.cng\\4.2.0\\system.security.cryptography.cng.4.2.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.security.cryptography.csp\\4.0.0\\system.security.cryptography.csp.4.0.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.security.cryptography.encoding\\4.0.0\\system.security.cryptography.encoding.4.0.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.security.cryptography.openssl\\4.0.0\\system.security.cryptography.openssl.4.0.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.security.cryptography.primitives\\4.0.0\\system.security.cryptography.primitives.4.0.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.security.cryptography.x509certificates\\4.1.0\\system.security.cryptography.x509certificates.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.text.encoding\\4.0.11\\system.text.encoding.4.0.11.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.text.encoding.extensions\\4.0.11\\system.text.encoding.extensions.4.0.11.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.text.encodings.web\\4.5.0\\system.text.encodings.web.4.5.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.text.regularexpressions\\4.1.0\\system.text.regularexpressions.4.1.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.threading\\4.0.11\\system.threading.4.0.11.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.threading.tasks\\4.0.11\\system.threading.tasks.4.0.11.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.threading.tasks.extensions\\4.0.0\\system.threading.tasks.extensions.4.0.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.threading.thread\\4.0.0\\system.threading.thread.4.0.0.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.threading.threadpool\\4.0.10\\system.threading.threadpool.4.0.10.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.threading.timer\\4.0.1\\system.threading.timer.4.0.1.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.xml.readerwriter\\4.0.11\\system.xml.readerwriter.4.0.11.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\system.xml.xdocument\\4.0.11\\system.xml.xdocument.4.0.11.nupkg.sha512", - "C:\\Users\\brian\\.nuget\\packages\\vtex.api\\0.1.1\\vtex.api.0.1.1.nupkg.sha512" - ], - "logs": [] -} \ No newline at end of file diff --git a/manifest.json b/manifest.json index ef2bd7e9..76cef601 100644 --- a/manifest.json +++ b/manifest.json @@ -8,7 +8,7 @@ "prereleasy": "bash pre.sh" }, "builders": { - "dotnet": "2.x", + "node": "7.x", "graphql": "1.x", "store": "0.x", "docs": "0.x", @@ -67,12 +67,6 @@ "host": "bnb.data.bl.uk" } }, - { - "name": "outbound-access", - "attrs": { - "host": "nuget.org" - } - }, { "name": "ADMIN_DS" }, @@ -123,6 +117,13 @@ "path": "/api/mail-service/pvt/sendmail" } }, + { + "name": "outbound-access", + "attrs": { + "host": "app.io.vtex.com", + "path": "/vtex.availability-notify/*" + } + }, { "name": "vbase-read-write" } diff --git a/node/clients/apps.ts b/node/clients/apps.ts new file mode 100644 index 00000000..903d26d6 --- /dev/null +++ b/node/clients/apps.ts @@ -0,0 +1,55 @@ +import type { InstanceOptions, IOContext } from '@vtex/api' +import { JanusClient } from '@vtex/api' + +import { APP_SETTINGS } from '../utils/constants' +import type { MerchantSettings } from '../typings/merchantSettings' + +export class AppsClient extends JanusClient { + constructor(context: IOContext, options?: InstanceOptions) { + super(context, { + ...options, + headers: { + ...options?.headers, + VtexIdclientAutCookie: context.authToken, + 'X-Vtex-Use-Https': 'true', + }, + }) + } + + public async getMerchantSettings(): Promise { + try { + const region = process.env.VTEX_REGION ?? '' + const account = this.context.account + const workspace = this.context.workspace + + return await this.http.get( + `http://apps.${region}.vtex.io/${account}/${workspace}/apps/${APP_SETTINGS}/settings`, + { + metric: 'apps-get-settings', + } + ) + } catch (error) { + return {} as MerchantSettings + } + } + + public async setMerchantSettings( + merchantSettings: MerchantSettings + ): Promise { + try { + const region = process.env.VTEX_REGION ?? '' + const account = this.context.account + const workspace = this.context.workspace + + await this.http.put( + `http://apps.${region}.vtex.io/${account}/${workspace}/apps/${APP_SETTINGS}/settings`, + merchantSettings, + { + metric: 'apps-set-settings', + } + ) + } catch (error) { + // Silently fail + } + } +} diff --git a/node/clients/availability.ts b/node/clients/availability.ts new file mode 100644 index 00000000..714b8908 --- /dev/null +++ b/node/clients/availability.ts @@ -0,0 +1,39 @@ +import type { InstanceOptions, IOContext } from '@vtex/api' +import { ExternalClient } from '@vtex/api' + +import type { AffiliateNotification } from '../typings/affiliateNotification' + +export class AvailabilityClient extends ExternalClient { + constructor(context: IOContext, options?: InstanceOptions) { + super('http://app.io.vtex.com', context, { + ...options, + headers: { + ...options?.headers, + VtexIdclientAutCookie: context.authToken, + 'X-Vtex-Use-Https': 'true', + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + }) + } + + public async forwardNotification( + notification: AffiliateNotification, + accountName: string, + appMajor: string + ): Promise { + try { + await this.http.post( + `/vtex.availability-notify/v${appMajor}/${accountName}/master/_v/availability-notify/notify`, + notification, + { + metric: 'availability-forward-notification', + } + ) + + return true + } catch (error) { + return false + } + } +} diff --git a/node/clients/catalog.ts b/node/clients/catalog.ts new file mode 100644 index 00000000..21920e30 --- /dev/null +++ b/node/clients/catalog.ts @@ -0,0 +1,49 @@ +import type { InstanceOptions, IOContext } from '@vtex/api' +import { JanusClient } from '@vtex/api' + +import type { GetSkuContextResponse } from '../typings/getSkuContext' +import type { GetSkuSellerResponse } from '../typings/getSkuSeller' + +export class CatalogClient extends JanusClient { + constructor(context: IOContext, options?: InstanceOptions) { + super(context, { + ...options, + headers: { + ...options?.headers, + VtexIdclientAutCookie: context.authToken, + 'X-Vtex-Use-Https': 'true', + }, + }) + } + + public async getSkuContext( + skuId: string + ): Promise { + try { + return await this.http.get( + `/api/catalog_system/pvt/sku/stockkeepingunitbyid/${skuId}`, + { + metric: 'catalog-get-sku-context', + } + ) + } catch (error) { + return null + } + } + + public async getSkuSeller( + sellerId: string, + skuId: string + ): Promise { + try { + return await this.http.get( + `/api/catalog_system/pvt/skuseller/${sellerId}/${skuId}`, + { + metric: 'catalog-get-sku-seller', + } + ) + } catch (error) { + return null + } + } +} diff --git a/node/clients/checkout.ts b/node/clients/checkout.ts new file mode 100644 index 00000000..814f0a23 --- /dev/null +++ b/node/clients/checkout.ts @@ -0,0 +1,34 @@ +import type { InstanceOptions, IOContext } from '@vtex/api' +import { JanusClient } from '@vtex/api' + +import type { CartSimulationRequest } from '../typings/cartSimulation' +import type { CartSimulationResponse } from '../typings/cartSimulationResponse' + +export class CheckoutClient extends JanusClient { + constructor(context: IOContext, options?: InstanceOptions) { + super(context, { + ...options, + headers: { + ...options?.headers, + VtexIdclientAutCookie: context.authToken, + 'X-Vtex-Use-Https': 'true', + }, + }) + } + + public async cartSimulation( + request: CartSimulationRequest + ): Promise { + try { + return await this.http.post( + '/api/checkout/pub/orderForms/simulation', + request, + { + metric: 'checkout-cart-simulation', + } + ) + } catch (error) { + return null + } + } +} diff --git a/node/clients/github.ts b/node/clients/github.ts new file mode 100644 index 00000000..f359c447 --- /dev/null +++ b/node/clients/github.ts @@ -0,0 +1,35 @@ +import type { InstanceOptions, IOContext } from '@vtex/api' +import { ExternalClient } from '@vtex/api' + +import { + REPOSITORY, + TEMPLATE_FOLDER, + TEMPLATE_FILE_EXTENSION, +} from '../utils/constants' + +export class GitHubClient extends ExternalClient { + constructor(context: IOContext, options?: InstanceOptions) { + super('https://raw.githubusercontent.com', context, { + ...options, + headers: { + ...options?.headers, + 'X-Vtex-Use-Https': 'true', + }, + }) + } + + public async getDefaultTemplate(templateName: string): Promise { + try { + const response = await this.http.get( + `/${REPOSITORY}/${TEMPLATE_FOLDER}/${templateName}.${TEMPLATE_FILE_EXTENSION}`, + { + metric: 'github-get-template', + } + ) + + return typeof response === 'string' ? response : JSON.stringify(response) + } catch (error) { + return '' + } + } +} diff --git a/node/clients/index.ts b/node/clients/index.ts new file mode 100644 index 00000000..33dfd5b2 --- /dev/null +++ b/node/clients/index.ts @@ -0,0 +1,54 @@ +import { IOClients } from '@vtex/api' + +import { MasterDataClient } from './masterdata' +import { LogisticsClient } from './logistics' +import { CatalogClient } from './catalog' +import { CheckoutClient } from './checkout' +import { MailClient } from './mail' +import { TemplateClient } from './template' +import { GitHubClient } from './github' +import { AppsClient } from './apps' +import { VtexIdClient } from './vtexid' +import { AvailabilityClient } from './availability' + +export class Clients extends IOClients { + public get mdClient() { + return this.getOrSet('mdClient', MasterDataClient) + } + + public get logistics() { + return this.getOrSet('logistics', LogisticsClient) + } + + public get catalog() { + return this.getOrSet('catalog', CatalogClient) + } + + public get checkout() { + return this.getOrSet('checkout', CheckoutClient) + } + + public get mail() { + return this.getOrSet('mail', MailClient) + } + + public get template() { + return this.getOrSet('template', TemplateClient) + } + + public get github() { + return this.getOrSet('github', GitHubClient) + } + + public get appsClient() { + return this.getOrSet('appsClient', AppsClient) + } + + public get vtexId() { + return this.getOrSet('vtexId', VtexIdClient) + } + + public get availability() { + return this.getOrSet('availability', AvailabilityClient) + } +} diff --git a/node/clients/logistics.ts b/node/clients/logistics.ts new file mode 100644 index 00000000..45995493 --- /dev/null +++ b/node/clients/logistics.ts @@ -0,0 +1,44 @@ +import type { InstanceOptions, IOContext } from '@vtex/api' +import { JanusClient } from '@vtex/api' + +import type { InventoryBySku } from '../typings/inventoryBySku' +import type { ListAllWarehousesResponse } from '../typings/listAllWarehouses' + +export class LogisticsClient extends JanusClient { + constructor(context: IOContext, options?: InstanceOptions) { + super(context, { + ...options, + headers: { + ...options?.headers, + VtexIdclientAutCookie: context.authToken, + 'X-Vtex-Use-Https': 'true', + }, + }) + } + + public async listInventoryBySku(sku: string): Promise { + try { + return await this.http.get( + `/api/logistics/pvt/inventory/skus/${sku}`, + { + metric: 'logistics-inventory-by-sku', + } + ) + } catch (error) { + return null + } + } + + public async listAllWarehouses(): Promise { + try { + return await this.http.get( + '/api/logistics/pvt/configuration/warehouses', + { + metric: 'logistics-list-warehouses', + } + ) + } catch (error) { + return null + } + } +} diff --git a/node/clients/mail.ts b/node/clients/mail.ts new file mode 100644 index 00000000..bf928a1d --- /dev/null +++ b/node/clients/mail.ts @@ -0,0 +1,38 @@ +import type { InstanceOptions, IOContext } from '@vtex/api' +import { ExternalClient } from '@vtex/api' + +import type { EmailMessage } from '../typings/emailMessage' + +export class MailClient extends ExternalClient { + constructor(context: IOContext, options?: InstanceOptions) { + super('http://mailservice.vtex.com.br', context, { + ...options, + headers: { + ...options?.headers, + VtexIdclientAutCookie: context.authToken, + 'X-Vtex-Use-Https': 'true', + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + }) + } + + public async sendMail( + message: EmailMessage, + accountName: string + ): Promise { + try { + await this.http.post( + `/api/mail-service/pvt/sendmail?an=${accountName}`, + message, + { + metric: 'mail-send', + } + ) + + return true + } catch (error) { + return false + } + } +} diff --git a/node/clients/masterdata.ts b/node/clients/masterdata.ts new file mode 100644 index 00000000..416eed97 --- /dev/null +++ b/node/clients/masterdata.ts @@ -0,0 +1,179 @@ +import type { InstanceOptions, IOContext } from '@vtex/api' +import { JanusClient } from '@vtex/api' + +import { + DATA_ENTITY, + SCHEMA, + SCHEMA_JSON, + FIELDS, +} from '../utils/constants' +import type { NotifyRequest } from '../typings/notifyRequest' + +export class MasterDataClient extends JanusClient { + constructor(context: IOContext, options?: InstanceOptions) { + super(context, { + ...options, + headers: { + ...options?.headers, + VtexIdclientAutCookie: context.authToken, + 'X-Vtex-Use-Https': 'true', + }, + }) + } + + public async verifySchema(): Promise { + const url = `/api/dataentities/${DATA_ENTITY}/schemas/${SCHEMA}` + + try { + const response = await this.http.getRaw(url, { + metric: 'masterdata-get-schema', + }) + + const responseText = + typeof response.data === 'string' + ? response.data + : JSON.stringify(response.data) + + if (responseText !== SCHEMA_JSON) { + await this.http.putRaw(url, SCHEMA_JSON, { + metric: 'masterdata-put-schema', + headers: { + 'Content-Type': 'application/json', + }, + }) + } + + return true + } catch (error) { + return false + } + } + + public async saveNotifyRequest( + notifyRequest: NotifyRequest, + account: string + ): Promise { + const url = `/api/dataentities/${DATA_ENTITY}/documents` + + try { + await this.http.put(url, notifyRequest, { + metric: 'masterdata-save-notify', + headers: { + 'X-Vtex-Account': account, + }, + }) + + return true + } catch (error) { + return false + } + } + + public async deleteNotifyRequest(documentId: string): Promise { + const url = `/api/dataentities/${DATA_ENTITY}/documents/${documentId}` + + try { + await this.http.delete(url, { + metric: 'masterdata-delete-notify', + }) + + return true + } catch (error) { + return false + } + } + + public async searchRequests( + account: string, + searchString: string, + searchFrom?: number + ): Promise { + const allRequests: NotifyRequest[] = [] + const from = searchFrom ?? 0 + const to = from + 99 + + const url = `/api/dataentities/${DATA_ENTITY}/search?_fields=${FIELDS}&_schema=${SCHEMA}&${searchString}` + + try { + const response = await this.http.getRaw(url, { + metric: 'masterdata-search-requests', + headers: { + 'REST-Range': `resources=${from}-${to}`, + 'X-Vtex-Account': account, + }, + }) + + const requests: NotifyRequest[] = response.data + allRequests.push(...requests) + + const contentRange = response.headers?.['rest-content-range'] + + if (contentRange) { + // format: "resources 0-99/168" + const parts = contentRange.split(' ') + const ranges = parts[1].split('/') + const responseTotal = parseInt(ranges[1], 10) + const responseTo = parseInt(ranges[0].split('-')[1], 10) + + if (responseTo < responseTotal) { + const nextFrom = responseTo + 1 + const moreRequests = await this.searchRequests( + account, + searchString, + nextFrom + ) + + allRequests.push(...moreRequests) + } + } + } catch (error) { + // Return whatever we've gathered so far + } + + return allRequests + } + + public async scrollRequests(account: string): Promise { + const allRequests: NotifyRequest[] = [] + let url = `/api/dataentities/${DATA_ENTITY}/scroll?_fields=${FIELDS}` + + try { + let response = await this.http.getRaw(url, { + metric: 'masterdata-scroll-requests', + headers: { + 'X-Vtex-Account': account, + }, + }) + + let requests: NotifyRequest[] = response.data + allRequests.push(...requests) + let returnedRecords = requests.length + + let mdToken = response.headers?.['x-vtex-md-token'] + + while (mdToken && returnedRecords > 0) { + url = `/api/dataentities/${DATA_ENTITY}/scroll?_token=${mdToken}` + + response = await this.http.getRaw(url, { + metric: 'masterdata-scroll-requests', + headers: { + 'X-Vtex-Account': account, + }, + }) + + requests = response.data + returnedRecords = requests.length + + if (returnedRecords > 0) { + allRequests.push(...requests) + } + + mdToken = response.headers?.['x-vtex-md-token'] + } + } catch (error) { + // Return whatever we've gathered so far + } + + return allRequests + } +} diff --git a/node/clients/template.ts b/node/clients/template.ts new file mode 100644 index 00000000..3612c29c --- /dev/null +++ b/node/clients/template.ts @@ -0,0 +1,49 @@ +import type { InstanceOptions, IOContext } from '@vtex/api' +import { JanusClient } from '@vtex/api' + +import type { EmailTemplate } from '../typings/emailTemplate' + +export class TemplateClient extends JanusClient { + constructor(context: IOContext, options?: InstanceOptions) { + super(context, { + ...options, + headers: { + ...options?.headers, + VtexIdclientAutCookie: context.authToken, + 'X-Vtex-Use-Https': 'true', + }, + }) + } + + public async createOrUpdateTemplate( + template: EmailTemplate | string + ): Promise { + try { + const body = + typeof template === 'string' ? JSON.parse(template) : template + + await this.http.post('/api/template-render/pvt/templates', body, { + metric: 'template-create-or-update', + }) + + return true + } catch (error) { + return false + } + } + + public async templateExists(templateName: string): Promise { + try { + await this.http.get( + `/api/template-render/pvt/templates/${templateName}`, + { + metric: 'template-exists', + } + ) + + return true + } catch (error) { + return false + } + } +} diff --git a/node/clients/vbase.ts b/node/clients/vbase.ts new file mode 100644 index 00000000..9044a69b --- /dev/null +++ b/node/clients/vbase.ts @@ -0,0 +1,93 @@ +import { VBase } from '@vtex/api' + +import { BUCKET, LOCK, UNSENT_CHECK } from '../utils/constants' +import type { Lock } from '../typings/lock' + +const APP_NAME = 'vtex.availability-notify' + +export class AvailabilityVBase { + private vbase: VBase + + constructor(vbase: VBase) { + this.vbase = vbase + } + + public async setImportLock(sku: string): Promise { + const lock: Lock = { + processing_started: new Date().toISOString(), + } + + try { + await this.vbase.saveJSON(BUCKET, `${LOCK}-${sku}`, lock) + } catch (error) { + // Silently fail on lock setting + } + } + + public async checkImportLock(sku: string): Promise { + try { + const lock = await this.vbase.getJSON( + BUCKET, + `${LOCK}-${sku}`, + true + ) + + if (lock?.processing_started) { + return new Date(lock.processing_started) + } + } catch (error) { + // Return default date if lock not found + } + + return new Date(0) + } + + public async clearImportLock(sku: string): Promise { + try { + await this.vbase.deleteFile(BUCKET, `${LOCK}-${sku}`) + } catch (error) { + // Silently fail on lock clearing + } + } + + public async getLastUnsentCheck(): Promise { + try { + const lastCheck = await this.vbase.getJSON( + BUCKET, + UNSENT_CHECK, + true + ) + + if (lastCheck) { + return new Date(lastCheck) + } + + // If file exists but is empty, set and return now + const now = new Date() + await this.setLastUnsentCheck(now) + + return now + } catch (error) { + // If file doesn't exist, set 7 days ago and return + const sevenDaysAgo = new Date() + sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7) + await this.setLastUnsentCheck(sevenDaysAgo) + + return sevenDaysAgo + } + } + + public async setLastUnsentCheck(lastCheck: Date): Promise { + try { + await this.vbase.saveJSON( + BUCKET, + UNSENT_CHECK, + lastCheck.toISOString() + ) + } catch (error) { + // Silently fail + } + } +} + +export { APP_NAME } diff --git a/node/clients/vtexid.ts b/node/clients/vtexid.ts new file mode 100644 index 00000000..e41cc1ad --- /dev/null +++ b/node/clients/vtexid.ts @@ -0,0 +1,33 @@ +import type { InstanceOptions, IOContext } from '@vtex/api' +import { JanusClient } from '@vtex/api' + +import type { ValidatedUser } from '../typings/validatedUser' + +export class VtexIdClient extends JanusClient { + constructor(context: IOContext, options?: InstanceOptions) { + super(context, { + ...options, + headers: { + ...options?.headers, + VtexIdclientAutCookie: context.authToken, + 'X-Vtex-Use-Https': 'true', + }, + }) + } + + public async validateUserToken( + token: string + ): Promise { + try { + return await this.http.post( + '/api/vtexid/credential/validate', + { token }, + { + metric: 'vtexid-validate-token', + } + ) + } catch (error) { + return null + } + } +} diff --git a/node/handlers/allStates.ts b/node/handlers/allStates.ts new file mode 100644 index 00000000..ceab94be --- /dev/null +++ b/node/handlers/allStates.ts @@ -0,0 +1,19 @@ +import type { EventContext } from '@vtex/api' + +import type { Clients } from '../clients' +import type { AllStatesNotification } from '../typings/allStatesNotification' +import { processNotificationAllStates } from '../middlewares/vtexApiService' + +export async function allStates(ctx: EventContext): Promise { + try { + const notification = (ctx as any).body as AllStatesNotification + + await processNotificationAllStates(ctx as any, notification) + } catch (error) { + ctx.vtex.logger.warn({ + message: `allStates: Error processing Orders Broadcaster Notification: ${ + error instanceof Error ? error.message : String(error) + }`, + }) + } +} diff --git a/node/handlers/broadcasterNotification.ts b/node/handlers/broadcasterNotification.ts new file mode 100644 index 00000000..25efc897 --- /dev/null +++ b/node/handlers/broadcasterNotification.ts @@ -0,0 +1,89 @@ +import type { EventContext } from '@vtex/api' + +import type { Clients } from '../clients' +import { AvailabilityVBase } from '../clients/vbase' +import type { BroadcastNotification } from '../typings/broadcastNotification' +import { processNotificationBroadcast } from '../middlewares/vtexApiService' + +let throttleCounter = 0 + +export async function broadcasterNotification( + ctx: EventContext +): Promise { + throttleCounter++ + + if (throttleCounter > 10) { + throttleCounter-- + // Throttling — event system will retry the event later + throw new Error('Throttled') + } + + try { + let notification: BroadcastNotification + + try { + notification = (ctx as any).body as BroadcastNotification + } catch (error) { + ctx.vtex.logger.error({ + message: 'broadcasterNotification: Error reading Notification', + error, + }) + throttleCounter-- + + return + } + + const skuId = notification.IdSku + + if (!skuId) { + ctx.vtex.logger.warn({ + message: 'broadcasterNotification: Empty Sku', + }) + throttleCounter-- + + return + } + + const isActive = notification.IsActive + const inventoryUpdated = notification.StockModified + + if (!isActive || !inventoryUpdated) { + throttleCounter-- + + return + } + + const vbaseHelper = new AvailabilityVBase(ctx.clients.vbase as any) + const processingStarted = await vbaseHelper.checkImportLock(skuId) + const elapsedMs = Date.now() - processingStarted.getTime() + + if (elapsedMs < 60000) { + ctx.vtex.logger.warn({ + message: `broadcasterNotification: Sku ${skuId} blocked by lock. Processing started: ${processingStarted.toISOString()}`, + }) + throttleCounter-- + + return + } + + await vbaseHelper.setImportLock(skuId) + + const processed = await processNotificationBroadcast( + ctx as any, + notification + ) + + ctx.vtex.logger.info({ + message: `broadcasterNotification: Processed? ${processed} : ${JSON.stringify(notification)}`, + }) + } catch (error) { + ctx.vtex.logger.error({ + message: 'broadcasterNotification: Error processing Notification', + error, + }) + throttleCounter-- + throw error + } + + throttleCounter-- +} diff --git a/node/handlers/initialize.ts b/node/handlers/initialize.ts new file mode 100644 index 00000000..f3a73797 --- /dev/null +++ b/node/handlers/initialize.ts @@ -0,0 +1,27 @@ +import { + verifySchema, + createDefaultTemplate, +} from '../middlewares/vtexApiService' + +export async function initialize(ctx: Context, next: () => Promise) { + ctx.set('Cache-Control', 'private') + + try { + const schema = await verifySchema(ctx) + const template = await createDefaultTemplate(ctx) + + if (schema && template) { + ctx.status = 200 + ctx.body = 'OK' + } else { + ctx.status = 400 + ctx.body = 'Bad Request' + } + } catch (error) { + ctx.vtex.logger.error({ message: 'initialize handler error', error }) + ctx.status = 400 + ctx.body = 'Bad Request' + } + + await next() +} diff --git a/node/handlers/listNotifyRequests.ts b/node/handlers/listNotifyRequests.ts new file mode 100644 index 00000000..d36da9ec --- /dev/null +++ b/node/handlers/listNotifyRequests.ts @@ -0,0 +1,29 @@ +import { + isValidAuthUser, + listNotifyRequests as listRequests, +} from '../middlewares/vtexApiService' + +export async function listNotifyRequests( + ctx: Context, + next: () => Promise +) { + try { + const authStatus = await isValidAuthUser(ctx) + + if (authStatus === 200) { + const results = await listRequests(ctx) + + ctx.status = 200 + ctx.body = results + } else { + ctx.status = 401 + ctx.body = 'Unauthorized' + } + } catch (error) { + ctx.vtex.logger.error({ message: 'listNotifyRequests handler error', error }) + ctx.status = 500 + ctx.body = 'Internal Server Error' + } + + await next() +} diff --git a/node/handlers/onAppInstalled.ts b/node/handlers/onAppInstalled.ts new file mode 100644 index 00000000..f0a6cab8 --- /dev/null +++ b/node/handlers/onAppInstalled.ts @@ -0,0 +1,20 @@ +import type { EventContext } from '@vtex/api' + +import type { Clients } from '../clients' +import type { AppInstalledEvent } from '../typings/appInstalledEvent' +import { APP_SETTINGS } from '../utils/constants' +import { + verifySchema, + createDefaultTemplate, +} from '../middlewares/vtexApiService' + +export async function OnAppInstalled( + ctx: EventContext +): Promise { + const event = (ctx as any).body as AppInstalledEvent + + if (event?.To?.Id?.includes(APP_SETTINGS)) { + await verifySchema(ctx as any) + await createDefaultTemplate(ctx as any) + } +} diff --git a/node/handlers/processAllRequests.ts b/node/handlers/processAllRequests.ts new file mode 100644 index 00000000..4e4d3d22 --- /dev/null +++ b/node/handlers/processAllRequests.ts @@ -0,0 +1,24 @@ +import { processAllRequests as processAll } from '../middlewares/vtexApiService' + +export async function prcocessAllRequests( + ctx: Context, + next: () => Promise +) { + try { + const results = await processAll(ctx) + + ctx.vtex.logger.info({ + message: 'prcocessAllRequests', + results: results.join(', '), + }) + + ctx.status = 200 + ctx.body = 'OK' + } catch (error) { + ctx.vtex.logger.error({ message: 'prcocessAllRequests handler error', error }) + ctx.status = 500 + ctx.body = 'Internal Server Error' + } + + await next() +} diff --git a/node/handlers/processNotification.ts b/node/handlers/processNotification.ts new file mode 100644 index 00000000..0b8c5d9c --- /dev/null +++ b/node/handlers/processNotification.ts @@ -0,0 +1,32 @@ +import { json } from 'co-body' + +import type { AffiliateNotification } from '../typings/affiliateNotification' +import { processNotificationAffiliate } from '../middlewares/vtexApiService' + +export async function processNotification( + ctx: Context, + next: () => Promise +) { + ctx.set('Cache-Control', 'private') + + try { + if (ctx.method.toLowerCase() !== 'post') { + ctx.status = 400 + await next() + + return + } + + const notification = (await json(ctx.req)) as AffiliateNotification + const sent = await processNotificationAffiliate(ctx, notification) + + ctx.status = sent ? 200 : 400 + ctx.body = sent ? 'OK' : 'Bad Request' + } catch (error) { + ctx.vtex.logger.error({ message: 'processNotification handler error', error }) + ctx.status = 400 + ctx.body = 'Bad Request' + } + + await next() +} diff --git a/node/handlers/processUnsentRequests.ts b/node/handlers/processUnsentRequests.ts new file mode 100644 index 00000000..da92cf5a --- /dev/null +++ b/node/handlers/processUnsentRequests.ts @@ -0,0 +1,24 @@ +import { processUnsentRequests as processUnsent } from '../middlewares/vtexApiService' + +export async function processUnsentRequests( + ctx: Context, + next: () => Promise +) { + try { + const results = await processUnsent(ctx) + + ctx.vtex.logger.info({ + message: 'processUnsentRequests', + results: JSON.stringify(results), + }) + + ctx.status = 200 + ctx.body = results + } catch (error) { + ctx.vtex.logger.error({ message: 'processUnsentRequests handler error', error }) + ctx.status = 500 + ctx.body = 'Internal Server Error' + } + + await next() +} diff --git a/node/index.ts b/node/index.ts new file mode 100644 index 00000000..3d9f54c1 --- /dev/null +++ b/node/index.ts @@ -0,0 +1,65 @@ +import type { + ClientsConfig, + ServiceContext, + RecorderState, + ParamsContext, +} from '@vtex/api' +import { Service, method } from '@vtex/api' + +import { Clients } from './clients' +import { processNotification } from './handlers/processNotification' +import { initialize } from './handlers/initialize' +import { prcocessAllRequests } from './handlers/processAllRequests' +import { processUnsentRequests } from './handlers/processUnsentRequests' +import { listNotifyRequests } from './handlers/listNotifyRequests' +import { broadcasterNotification } from './handlers/broadcasterNotification' +import { OnAppInstalled } from './handlers/onAppInstalled' +import { allStates } from './handlers/allStates' +import { resolvers } from './resolvers' + +const TIMEOUT_MS = 10000 + +const clients: ClientsConfig = { + implementation: Clients, + options: { + default: { + retries: 2, + timeout: TIMEOUT_MS, + }, + }, +} + +declare global { + type Context = ServiceContext +} + +export default new Service({ + clients, + routes: { + processNotification: method({ + POST: [processNotification], + }), + initialize: method({ + GET: [initialize], + }), + prcocessAllRequests: method({ + GET: [prcocessAllRequests], + POST: [prcocessAllRequests], + }), + processUnsentRequests: method({ + GET: [processUnsentRequests], + POST: [processUnsentRequests], + }), + listNotifyRequests: method({ + GET: [listNotifyRequests], + }), + }, + events: { + broadcasterNotification, + OnAppInstalled, + allStates, + }, + graphql: { + resolvers, + }, +}) diff --git a/node/middlewares/vtexApiService.ts b/node/middlewares/vtexApiService.ts new file mode 100644 index 00000000..ba7ea873 --- /dev/null +++ b/node/middlewares/vtexApiService.ts @@ -0,0 +1,842 @@ +import type { ServiceContext } from '@vtex/api' + +import type { Clients } from '../clients' +import { AvailabilityVBase } from '../clients/vbase' +import type { AffiliateNotification } from '../typings/affiliateNotification' +import type { BroadcastNotification } from '../typings/broadcastNotification' +import type { CartSimulationRequest, CartItem } from '../typings/cartSimulation' +import type { EmailMessage, JsonData } from '../typings/emailMessage' +import type { EmailTemplate } from '../typings/emailTemplate' +import type { GetSkuContextResponse } from '../typings/getSkuContext' +import type { NotifyRequest } from '../typings/notifyRequest' +import type { ProcessingResult } from '../typings/processingResult' +import type { RequestContext } from '../typings/requestContext' +import type { SellerObj } from '../typings/sellerObj' +import type { ShopperAddress } from '../typings/shopperAddress' +import type { ShopperRecord } from '../typings/shopperRecord' +import { + Availability, + DEFAULT_TEMPLATE_NAME, + VtexOrderStatus, +} from '../utils/constants' + +type Ctx = ServiceContext + +export async function verifySchema(ctx: Ctx): Promise { + try { + return await ctx.clients.mdClient.verifySchema() + } catch (error) { + ctx.vtex.logger.error({ message: 'verifySchema error', error }) + + return false + } +} + +export async function createDefaultTemplate(ctx: Ctx): Promise { + let templateExists = false + const templateName = DEFAULT_TEMPLATE_NAME + + try { + templateExists = await ctx.clients.template.templateExists(templateName) + + if (!templateExists) { + const templateBody = await ctx.clients.github.getDefaultTemplate( + templateName + ) + + if (!templateBody) { + ctx.vtex.logger.warn({ + message: `createDefaultTemplate: Failed to load template ${templateName}`, + }) + } else { + const emailTemplate: EmailTemplate = JSON.parse(templateBody) + + emailTemplate.Templates.email.Message = + emailTemplate.Templates.email.Message.replace(/\\r/g, '') + emailTemplate.Templates.email.Message = + emailTemplate.Templates.email.Message.replace(/\\n/g, '\n') + templateExists = await ctx.clients.template.createOrUpdateTemplate( + emailTemplate + ) + } + } + } catch (error) { + ctx.vtex.logger.error({ message: 'createDefaultTemplate error', error }) + } + + return templateExists +} + +export async function getTotalAvailableForSku( + ctx: Ctx, + sku: string, + _requestContext: RequestContext +): Promise { + let totalAvailable = 0 + + const listAllWarehouses = await ctx.clients.logistics.listAllWarehouses() + const inventoryBySku = await ctx.clients.logistics.listInventoryBySku(sku) + + if (inventoryBySku?.balance) { + try { + const activeWarehouseIds = (listAllWarehouses ?? []) + .filter((w) => w.isActive) + .map((w) => w.id) + + const hasUnlimited = inventoryBySku.balance.some( + (i) => + i.hasUnlimitedQuantity && activeWarehouseIds.includes(i.warehouseId) + ) + + if (hasUnlimited) { + totalAvailable = 1 + ctx.vtex.logger.debug({ + message: `getTotalAvailableForSku: Sku '${sku}' Has Unlimited Quantity.`, + }) + } else { + const totalQuantity = inventoryBySku.balance + .filter((i) => activeWarehouseIds.includes(i.warehouseId)) + .reduce((sum, i) => sum + i.totalQuantity, 0) + + const totalReserved = inventoryBySku.balance + .filter((i) => activeWarehouseIds.includes(i.warehouseId)) + .reduce((sum, i) => sum + i.reservedQuantity, 0) + + totalAvailable = totalQuantity - totalReserved + ctx.vtex.logger.debug({ + message: `getTotalAvailableForSku: Sku '${sku}' ${totalQuantity} - ${totalReserved} = ${totalAvailable}`, + }) + } + } catch (error) { + ctx.vtex.logger.error({ + message: `getTotalAvailableForSku: Error calculating for sku '${sku}'`, + error, + }) + } + } + + // if marketplace inventory is zero, check seller inventory + if (totalAvailable === 0) { + const skuContextResponse = await ctx.clients.catalog.getSkuContext(sku) + + if (skuContextResponse?.SkuSellers) { + const cartSimulationRequest: CartSimulationRequest = { + items: [], + postalCode: '', + country: '', + } + + for (const skuSeller of skuContextResponse.SkuSellers) { + cartSimulationRequest.items.push({ + id: sku, + quantity: 1, + seller: skuSeller.SellerId, + } as CartItem) + } + + try { + const cartSimulationResponse = await ctx.clients.checkout.cartSimulation( + cartSimulationRequest + ) + + if (cartSimulationResponse?.items) { + const availableItems = cartSimulationResponse.items.filter( + (i) => i.availability === Availability.Available + ) + + totalAvailable += availableItems.reduce( + (sum, i) => sum + i.quantity, + 0 + ) + } + } catch (error) { + ctx.vtex.logger.error({ + message: `getTotalAvailableForSku: Error from seller(s) for sku '${sku}'`, + error, + }) + } + } + } + + return totalAvailable +} + +export async function sendEmail( + ctx: Ctx, + notifyRequest: NotifyRequest, + skuContext: GetSkuContextResponse, + requestContext: RequestContext +): Promise { + const templateName = DEFAULT_TEMPLATE_NAME + + const emailMessage: EmailMessage = { + TemplateName: templateName, + ProviderName: requestContext.account, + JsonData: { + SkuContext: skuContext, + NotifyRequest: notifyRequest, + } as JsonData, + } + + try { + const success = await ctx.clients.mail.sendMail( + emailMessage, + requestContext.account + ) + + ctx.vtex.logger.debug({ + message: `sendEmail: ${JSON.stringify(emailMessage)}`, + success, + }) + + return success + } catch (error) { + ctx.vtex.logger.error({ message: 'sendEmail: Failure', error }) + + return false + } +} + +export async function getShopperByEmail( + ctx: Ctx, + email: string +): Promise { + try { + const url = `/api/dataentities/CL/search?email=${email}` + + const result = await (ctx.clients as any).mdClient.http.get(url, { + metric: 'masterdata-search-shopper', + headers: { + VtexIdclientAutCookie: ctx.vtex.authToken, + 'X-Vtex-Use-Https': 'true', + }, + }) as ShopperRecord[] + + return result + } catch (error) { + ctx.vtex.logger.error({ + message: `getShopperByEmail: Error for '${email}'`, + error, + }) + + return null + } +} + +export async function getShopperAddressById( + ctx: Ctx, + id: string +): Promise { + const searchFields = 'country,postalCode' + + try { + const url = `/api/dataentities/AD/search?userId=${id}&_fields=${searchFields}` + + const result = await (ctx.clients as any).mdClient.http.get(url, { + metric: 'masterdata-search-address', + headers: { + VtexIdclientAutCookie: ctx.vtex.authToken, + 'X-Vtex-Use-Https': 'true', + }, + }) as ShopperAddress[] + + return result + } catch (error) { + ctx.vtex.logger.error({ + message: `getShopperAddressById: Error for '${id}'`, + error, + }) + + return null + } +} + +export async function canShipToShopper( + ctx: Ctx, + notifyRequest: NotifyRequest, + _requestContext: RequestContext +): Promise { + let canSend = false + const shopperRecord = await getShopperByEmail(ctx, notifyRequest.email) + + if (shopperRecord && shopperRecord.length > 0) { + const matchingRecord = shopperRecord.find( + (sr) => sr.accountName === ctx.vtex.account + ) + + const shopperAddresses = matchingRecord + ? await getShopperAddressById(ctx, matchingRecord.id) + : null + + if (shopperAddresses && shopperAddresses.length > 0) { + let sellerId = '' + + if (notifyRequest.seller?.sellerId) { + sellerId = notifyRequest.seller.sellerId + } + + const cartSimulationRequest: CartSimulationRequest = { + items: [ + { + id: notifyRequest.skuId, + quantity: 1, + seller: sellerId, + } as CartItem, + ], + postalCode: '', + country: '', + } + + // Deduplicate addresses + const uniqueAddresses = shopperAddresses.filter( + (addr, index, self) => + index === + self.findIndex( + (a) => + a.postalCode === addr.postalCode && a.country === addr.country + ) + ) + + for (const shopperAddress of uniqueAddresses) { + cartSimulationRequest.postalCode = shopperAddress.postalCode + cartSimulationRequest.country = shopperAddress.country + + const cartSimulationResponse = await ctx.clients.checkout.cartSimulation( + cartSimulationRequest + ) + + if ( + cartSimulationResponse?.items && + cartSimulationResponse.items.length > 0 && + cartSimulationResponse.items[0].availability === + Availability.Available + ) { + canSend = true + break + } + } + } + } + + return canSend +} + +async function processNotificationInternal( + ctx: Ctx, + requestContext: RequestContext, + isActive: boolean, + inventoryUpdated: boolean, + skuId: string +): Promise { + let success = false + + if (isActive && inventoryUpdated) { + const merchantSettings = await ctx.clients.appsClient.getMerchantSettings() + const requestsToNotify = await ctx.clients.mdClient.searchRequests( + requestContext.account, + `notificationSend=false&skuId=${skuId}` + ) + + if (requestsToNotify) { + const seen = new Set() + const distinct = requestsToNotify.filter((r) => { + if (seen.has(r.email)) return false + seen.add(r.email) + + return true + }) + + if (distinct.length > 0) { + const available = await getTotalAvailableForSku( + ctx, + skuId, + requestContext + ) + + if (available > 0) { + const skuContextResponse = await ctx.clients.catalog.getSkuContext( + skuId + ) + + if (skuContextResponse) { + for (const requestToNotify of distinct) { + let doSendMail = true + + if (merchantSettings.doShippingSim) { + doSendMail = await canShipToShopper( + ctx, + requestToNotify, + requestContext + ) + } + + if (doSendMail) { + const mailSent = await sendEmail( + ctx, + requestToNotify, + skuContextResponse, + requestContext + ) + + if (mailSent) { + requestToNotify.notificationSend = 'true' + requestToNotify.sendAt = new Date().toISOString() + + const updatedRequest = await ctx.clients.mdClient.saveNotifyRequest( + requestToNotify, + requestContext.account + ) + + success = updatedRequest + + if (!updatedRequest) { + ctx.vtex.logger.error({ + message: `processNotificationInternal: Mail sent but failed to update: ${JSON.stringify(requestToNotify)}`, + }) + } + } + } else { + ctx.vtex.logger.debug({ + message: `processNotificationInternal: SkuId '${skuId}' cannot ship to '${requestToNotify.email}'`, + }) + } + } + } else { + ctx.vtex.logger.warn({ + message: `processNotificationInternal: Null SkuContext for skuId ${skuId}`, + }) + } + } else { + ctx.vtex.logger.debug({ + message: `processNotificationInternal: SkuId '${skuId}' ${available} available`, + }) + } + } + } else { + ctx.vtex.logger.debug({ + message: `processNotificationInternal: Request returned NULL for ${skuId}`, + }) + } + } + + return success +} + +export async function forwardNotification( + ctx: Ctx, + notification: BroadcastNotification, + accountName: string, + _requestContext: RequestContext +): Promise { + if (!accountName) { + ctx.vtex.logger.warn({ message: 'forwardNotification: Account name is empty.' }) + + return false + } + + const trimmedAccount = accountName.trim() + + if (ctx.vtex.account.toLowerCase() === trimmedAccount.toLowerCase()) { + ctx.vtex.logger.warn({ + message: 'forwardNotification: Skipping self reference.', + }) + + return true + } + + const affiliateNotification: AffiliateNotification = { + An: notification.An, + HasStockKeepingUnitRemovedFromAffiliate: notification.HasStockKeepingUnitRemovedFromAffiliate, + IdAffiliate: notification.IdAffiliate, + IsActive: notification.IsActive, + DateModified: notification.DateModified, + HasStockKeepingUnitModified: notification.HasStockKeepingUnitModified, + IdSku: notification.IdSku, + PriceModified: notification.PriceModified, + ProductId: notification.ProductId, + StockModified: notification.StockModified, + Version: notification.Version, + } + + const appMajor = process.env.VTEX_APP_VERSION?.split('.')[0] ?? '1' + + try { + return await ctx.clients.availability.forwardNotification( + affiliateNotification, + trimmedAccount, + appMajor + ) + } catch (error) { + ctx.vtex.logger.warn({ + message: `forwardNotification: Error forwarding to '${trimmedAccount}'`, + error, + }) + + return false + } +} + +export async function processNotificationAffiliate( + ctx: Ctx, + notification: AffiliateNotification +): Promise { + let success = true + const requestContext: RequestContext = { + account: ctx.vtex.account, + authToken: ctx.vtex.authToken, + } + + if (notification.An !== requestContext.account) { + const getSkuSellerResponse = await ctx.clients.catalog.getSkuSeller( + notification.An, + notification.IdSku + ) + + if (getSkuSellerResponse) { + notification.IdSku = getSkuSellerResponse.StockKeepingUnitId.toString() + } else { + ctx.vtex.logger.warn({ message: 'processNotificationAffiliate: SKU NOT FOUND' }) + } + } + + const { IsActive: isActive, StockModified: inventoryUpdated, IdSku: skuId } = notification + + ctx.vtex.logger.debug({ + message: `processNotificationAffiliate: Sku:${skuId} Active?${isActive} Inventory Changed?${inventoryUpdated}`, + }) + + success = await processNotificationInternal( + ctx, + requestContext, + isActive, + inventoryUpdated, + skuId + ) + + if (isActive && inventoryUpdated) { + const merchantSettings = await ctx.clients.appsClient.getMerchantSettings() + + if (merchantSettings.notifyMarketplace) { + const results: string[] = [] + const broadcastNotification: BroadcastNotification = { + An: notification.An, + HasStockKeepingUnitRemovedFromAffiliate: notification.HasStockKeepingUnitRemovedFromAffiliate, + IdAffiliate: notification.IdAffiliate, + IsActive: notification.IsActive, + DateModified: notification.DateModified, + HasStockKeepingUnitModified: notification.HasStockKeepingUnitModified, + IdSku: notification.IdSku, + PriceModified: notification.PriceModified, + ProductId: notification.ProductId, + StockModified: notification.StockModified, + Version: notification.Version, + } + + const marketplaces = merchantSettings.notifyMarketplace.split(',') + + for (const marketplace of marketplaces) { + const successThis = await forwardNotification( + ctx, + broadcastNotification, + marketplace, + requestContext + ) + + results.push(`'${marketplace}' ${successThis}`) + success = success && successThis + } + + ctx.vtex.logger.info({ + message: `processNotificationAffiliate: Sku:${skuId}`, + accounts: results.join('\n'), + }) + } + } + + return success +} + +export async function processNotificationBroadcast( + ctx: Ctx, + notification: BroadcastNotification +): Promise { + let success = false + const requestContext: RequestContext = { + account: ctx.vtex.account, + authToken: ctx.vtex.authToken, + } + + const { IsActive: isActive, StockModified: inventoryUpdated, IdSku: skuId } = notification + + success = await processNotificationInternal( + ctx, + requestContext, + isActive, + inventoryUpdated, + skuId + ) + + if (isActive && inventoryUpdated) { + const merchantSettings = await ctx.clients.appsClient.getMerchantSettings() + + if (merchantSettings.notifyMarketplace) { + const results: string[] = [] + const marketplaces = merchantSettings.notifyMarketplace.split(',') + + for (const marketplace of marketplaces) { + const successThis = await forwardNotification( + ctx, + notification, + marketplace, + requestContext + ) + + results.push(`'${marketplace}' ${successThis}`) + } + + ctx.vtex.logger.info({ + message: `processNotificationBroadcast: Sku:${skuId}`, + accounts: results.join('\n'), + }) + } + } + + return success +} + +export async function processAllRequests(ctx: Ctx): Promise { + const results: string[] = [] + const requestContext: RequestContext = { + account: ctx.vtex.account, + authToken: ctx.vtex.authToken, + } + + const allRequests = await ctx.clients.mdClient.scrollRequests( + requestContext.account + ) + + if (allRequests && allRequests.length > 0) { + for (const requestToNotify of allRequests) { + let doSendMail = false + let updatedRecord = false + const { skuId } = requestToNotify + + if (requestToNotify.notificationSend === 'true') { + results.push( + `${skuId} ${requestToNotify.email} Sent at ${requestToNotify.sendAt}` + ) + } else { + const available = await getTotalAvailableForSku( + ctx, + skuId, + requestContext + ) + + if (available > 0) { + let canSend = true + const merchantSettings = await ctx.clients.appsClient.getMerchantSettings() + + if (merchantSettings.doShippingSim) { + canSend = await canShipToShopper(ctx, requestToNotify, requestContext) + } + + if (canSend) { + const skuContextResponse = await ctx.clients.catalog.getSkuContext(skuId) + + if (skuContextResponse) { + doSendMail = await sendEmail(ctx, requestToNotify, skuContextResponse, requestContext) + + if (doSendMail) { + requestToNotify.notificationSend = 'true' + requestToNotify.sendAt = new Date().toISOString() + updatedRecord = await ctx.clients.mdClient.saveNotifyRequest( + requestToNotify, + requestContext.account + ) + } + } + } + } + + results.push( + `${skuId} Qnty:${available} '${requestToNotify.email}' Sent? ${doSendMail} Updated? ${updatedRecord}` + ) + } + } + } else { + results.push('No requests to notify.') + } + + return results +} + +export async function processUnsentRequests(ctx: Ctx): Promise { + const results: ProcessingResult[] = [] + const requestContext: RequestContext = { + account: ctx.vtex.account, + authToken: ctx.vtex.authToken, + } + + const allRequests = await ctx.clients.mdClient.searchRequests( + requestContext.account, + 'notificationSend=false' + ) + + if (allRequests && allRequests.length > 0) { + for (const requestToNotify of allRequests) { + let doSendMail = false + let updatedRecord = false + const { skuId } = requestToNotify + + const available = await getTotalAvailableForSku(ctx, skuId, requestContext) + + if (available > 0) { + let canSend = true + const merchantSettings = await ctx.clients.appsClient.getMerchantSettings() + + if (merchantSettings.doShippingSim) { + canSend = await canShipToShopper(ctx, requestToNotify, requestContext) + } + + if (canSend) { + const skuContextResponse = await ctx.clients.catalog.getSkuContext(skuId) + + if (skuContextResponse) { + doSendMail = await sendEmail(ctx, requestToNotify, skuContextResponse, requestContext) + + if (doSendMail) { + requestToNotify.notificationSend = 'true' + requestToNotify.sendAt = new Date().toISOString() + updatedRecord = await ctx.clients.mdClient.saveNotifyRequest( + requestToNotify, + requestContext.account + ) + } + } + } + } + + results.push({ + quantityAvailable: available.toString(), + email: requestToNotify.email, + sent: doSendMail, + skuId, + updated: updatedRecord, + }) + } + } else { + results.push({} as ProcessingResult) + } + + return results +} + +export async function availabilitySubscribe( + ctx: Ctx, + email: string, + sku: string, + name: string, + locale: string, + sellerObj: SellerObj +): Promise { + const requestContext: RequestContext = { + account: ctx.vtex.account, + authToken: ctx.vtex.authToken, + } + + const requestsToNotify = await ctx.clients.mdClient.searchRequests( + requestContext.account, + `notificationSend=false&skuId=${sku}` + ) + + if (requestsToNotify.some((x) => x.email === email)) { + return false + } + + const notifyRequest: NotifyRequest = { + createdAt: new Date().toISOString(), + email, + skuId: sku, + name, + notificationSend: 'false', + locale, + seller: sellerObj, + } + + return ctx.clients.mdClient.saveNotifyRequest( + notifyRequest, + requestContext.account + ) +} + +export async function checkUnsentNotifications(ctx: Ctx): Promise { + const windowInMinutes = 100 + const vbaseHelper = new AvailabilityVBase(ctx.clients.vbase as any) + const lastCheck = await vbaseHelper.getLastUnsentCheck() + + const now = new Date() + const checkThreshold = new Date( + lastCheck.getTime() + windowInMinutes * 60 * 1000 + ) + + if (checkThreshold < now) { + const processingResults = await processUnsentRequests(ctx) + + ctx.vtex.logger.info({ + message: 'checkUnsentNotifications', + results: JSON.stringify(processingResults), + }) + + await vbaseHelper.setLastUnsentCheck(now) + } +} + +export async function isValidAuthUser(ctx: Ctx): Promise { + const adminToken = ctx.vtex.adminUserAuthToken + + if (!adminToken) { + return 401 + } + + try { + const validatedUser = await ctx.clients.vtexId.validateUserToken(adminToken) + + const hasPermission = + validatedUser != null && validatedUser.authStatus === 'Success' + + if (!hasPermission) { + ctx.vtex.logger.warn({ message: 'isValidAuthUser: User Does Not Have Permission' }) + + return 403 + } + + return 200 + } catch (error) { + ctx.vtex.logger.error({ message: 'isValidAuthUser: Error fetching user', error }) + + return 400 + } +} + +export async function listNotifyRequests(ctx: Ctx): Promise { + try { + return await ctx.clients.mdClient.scrollRequests(ctx.vtex.account) + } catch (error) { + ctx.vtex.logger.error({ message: 'listNotifyRequests error', error }) + + return [] + } +} + +export async function processNotificationAllStates( + ctx: Ctx, + notification: { currentState: string } +): Promise { + switch (notification.currentState) { + case VtexOrderStatus.StartHanding: + await checkUnsentNotifications(ctx) + break + default: + break + } +} diff --git a/node/package.json b/node/package.json new file mode 100644 index 00000000..3c520865 --- /dev/null +++ b/node/package.json @@ -0,0 +1,16 @@ +{ + "name": "availability-notify", + "version": "1.14.1", + "description": "Record and send notification when an item is back in stock", + "main": "index.ts", + "scripts": { + "build": "tsc --noEmit" + }, + "dependencies": { + "@vtex/api": "^7.0.0" + }, + "devDependencies": { + "@types/node": "^20.0.0", + "typescript": "5.5.3" + } +} diff --git a/node/resolvers/index.ts b/node/resolvers/index.ts new file mode 100644 index 00000000..53a304ba --- /dev/null +++ b/node/resolvers/index.ts @@ -0,0 +1,70 @@ +import { + listNotifyRequests, + availabilitySubscribe, + isValidAuthUser, + processUnsentRequests, +} from '../middlewares/vtexApiService' + +export const resolvers = { + Query: { + listRequests: async (_: unknown, __: unknown, ctx: Context) => { + const notifyRequests = await listNotifyRequests(ctx) + + return notifyRequests + }, + }, + Mutation: { + availabilitySubscribe: async ( + _: unknown, + args: { + name: string + email: string + skuId: string + locale: string + sellerObj: { + sellerId: string + sellerName: string + addToCartLink: string + sellerDefault: boolean + } + }, + ctx: Context + ) => { + const { name, email, skuId, locale, sellerObj } = args + + ctx.vtex.logger.debug({ + message: `GraphQL AvailabilitySubscribe: '${name}' '${email}' '${skuId}' '${locale}'`, + }) + + return availabilitySubscribe(ctx, email, skuId, name, locale, sellerObj) + }, + deleteRequest: async ( + _: unknown, + args: { id: string }, + ctx: Context + ) => { + const authStatus = await isValidAuthUser(ctx) + + if (authStatus !== 200) { + throw new Error(`Unauthorized: ${authStatus}`) + } + + const { id } = args + + return ctx.clients.mdClient.deleteNotifyRequest(id) + }, + processUnsentRequests: async ( + _: unknown, + __: unknown, + ctx: Context + ) => { + const authStatus = await isValidAuthUser(ctx) + + if (authStatus !== 200) { + throw new Error(`Unauthorized: ${authStatus}`) + } + + return processUnsentRequests(ctx) + }, + }, +} diff --git a/dotnet/service.json b/node/service.json similarity index 93% rename from dotnet/service.json rename to node/service.json index d085faf2..ab56d51b 100644 --- a/dotnet/service.json +++ b/node/service.json @@ -1,11 +1,9 @@ { - "stack": "dotnet", "memory": 512, "ttl": 60, "minReplicas": 2, "maxReplicas": 10, "timeout": 60, - "runtimeArgs": [], "routes": { "processNotification": { "path": "/_v/availability-notify/notify", @@ -39,7 +37,7 @@ "events": { "broadcasterNotification": { "sender": "vtex.broadcaster", - "keys": [ "broadcaster.notification" ] + "keys": ["broadcaster.notification"] }, "OnAppInstalled": { "sender": "apps", diff --git a/node/tsconfig.json b/node/tsconfig.json new file mode 100644 index 00000000..df2e5575 --- /dev/null +++ b/node/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "es2019", + "module": "commonjs", + "lib": ["es2019"], + "strict": true, + "esModuleInterop": true, + "outDir": "./dist", + "rootDir": ".", + "skipLibCheck": true, + "resolveJsonModule": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "forceConsistentCasingInFileNames": true + }, + "include": ["./**/*.ts"], + "exclude": ["node_modules", "dist"] +} diff --git a/node/typings/affiliateNotification.ts b/node/typings/affiliateNotification.ts new file mode 100644 index 00000000..7e01a07c --- /dev/null +++ b/node/typings/affiliateNotification.ts @@ -0,0 +1,13 @@ +export interface AffiliateNotification { + IdSku: string + ProductId: number + An: string + IdAffiliate: string + Version: string + DateModified: string + IsActive: boolean + StockModified: boolean + PriceModified: boolean + HasStockKeepingUnitModified: boolean + HasStockKeepingUnitRemovedFromAffiliate: boolean +} diff --git a/node/typings/allStatesNotification.ts b/node/typings/allStatesNotification.ts new file mode 100644 index 00000000..87251dea --- /dev/null +++ b/node/typings/allStatesNotification.ts @@ -0,0 +1,22 @@ +export interface AllStatesNotification { + recorder: Recorder + domain: string + orderId: string + currentState: string + lastState: string + currentChangeDate: string + lastChangeDate: string +} + +export interface Recorder { + _record: Record +} + +export interface Record { + 'x-vtex-meta': XVtexMeta + 'x-vtex-meta-bucket': XVtexMeta +} + +export interface XVtexMeta { + [key: string]: unknown +} diff --git a/node/typings/appInstalledEvent.ts b/node/typings/appInstalledEvent.ts new file mode 100644 index 00000000..77c2114c --- /dev/null +++ b/node/typings/appInstalledEvent.ts @@ -0,0 +1,8 @@ +export interface AppInstalledEvent { + To: InstalledApp +} + +export interface InstalledApp { + Id: string + Registry: string +} diff --git a/node/typings/broadcastNotification.ts b/node/typings/broadcastNotification.ts new file mode 100644 index 00000000..e2a39104 --- /dev/null +++ b/node/typings/broadcastNotification.ts @@ -0,0 +1,13 @@ +export interface BroadcastNotification { + IdSku: string + ProductId: number + An: string + IdAffiliate: string + Version: string + DateModified: string + IsActive: boolean + StockModified: boolean + PriceModified: boolean + HasStockKeepingUnitModified: boolean + HasStockKeepingUnitRemovedFromAffiliate: boolean +} diff --git a/node/typings/cartSimulation.ts b/node/typings/cartSimulation.ts new file mode 100644 index 00000000..a2294029 --- /dev/null +++ b/node/typings/cartSimulation.ts @@ -0,0 +1,26 @@ +export interface CartSimulationRequest { + items: CartItem[] + postalCode: string + country: string +} + +export interface CartItem { + id: string + requestIndex: number + quantity: number + seller: string + sellerChain?: string[] + tax: number + priceValidUntil?: string + price: number + listPrice: number + rewardValue: number + sellingPrice: number + offerings?: unknown[] + priceTags?: unknown[] + measurementUnit?: string + unitMultiplier: number + parentItemIndex?: unknown + parentAssemblyBinding?: unknown + availability?: string +} diff --git a/node/typings/cartSimulationResponse.ts b/node/typings/cartSimulationResponse.ts new file mode 100644 index 00000000..705e61ed --- /dev/null +++ b/node/typings/cartSimulationResponse.ts @@ -0,0 +1,170 @@ +export interface CartSimulationResponse { + items: CartResponseItem[] + ratesAndBenefitsData: RatesAndBenefitsData + paymentData: PaymentData + selectableGifts: unknown[] + marketingData: unknown + postalCode: string + country: string + logisticsInfo: LogisticsInfo[] + messages: unknown[] + purchaseConditions: PurchaseConditions + pickupPoints: unknown[] + subscriptionData: unknown + totals: Total[] + itemMetadata: unknown +} + +export interface CartResponseItem { + id: string + requestIndex: string + quantity: number + seller: string + sellerChain: string[] + tax: string + priceValidUntil: string + price: string + listPrice: string + rewardValue: string + sellingPrice: string + offerings: unknown[] + priceTags: unknown[] + measurementUnit: string + unitMultiplier: string + parentItemIndex: unknown + parentAssemblyBinding: unknown + availability: string + catalogProvider: string + priceDefinition: PriceDefinition +} + +export interface PriceDefinition { + calculatedSellingPrice: string + total: string + sellingPrices: SellingPrice[] +} + +export interface SellingPrice { + value: string + quantity: string +} + +export interface LogisticsInfo { + itemIndex: number + addressId: unknown + selectedSla: unknown + selectedDeliveryChannel: unknown + quantity: number + shipsTo: string[] + slas: Sla[] + deliveryChannels: DeliveryChannel[] +} + +export interface DeliveryChannel { + id: string +} + +export interface Sla { + id: string + deliveryChannel: string + name: string + deliveryIds: DeliveryId[] + shippingEstimate: string + shippingEstimateDate: unknown + lockTTL: unknown + availableDeliveryWindows: unknown[] + deliveryWindow: unknown + price: string + listPrice: string + tax: string + pickupStoreInfo: PickupStoreInfo + pickupPointId: unknown + pickupDistance: string + polygonName: unknown + transitTime: string +} + +export interface DeliveryId { + courierId: string + warehouseId: string + dockId: string + courierName: string + quantity: number + kitItemDetails: unknown[] +} + +export interface PickupStoreInfo { + isPickupStore: boolean + friendlyName: unknown + address: unknown + additionalInfo: unknown + dockId: unknown +} + +export interface PaymentData { + installmentOptions: InstallmentOption[] + paymentSystems: PaymentSystem[] + payments: unknown[] + giftCards: unknown[] + giftCardMessages: unknown[] + availableAccounts: unknown[] + availableTokens: unknown[] +} + +export interface InstallmentOption { + paymentSystem: string + bin: unknown + paymentName: string + paymentGroupName: string + value: number + installments: Installment[] +} + +export interface Installment { + count: number + hasInterestRate?: boolean + interestRate?: number + value?: number + total?: number + sellerMerchantInstallments?: Installment[] + id?: string +} + +export interface PaymentSystem { + id: string + name: string + groupName: string + validator: unknown + stringId: string + template: string + requiresDocument: boolean + isCustom: boolean + description: string + requiresAuthentication: boolean + dueDate: string + availablePayments: unknown +} + +export interface PurchaseConditions { + itemPurchaseConditions: ItemPurchaseCondition[] +} + +export interface ItemPurchaseCondition { + id: string + seller: string + sellerChain: string[] + slas: Sla[] + price: string + listPrice: string +} + +export interface RatesAndBenefitsData { + rateAndBenefitsIdentifiers: unknown[] + teaser: unknown[] +} + +export interface Total { + id: string + name: string + value: string +} diff --git a/node/typings/co-body.d.ts b/node/typings/co-body.d.ts new file mode 100644 index 00000000..6250ebf5 --- /dev/null +++ b/node/typings/co-body.d.ts @@ -0,0 +1,5 @@ +declare module 'co-body' { + function json(req: any, opts?: any): Promise + export = json + export { json } +} diff --git a/node/typings/emailMessage.ts b/node/typings/emailMessage.ts new file mode 100644 index 00000000..c75d80a4 --- /dev/null +++ b/node/typings/emailMessage.ts @@ -0,0 +1,13 @@ +import { GetSkuContextResponse } from './getSkuContext' +import { NotifyRequest } from './notifyRequest' + +export interface JsonData { + SkuContext: GetSkuContextResponse + NotifyRequest: NotifyRequest +} + +export interface EmailMessage { + ProviderName: unknown + TemplateName: string + JsonData: JsonData +} diff --git a/node/typings/emailTemplate.ts b/node/typings/emailTemplate.ts new file mode 100644 index 00000000..6f639645 --- /dev/null +++ b/node/typings/emailTemplate.ts @@ -0,0 +1,40 @@ +export interface EmailTemplate { + Name: string + FriendlyName: string + Description: string + IsDefaultTemplate: boolean + AccountId: unknown + AccountName: unknown + ApplicationId: unknown + IsPersisted: boolean + IsRemoved: boolean + Type: string + Templates: Templates +} + +export interface Templates { + email: Email + sms: Sms +} + +export interface Email { + To: string + CC: unknown + BCC: unknown + Subject: string + Message: string + Type: string + ProviderId: unknown + ProviderName: unknown + IsActive: boolean + withError: boolean +} + +export interface Sms { + Type: string + ProviderId: unknown + ProviderName: unknown + IsActive: boolean + withError: boolean + Parameters: unknown[] +} diff --git a/node/typings/getSkuContext.ts b/node/typings/getSkuContext.ts new file mode 100644 index 00000000..ae53e6ba --- /dev/null +++ b/node/typings/getSkuContext.ts @@ -0,0 +1,106 @@ +export interface GetSkuContextResponse { + Id: number | null + ProductId: number | null + NameComplete: string + ProductName: string + ProductDescription: string + ProductRefId: string + TaxCode: string + SkuName: string + IsActive: boolean + IsTransported: boolean + IsInventoried: boolean + IsGiftCardRecharge: boolean + ImageUrl: string + DetailUrl: string + CSCIdentification: unknown + BrandId: string + BrandName: string + IsBrandActive: boolean + Dimension: Dimension + RealDimension: RealDimension + ManufacturerCode: string + IsKit: boolean + KitItems: unknown[] + Services: unknown[] + Categories: unknown[] + CategoriesFullPath: string[] + Attachments: unknown[] + Collections: unknown[] + SkuSellers: SkuSeller[] + SalesChannels: number[] + Images: Image[] + Videos: unknown[] + SkuSpecifications: Specification[] + ProductSpecifications: Specification[] + ProductClustersIds: string + PositionsInClusters: PositionsInClusters + ProductCategoryIds: string + IsDirectCategoryActive: boolean + ProductGlobalCategoryId: number | null + ProductCategories: unknown + CommercialConditionId: unknown + RewardValue: number + AlternateIds: AlternateIds + AlternateIdValues: string[] + EstimatedDateArrival: string + MeasurementUnit: string + UnitMultiplier: number | null + InformationSource: string + ModalType: unknown + KeyWords: string + ReleaseDate: string + ProductIsVisible: boolean + ShowIfNotAvailable: boolean + IsProductActive: boolean + ProductFinalScore: number | null +} + +export interface AlternateIds { + RefId: string +} + +export interface Dimension { + cubicweight: number | null + height: number | null + length: number | null + weight: number | null + width: number | null +} + +export interface Image { + ImageUrl: string + ImageName: string + FileId: number | null +} + +export interface PositionsInClusters { + [key: string]: unknown +} + +export interface Specification { + FieldId: number | null + FieldName: string + FieldValueIds: number[] + FieldValues: string[] + IsFilter: boolean + FieldGroupId: number | null + FieldGroupName: string +} + +export interface RealDimension { + realCubicWeight: number | null + realHeight: number | null + realLength: number | null + realWeight: number | null + realWidth: number | null +} + +export interface SkuSeller { + SellerId: string + StockKeepingUnitId: number | null + SellerStockKeepingUnitId: string + IsActive: boolean + FreightCommissionPercentage: number | null + ProductCommissionPercentage: number | null +} diff --git a/node/typings/getSkuSeller.ts b/node/typings/getSkuSeller.ts new file mode 100644 index 00000000..48af173f --- /dev/null +++ b/node/typings/getSkuSeller.ts @@ -0,0 +1,3 @@ +export interface GetSkuSellerResponse { + StockKeepingUnitId: number +} diff --git a/node/typings/inventoryBySku.ts b/node/typings/inventoryBySku.ts new file mode 100644 index 00000000..8805b774 --- /dev/null +++ b/node/typings/inventoryBySku.ts @@ -0,0 +1,14 @@ +export interface InventoryBySku { + skuId: string + balance: Balance[] +} + +export interface Balance { + warehouseId: string + warehouseName: string + totalQuantity: number + reservedQuantity: number + hasUnlimitedQuantity: boolean + timeToRefill: unknown + dateOfSupplyUtc: unknown +} diff --git a/node/typings/listAllWarehouses.ts b/node/typings/listAllWarehouses.ts new file mode 100644 index 00000000..735d96c5 --- /dev/null +++ b/node/typings/listAllWarehouses.ts @@ -0,0 +1,14 @@ +export interface ListAllWarehousesResponse { + id: string + name: string + warehouseDocks: WarehouseDock[] + pickupPointIds: unknown[] + priority: number + isActive: boolean +} + +export interface WarehouseDock { + dockId: string + time: string + cost: number +} diff --git a/node/typings/lock.ts b/node/typings/lock.ts new file mode 100644 index 00000000..9c7a01bf --- /dev/null +++ b/node/typings/lock.ts @@ -0,0 +1,3 @@ +export interface Lock { + processing_started: string +} diff --git a/node/typings/merchantSettings.ts b/node/typings/merchantSettings.ts new file mode 100644 index 00000000..a5c7b62a --- /dev/null +++ b/node/typings/merchantSettings.ts @@ -0,0 +1,7 @@ +export interface MerchantSettings { + appKey?: string + appToken?: string + initialized?: boolean + doShippingSim?: boolean + notifyMarketplace?: string +} diff --git a/node/typings/notifyRequest.ts b/node/typings/notifyRequest.ts new file mode 100644 index 00000000..75425b5a --- /dev/null +++ b/node/typings/notifyRequest.ts @@ -0,0 +1,13 @@ +export interface NotifyRequest { + id?: string + name: string + email: string + skuId: string + createdAt: string + notificationSend: string + sendAt?: string + locale?: string + seller?: SellerObj +} + +import { SellerObj } from './sellerObj' diff --git a/node/typings/processingResult.ts b/node/typings/processingResult.ts new file mode 100644 index 00000000..c8c68c75 --- /dev/null +++ b/node/typings/processingResult.ts @@ -0,0 +1,7 @@ +export interface ProcessingResult { + skuId?: string + quantityAvailable?: string + email?: string + sent?: boolean + updated?: boolean +} diff --git a/node/typings/requestContext.ts b/node/typings/requestContext.ts new file mode 100644 index 00000000..bdf5d532 --- /dev/null +++ b/node/typings/requestContext.ts @@ -0,0 +1,4 @@ +export interface RequestContext { + account: string + authToken: string +} diff --git a/node/typings/responseWrapper.ts b/node/typings/responseWrapper.ts new file mode 100644 index 00000000..3d668a65 --- /dev/null +++ b/node/typings/responseWrapper.ts @@ -0,0 +1,9 @@ +export interface ResponseWrapper { + responseText: string + message: string + isSuccess: boolean + masterDataToken?: string + total?: string + from?: string + to?: string +} diff --git a/node/typings/sellerObj.ts b/node/typings/sellerObj.ts new file mode 100644 index 00000000..2905c9b4 --- /dev/null +++ b/node/typings/sellerObj.ts @@ -0,0 +1,6 @@ +export interface SellerObj { + sellerId: string + sellerName: string + addToCartLink: string + sellerDefault: boolean +} diff --git a/node/typings/shopperAddress.ts b/node/typings/shopperAddress.ts new file mode 100644 index 00000000..ff5c0316 --- /dev/null +++ b/node/typings/shopperAddress.ts @@ -0,0 +1,30 @@ +export interface ShopperAddress { + addressName: string + addressType: string + city: string + complement: unknown + country: string + countryfake: unknown + geoCoordinate: number[] + neighborhood: unknown + number: unknown + postalCode: string + receiverName: string + reference: unknown + state: string + street: string + userId: string + id: string + accountId: string + accountName: string + dataEntityId: string + createdBy: string + createdIn: string + updatedBy: string | null + updatedIn: string | null + lastInteractionBy: string + lastInteractionIn: string + followers: unknown[] + tags: unknown[] + auto_filter: unknown +} diff --git a/node/typings/shopperRecord.ts b/node/typings/shopperRecord.ts new file mode 100644 index 00000000..d7e5318a --- /dev/null +++ b/node/typings/shopperRecord.ts @@ -0,0 +1,7 @@ +export interface ShopperRecord { + email: string + id: string + accountId: string + accountName: string + dataEntityId: string +} diff --git a/node/typings/slaRequest.ts b/node/typings/slaRequest.ts new file mode 100644 index 00000000..4cb6cdfc --- /dev/null +++ b/node/typings/slaRequest.ts @@ -0,0 +1,28 @@ +import { Dimension } from './getSkuContext' + +export interface SlaRequest { + items: SlaItem[] + location: Location + salesChannel: string +} + +export interface SlaItem { + id: string + groupItemId: unknown + kitItem: unknown[] + quantity: number + price: number + additionalHandlingTime: string + dimension: Dimension +} + +export interface Location { + zipCode: string + country: string + instore: Instore +} + +export interface Instore { + isCheckedIn: boolean + storeId: string +} diff --git a/node/typings/validateToken.ts b/node/typings/validateToken.ts new file mode 100644 index 00000000..f84e4092 --- /dev/null +++ b/node/typings/validateToken.ts @@ -0,0 +1,3 @@ +export interface ValidateToken { + token: string +} diff --git a/node/typings/validatedUser.ts b/node/typings/validatedUser.ts new file mode 100644 index 00000000..053d12b6 --- /dev/null +++ b/node/typings/validatedUser.ts @@ -0,0 +1,5 @@ +export interface ValidatedUser { + authStatus: string + id: string + user: string +} diff --git a/node/utils/constants.ts b/node/utils/constants.ts new file mode 100644 index 00000000..b42451db --- /dev/null +++ b/node/utils/constants.ts @@ -0,0 +1,92 @@ +// Header constants +export const APP_TOKEN = 'X-VTEX-API-AppToken' +export const APP_KEY = 'X-VTEX-API-AppKey' +export const END_POINT_KEY = 'availability-notify' +export const APP_NAME = 'availability-notify' + +export const FORWARDED_HEADER = 'X-Forwarded-For' +export const FORWARDED_HOST = 'X-Forwarded-Host' +export const APPLICATION_JSON = 'application/json' +export const HEADER_VTEX_CREDENTIAL = 'X-Vtex-Credential' +export const AUTHORIZATION_HEADER_NAME = 'Authorization' +export const PROXY_AUTHORIZATION_HEADER_NAME = 'Proxy-Authorization' +export const USE_HTTPS_HEADER_NAME = 'X-Vtex-Use-Https' +export const PROXY_TO_HEADER_NAME = 'X-Vtex-Proxy-To' +export const VTEX_ACCOUNT_HEADER_NAME = 'X-Vtex-Account' +export const ENVIRONMENT = 'vtexcommercestable' +export const LOCAL_ENVIRONMENT = 'myvtex' +export const VTEX_ID_HEADER_NAME = 'VtexIdclientAutCookie' +export const HEADER_VTEX_WORKSPACE = 'X-Vtex-Workspace' +export const APP_SETTINGS = 'vtex.availability-notify' +export const ACCEPT = 'Accept' +export const CONTENT_TYPE = 'Content-Type' +export const MINICART = 'application/vnd.vtex.checkout.minicart.v1+json' +export const HTTP_FORWARDED_HEADER = 'HTTP_X_FORWARDED_FOR' +export const API_VERSION_HEADER = 'x-api-version' + +// VBase bucket and lock constants +export const BUCKET = 'availability-notify' +export const LOCK = 'availability-notify-lock' +export const UNSENT_CHECK = 'check-unsent' + +// MasterData entity and schema +export const DATA_ENTITY = 'notify' +export const SCHEMA = 'notify' +export const SCHEMA_JSON = + '{"name":"notify","properties":{"skuId":{"type":"string","title":"skuId"},"sendAt":{"type":"string","title":"sendAt"},"name":{"type":"string","title":"name"},"email":{"type":"string","title":"email"},"createdAt":{"type":"string","title":"createdAt"},"notificationSend":{"type":"string","title":"notificationSend"},"locale":{"type":"string","title":"locale"},"seller":{"type":"object","title":"seller"}},"v-indexed":["skuId","notificationSend"],"v-security":{"allowGetAll":true}}' +export const FIELDS = + 'id,email,skuId,notificationSend,sendAt,name,createdAt,locale,seller' + +// Mail service +export const MAIL_SERVICE = + 'http://mailservice.vtex.com.br/api/mail-service/pvt/sendmail' +export const ACQUIRER = 'AvailabilityNotify' + +// GitHub template constants +export const GITHUB_URL = 'https://raw.githubusercontent.com' +export const REPOSITORY = 'vtex-apps/availability-notify/master' +export const TEMPLATE_FOLDER = 'templates' +export const TEMPLATE_FILE_EXTENSION = 'json' +export const DEFAULT_TEMPLATE_NAME = 'back-in-stock' + +// Availability statuses +export const Availability = { + CannotBeDelivered: 'cannotBeDelivered', + Available: 'available', +} + +// Domain constants +export const Domain = { + Fulfillment: 'Fulfillment', + Marketplace: 'Marketplace', +} + +// VTEX Order Statuses +export const VtexOrderStatus = { + OrderCreated: 'order-created', + OrderCompleted: 'order-completed', + OnOrderCompleted: 'on-order-completed', + PaymentPending: 'payment-pending', + WaitingForOrderAuthorization: 'waiting-for-order-authorization', + ApprovePayment: 'approve-payment', + PaymentApproved: 'payment-approved', + PaymentDenied: 'payment-denied', + RequestCancel: 'request-cancel', + WaitingForSellerDecision: 'waiting-for-seller-decision', + AuthorizeFullfilment: 'authorize-fulfillment', + OrderCreateError: 'order-create-error', + OrderCreationError: 'order-creation-error', + WindowToCancel: 'window-to-cancel', + ReadyForHandling: 'ready-for-handling', + StartHanding: 'start-handling', + Handling: 'handling', + InvoiceAfterCancellationDeny: 'invoice-after-cancellation-deny', + OrderAccepted: 'order-accepted', + Invoice: 'invoice', + Invoiced: 'invoiced', + Replaced: 'replaced', + CancellationRequested: 'cancellation-requested', + Cancel: 'cancel', + Canceled: 'canceled', + Cancelled: 'cancelled', +} diff --git a/node/yarn.lock b/node/yarn.lock new file mode 100644 index 00000000..c362d32b --- /dev/null +++ b/node/yarn.lock @@ -0,0 +1,2376 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@^7.15.4": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e" + integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g== + +"@grpc/grpc-js@^1.13.4", "@grpc/grpc-js@^1.7.1": + version "1.14.3" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.14.3.tgz#4c9b817a900ae4020ddc28515ae4b52c78cfb8da" + integrity sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA== + dependencies: + "@grpc/proto-loader" "^0.8.0" + "@js-sdsl/ordered-map" "^4.4.2" + +"@grpc/proto-loader@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.8.0.tgz#b6c324dd909c458a0e4aa9bfd3d69cf78a4b9bd8" + integrity sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ== + dependencies: + lodash.camelcase "^4.3.0" + long "^5.0.0" + protobufjs "^7.5.3" + yargs "^17.7.2" + +"@hapi/bourne@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-3.0.0.tgz#f11fdf7dda62fe8e336fa7c6642d9041f30356d7" + integrity sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w== + +"@js-sdsl/ordered-map@^4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" + integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== + +"@opentelemetry/api-logs@0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz#d4001b9aa3580367b40fe889f3540014f766cc87" + integrity sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A== + dependencies: + "@opentelemetry/api" "^1.3.0" + +"@opentelemetry/api-logs@^0.200.0": + version "0.200.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz#f9015fd844920c13968715b3cdccf5a4d4ff907e" + integrity sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q== + dependencies: + "@opentelemetry/api" "^1.3.0" + +"@opentelemetry/api@^1.3.0", "@opentelemetry/api@^1.9.0": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.1.tgz#c1b0346de336ba55af2d5a7970882037baedec05" + integrity sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q== + +"@opentelemetry/baggage-span-processor@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/baggage-span-processor/-/baggage-span-processor-0.3.1.tgz#8bca006ad0ca5e43d452a615ac2469a09cab7711" + integrity sha512-m4XXch3/NraA0XEogdQgdMbhg0ZWQWnwXRxuWZJLskIFvIatvUZwoWZm+8gApEZNJNz/Jk/dwtMylUQZBwcyYA== + dependencies: + "@opentelemetry/sdk-trace-base" "^1.0.0" + +"@opentelemetry/context-async-hooks@1.30.1", "@opentelemetry/context-async-hooks@^1.30.1": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz#4f76280691a742597fd0bf682982126857622948" + integrity sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA== + +"@opentelemetry/core@1.30.1", "@opentelemetry/core@^1.0.0", "@opentelemetry/core@^1.30.1", "@opentelemetry/core@^1.8.0": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.30.1.tgz#a0b468bb396358df801881709ea38299fc30ab27" + integrity sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ== + dependencies: + "@opentelemetry/semantic-conventions" "1.28.0" + +"@opentelemetry/exporter-logs-otlp-grpc@0.57.2", "@opentelemetry/exporter-logs-otlp-grpc@^0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.57.2.tgz#674b634ef284ef8caa058662518205a7134d536a" + integrity sha512-eovEy10n3umjKJl2Ey6TLzikPE+W4cUQ4gCwgGP1RqzTGtgDra0WjIqdy29ohiUKfvmbiL3MndZww58xfIvyFw== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.30.1" + "@opentelemetry/otlp-exporter-base" "0.57.2" + "@opentelemetry/otlp-grpc-exporter-base" "0.57.2" + "@opentelemetry/otlp-transformer" "0.57.2" + "@opentelemetry/sdk-logs" "0.57.2" + +"@opentelemetry/exporter-logs-otlp-http@0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.57.2.tgz#01d4668b8f781540f94592da9284b92fd6a2ccd8" + integrity sha512-0rygmvLcehBRp56NQVLSleJ5ITTduq/QfU7obOkyWgPpFHulwpw2LYTqNIz5TczKZuy5YY+5D3SDnXZL1tXImg== + dependencies: + "@opentelemetry/api-logs" "0.57.2" + "@opentelemetry/core" "1.30.1" + "@opentelemetry/otlp-exporter-base" "0.57.2" + "@opentelemetry/otlp-transformer" "0.57.2" + "@opentelemetry/sdk-logs" "0.57.2" + +"@opentelemetry/exporter-logs-otlp-proto@0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.57.2.tgz#da5ae0818c2031a162d8d8a1f9fe238c0f6ff284" + integrity sha512-ta0ithCin0F8lu9eOf4lEz9YAScecezCHkMMyDkvd9S7AnZNX5ikUmC5EQOQADU+oCcgo/qkQIaKcZvQ0TYKDw== + dependencies: + "@opentelemetry/api-logs" "0.57.2" + "@opentelemetry/core" "1.30.1" + "@opentelemetry/otlp-exporter-base" "0.57.2" + "@opentelemetry/otlp-transformer" "0.57.2" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/sdk-logs" "0.57.2" + "@opentelemetry/sdk-trace-base" "1.30.1" + +"@opentelemetry/exporter-metrics-otlp-grpc@0.57.2", "@opentelemetry/exporter-metrics-otlp-grpc@^0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.57.2.tgz#a702069b7e89c1c0272d8cb790c9ed85860ac94a" + integrity sha512-r70B8yKR41F0EC443b5CGB4rUaOMm99I5N75QQt6sHKxYDzSEc6gm48Diz1CI1biwa5tDPznpylTrywO/pT7qw== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.30.1" + "@opentelemetry/exporter-metrics-otlp-http" "0.57.2" + "@opentelemetry/otlp-exporter-base" "0.57.2" + "@opentelemetry/otlp-grpc-exporter-base" "0.57.2" + "@opentelemetry/otlp-transformer" "0.57.2" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/sdk-metrics" "1.30.1" + +"@opentelemetry/exporter-metrics-otlp-http@0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.57.2.tgz#0983b28a4a36dee3af2c258394214004e4c68b53" + integrity sha512-ttb9+4iKw04IMubjm3t0EZsYRNWr3kg44uUuzfo9CaccYlOh8cDooe4QObDUkvx9d5qQUrbEckhrWKfJnKhemA== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/otlp-exporter-base" "0.57.2" + "@opentelemetry/otlp-transformer" "0.57.2" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/sdk-metrics" "1.30.1" + +"@opentelemetry/exporter-metrics-otlp-proto@0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.57.2.tgz#e2729ad1b8b99db7843fa661926a824b32f6c60d" + integrity sha512-HX068Q2eNs38uf7RIkNN9Hl4Ynl+3lP0++KELkXMCpsCbFO03+0XNNZ1SkwxPlP9jrhQahsMPMkzNXpq3fKsnw== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/exporter-metrics-otlp-http" "0.57.2" + "@opentelemetry/otlp-exporter-base" "0.57.2" + "@opentelemetry/otlp-transformer" "0.57.2" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/sdk-metrics" "1.30.1" + +"@opentelemetry/exporter-prometheus@0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.57.2.tgz#b9dadca23e75c0adf9cfbecf20986f89fc24189a" + integrity sha512-VqIqXnuxWMWE/1NatAGtB1PvsQipwxDcdG4RwA/umdBcW3/iOHp0uejvFHTRN2O78ZPged87ErJajyUBPUhlDQ== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/sdk-metrics" "1.30.1" + +"@opentelemetry/exporter-trace-otlp-grpc@0.57.2", "@opentelemetry/exporter-trace-otlp-grpc@^0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.57.2.tgz#1c1e593a987c211a0e9134037b7a2a7f3836f8ba" + integrity sha512-gHU1vA3JnHbNxEXg5iysqCWxN9j83d7/epTYBZflqQnTyCC4N7yZXn/dMM+bEmyhQPGjhCkNZLx4vZuChH1PYw== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.30.1" + "@opentelemetry/otlp-exporter-base" "0.57.2" + "@opentelemetry/otlp-grpc-exporter-base" "0.57.2" + "@opentelemetry/otlp-transformer" "0.57.2" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/sdk-trace-base" "1.30.1" + +"@opentelemetry/exporter-trace-otlp-http@0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.57.2.tgz#0ab8e97dc30dbabb8252b68128b80c4685f7c691" + integrity sha512-sB/gkSYFu+0w2dVQ0PWY9fAMl172PKMZ/JrHkkW8dmjCL0CYkmXeE+ssqIL/yBUTPOvpLIpenX5T9RwXRBW/3g== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/otlp-exporter-base" "0.57.2" + "@opentelemetry/otlp-transformer" "0.57.2" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/sdk-trace-base" "1.30.1" + +"@opentelemetry/exporter-trace-otlp-proto@0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.57.2.tgz#ffaed12c2f57ae1e50a458f641ea271e19b54ded" + integrity sha512-awDdNRMIwDvUtoRYxRhja5QYH6+McBLtoz1q9BeEsskhZcrGmH/V1fWpGx8n+Rc+542e8pJA6y+aullbIzQmlw== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/otlp-exporter-base" "0.57.2" + "@opentelemetry/otlp-transformer" "0.57.2" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/sdk-trace-base" "1.30.1" + +"@opentelemetry/exporter-zipkin@1.30.1": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.30.1.tgz#d96213a38d201ef2d50c3ba29faeb6e579f70e77" + integrity sha512-6S2QIMJahIquvFaaxmcwpvQQRD/YFaMTNoIxrfPIPOeITN+a8lfEcPDxNxn8JDAaxkg+4EnXhz8upVDYenoQjA== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/sdk-trace-base" "1.30.1" + "@opentelemetry/semantic-conventions" "1.28.0" + +"@opentelemetry/host-metrics@0.35.5": + version "0.35.5" + resolved "https://registry.yarnpkg.com/@opentelemetry/host-metrics/-/host-metrics-0.35.5.tgz#1bb7453558b2623c8331d0fea5b7766c995a68f1" + integrity sha512-Zf9Cjl7H6JalspnK5KD1+LLKSVecSinouVctNmUxRy+WP+20KwHq+qg4hADllkEmJ99MZByLLmEmzrr7s92V6g== + dependencies: + systeminformation "5.23.8" + +"@opentelemetry/instrumentation-express@^0.47.1": + version "0.47.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.47.1.tgz#7cf74f35e43cc3c8186edd1249fdb225849c48b2" + integrity sha512-QNXPTWteDclR2B4pDFpz0TNghgB33UMjUt14B+BZPmtH1MwUFAfLHBaP5If0Z5NZC+jaH8oF2glgYjrmhZWmSw== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.57.1" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-http@^0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.57.2.tgz#f425eda67b6241c3abe08e4ea972169b85ef3064" + integrity sha512-1Uz5iJ9ZAlFOiPuwYg29Bf7bJJc/GeoeJIFKJYQf67nTVKFe8RHbEtxgkOmK4UGZNHKXcpW4P8cWBYzBn1USpg== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/instrumentation" "0.57.2" + "@opentelemetry/semantic-conventions" "1.28.0" + forwarded-parse "2.1.2" + semver "^7.5.2" + +"@opentelemetry/instrumentation-koa@0.47.1": + version "0.47.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.47.1.tgz#ba57eccd44a75ec59e3129757fda4e8c8dd7ce2c" + integrity sha512-l/c+Z9F86cOiPJUllUCt09v+kICKvT+Vg1vOAJHtHPsJIzurGayucfCMq2acd/A/yxeNWunl9d9eqZ0G+XiI6A== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.57.1" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-net@^0.43.1": + version "0.43.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-net/-/instrumentation-net-0.43.1.tgz#10a3030fe090ed76204ac025179501f902dcf282" + integrity sha512-TaMqP6tVx9/SxlY81dHlSyP5bWJIKq+K7vKfk4naB/LX4LBePPY3++1s0edpzH+RfwN+tEGVW9zTb9ci0up/lQ== + dependencies: + "@opentelemetry/instrumentation" "^0.57.1" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation@0.57.2", "@opentelemetry/instrumentation@^0.57.1", "@opentelemetry/instrumentation@^0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz#8924549d7941ba1b5c6f04d5529cf48330456d1d" + integrity sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg== + dependencies: + "@opentelemetry/api-logs" "0.57.2" + "@types/shimmer" "^1.2.0" + import-in-the-middle "^1.8.1" + require-in-the-middle "^7.1.1" + semver "^7.5.2" + shimmer "^1.2.1" + +"@opentelemetry/otlp-exporter-base@0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.57.2.tgz#10636c8d0e377f3311e55741b0550b06f32a3e98" + integrity sha512-XdxEzL23Urhidyebg5E6jZoaiW5ygP/mRjxLHixogbqwDy2Faduzb5N0o/Oi+XTIJu+iyxXdVORjXax+Qgfxag== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/otlp-transformer" "0.57.2" + +"@opentelemetry/otlp-grpc-exporter-base@0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.57.2.tgz#655ecb3a2a67da90c0042e34cbeaa57df266794e" + integrity sha512-USn173KTWy0saqqRB5yU9xUZ2xdgb1Rdu5IosJnm9aV4hMTuFFRTUsQxbgc24QxpCHeoKzzCSnS/JzdV0oM2iQ== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.30.1" + "@opentelemetry/otlp-exporter-base" "0.57.2" + "@opentelemetry/otlp-transformer" "0.57.2" + +"@opentelemetry/otlp-transformer@0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.57.2.tgz#a3bdd2c82ddd6fd87f513860fb4f6260e555d2c0" + integrity sha512-48IIRj49gbQVK52jYsw70+Jv+JbahT8BqT2Th7C4H7RCM9d0gZ5sgNPoMpWldmfjvIsSgiGJtjfk9MeZvjhoig== + dependencies: + "@opentelemetry/api-logs" "0.57.2" + "@opentelemetry/core" "1.30.1" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/sdk-logs" "0.57.2" + "@opentelemetry/sdk-metrics" "1.30.1" + "@opentelemetry/sdk-trace-base" "1.30.1" + protobufjs "^7.3.0" + +"@opentelemetry/propagator-b3@1.30.1", "@opentelemetry/propagator-b3@^1.30.1": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-b3/-/propagator-b3-1.30.1.tgz#b73321e5f30f062a9229887a4aa80c771107fdd2" + integrity sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ== + dependencies: + "@opentelemetry/core" "1.30.1" + +"@opentelemetry/propagator-jaeger@1.30.1": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.30.1.tgz#c06c9dacbe818b80cfb13c4dbf0b57df1ad26b71" + integrity sha512-Pj/BfnYEKIOImirH76M4hDaBSx6HyZ2CXUqk+Kj02m6BB80c/yo4BdWkn/1gDFfU+YPY+bPR2U0DKBfdxCKwmg== + dependencies: + "@opentelemetry/core" "1.30.1" + +"@opentelemetry/resource-detector-aws@^1.12.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-aws/-/resource-detector-aws-1.12.0.tgz#740edea01ce395a67885c02bbffcad74d3bad4e0" + integrity sha512-Cvi7ckOqiiuWlHBdA1IjS0ufr3sltex2Uws2RK6loVp4gzIJyOijsddAI6IZ5kiO8h/LgCWe8gxPmwkTKImd+Q== + dependencies: + "@opentelemetry/core" "^1.0.0" + "@opentelemetry/resources" "^1.10.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/resources@1.30.1", "@opentelemetry/resources@^1.10.0", "@opentelemetry/resources@^1.30.1": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.30.1.tgz#a4eae17ebd96947fdc7a64f931ca4b71e18ce964" + integrity sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/semantic-conventions" "1.28.0" + +"@opentelemetry/sdk-logs@0.57.2", "@opentelemetry/sdk-logs@^0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.57.2.tgz#ddc9d1e2b86052b4b6bb954dd90fa3878bed8a23" + integrity sha512-TXFHJ5c+BKggWbdEQ/inpgIzEmS2BGQowLE9UhsMd7YYlUfBQJ4uax0VF/B5NYigdM/75OoJGhAV3upEhK+3gg== + dependencies: + "@opentelemetry/api-logs" "0.57.2" + "@opentelemetry/core" "1.30.1" + "@opentelemetry/resources" "1.30.1" + +"@opentelemetry/sdk-metrics@1.30.1", "@opentelemetry/sdk-metrics@^1.30.1": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz#70e2bcd275b9df6e7e925e3fe53cfe71329b5fc8" + integrity sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/resources" "1.30.1" + +"@opentelemetry/sdk-node@^0.57.2": + version "0.57.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-node/-/sdk-node-0.57.2.tgz#27597c99d3062a3be7c02ace3cc596a02fd31996" + integrity sha512-8BaeqZyN5sTuPBtAoY+UtKwXBdqyuRKmekN5bFzAO40CgbGzAxfTpiL3PBerT7rhZ7p2nBdq7FaMv/tBQgHE4A== + dependencies: + "@opentelemetry/api-logs" "0.57.2" + "@opentelemetry/core" "1.30.1" + "@opentelemetry/exporter-logs-otlp-grpc" "0.57.2" + "@opentelemetry/exporter-logs-otlp-http" "0.57.2" + "@opentelemetry/exporter-logs-otlp-proto" "0.57.2" + "@opentelemetry/exporter-metrics-otlp-grpc" "0.57.2" + "@opentelemetry/exporter-metrics-otlp-http" "0.57.2" + "@opentelemetry/exporter-metrics-otlp-proto" "0.57.2" + "@opentelemetry/exporter-prometheus" "0.57.2" + "@opentelemetry/exporter-trace-otlp-grpc" "0.57.2" + "@opentelemetry/exporter-trace-otlp-http" "0.57.2" + "@opentelemetry/exporter-trace-otlp-proto" "0.57.2" + "@opentelemetry/exporter-zipkin" "1.30.1" + "@opentelemetry/instrumentation" "0.57.2" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/sdk-logs" "0.57.2" + "@opentelemetry/sdk-metrics" "1.30.1" + "@opentelemetry/sdk-trace-base" "1.30.1" + "@opentelemetry/sdk-trace-node" "1.30.1" + "@opentelemetry/semantic-conventions" "1.28.0" + +"@opentelemetry/sdk-trace-base@1.30.1", "@opentelemetry/sdk-trace-base@^1.0.0", "@opentelemetry/sdk-trace-base@^1.30.1": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz#41a42234096dc98e8f454d24551fc80b816feb34" + integrity sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/semantic-conventions" "1.28.0" + +"@opentelemetry/sdk-trace-node@1.30.1", "@opentelemetry/sdk-trace-node@^1.30.1": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.30.1.tgz#bd7d68fcfb4d4ae76ea09810df9668b7dd09a2e5" + integrity sha512-cBjYOINt1JxXdpw1e5MlHmFRc5fgj4GW/86vsKFxJCJ8AL4PdVtYH41gWwl4qd4uQjqEL1oJVrXkSy5cnduAnQ== + dependencies: + "@opentelemetry/context-async-hooks" "1.30.1" + "@opentelemetry/core" "1.30.1" + "@opentelemetry/propagator-b3" "1.30.1" + "@opentelemetry/propagator-jaeger" "1.30.1" + "@opentelemetry/sdk-trace-base" "1.30.1" + semver "^7.5.2" + +"@opentelemetry/semantic-conventions@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz#337fb2bca0453d0726696e745f50064411f646d6" + integrity sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA== + +"@opentelemetry/semantic-conventions@^1.27.0", "@opentelemetry/semantic-conventions@^1.30.0": + version "1.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.40.0.tgz#10b2944ca559386590683392022a897eefd011d3" + integrity sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw== + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@types/accepts@*": + version "1.3.7" + resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.7.tgz#3b98b1889d2b2386604c2bbbe62e4fb51e95b265" + integrity sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ== + dependencies: + "@types/node" "*" + +"@types/body-parser@*": + version "1.19.6" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" + integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/content-disposition@*": + version "0.5.9" + resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.9.tgz#00ca14939432869de829a4ccf6fd380fa9181750" + integrity sha512-8uYXI3Gw35MhiVYhG3s295oihrxRyytcRHjSjqnqZVDDy/xcGBRny7+Xj1Wgfhv5QzRtN2hB2dVRBUX9XW3UcQ== + +"@types/cookies@*": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.9.2.tgz#ccdf86d782f2dea34531dd32733a25be48177cd4" + integrity sha512-1AvkDdZM2dbyFybL4fxpuNCaWyv//0AwsuUk2DWeXyM1/5ZKm6W3z6mQi24RZ4l2ucY+bkSHzbDVpySqPGuV8A== + dependencies: + "@types/connect" "*" + "@types/express" "*" + "@types/keygrip" "*" + "@types/node" "*" + +"@types/express-serve-static-core@^5.0.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz#1a77faffee9572d39124933259be2523837d7eaa" + integrity sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.6.tgz#2d724b2c990dcb8c8444063f3580a903f6d500cc" + integrity sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^5.0.0" + "@types/serve-static" "^2" + +"@types/http-assert@*": + version "1.5.6" + resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.6.tgz#b6b657c38a2350d21ce213139f33b03b2b5fa431" + integrity sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw== + +"@types/http-errors@*", "@types/http-errors@^2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.5.tgz#5b749ab2b16ba113423feb1a64a95dcd30398472" + integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== + +"@types/keygrip@*": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.6.tgz#1749535181a2a9b02ac04a797550a8787345b740" + integrity sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ== + +"@types/koa-compose@*", "@types/koa-compose@^3.2.3": + version "3.2.9" + resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.9.tgz#6efb945ee5573be0f4eddb728a2f6826f7a3f395" + integrity sha512-BroAZ9FTvPiCy0Pi8tjD1OfJ7bgU1gQf0eR6e1Vm+JJATy9eKOG3hQMFtMciMawiSOVnLMdmUOC46s7HBhSTsA== + dependencies: + "@types/koa" "*" + +"@types/koa@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/koa/-/koa-3.0.2.tgz#e788aeb46bfadb5e043abfe3528b55bfd11fed12" + integrity sha512-7TRzVOBcH/q8CfPh9AmHBQ8TZtimT4Sn+rw8//hXveI6+F41z93W8a+0B0O8L7apKQv+vKBIEZSECiL0Oo1JFA== + dependencies: + "@types/accepts" "*" + "@types/content-disposition" "*" + "@types/cookies" "*" + "@types/http-assert" "*" + "@types/http-errors" "^2" + "@types/keygrip" "*" + "@types/koa-compose" "*" + "@types/node" "*" + +"@types/koa@^2.11.0": + version "2.15.0" + resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.15.0.tgz#eca43d76f527c803b491731f95df575636e7b6f2" + integrity sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g== + dependencies: + "@types/accepts" "*" + "@types/content-disposition" "*" + "@types/cookies" "*" + "@types/http-assert" "*" + "@types/http-errors" "*" + "@types/keygrip" "*" + "@types/koa-compose" "*" + "@types/node" "*" + +"@types/node@*", "@types/node@>=13.7.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.5.0.tgz#5c99f37c443d9ccc4985866913f1ed364217da31" + integrity sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw== + dependencies: + undici-types "~7.18.0" + +"@types/node@^20.0.0": + version "20.19.37" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.19.37.tgz#b4fb4033408dd97becce63ec932c9ec57a9e2919" + integrity sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw== + dependencies: + undici-types "~6.21.0" + +"@types/qs@*": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.15.0.tgz#963ab61779843fe910639a50661b48f162bc7f79" + integrity sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/send@*": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/send/-/send-1.2.1.tgz#6a784e45543c18c774c049bff6d3dbaf045c9c74" + integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ== + dependencies: + "@types/node" "*" + +"@types/serve-static@^2": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-2.2.0.tgz#d4a447503ead0d1671132d1ab6bd58b805d8de6a" + integrity sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + +"@types/shimmer@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/shimmer/-/shimmer-1.2.0.tgz#9b706af96fa06416828842397a70dfbbf1c14ded" + integrity sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg== + +"@vtex/api@^7.0.0": + version "7.3.1" + resolved "https://registry.yarnpkg.com/@vtex/api/-/api-7.3.1.tgz#7e6fcfc6a22d2cab38c3d7369d63f5b43fce807a" + integrity sha512-FdFWCD0OIGFO+O948VGNU1Q1aPayLjEcj1VRYcUPV+xK1F3nNdbJWmcO1PJ6Mk/L7iLvfxlaXk8VMO5ShZMDPg== + dependencies: + "@opentelemetry/api" "^1.9.0" + "@opentelemetry/host-metrics" "0.35.5" + "@opentelemetry/instrumentation" "0.57.2" + "@opentelemetry/instrumentation-koa" "0.47.1" + "@types/koa" "^2.11.0" + "@types/koa-compose" "^3.2.3" + "@vtex/diagnostics-nodejs" "0.1.8-io" + "@vtex/diagnostics-semconv" "^1.1.2" + "@vtex/node-error-report" "^0.0.3" + "@wry/equality" "^0.1.9" + agentkeepalive "^4.0.2" + apollo-server-errors "^2.2.1" + archiver "^3.0.0" + axios "^1.8.4" + axios-retry "^3.1.2" + bluebird "^3.5.4" + chalk "^2.4.2" + co-body "^6.0.0" + cookie "^0.3.1" + dataloader "^1.4.0" + fast-json-stable-stringify "^2.0.0" + fs-extra "^7.0.0" + graphql "^14.5.8" + graphql-tools "^4.0.6" + graphql-upload "^13.0.0" + jaeger-client "^3.18.0" + js-base64 "^2.5.1" + koa "^2.11.0" + koa-compose "^4.1.0" + koa-compress "^3.0.0" + koa-router "^7.4.0" + lru-cache "^5.1.1" + mime-types "^2.1.12" + opentracing "^0.14.4" + p-limit "^2.2.0" + prom-client "^14.2.0" + qs "^6.5.1" + querystring "^0.2.0" + ramda "^0.26.0" + rwlock "^5.0.0" + semver "^5.5.1" + stats-lite vtex/node-stats-lite#v2.2.1 + tar-fs "^2.0.0" + tokenbucket "^0.3.2" + uuid "^3.3.3" + xss "^1.0.6" + +"@vtex/diagnostics-nodejs@0.1.8-io": + version "0.1.8-io" + resolved "https://registry.yarnpkg.com/@vtex/diagnostics-nodejs/-/diagnostics-nodejs-0.1.8-io.tgz#ca5679779b8bac8e3c91288b35e418836201a2c2" + integrity sha512-Nm9fF/tpRP38Pt9wKlPE/RUttKP4mVRnKqUskkul/yBSdlYNKJQ366YIlZXgizAApt8oiJJb5oL0i2GBgSXSag== + dependencies: + "@grpc/grpc-js" "^1.13.4" + "@opentelemetry/api" "^1.9.0" + "@opentelemetry/api-logs" "^0.200.0" + "@opentelemetry/baggage-span-processor" "^0.3.1" + "@opentelemetry/context-async-hooks" "^1.30.1" + "@opentelemetry/core" "^1.30.1" + "@opentelemetry/exporter-logs-otlp-grpc" "^0.57.2" + "@opentelemetry/exporter-metrics-otlp-grpc" "^0.57.2" + "@opentelemetry/exporter-trace-otlp-grpc" "^0.57.2" + "@opentelemetry/instrumentation" "^0.57.2" + "@opentelemetry/instrumentation-express" "^0.47.1" + "@opentelemetry/instrumentation-http" "^0.57.2" + "@opentelemetry/instrumentation-net" "^0.43.1" + "@opentelemetry/propagator-b3" "^1.30.1" + "@opentelemetry/resource-detector-aws" "^1.12.0" + "@opentelemetry/resources" "^1.30.1" + "@opentelemetry/sdk-logs" "^0.57.2" + "@opentelemetry/sdk-metrics" "^1.30.1" + "@opentelemetry/sdk-node" "^0.57.2" + "@opentelemetry/sdk-trace-base" "^1.30.1" + "@opentelemetry/sdk-trace-node" "^1.30.1" + "@opentelemetry/semantic-conventions" "^1.30.0" + "@vtex/diagnostics-semconv" "0.1.0-beta.11" + tslib "^2.8.1" + uuid "^11.1.0" + +"@vtex/diagnostics-semconv@0.1.0-beta.11": + version "0.1.0-beta.11" + resolved "https://registry.yarnpkg.com/@vtex/diagnostics-semconv/-/diagnostics-semconv-0.1.0-beta.11.tgz#2ddfff7dffdc1c052d23b335f914de91653d9659" + integrity sha512-H3KM5fYAFmcxhlA4wT5iPgWJtgKsumFqGkkxjcA/BSwC5tgSWezN82sZDKvBsVo24EoZxVGgLlsjNw1tsp9U3Q== + +"@vtex/diagnostics-semconv@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@vtex/diagnostics-semconv/-/diagnostics-semconv-1.1.2.tgz#ed58b4c0f403cf5d9ff5e3d487e959ff9c1802e2" + integrity sha512-CUz58FTeYHC6z5n0qJKcHesJK00ykwDAFKXUaBKjzI166lm/LqMkdPJA8KE2h4RWGDdSaPDIUDdkueSD76oUfw== + +"@vtex/node-error-report@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@vtex/node-error-report/-/node-error-report-0.0.3.tgz#365a2652aeebbd6b51ddc5d64c3c0bc1a326dc71" + integrity sha512-HhBworWQfSs6PU3yroloc7H2/pWboDIzgdiJ6SYc3mJVRU5/bXtwM9HGPkAGZvAb/0cMwFC963SYYKvOfeSjbA== + dependencies: + is-stream "^2.0.0" + +"@wry/equality@^0.1.2", "@wry/equality@^0.1.9": + version "0.1.11" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.11.tgz#35cb156e4a96695aa81a9ecc4d03787bc17f1790" + integrity sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA== + dependencies: + tslib "^1.9.3" + +accepts@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-attributes@^1.9.5: + version "1.9.5" + resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" + integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== + +acorn@^8.14.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" + integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== + +agentkeepalive@^4.0.2: + version "4.6.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" + integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== + dependencies: + humanize-ms "^1.2.1" + +ansi-color@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/ansi-color/-/ansi-color-0.2.2.tgz#c1ed2bf6afecf829c2bd043fae4c04320336243c" + integrity sha512-qPx7iZZDHITYrrfzaUFXQpIcF2xYifcQHQflP1pFz8yY3lfU6GgCHb0+hJD7nimYKO7f2iaYYwBpZ+GaNcAhcA== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +any-promise@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +apollo-link@^1.2.14: + version "1.2.14" + resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9" + integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== + dependencies: + apollo-utilities "^1.3.0" + ts-invariant "^0.4.0" + tslib "^1.9.3" + zen-observable-ts "^0.8.21" + +apollo-server-errors@^2.2.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz#5d1024117c7496a2979e3e34908b5685fe112b68" + integrity sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA== + +apollo-utilities@^1.0.1, apollo-utilities@^1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.4.tgz#6129e438e8be201b6c55b0f13ce49d2c7175c9cf" + integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig== + dependencies: + "@wry/equality" "^0.1.2" + fast-json-stable-stringify "^2.0.0" + ts-invariant "^0.4.0" + tslib "^1.10.0" + +archiver-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" + integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== + dependencies: + glob "^7.1.4" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.union "^4.6.0" + normalize-path "^3.0.0" + readable-stream "^2.0.0" + +archiver@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz#9db7819d4daf60aec10fe86b16cb9258ced66ea0" + integrity sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg== + dependencies: + archiver-utils "^2.1.0" + async "^2.6.3" + buffer-crc32 "^0.2.1" + glob "^7.1.4" + readable-stream "^3.4.0" + tar-stream "^2.1.0" + zip-stream "^2.1.2" + +async@^2.6.3: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios-retry@^3.1.2: + version "3.9.1" + resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-3.9.1.tgz#c8924a8781c8e0a2c5244abf773deb7566b3830d" + integrity sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w== + dependencies: + "@babel/runtime" "^7.15.4" + is-retry-allowed "^2.2.0" + +axios@^1.8.4: + version "1.13.6" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.6.tgz#c3f92da917dc209a15dd29936d20d5089b6b6c98" + integrity sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ== + dependencies: + follow-redirects "^1.15.11" + form-data "^4.0.5" + proxy-from-env "^1.1.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bintrees@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" + integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== + +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bluebird@2.9.24: + version "2.9.24" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.9.24.tgz#14a2e75f0548323dc35aa440d92007ca154e967c" + integrity sha512-F6vWSDdJRZ5mKeycWf7+l81ibpnjRtQz26eBTUxjpet9tUpN0rz+TV6uO0CCySHdtW4dDZNBSqbbMKoxPChqYw== + +bluebird@^3.5.4: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +brace-expansion@^1.1.7: + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer@^5.1.0, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufrw@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/bufrw/-/bufrw-1.4.0.tgz#58a294ca0bd9ebc880be83001d749706fc996499" + integrity sha512-sWm8iPbqvL9+5SiYxXH73UOkyEbGQg7kyHQmReF89WJHQJw2eV4P/yZ0E+b71cczJ4pPobVhXxgQcmfSTgGHxQ== + dependencies: + ansi-color "^0.2.1" + error "^7.0.0" + hexer "^1.5.0" + xtend "^4.0.0" + +busboy@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.3.1.tgz#170899274c5bf38aae27d5c62b71268cd585fd1b" + integrity sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw== + dependencies: + dicer "0.3.0" + +bytes@^3.0.0, bytes@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cache-content-type@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" + integrity sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA== + dependencies: + mime-types "^2.1.18" + ylru "^1.2.0" + +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bound@^1.0.2, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +cjs-module-lexer@^1.2.2: + version "1.4.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz#0f79731eb8cfe1ec72acd4066efac9d61991b00d" + integrity sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q== + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +co-body@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/co-body/-/co-body-6.2.0.tgz#afd776d60e5659f4eee862df83499698eb1aea1b" + integrity sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA== + dependencies: + "@hapi/bourne" "^3.0.0" + inflation "^2.0.0" + qs "^6.5.2" + raw-body "^2.3.3" + type-is "^1.6.16" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.3: + 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== + +compress-commons@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz#9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610" + integrity sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q== + dependencies: + buffer-crc32 "^0.2.13" + crc32-stream "^3.0.1" + normalize-path "^3.0.0" + readable-stream "^2.3.6" + +compressible@^2.0.0: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +content-disposition@~0.5.2: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw== + +cookies@~0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.9.1.tgz#3ffed6f60bb4fb5f146feeedba50acc418af67e3" + integrity sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw== + dependencies: + depd "~2.0.0" + keygrip "~1.1.0" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +crc32-stream@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85" + integrity sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w== + dependencies: + crc "^3.4.4" + readable-stream "^3.4.0" + +crc@^3.4.4: + version "3.8.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== + dependencies: + buffer "^5.1.0" + +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== + +dataloader@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8" + integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw== + +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.3.2, debug@^4.3.5: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + +deep-equal@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@^2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +deprecated-decorator@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37" + integrity sha512-MHidOOnCHGlZDKsI21+mbIIhf4Fff+hhCTB7gtVg4uoIqjcrTZc5v6M+GS2zVI0sV7PqK415rb8XaOSQsQkHOw== + +destroy@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +dicer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.0.tgz#eacd98b3bfbf92e8ab5c2fdb71aaac44bb06b872" + integrity sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA== + dependencies: + streamsearch "0.1.2" + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== + dependencies: + once "^1.4.0" + +error@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" + integrity sha512-UtVv4l5MhijsYUxPJo4390gzfZvAnTHreNnDjnTZaKIiZ/SemXxAhBkYSKtWa5RtBXbLP8tMgn/n0RUa/H7jXw== + dependencies: + string-template "~0.2.1" + xtend "~4.0.0" + +error@^7.0.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/error/-/error-7.2.1.tgz#eab21a4689b5f684fc83da84a0e390de82d94894" + integrity sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA== + dependencies: + string-template "~0.2.1" + +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-html@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +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" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +follow-redirects@^1.15.11: + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + +form-data@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + +forwarded-parse@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/forwarded-parse/-/forwarded-parse-2.1.2.tgz#08511eddaaa2ddfd56ba11138eee7df117a09325" + integrity sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw== + +fresh@~0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-capacitor@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-6.2.0.tgz#fa79ac6576629163cb84561995602d8999afb7f5" + integrity sha512-nKcE1UduoSKX27NSZlg879LdQc94OtbOsEmKMN2MBNudXREvijRKx2GEBsTMTfws+BrbkJoEuynbGSVRSpauvw== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +generator-function@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2" + integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +glob@^7.1.4: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphql-tools@^4.0.6: + version "4.0.8" + resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.8.tgz#e7fb9f0d43408fb0878ba66b522ce871bafe9d30" + integrity sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg== + dependencies: + apollo-link "^1.2.14" + apollo-utilities "^1.0.1" + deprecated-decorator "^0.1.6" + iterall "^1.1.3" + uuid "^3.1.0" + +graphql-upload@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/graphql-upload/-/graphql-upload-13.0.0.tgz#1a255b64d3cbf3c9f9171fa62a8fb0b9b59bb1d9" + integrity sha512-YKhx8m/uOtKu4Y1UzBFJhbBGJTlk7k4CydlUUiNrtxnwZv0WigbRHP+DVhRNKt7u7DXOtcKZeYJlGtnMXvreXA== + dependencies: + busboy "^0.3.1" + fs-capacitor "^6.2.0" + http-errors "^1.8.1" + object-path "^0.11.8" + +graphql@^14.5.8: + version "14.7.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.7.0.tgz#7fa79a80a69be4a31c27dda824dc04dac2035a72" + integrity sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA== + dependencies: + iterall "^1.2.2" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hexer@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/hexer/-/hexer-1.5.0.tgz#b86ce808598e8a9d1892c571f3cedd86fc9f0653" + integrity sha512-dyrPC8KzBzUJ19QTIo1gXNqIISRXQ0NwteW6OeQHRN4ZuZeHkdODfj0zHBdOlHbRY8GqbqK57C9oWSvQZizFsg== + dependencies: + ansi-color "^0.2.1" + minimist "^1.1.0" + process "^0.10.0" + xtend "^4.0.0" + +http-assert@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" + integrity sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w== + dependencies: + deep-equal "~1.0.1" + http-errors "~1.8.0" + +http-errors@^1.3.1, http-errors@^1.6.3, http-errors@^1.8.1, http-errors@~1.8.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-errors@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b" + integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== + dependencies: + depd "~2.0.0" + inherits "~2.0.4" + setprototypeof "~1.2.0" + statuses "~2.0.2" + toidentifier "~1.0.1" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-lite@~0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +import-in-the-middle@^1.8.1: + version "1.15.0" + resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.15.0.tgz#9e20827a322bbadaeb5e3bac49ea8f6d4685fdd8" + integrity sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA== + dependencies: + acorn "^8.14.0" + acorn-import-attributes "^1.9.5" + cjs-module-lexer "^1.2.2" + module-details-from-path "^1.0.3" + +inflation@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.1.0.tgz#9214db11a47e6f756d111c4f9df96971c60f886c" + integrity sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-core-module@^2.16.1: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.7: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5" + integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA== + dependencies: + call-bound "^1.0.4" + generator-function "^2.0.0" + get-proto "^1.0.1" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + +is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== + dependencies: + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +is-retry-allowed@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" + integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isnumber@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isnumber/-/isnumber-1.0.0.tgz#0e3f9759b581d99dd85086f0ec2a74909cfadd01" + integrity sha512-JLiSz/zsZcGFXPrB4I/AGBvtStkt+8QmksyZBZnVXnnK9XdTEyz0tX8CRYljtwYDuIuZzih6DpHQdi+3Q6zHPw== + +iterall@^1.1.3, iterall@^1.2.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== + +jaeger-client@^3.18.0: + version "3.19.0" + resolved "https://registry.yarnpkg.com/jaeger-client/-/jaeger-client-3.19.0.tgz#9b5bd818ebd24e818616ee0f5cffe1722a53ae6e" + integrity sha512-M0c7cKHmdyEUtjemnJyx/y9uX16XHocL46yQvyqDlPdvAcwPDbHrIbKjQdBqtiE4apQ/9dmr+ZLJYYPGnurgpw== + dependencies: + node-int64 "^0.4.0" + opentracing "^0.14.4" + thriftrw "^3.5.0" + uuid "^8.3.2" + xorshift "^1.1.1" + +js-base64@^2.5.1: + version "2.6.4" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" + integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +keygrip@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" + integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== + dependencies: + tsscmp "1.0.6" + +koa-compose@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-3.2.1.tgz#a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7" + integrity sha512-8gen2cvKHIZ35eDEik5WOo8zbVp9t4cP8p4hW4uE55waxolLRexKKrqfCpwhGVppnB40jWeF8bZeTVg99eZgPw== + dependencies: + any-promise "^1.1.0" + +koa-compose@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" + integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== + +koa-compress@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/koa-compress/-/koa-compress-3.1.0.tgz#00fb0af695dc4661c6de261a18da669626ea3ca1" + integrity sha512-0m24/yS/GbhWI+g9FqtvStY+yJwTObwoxOvPok6itVjRen7PBWkjsJ8pre76m+99YybXLKhOJ62mJ268qyBFMQ== + dependencies: + bytes "^3.0.0" + compressible "^2.0.0" + koa-is-json "^1.0.0" + statuses "^1.0.0" + +koa-convert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5" + integrity sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA== + dependencies: + co "^4.6.0" + koa-compose "^4.1.0" + +koa-is-json@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/koa-is-json/-/koa-is-json-1.0.0.tgz#273c07edcdcb8df6a2c1ab7d59ee76491451ec14" + integrity sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw== + +koa-router@^7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/koa-router/-/koa-router-7.4.0.tgz#aee1f7adc02d5cb31d7d67465c9eacc825e8c5e0" + integrity sha512-IWhaDXeAnfDBEpWS6hkGdZ1ablgr6Q6pGdXCyK38RbzuH4LkUOpPqPw+3f8l8aTDrQmBQ7xJc0bs2yV4dzcO+g== + dependencies: + debug "^3.1.0" + http-errors "^1.3.1" + koa-compose "^3.0.0" + methods "^1.0.1" + path-to-regexp "^1.1.1" + urijs "^1.19.0" + +koa@^2.11.0: + version "2.16.4" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.16.4.tgz#303b996f5c3f2a3bb771c7db5e4303ee05f2265f" + integrity sha512-3An0GCLDSR34tsCO4H8Tef8Pp2ngtaZDAZnsWJYelqXUK5wyiHvGItgK/xcSkmHLSTn1Jcho1mRQs2ehRzvKKw== + dependencies: + accepts "^1.3.5" + cache-content-type "^1.0.0" + content-disposition "~0.5.2" + content-type "^1.0.4" + cookies "~0.9.0" + debug "^4.3.2" + delegates "^1.0.0" + depd "^2.0.0" + destroy "^1.0.4" + encodeurl "^1.0.2" + escape-html "^1.0.3" + fresh "~0.5.2" + http-assert "^1.3.0" + http-errors "^1.6.3" + is-generator-function "^1.0.7" + koa-compose "^4.1.0" + koa-convert "^2.0.0" + on-finished "^2.3.0" + only "~0.0.2" + parseurl "^1.3.2" + statuses "^1.5.0" + type-is "^1.6.16" + vary "^1.1.2" + +lazystream@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + dependencies: + readable-stream "^2.0.5" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== + +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== + +lodash@^4.17.14: + version "4.17.23" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a" + integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== + +long@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/long/-/long-2.4.0.tgz#9fa180bb1d9500cdc29c4156766a1995e1f4524f" + integrity sha512-ijUtjmO/n2A5PaosNG9ZGDsQ3vxJg7ZW8vsY8Kp0f2yIZWhSJvjmegV7t+9RPQKxKrvj8yKGehhS+po14hPLGQ== + +long@^5.0.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" + integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +methods@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +"mime-db@>= 1.43.0 < 2": + version "1.54.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== + +mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimatch@^3.1.1: + version "3.1.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" + integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.0: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +module-details-from-path@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.4.tgz#b662fdcd93f6c83d3f25289da0ce81c8d9685b94" + integrity sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w== + +ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +object-path@^0.11.8: + version "0.11.8" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.8.tgz#ed002c02bbdd0070b78a27455e8ae01fc14d4742" + integrity sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA== + +on-finished@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +only@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" + integrity sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ== + +opentracing@^0.14.4: + version "0.14.7" + resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.7.tgz#25d472bd0296dc0b64d7b94cbc995219031428f5" + integrity sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parseurl@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +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" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@^1.1.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.9.0.tgz#5dc0753acbf8521ca2e0f137b4578b917b10cf24" + integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g== + dependencies: + isarray "0.0.1" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/process/-/process-0.10.1.tgz#842457cc51cfed72dc775afeeafb8c6034372725" + integrity sha512-dyIett8dgGIZ/TXKUzeYExt7WA6ldDzys9vTDU/cCA9L17Ypme+KzS+NjQCjpn9xsvi/shbMC+yP/BcFMBz0NA== + +prom-client@^14.2.0: + version "14.2.0" + resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-14.2.0.tgz#ca94504e64156f6506574c25fb1c34df7812cf11" + integrity sha512-sF308EhTenb/pDRPakm+WgiN+VdM/T1RaHj1x+MvAuT8UiQP8JmOEbxVqtkbfR4LrvOg5n7ic01kRBDGXjYikA== + dependencies: + tdigest "^0.1.1" + +protobufjs@^7.3.0, protobufjs@^7.5.3: + version "7.5.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a" + integrity sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +pump@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.4.tgz#1f313430527fa8b905622ebd22fe1444e757ab3c" + integrity sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +qs@^6.5.1, qs@^6.5.2: + version "6.15.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.0.tgz#db8fd5d1b1d2d6b5b33adaf87429805f1909e7b3" + integrity sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ== + dependencies: + side-channel "^1.1.0" + +querystring@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + +ramda@^0.26.0: + version "0.26.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" + integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== + +raw-body@^2.3.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2" + integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== + dependencies: + bytes "~3.1.2" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + unpipe "~1.0.0" + +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +redis@^0.12.1: + version "0.12.1" + resolved "https://registry.yarnpkg.com/redis/-/redis-0.12.1.tgz#64df76ad0fc8acebaebd2a0645e8a48fac49185e" + integrity sha512-DtqxdmgmVAO7aEyxaXBiUTvhQPOYznTIvmPzs9AwWZqZywM50JlFxQjFhicI+LVbaun7uwfO3izuvc1L8NlPKQ== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-in-the-middle@^7.1.1: + version "7.5.2" + resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz#dc25b148affad42e570cf0e41ba30dc00f1703ec" + integrity sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ== + dependencies: + debug "^4.3.5" + module-details-from-path "^1.0.3" + resolve "^1.22.8" + +resolve@^1.22.8: + version "1.22.11" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" + integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== + dependencies: + is-core-module "^2.16.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rwlock@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/rwlock/-/rwlock-5.0.0.tgz#888d6a77a3351cc1a209204ef2ee1722093836cf" + integrity sha512-XgzRqLMfCcm9QfZuPav9cV3Xin5TRcIlp4X/SH3CvB+x5D2AakdlEepfJKDd8ByncvfpcxNWdRZVUl38PS6ZJg== + +safe-buffer@5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +semver@^5.5.1: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^7.5.2: + version "7.7.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== + +setprototypeof@1.2.0, setprototypeof@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shimmer@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== + +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +"stats-lite@github:vtex/node-stats-lite#v2.2.1": + version "2.2.1" + resolved "https://codeload.github.com/vtex/node-stats-lite/tar.gz/a0b5ee91861f31b6ec845146b4906faf5172c430" + dependencies: + isnumber "~1.0.0" + +"statuses@>= 1.5.0 < 2", statuses@^1.0.0, statuses@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + +streamsearch@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" + integrity sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA== + +string-template@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + integrity sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw== + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +systeminformation@5.23.8: + version "5.23.8" + resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.23.8.tgz#b8efa73b36221cbcb432e3fe83dc1878a43f986a" + integrity sha512-Osd24mNKe6jr/YoXLLK3k8TMdzaxDffhpCxgkfgBHcapykIkd50HXThM3TCEuHO2pPuCsSx2ms/SunqhU5MmsQ== + +tar-fs@^2.0.0: + version "2.1.4" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.4.tgz#800824dbf4ef06ded9afea4acafe71c67c76b930" + integrity sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.0, tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tdigest@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" + integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== + dependencies: + bintrees "1.0.2" + +thriftrw@^3.5.0: + version "3.11.4" + resolved "https://registry.yarnpkg.com/thriftrw/-/thriftrw-3.11.4.tgz#84c990ee89e926631c0b475909ada44ee9249870" + integrity sha512-UcuBd3eanB3T10nXWRRMwfwoaC6VMk7qe3/5YIWP2Jtw+EbHqJ0p1/K3x8ixiR5dozKSSfcg1W+0e33G1Di3XA== + dependencies: + bufrw "^1.2.1" + error "7.0.2" + long "^2.4.0" + +toidentifier@1.0.1, toidentifier@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tokenbucket@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/tokenbucket/-/tokenbucket-0.3.2.tgz#8172b2b58e3083acc8d914426fed15162a3a8e90" + integrity sha512-w0rTsBITjZfssjMh9xaBoQjf1Nx4/F0qPKqPzEB05SyOiAwoCCqGHl332H41LFAVonHMCWCnm3R8tvenjOBd8A== + dependencies: + bluebird "2.9.24" + redis "^0.12.1" + +ts-invariant@^0.4.0: + version "0.4.4" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" + integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== + dependencies: + tslib "^1.9.3" + +tslib@^1.10.0, 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.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== + +type-is@^1.6.16: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typescript@5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.3.tgz#e1b0a3c394190838a0b168e771b0ad56a0af0faa" + integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ== + +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== + +undici-types@~7.18.0: + version "7.18.2" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.18.2.tgz#29357a89e7b7ca4aef3bf0fd3fd0cd73884229e9" + integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +urijs@^1.19.0: + version "1.19.11" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.11.tgz#204b0d6b605ae80bea54bea39280cdb7c9f923cc" + integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912" + integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== + +uuid@^3.1.0, 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: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +vary@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +xorshift@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/xorshift/-/xorshift-1.2.0.tgz#30a4cdd8e9f8d09d959ed2a88c42a09c660e8148" + integrity sha512-iYgNnGyeeJ4t6U11NpA/QiKy+PXn5Aa3Azg5qkwIFz1tBLllQrjjsk9yzD7IAK0naNU4JxdeDgqW9ov4u/hc4g== + +xss@^1.0.6: + version "1.0.15" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.15.tgz#96a0e13886f0661063028b410ed1b18670f4e59a" + integrity sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg== + dependencies: + commander "^2.20.3" + cssfilter "0.0.10" + +xtend@^4.0.0, xtend@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +ylru@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.4.0.tgz#0cf0aa57e9c24f8a2cbde0cc1ca2c9592ac4e0f6" + integrity sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA== + +zen-observable-ts@^0.8.21: + version "0.8.21" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d" + integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg== + dependencies: + tslib "^1.9.3" + zen-observable "^0.8.0" + +zen-observable@^0.8.0: + version "0.8.15" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== + +zip-stream@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.3.tgz#26cc4bdb93641a8590dd07112e1f77af1758865b" + integrity sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q== + dependencies: + archiver-utils "^2.1.0" + compress-commons "^2.1.1" + readable-stream "^3.4.0"