New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

@maeum/schema-controller

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@maeum/schema-controller

maeum framework schema-controller

latest
Source
npmnpm
Version
1.7.0
Version published
Maintainers
1
Created
Source

@maeum/schema-controller

ts Download Status Github Star Github Issues NPM version @maeum/schema-controller License codecov code style: prettier

The @maeum/schema-controller is a package that helps developer to integreate schema-nozzle and fastify.js. Developer can generate a json-schema via schema-nozzle and then use as a schema in fastify.js request/response.

Why use @maeum/schema-controller?

  • You can decouple the schema-controller from fastify.js
  • Less effort to set up route configuration in fastify.js
  • You can add json-schema validation to messages received from MQ (RabbitMQ, ActiveMQ, SQS, etc), server configurations, and anywhere else you want.

Table of Contents

Getting Started

installation

npm install @maeum/schema-controller --save

Configuration

import fastify from 'fastify';
import { SchemaController } from '@maeum/schema-controller';

const listen = () => {
  // step 01. bootstrap your json-schema database
  SchemaController.bootstrap(false, {
    // set your json-schema database file-path
    filePath: path.join(getCwd(process.env), 'resources', 'configs', 'store.json'),
  });

  const server = fastify()

  // step 02. your schema controller pass to fastify.js
  server.setSchemaController(SchemaController.it.getFastifyController(server));
}

listen();

How to work?

The schema-nozzle generate as json-schema database file that is available in @maeum/schema-controller. This generated json-schema database file is read from @ameum/schema-controller and then use to set up the schema in fastify.js routing.

server.post('/pet', { schema: { querystring: { $ref: 'ICreatePetDto' } } }, (req: FastifyRequest<{ Querystring: ICreatePetDto }>, reply) => {
  // ...your code
  // You can use auto-complete and intellisence Request Object like that,
  // `req.query.name`
})
flowchart LR
    SN[schema-nozzle]
    DB[store.json]
    SC[schema-controller]
    RC[fastify.js<br /> route configuration<br /> swagger document]

    SN-->|TypeScript interface<br />convert to json-schema|DB
    DB-->SC
    SC-->|fastify.js schema-controller|RC

Custom ajv Options

fastify.js uses ajv for request data validation. If you want to change the options of the ajv instance, you can pass custom options as shown below.

SchemaController.bootstrap(false, {
  filePath: path.join(getCwd(process.env), 'resources', 'configs', 'store.json'),
  ajv: {
    // custom option of ajv instance
    options: {
      coerceTypes: 'array',
      keywords: ['collectionFormat', 'example', 'binary'],
      formats: {
        binary: { type: 'string', validate: () => true },
        byte: { type: 'string', validate: () => true },
      },
    },
    // extension apply on ajv
    extension: (ajv) => { 
      ajvFormat(ajv);
    },
});

Relate To

License

This software is licensed under the MIT.

Keywords

maeum

FAQs

Package last updated on 08 Jun 2024

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