UNPKG

7 kBJavaScriptView Raw
1"use strict";
2/**
3 * -------------------------------------------------------------------------------------------
4 * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.
5 * See License in the project root for license information.
6 * -------------------------------------------------------------------------------------------
7 */
8Object.defineProperty(exports, "__esModule", { value: true });
9exports.cloneRequestWithNewUrl = exports.appendRequestHeader = exports.setRequestHeader = exports.getRequestHeader = exports.generateUUID = void 0;
10var tslib_1 = require("tslib");
11/**
12 * @constant
13 * To generate the UUID
14 * @returns The UUID string
15 */
16var generateUUID = function () {
17 var uuid = "";
18 for (var j = 0; j < 32; j++) {
19 if (j === 8 || j === 12 || j === 16 || j === 20) {
20 uuid += "-";
21 }
22 uuid += Math.floor(Math.random() * 16).toString(16);
23 }
24 return uuid;
25};
26exports.generateUUID = generateUUID;
27/**
28 * @constant
29 * To get the request header from the request
30 * @param {RequestInfo} request - The request object or the url string
31 * @param {FetchOptions|undefined} options - The request options object
32 * @param {string} key - The header key string
33 * @returns A header value for the given key from the request
34 */
35var getRequestHeader = function (request, options, key) {
36 var value = null;
37 if (typeof Request !== "undefined" && request instanceof Request) {
38 value = request.headers.get(key);
39 }
40 else if (typeof options !== "undefined" && options.headers !== undefined) {
41 if (typeof Headers !== "undefined" && options.headers instanceof Headers) {
42 value = options.headers.get(key);
43 }
44 else if (options.headers instanceof Array) {
45 var headers = options.headers;
46 for (var i = 0, l = headers.length; i < l; i++) {
47 if (headers[i][0] === key) {
48 value = headers[i][1];
49 break;
50 }
51 }
52 }
53 else if (options.headers[key] !== undefined) {
54 value = options.headers[key];
55 }
56 }
57 return value;
58};
59exports.getRequestHeader = getRequestHeader;
60/**
61 * @constant
62 * To set the header value to the given request
63 * @param {RequestInfo} request - The request object or the url string
64 * @param {FetchOptions|undefined} options - The request options object
65 * @param {string} key - The header key string
66 * @param {string } value - The header value string
67 * @returns Nothing
68 */
69var setRequestHeader = function (request, options, key, value) {
70 var _a, _b;
71 if (typeof Request !== "undefined" && request instanceof Request) {
72 request.headers.set(key, value);
73 }
74 else if (typeof options !== "undefined") {
75 if (options.headers === undefined) {
76 options.headers = new Headers((_a = {},
77 _a[key] = value,
78 _a));
79 }
80 else {
81 if (typeof Headers !== "undefined" && options.headers instanceof Headers) {
82 options.headers.set(key, value);
83 }
84 else if (options.headers instanceof Array) {
85 var i = 0;
86 var l = options.headers.length;
87 for (; i < l; i++) {
88 var header = options.headers[i];
89 if (header[0] === key) {
90 header[1] = value;
91 break;
92 }
93 }
94 if (i === l) {
95 options.headers.push([key, value]);
96 }
97 }
98 else {
99 Object.assign(options.headers, (_b = {}, _b[key] = value, _b));
100 }
101 }
102 }
103};
104exports.setRequestHeader = setRequestHeader;
105/**
106 * @constant
107 * To append the header value to the given request
108 * @param {RequestInfo} request - The request object or the url string
109 * @param {FetchOptions|undefined} options - The request options object
110 * @param {string} key - The header key string
111 * @param {string } value - The header value string
112 * @returns Nothing
113 */
114var appendRequestHeader = function (request, options, key, value) {
115 var _a, _b;
116 if (typeof Request !== "undefined" && request instanceof Request) {
117 request.headers.append(key, value);
118 }
119 else if (typeof options !== "undefined") {
120 if (options.headers === undefined) {
121 options.headers = new Headers((_a = {},
122 _a[key] = value,
123 _a));
124 }
125 else {
126 if (typeof Headers !== "undefined" && options.headers instanceof Headers) {
127 options.headers.append(key, value);
128 }
129 else if (options.headers instanceof Array) {
130 options.headers.push([key, value]);
131 }
132 else if (options.headers === undefined) {
133 options.headers = (_b = {}, _b[key] = value, _b);
134 }
135 else if (options.headers[key] === undefined) {
136 options.headers[key] = value;
137 }
138 else {
139 options.headers[key] += ", ".concat(value);
140 }
141 }
142 }
143};
144exports.appendRequestHeader = appendRequestHeader;
145/**
146 * @constant
147 * To clone the request with the new url
148 * @param {string} url - The new url string
149 * @param {Request} request - The request object
150 * @returns A promise that resolves to request object
151 */
152var cloneRequestWithNewUrl = function (newUrl, request) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
153 var body, _a, method, headers, referrer, referrerPolicy, mode, credentials, cache, redirect, integrity, keepalive, signal;
154 return tslib_1.__generator(this, function (_b) {
155 switch (_b.label) {
156 case 0:
157 if (!request.headers.get("Content-Type")) return [3 /*break*/, 2];
158 return [4 /*yield*/, request.blob()];
159 case 1:
160 _a = _b.sent();
161 return [3 /*break*/, 4];
162 case 2: return [4 /*yield*/, Promise.resolve(undefined)];
163 case 3:
164 _a = _b.sent();
165 _b.label = 4;
166 case 4:
167 body = _a;
168 method = request.method, headers = request.headers, referrer = request.referrer, referrerPolicy = request.referrerPolicy, mode = request.mode, credentials = request.credentials, cache = request.cache, redirect = request.redirect, integrity = request.integrity, keepalive = request.keepalive, signal = request.signal;
169 return [2 /*return*/, new Request(newUrl, { method: method, headers: headers, body: body, referrer: referrer, referrerPolicy: referrerPolicy, mode: mode, credentials: credentials, cache: cache, redirect: redirect, integrity: integrity, keepalive: keepalive, signal: signal })];
170 }
171 });
172}); };
173exports.cloneRequestWithNewUrl = cloneRequestWithNewUrl;
174//# sourceMappingURL=MiddlewareUtil.js.map
\No newline at end of file