UNPKG

@azure/cosmos

Version:
148 lines (147 loc) 6.14 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var BulkResponse_exports = {}; __export(BulkResponse_exports, { BulkResponse: () => BulkResponse }); module.exports = __toCommonJS(BulkResponse_exports); var import_constants = require("../common/constants.js"); var import_statusCodes = require("../common/statusCodes.js"); var import__ = require("../index.js"); var import_batch = require("../utils/batch.js"); class BulkResponse { statusCode; subStatusCode; headers; operations; results = []; diagnostics; constructor(statusCode, subStatusCode, headers, operations) { this.statusCode = statusCode; this.subStatusCode = subStatusCode; this.headers = headers; this.operations = operations; } /** * Generate empty response object */ static createEmptyResponse(operations, statusCode, subStatusCode, headers) { const bulkResponse = new BulkResponse(statusCode, subStatusCode, headers, operations); bulkResponse.createAndPopulateResults(operations, 0, new import__.ErrorResponse()); return bulkResponse; } /** * static method to create BulkResponse from Response object */ static fromResponseMessage(responseMessage, operations) { let bulkResponse = this.populateFromResponse(responseMessage, operations); if (!bulkResponse.results || bulkResponse.results.length !== operations.length) { if ((0, import_batch.isSuccessStatusCode)(responseMessage.code)) { bulkResponse = new BulkResponse( import_statusCodes.StatusCodes.InternalServerError, import_statusCodes.SubStatusCodes.Unknown, responseMessage.headers, operations ); } let retryAfterMilliseconds = 0; if (responseMessage.code === import_statusCodes.StatusCodes.TooManyRequests) { const retryAfter = responseMessage.headers?.[import_constants.Constants.HttpHeaders.RetryAfterInMs]; retryAfterMilliseconds = !retryAfter || isNaN(Number(retryAfter)) ? 0 : Number(retryAfter); } bulkResponse.createAndPopulateResults( operations, retryAfterMilliseconds, responseMessage ); } return bulkResponse; } static populateFromResponse(responseMessage, operations) { const results = []; if (responseMessage.result) { for (let i = 0; i < operations.length; i++) { const itemResponse = responseMessage.result[i]; if ((0, import_batch.isSuccessStatusCode)(itemResponse?.statusCode)) { const result = { statusCode: itemResponse?.statusCode, eTag: itemResponse?.eTag, activityId: responseMessage.headers?.[import_constants.Constants.HttpHeaders.ActivityId], sessionToken: responseMessage.headers?.[import_constants.Constants.HttpHeaders.SessionToken], requestCharge: itemResponse?.requestCharge, resourceBody: itemResponse?.resourceBody, // diagnostics will be filled in Batcher dispatch to capture the complete diagnostics(e.g. decryption) diagnostics: null, headers: responseMessage.headers }; results.push(result); } else { const error = new import__.ErrorResponse(); error.code = itemResponse?.statusCode; error.substatus = itemResponse?.subStatusCode; error.message = itemResponse?.message; error.requestCharge = itemResponse?.requestCharge; error.body = itemResponse?.resourceBody; error.headers = responseMessage.headers; error.activityId = responseMessage.headers?.[import_constants.Constants.HttpHeaders.ActivityId]; error.retryAfterInMs = itemResponse?.retryAfterMilliseconds; error.diagnostics = responseMessage.diagnostics; results.push(error); } } } let statusCode = responseMessage.code; let subStatusCode = responseMessage.substatus; if (responseMessage.code === import_statusCodes.StatusCodes.MultiStatus) { for (const result of results) { if (result instanceof import__.ErrorResponse && result.statusCode !== import_statusCodes.StatusCodes.FailedDependency && result.statusCode >= import_statusCodes.StatusCodes.BadRequest) { statusCode = typeof result.code === "number" ? result.code : Number(result.code); subStatusCode = result.substatus; break; } } } const bulkResponse = new BulkResponse( statusCode, subStatusCode, responseMessage.headers, operations ); bulkResponse.results = results; return bulkResponse; } createAndPopulateResults(operations, retryAfterInMs, error) { this.results = operations.map(() => { const errorResponse = new import__.ErrorResponse(); errorResponse.message = error.message; errorResponse.code = this.statusCode; errorResponse.substatus = this.subStatusCode; errorResponse.retryAfterInMs = retryAfterInMs; errorResponse.activityId = this.headers?.[import_constants.Constants.HttpHeaders.ActivityId]; errorResponse.body = error.body; errorResponse.diagnostics = error.diagnostics; errorResponse.headers = this.headers; errorResponse.requestCharge = error.requestCharge; return errorResponse; }); } } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { BulkResponse });