@triptyk/jsonapi-server
TypeScript icon, indicating that this package has built-in type declarations

0.1.2 • Public • Published

JSONAP-TESTING-SERVER

A development server with an in-memory database supporting json-api specification.

Still WIP.

JSON models

You can provide json models that will be be automatically loaded into the fake database

{
  "projects": [
    {
      "id": "1",
      "title": "Project One",
      "details": "This is a sample project",
      "percentComplete": 20,
      "approved": false,
      "startDate": null,
      "targetDate": null,
      "completionDate": null,
      "customers#creator": "1",
      "customers#customers": [
        "1",
        "2"
      ]
    },
    {
      "id": "2",
      "title": "Project Two",
      "details": "This is a sample project",
      "percentComplete": 40,
      "approved": false,
      "startDate": null,
      "targetDate": null,
      "completionDate": null,
      "customers#creator": "2",
      "customers#customers": [
        "1",
        "2"
      ]
    },
    {
      "id": "3",
      "title": "Project Three",
      "details": "This is a sample project",
      "percentComplete": 60,
      "approved": false,
      "startDate": null,
      "targetDate": null,
      "completionDate": null,
      "customers#creator": "3",
      "customers#customers": [
        "1",
        "2"
      ]
    }
  ]
}

Relations

Relations are recognized this way : "<entityType>#<relationName>": "<id>",

    "customers#creator": "3",

The id can also be an array of ids :

    "customers#creators": ["3","2","1"],

:note: : the IDs MUST exist otherwise it will throw errors on startup

Relations are created two ways :

    "customers#creators": ["3","1"]

if your relation is in a projects.json file , customers will create a projectsCreators relationship on the projects entity side.

Notes

  • Only one to one , one to many and many to one are supported at the moment.
  • Querying deeper than first level relations is also WIP.

JSON-API

Supported features :

  • includes (1 level)

  • pagination

  • sorting

  • sparse fieldsets

  • filters

    • eq : <value>
    • noteq : <value>
  • creating entity

  • updating entity

  • deleting entity

Configuration

You can create a configuration file in config/configuration.json with these values , it will override the default configuration

{
    "pluralizeSerializers": false,
    "authEntity": "users",
    "convertCase": "kebab-case",
    "unconvertCase": "kebab-case",
    "port":8000,
    "jwtAuthKey":"patate",
    "jwtExpiration":2
}

Example

  import { JsonApiServer, Configuration } from "@triptyk/jsonapi-server";
  import { Request, Response, NextFunction } from "express";

  const server = new JsonApiServer();

  server.Router.use((req,res,next) => {
      console.log("Hello");
      next();
  });

  server.Router.route("/status") 
      .get((req: Request,res: Response,next: NextFunction) => {
          res.sendStatus(200);
      });

  server.register("data/projects.json");
  server.register("data/customers.json");
  server.register("data/users.json");

  server.setupServer().then((app) => {
      app.listen(Configuration.configuration.port,() => {
          console.log(`Mockup server running on port ${Configuration.configuration.port}`);
      });
  });

Dependencies (14)

Dev Dependencies (8)

Package Sidebar

Install

npm i @triptyk/jsonapi-server

Weekly Downloads

1

Version

0.1.2

License

MIT

Unpacked Size

39 kB

Total Files

19

Last publish

Collaborators

  • vesass
  • dramixdw
  • remadex
  • tcdp
  • amauryd