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

@feathers-micro/microservice

v1.0.0

Published

Helps you create you own micro service feathersJS application

Downloads

4

Readme

This library is part of the feathers-micro library.

Check the repository for a working example.

@feathers-micro/microservice

Create services in your application that will proxy the calls to your feathers serveless applications.

It's expected that you already have a feathers serverless application configured and running to be able to use this library.

This library only support feathers koa for now, it might work with feathers express but it was not tested.

Usage

# create a feathers application
npm create feathers@latest my-serverless-component

# install the library in your project
yarn add @feathers-micro/microservice

Create a normal feathers service in your application

npx feathers generate service

Update your service with the MicroService class


...

import { MicroService, MicroServiceOptions } from '@feathers-micro/microservice'

...

export class TodoService<ServiceParams extends Params = TodoParams> extends MicroService<
  Todo,
  TodoData,
  TodoParams,
  TodoPatch
> {}

export const getOptions = (app: Application): MicroServiceOptions => {
  return {
    path: 'todo', // service path on the serverless application
    url: 'http://localhost:3020/dev', // url of the serverless application
    getParamsFromBody: false // if you configured your serverless application as a single endpoint mark the property as true
  }
}

You can create resolvers and hooks as with any normal feathers service.

To check a functional setup, look at the example apps.

Authentication

If you want to have your authentication as a serverless application, configure your authentication.ts file.

import { AuthenticationService } from '@feathersjs/authentication'
import { MicroAuthentication } from '@feathers-micro/microservice'

import type { Application } from './declarations'

declare module './declarations' {
  interface ServiceTypes {
    authentication: AuthenticationService
  }
}

export const authentication = (app: Application) => {
  const authentication = new MicroAuthentication(app, 'authentication', { url: 'http://localhost:3010/dev', getParamsFromBody: true })
  // @ts-ignore
  app.use('authentication', authentication)
}

Session ID

When dealing with micro services logging is one of the biggest difficulties, is important to have a tracer id from one component to the other to understand the flow of each call.

To configure a session id on your service calls update your app.ts, this feature is only supported in feathers koa.

...

import { setKoaGateway } from '@feathers-micro/microservice'

...

app.configure(setKoaGateway([app.get('authentication')?.secret ?? '']))