source: frontend/node_modules/http-proxy-middleware/dist/config-factory.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.7 KB
Line 
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.createConfig = void 0;
4const isPlainObj = require("is-plain-obj");
5const url = require("url");
6const errors_1 = require("./errors");
7const logger_1 = require("./logger");
8const logger = (0, logger_1.getInstance)();
9function createConfig(context, opts) {
10 // structure of config object to be returned
11 const config = {
12 context: undefined,
13 options: {},
14 };
15 // app.use('/api', proxy({target:'http://localhost:9000'}));
16 if (isContextless(context, opts)) {
17 config.context = '/';
18 config.options = Object.assign(config.options, context);
19 // app.use('/api', proxy('http://localhost:9000'));
20 // app.use(proxy('http://localhost:9000/api'));
21 }
22 else if (isStringShortHand(context)) {
23 const oUrl = url.parse(context);
24 const target = [oUrl.protocol, '//', oUrl.host].join('');
25 config.context = oUrl.pathname || '/';
26 config.options = Object.assign(config.options, { target }, opts);
27 if (oUrl.protocol === 'ws:' || oUrl.protocol === 'wss:') {
28 config.options.ws = true;
29 }
30 // app.use('/api', proxy({target:'http://localhost:9000'}));
31 }
32 else {
33 config.context = context;
34 config.options = Object.assign(config.options, opts);
35 }
36 configureLogger(config.options);
37 if (!config.options.target && !config.options.router) {
38 throw new Error(errors_1.ERRORS.ERR_CONFIG_FACTORY_TARGET_MISSING);
39 }
40 return config;
41}
42exports.createConfig = createConfig;
43/**
44 * Checks if a String only target/config is provided.
45 * This can be just the host or with the optional path.
46 *
47 * @example
48 * app.use('/api', proxy('http://localhost:9000'));
49 * app.use(proxy('http://localhost:9000/api'));
50 *
51 * @param {String} context [description]
52 * @return {Boolean} [description]
53 */
54function isStringShortHand(context) {
55 if (typeof context === 'string') {
56 return !!url.parse(context).host;
57 }
58}
59/**
60 * Checks if a Object only config is provided, without a context.
61 * In this case the all paths will be proxied.
62 *
63 * @example
64 * app.use('/api', proxy({target:'http://localhost:9000'}));
65 *
66 * @param {Object} context [description]
67 * @param {*} opts [description]
68 * @return {Boolean} [description]
69 */
70function isContextless(context, opts) {
71 return isPlainObj(context) && (opts == null || Object.keys(opts).length === 0);
72}
73function configureLogger(options) {
74 if (options.logLevel) {
75 logger.setLevel(options.logLevel);
76 }
77 if (options.logProvider) {
78 logger.setProvider(options.logProvider);
79 }
80}
Note: See TracBrowser for help on using the repository browser.