npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

insac

v3.1.4

Published

Framework de creación de servicios web basado en lenguaje script que utiliza arquitectura REST.

Downloads

97

Readme

Insac JS es un framework de creación de servicios web basado en lenguaje script que utiliza arquitectura REST. Está enfocado en la organización, automatización y reutilización de código.

La documentación se encuentra disponible en la página https://insacjs.com.

Para crear nuevos proyectos, utilice la Interfaz de línea de comandos INSAC CLI

Tecnologías utilizadas

El framework ha sido implementado utilizando el lenguaje JavaScript bajo el estándar de programación ECMAScript 2017, esto por el potencial que alcanzó el lenguaje gracias a NodeJS, un entorno de ejecución para JavaScript construido con el motor de JavaScript V8 de Chrome.

NodeJS permite crear aplicaciones del lado del servidor, además de que es una excelente herramienta para crear servicios web gracias a su modelo de operaciones E/S sin bloqueo orientado a eventos, que lo hace liviano y eficiente.

A continuación de describen las diferentes tecnologías y herramientas mas importantes con las que trabaja el framework:

| Nombre | Versión | Descripción | | ----------- | -------- | -------------------------------------------------------------- | | NodeJS | ^8.0 | Entorno de programación de JavaScript. | | MPM | ^6.3 | Gestor de paquetes de NodeJS. | | Express | ^4.16 | Framework de NodeJS. | | Sequelize | ^4.37 | Framework ORM de NodeJS. | | Yarn | ^1.7 | Manejador de dependencias. | | PM2 | ^2.7 | Gestor avanzado de procesos de producción para NodeJS. | | Git | ^2.7 | Sistema de control de versiones distribuido de código abierto. | | Eslint | ^4.19 | Herramienta de linting para JavaScript. |

Soporta los siguientes gestores de base de datos:

| Nombre | Versión | | ------------- | -------- | | PostgreSQL | ^9.4 | | MySQL | ^5.7 | | MSSQLSERVER | 2017 | | SQLite | 3.24 |

Características

Entre las características más importantes del framework se encuentran las siguientes:

  • Estructura de proyecto: Utiliza un sistema que permite identificar a los componentes de la aplicación y sus respectivas funciones a través del nombre y la extensión de los ficheros.

  • Creación automática del APIDOC: Crea el APIDOC de manera automática cada vez que se ejecuta la aplicación, de esta forma se garantiza que siempre estará actualizada.

  • Validador automático: Valida los datos de entrada de forma automática, cuando los datos llegan al Middleware o al Controlador, éstos ya se encuentran validados y convertidos al tipo de dato correspondiente.

  • Sistema de filtrado de datos: Por defecto, todas las peticiones incluyen un sistema de filtrado por campos, adicionalmente, es posible optimizar la consulta con la base de datos utilizando los filtros que se envían a través de la URL.

  • Esquemas de base de datos: Sobre una base de datos, se crea un esquema para cada módulo, de esta forma es posible tener dos tablas o modelos con el mismo nombre, pero en diferentes módulos. Es posible relacionar modelos de diferentes módulos.

  • Sistema de logs: Por defecto, se muestran mensajes en la terminal para monitorear todas las peticiones y éstas se registran en ficheros de logs.

Referencias externas

Ejemplo.-

Para preparar un proyecto básico, desde la terminal ejecuta los siguientes comandos:

# Crea la carpeta del proyecto
$ mkdir app
$ cd app

# Inicializa el gestor de paquetes de Node.
$ npm init

# Instala el framework
$ npm install --save insac

Posteriormente, deberá crear algunos archivos con la siguiente estructura:

app
  ├─ src
  │     └─ modules
  │           └─ API
  │                 ├─ resources
  │                 │     └─ welcome
  │                 │           ├─ welcome.controller.js
  │                 │           ├─ welcome.input.js
  │                 │           ├─ welcome.output.js
  │                 │           └─ welcome.route.js
  │                 └─ api.module.js
  ├─ node_modules
  ├─ index.js
  └─ package.json

Y el siguiente contenido:

api.module.js

const { Module } = require('insac')

module.exports = (app) => {
  return new Module(app.config.API)
}

welcome.route.js

module.exports = (app) => {
  const ROUTE = {}

  ROUTE.hello = {
    path   : '/welcome/hello/:name',
    method : 'get'
  }

  return ROUTE
}

welcome.input.js

const { Field } = require('insac')

module.exports = (app) => {
  const INPUT = {}

  INPUT.hello = {
    params: {
      name: Field.STRING({ allowNull: false })
    },
    query: {
      number: Field.INTEGER({ allowNull: false })
    }
  }

  return INPUT
}

welcome.output.js

const { Field } = require('insac')

module.exports = (app) => {
  const OUTPUT = {}

  OUTPUT.hello = {
    message : Field.STRING(),
    number  : Field.INTEGER()
  }

  return OUTPUT
}

welcome.controller.js

module.exports = (app) => {
  const CONTROLLER = {}

  CONTROLLER.hello = async (req, res, next) => {
    try {
      const NAME   = req.params.name
      const NUMBER = req.query.number
      const RESULT = { message: `Hola ${NAME}!!!`, number: NUMBER }
      res.success200(RESULT, 'Mensaje enviado exitosamente.')
    } catch (err) { return next(err) }
  }

  return CONTROLLER
}

index.js

const { Insac } = require('insac')

const service = new Insac()

service.addModule('api')

service.init().catch(e => {
  console.log(e)
  process.exit(1)
})

module.exports = service

Después, ejecuta la aplicación:

$ node index.js

http://localhost:4000

Captura 1

http://localhost:4000/apidoc/API

Captura 2

Petición de ejemplo

Captura 3

Mensajes de logs

Captura 4