basant307/AI_Governance_Project
048
1"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }2 3var _chunkPFGO5BSMjs = require('./chunk-PFGO5BSM.js');4 5 6var _chunk73NOP3T5js = require('./chunk-73NOP3T5.js');7 8 9 10 11var _chunkC2JSMMHYjs = require('./chunk-C2JSMMHY.js');12 13 14 15 16 17var _chunkA7U44ARPjs = require('./chunk-A7U44ARP.js');18 19 20var _chunkSMXZPJEAjs = require('./chunk-SMXZPJEA.js');21 22// src/interceptors/fetch/index.ts23var _outvariant = require('outvariant');24var _deferredpromise = require('@open-draft/deferred-promise');25 26// src/interceptors/fetch/utils/createNetworkError.ts27function createNetworkError(cause) {28 return Object.assign(new TypeError("Failed to fetch"), {29 cause30 });31}32 33// src/interceptors/fetch/utils/followRedirect.ts34var REQUEST_BODY_HEADERS = [35 "content-encoding",36 "content-language",37 "content-location",38 "content-type",39 "content-length"40];41var kRedirectCount = Symbol("kRedirectCount");42async function followFetchRedirect(request, response) {43 if (response.status !== 303 && request.body != null) {44 return Promise.reject(createNetworkError());45 }46 const requestUrl = new URL(request.url);47 let locationUrl;48 try {49 locationUrl = new URL(response.headers.get("location"), request.url);50 } catch (error) {51 return Promise.reject(createNetworkError(error));52 }53 if (!(locationUrl.protocol === "http:" || locationUrl.protocol === "https:")) {54 return Promise.reject(55 createNetworkError("URL scheme must be a HTTP(S) scheme")56 );57 }58 if (Reflect.get(request, kRedirectCount) > 20) {59 return Promise.reject(createNetworkError("redirect count exceeded"));60 }61 Object.defineProperty(request, kRedirectCount, {62 value: (Reflect.get(request, kRedirectCount) || 0) + 163 });64 if (request.mode === "cors" && (locationUrl.username || locationUrl.password) && !sameOrigin(requestUrl, locationUrl)) {65 return Promise.reject(66 createNetworkError('cross origin not allowed for request mode "cors"')67 );68 }69 const requestInit = {};70 if ([301, 302].includes(response.status) && request.method === "POST" || response.status === 303 && !["HEAD", "GET"].includes(request.method)) {71 requestInit.method = "GET";72 requestInit.body = null;73 REQUEST_BODY_HEADERS.forEach((headerName) => {74 request.headers.delete(headerName);75 });76 }77 if (!sameOrigin(requestUrl, locationUrl)) {78 request.headers.delete("authorization");79 request.headers.delete("proxy-authorization");80 request.headers.delete("cookie");81 request.headers.delete("host");82 }83 requestInit.headers = request.headers;84 return fetch(new Request(locationUrl, requestInit));85}86function sameOrigin(left, right) {87 if (left.origin === right.origin && left.origin === "null") {88 return true;89 }90 if (left.protocol === right.protocol && left.hostname === right.hostname && left.port === right.port) {91 return true;92 }93 return false;94}95 96// src/interceptors/fetch/utils/brotli-decompress.ts97var _zlib = require('zlib'); var _zlib2 = _interopRequireDefault(_zlib);98var BrotliDecompressionStream = class extends TransformStream {99 constructor() {100 const decompress = _zlib2.default.createBrotliDecompress({101 flush: _zlib2.default.constants.BROTLI_OPERATION_FLUSH,102 finishFlush: _zlib2.default.constants.BROTLI_OPERATION_FLUSH103 });104 super({105 async transform(chunk, controller) {106 const buffer = Buffer.from(chunk);107 const decompressed = await new Promise((resolve, reject) => {108 decompress.write(buffer, (error) => {109 if (error)110 reject(error);111 });112 decompress.flush();113 decompress.once("data", (data) => resolve(data));114 decompress.once("error", (error) => reject(error));115 decompress.once("end", () => controller.terminate());116 }).catch((error) => {117 controller.error(error);118 });119 controller.enqueue(decompressed);120 }121 });122 }123};124 125// src/interceptors/fetch/utils/decompression.ts126var PipelineStream = class extends TransformStream {127 constructor(transformStreams, ...strategies) {128 super({}, ...strategies);129 const readable = [super.readable, ...transformStreams].reduce(130 (readable2, transform) => readable2.pipeThrough(transform)131 );132 Object.defineProperty(this, "readable", {133 get() {134 return readable;135 }136 });137 }138};139function parseContentEncoding(contentEncoding) {140 return contentEncoding.toLowerCase().split(",").map((coding) => coding.trim());141}142function createDecompressionStream(contentEncoding) {143 if (contentEncoding === "") {144 return null;145 }146 const codings = parseContentEncoding(contentEncoding);147 if (codings.length === 0) {148 return null;149 }150 const transformers = codings.reduceRight(151 (transformers2, coding) => {152 if (coding === "gzip" || coding === "x-gzip") {153 return transformers2.concat(new DecompressionStream("gzip"));154 } else if (coding === "deflate") {155 return transformers2.concat(new DecompressionStream("deflate"));156 } else if (coding === "br") {157 return transformers2.concat(new BrotliDecompressionStream());158 } else {159 transformers2.length = 0;160 }161 return transformers2;162 },163 []164 );165 return new PipelineStream(transformers);166}167function decompressResponse(response) {168 if (response.body === null) {169 return null;170 }171 const decompressionStream = createDecompressionStream(172 response.headers.get("content-encoding") || ""173 );174 if (!decompressionStream) {175 return null;176 }177 response.body.pipeTo(decompressionStream.writable);178 return decompressionStream.readable;179}180 181// src/interceptors/fetch/index.ts182var _FetchInterceptor = class extends _chunkA7U44ARPjs.Interceptor {183 constructor() {184 super(_FetchInterceptor.symbol);185 }186 checkEnvironment() {187 return _chunkPFGO5BSMjs.hasConfigurableGlobal.call(void 0, "fetch");188 }189 async setup() {190 const pureFetch = globalThis.fetch;191 _outvariant.invariant.call(void 0, 192 !pureFetch[_chunk73NOP3T5js.IS_PATCHED_MODULE],193 'Failed to patch the "fetch" module: already patched.'194 );195 globalThis.fetch = async (input, init) => {196 const requestId = _chunkA7U44ARPjs.createRequestId.call(void 0, );197 const resolvedInput = typeof input === "string" && typeof location !== "undefined" && !_chunkA7U44ARPjs.canParseUrl.call(void 0, input) ? new URL(input, location.href) : input;198 const request = new Request(resolvedInput, init);199 if (input instanceof Request) {200 _chunkSMXZPJEAjs.setRawRequest.call(void 0, request, input);201 }202 const responsePromise = new (0, _deferredpromise.DeferredPromise)();203 const controller = new (0, _chunkC2JSMMHYjs.RequestController)(request);204 this.logger.info("[%s] %s", request.method, request.url);205 this.logger.info("awaiting for the mocked response...");206 this.logger.info(207 'emitting the "request" event for %s listener(s)...',208 this.emitter.listenerCount("request")209 );210 const isRequestHandled = await _chunkC2JSMMHYjs.handleRequest.call(void 0, {211 request,212 requestId,213 emitter: this.emitter,214 controller,215 onResponse: async (rawResponse) => {216 this.logger.info("received mocked response!", {217 rawResponse218 });219 const decompressedStream = decompressResponse(rawResponse);220 const response = decompressedStream === null ? rawResponse : new (0, _chunkA7U44ARPjs.FetchResponse)(decompressedStream, rawResponse);221 _chunkA7U44ARPjs.FetchResponse.setUrl(request.url, response);222 if (_chunkA7U44ARPjs.FetchResponse.isRedirectResponse(response.status)) {223 if (request.redirect === "error") {224 responsePromise.reject(createNetworkError("unexpected redirect"));225 return;226 }227 if (request.redirect === "follow") {228 followFetchRedirect(request, response).then(229 (response2) => {230 responsePromise.resolve(response2);231 },232 (reason) => {233 responsePromise.reject(reason);234 }235 );236 return;237 }238 }239 if (this.emitter.listenerCount("response") > 0) {240 this.logger.info('emitting the "response" event...');241 await _chunkC2JSMMHYjs.emitAsync.call(void 0, this.emitter, "response", {242 // Clone the mocked response for the "response" event listener.243 // This way, the listener can read the response and not lock its body244 // for the actual fetch consumer.245 response: response.clone(),246 isMockedResponse: true,247 request,248 requestId249 });250 }251 responsePromise.resolve(response);252 },253 onRequestError: (response) => {254 this.logger.info("request has errored!", { response });255 responsePromise.reject(createNetworkError(response));256 },257 onError: (error) => {258 this.logger.info("request has been aborted!", { error });259 responsePromise.reject(error);260 }261 });262 if (isRequestHandled) {263 this.logger.info("request has been handled, returning mock promise...");264 return responsePromise;265 }266 this.logger.info(267 "no mocked response received, performing request as-is..."268 );269 const requestCloneForResponseEvent = request.clone();270 return pureFetch(request).then(async (response) => {271 this.logger.info("original fetch performed", response);272 if (this.emitter.listenerCount("response") > 0) {273 this.logger.info('emitting the "response" event...');274 const responseClone = response.clone();275 await _chunkC2JSMMHYjs.emitAsync.call(void 0, this.emitter, "response", {276 response: responseClone,277 isMockedResponse: false,278 request: requestCloneForResponseEvent,279 requestId280 });281 }282 return response;283 });284 };285 Object.defineProperty(globalThis.fetch, _chunk73NOP3T5js.IS_PATCHED_MODULE, {286 enumerable: true,287 configurable: true,288 value: true289 });290 this.subscriptions.push(() => {291 Object.defineProperty(globalThis.fetch, _chunk73NOP3T5js.IS_PATCHED_MODULE, {292 value: void 0293 });294 globalThis.fetch = pureFetch;295 this.logger.info(296 'restored native "globalThis.fetch"!',297 globalThis.fetch.name298 );299 });300 }301};302var FetchInterceptor = _FetchInterceptor;303FetchInterceptor.symbol = Symbol("fetch");304 305 306 307exports.FetchInterceptor = FetchInterceptor;308//# sourceMappingURL=chunk-YAIEISAR.js.map