New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@ffdc/nestjs-proxy

Package Overview
Dependencies
Maintainers
5
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ffdc/nestjs-proxy

NestJS module to decorate and proxy calls.\ It exposes a `/proxy` endpoint.

  • 0.4.0
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
11
increased by120%
Maintainers
5
Weekly downloads
 
Created
Source

Proxy module

NestJS module to decorate and proxy calls.
It exposes a /proxy endpoint.

Use it

You can import the module like so :

app.module.ts

ProxyModule.forRoot({
    config: {},
    services: [
      {
        id: 'ACCOUNT_INFORMATION_US',
        url: `https://api.fusionfabric.cloud/retail-us/me/account/v1/accounts`,
        config: {}
      }
    ]
}),

Or asynchronously

app.module.ts

ProxyModule.forRootAsync({
    useClass: ProxyConfigService,
    imports: [ConfigModule],
}),

proxy-config.service.ts

import { ConfigService } from '@nestjs/config';
import { Injectable, Logger } from '@nestjs/common';
import { ProxyModuleOptions, ProxyModuleOptionsFactory } from '@ffdc/nestjs-proxy';

@Injectable()
export class ProxyConfigService implements ProxyModuleOptionsFactory {
  constructor(private configService: ConfigService) {}

  createModuleConfig(): ProxyModuleOptions {
    const FFDC = this.configService.get('FFDC');

    const services = [
      {
        id: 'ACCOUNT_INFORMATION_US',
        url: `${FFDC}/retail-us/me/account/v1/accounts`,
        config: {}
      };
    ];

    return {
      services,
    };
  }
}

Configuration

Whether synchronously or asynchronously, the module takes two parameters (both optionals).

  • services : which is a collection of urls with a given id so that you can query them more efficiently
  • config : which is the configuration from http-proxy which we're using under the hood. Find the offical documentation of this configuration here.

A service can also take an optional config, which is the same signature as the parent one, allowing you to override configuration for that particular service !

Default module configuration

If you do not provide any, the default proxy configuration for this module can be found in proxy.constants.ts, under defaultProxyOptions

Client-side usage examples

Requesting without pre-defined service

const serverUri = 'http://localhost:3000';
const target = 'http://localhost:3001/cats';

// GET
fetch(`${serverUri}/proxy?target=${target}`);

// POST
const data = { name: 'Garfield' };
fetch(`${serverUri}/proxy?target=${target}`, {
  method: 'POST',
  body: JSON.stringify(data),
});

Requesting a specific service

const serverUri = 'http://localhost:3000';
const serviceId = 'ACCOUNT_INFORMATION_US';

fetch(`${serverUri}/proxy?serviceId=${serviceId}`);

// Defining path
const accountId = '112';
const target = `${accountId}/details`;
fetch(`${serverUri}/proxy?serviceId=${serviceId}&target=${target}`);

Using module with a service using OIDC module with multitenancy configuration

All proxy calls need to be prefixed by /${TENANT_ID}/${CHANEL_TYPE}

FAQs

Package last updated on 17 Sep 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc