@eik/service
TypeScript icon, indicating that this package has built-in type declarations

5.0.0 • Public • Published

@eik/service

This is the HTTP server running the Eik service. The implementation for the different HTTP endpoints are in @eik/core.

Installation

npm install @eik/service

Usage

This server can either be run as a Node executable, or as a Fastify plugin.

CLI

This spins up the built-in Fastify server using configuration from your config/ folder, or from environment variables.

npx @eik/service

Fastify plugin

For a production setup, the Fastify plugin method is recommended.

import fastify from 'fastify';
import Service from '@eik/service';
import SinkGoogleCloudStorage from '@eik/sink-gcs';

// Set up the Google Cloud Storage sink
// https://github.com/eik-lib/sink-gcs?tab=readme-ov-file#example
const sink = new SinkGoogleCloudStorage({
    credentials: {
        client_email: 'a@email.address',
        private_key: '[ ...snip... ]',
        projectId: 'myProject',
    },
});

// Set up the Eik service as a plugin
const service = new Service({ sink });

// Set up Fastify
const app = fastify({
    ignoreTrailingSlash: true,
    modifyCoreObjects: false,
    trustProxy: true,
});

// Register the Eik service in Fastify
app.register(service.api());

// Start the server
const run = async () => {
    await service.health();
    await app.listen(
        service.config.get('http.port'),
        service.config.get('http.address'),
    );
};

run();

The example above shows the Google Cloud Storage sink. You can also use the file system sink, or implement the sink interface for your own custom storage backend.

Readme

Keywords

none

Package Sidebar

Install

npm i @eik/service

Weekly Downloads

143

Version

5.0.0

License

MIT

Unpacked Size

143 kB

Total Files

11

Last publish

Collaborators

  • trygve-lie
  • digitalsadhu
  • trygve-bot
  • stipsan