Neurosis Prevention Mechanism

    cloud-worker

    0.0.3 • Public • Published

    Cloud Worker

    This project is based on the ideas from the Service Worker specification and the CloudFlare Worker project.

    Outline

    Create a single worker file that accepts a fetch event and calls event.respondWith with a promise (such as another fetch).

    The module can be used as a standalone server (possibly to test CloudFlare Workers) or as middleware in your own projects or can be invoked manually.

    Installation and usage

    Cloud Worker requires Node and is installed using npm (which comes with node):

    npm install cloud-worker

    If you want to only write a cloud worker file, then you can use the prebuilt server in your npm scripts like this:

    {
      "scripts": {
        "start": "worker index.js"
      }
    }

    …where index.js contains your worker. For example, this cloud-worker demo waits 3 seconds then sends all request the response from a example.com (source code).

    Here's some recipes of what a cloud worker can do.

    Direct usage

    The module can be required and used directly, and the (current) API is:

    const worker = require('cloud-worker');
    
    

    Behind the scenes

    The cloud worker uses Node's vm module to globally scope all of the required API that the service worker-like script would expect.

    It waits for a single addEventListener for the fetch event and triggers that event when the worker.handler function is invoked passing in a event that contains a request object.

    The functionality is provided via the following npm modules:

    • fetch (and related sub modules including Request, Response, Headers, FetchError) via node-fetch
    • Response.redirect is manually added
    • URL and URLSearchParams via node's internal url package
    • streams (ReadableStream, WritableStream and TransformStream) via web-streams-polyfill (though I believe this to be out of date - any user contribution would be grateful here)
    • encoding (TextEncoder and TextDecoder) via text-encoding
    • FetchEvent is manually added

    Licence

    Keywords

    none

    Install

    npm i cloud-worker

    DownloadsWeekly Downloads

    7

    Version

    0.0.3

    License

    MIT

    Unpacked Size

    20.2 kB

    Total Files

    13

    Last publish

    Collaborators

    • remy