Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

moleculer-web

Package Overview
Dependencies
Maintainers
3
Versions
67
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

moleculer-web - npm Package Versions

23
7

0.11.0-beta1

Diff

icebob
published 0.10.7 •

icebob
published 0.10.6 •

Changelog

Source

0.10.6 (2023-07-15)

Changes

  • update qs package to mitigate CVE-2022-24999. #320
  • correct types for route middleware functions. #327
  • incorrect key for calloptions type. #328
  • add support for qs options. #326

<a name="0.10.5"></a>

icebob
published 0.10.5 •

Changelog

Source

0.10.5 (2022-12-17)

Changes

  • improving d.ts
  • register on close and error event on response. #299
  • resolve promise when close event is fired for res. #301
  • add default reqTimeout. #312
  • improve rate limiter. #317
  • add 201 Created to status codes. #297

<a name="0.10.4"></a>

icebob
published 0.10.4 •

Changelog

Source

0.10.4 (2022-01-09)

What's Changed

  • d.ts for v0.10.2 v0.10.3 by @0x0a0d in https://github.com/moleculerjs/moleculer-web/pull/280
  • skip services without settings by @kechkibet in https://github.com/moleculerjs/moleculer-web/pull/283
  • Fix to comment in multi-auth example by @machinaexdeo in https://github.com/moleculerjs/moleculer-web/pull/286
  • Add alias as last parameter by @icebob in https://github.com/moleculerjs/moleculer-web/pull/290
  • Fix cors problem in assets by @moonrailgun in https://github.com/moleculerjs/moleculer-web/pull/289
  • Broadcast event after alias regeneration by @icebob in https://github.com/moleculerjs/moleculer-web/pull/292

Other changes

  • update dependencies.
  • change to @fastify/busboy implementation. #287

<a name="0.10.3"></a>

icebob
published 0.10.3 •

Changelog

Source

0.10.3 (2021-10-17)

icebob
published 0.10.2 •

Changelog

Source

0.10.2 (2021-09-05)

Named routes

Many developers issued that version 0.10 doesn't support multiple routes with the same path. This version fixes it but you should give a unique name for the routes if they have same path.

Example You can call /api/hi without auth, but /api/hello only with auth.

const ApiGateway = require("moleculer-web");

module.exports = {
    mixins: [ApiGateway],
    settings: {
        path: "/api",

        routes: [
            {
                name: "no-auth-route", // unique name
                path: "/",
                aliases: {
                    hi: "greeter.hello",
                }
            },
            {
                name: "with-auth-route", // unique name
                path: "/",
                aliases: {
                    "hello": "greeter.hello",
                },
                authorization: true
            }
        ]
    }
};

Changes

  • add removeRouteByName(name: string) method to remove a route by its name.

<a name="0.10.1"></a>

icebob
published 0.10.1 •

Changelog

Source

0.10.1 (2021-09-01)

Changes

  • set the default JSON bodyparser if bodyParser: true. #258
  • add pathToRegexpOptions to route options to make available to pass options to path-to-regexp library. #268
  • add debounceTime to route options to make available to change the debounce time at service changes. #260
  • new errorHandler method to allow developers to change the default error handling behaviour. #266
  • fixes CORS preflight request handling in case of full-path aliases. #269
  • update dependencies

<a name="0.10.0"></a>

icebob
published 0.10.0 •

Changelog

Source

0.10.0 (2021-06-27)

Breaking changes

Avoid array wrapping at file uploading

Many users issued that at file uploading the response always wrapped into an array even single file uploading. This issues is fixed in this version. If you define files: 1 in busboy settings, the response won't be wrapped into array.

Example

const ApiGateway = require("moleculer-web");

module.exports = {
    mixins: [ApiGateway],
    settings: {
        path: "/upload",

        routes: [
            {
                path: "/upload",

                busboyConfig: {
                    limits: {
                        files: 1
                    }
                },
            }
        ]
    }
};

JSON body-parser is the new default.

In early version, if you added multiple routes, you should always set JSON body-parser. As of v0.10, it's the new default, if you don't define bodyParsers in the route options. If you don't want to use any body-parsers just set bodyParsers: false.

Example: disable body parsers

const ApiGateway = require("moleculer-web");

module.exports = {
    mixins: [ApiGateway],
    settings: {
        routes: [
            {
                path: "/api",
                bodyParsers: false
            }
        ]
    }
};

New features

Actions for adding and removing routes

The addRoute and removeRoute methods exposed to service actions, as well. It means, you can add/remove routes from remote nodes, as well.

Adding a new route

broker.call("api.addRoute", {
    route: {
        path: "/api",
        aliases: {
            "hi": "greeter.hello"
        }
    },
    toBottom: true // add this route to the end of the route list.
})

Removing a route

broker.call("api.removeRoute", { path: "/api" });

New logging options

There are two new logging service settings: logRequest, logResponse. You can define the logging level for request & response log messages.

const ApiGateway = require("moleculer-web");

module.exports = {
    mixins: [ApiGateway],
    settings: {
        logRequest: "debug", // Logging with debug level
        logResponse: false, // Disable logging
        //.....
    }
};

New rootCallOptions options

There a new rootCallOptions property in the service settings. Here you can define the root Context calling options. It can be a static Object or a Function. It can be useful to take some data from the req and put them to the calling options (like tracing informations)

Example with static object

const ApiGateway = require("moleculer-web");

module.exports = {
    mixins: [ApiGateway],
    settings: {
        routes: [/*...*/],

        rootCallOptions: {
            timeout: 500
        }
    }
};

Example with Function which takes tracing information from the req and put them to the calling options

const ApiGateway = require("moleculer-web");

module.exports = {
    mixins: [ApiGateway],
    settings: {
        routes: [/*...*/],

        rootCallOptions(options, req, res) {
            if (req.headers["traceparent"]) {
                // More info https://www.w3.org/TR/trace-context/#traceparent-header
                const traceparent = req.headers["traceparent"].toLowerCase();
                if (traceparent.match(/^([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})$/)) {
                    const [version, id, parentSpan, flags] = traceparent.split("-");
                    const sampled = (flags & FLAG_SAMPLED) == FLAG_SAMPLED;

                    options.parentSpan = {
                        id: parentSpan,
                        traceID: id,
                        sampled
                    };
                }
            } else {
                // Look for X-B3-Traceid, X-B3-Spanid
                options.parentSpan = {};

                if (req.headers["x-b3-traceid"]) {
                    options.parentSpan.traceID = req.headers["x-b3-traceid"].toLowerCase();
                    options.parentSpan.sampled = true;
                }
                if (req.headers["x-b3-spanid"]) {
                    options.parentSpan.id = req.headers["x-b3-spanid"].toLowerCase();
                }
            }
        }
    }
};

Multiple route aliases

You can define multiple REST aliases in the action definitions.

module.exports = {
    name: "posts",

    settings: {
        rest: ["/posts", "/v1/posts"]
    },

    actions: {
        find: {
            rest: ["GET /", "GET /all"]
            handler(ctx) {}
        }
    }
};

Multipart fields & URL Params

Several issues has been fixed with multipart handling.

  • URL parameters (e.g. /api/upload/:tenant/:folder) is available via ctx.meta.$params
  • Multipart fields is available via ctx.meta.$multipart
  • ctx.params.$params is not available, use ctx.meta.$params
  • The target action is called if no uploaded files but has multipart fields. In this case ctx.params is {} and the fields are in ctx.meta.$multipart.

Other changes

  • set response header from ctx.meta in case of errors, as well.
  • update dependencies.
  • update index.d.ts.
  • remove deprecated publish: false condition. Use `visibility: "public", instead.

<a name="0.9.1"></a>

icebob
published 0.10.0-beta4 •

23
7
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc