4.1.7 • Published 2 months ago

@superhero/core v4.1.7

Weekly downloads
20
License
MIT
Repository
github
Last release
2 months ago

Core

A framework designed to support application clustering, configuration management, and service location.

OBS!

Current version is in beta release


Features

  • Cluster Support: Scale horizontally using the cluster module with worker management.
  • Graceful Shutdown: Handles system signals (SIGINT, SIGTERM) and unexpected errors (unhandledRejection, uncaughtException) to support a graceful shutdown.
  • Service Locator: Locate and initialize services based on configuration.
  • Bootstrap Support: Initialize resources and services based on configurations.
  • Configuration Manager: Manage configurations for different environments or branches.

Installation

npm install @superhero/core

Usage

Basic Example

import Core from '@superhero/core'

const core = new Core()

// Add configuration paths
await core.add('./path/to/config.json')

// Bootstrap core
await core.bootstrap()

// Locate a service
const myService = core.locate('myService')

// Graceful shutdown
await core.destroy()

Clustering Example

import Core from '@superhero/core'

const core = new Core()

// Cluster into 4 workers
await core.cluster(4)

// Add configuration paths
await core.add('./path/to/config.js')

// Bootstrap core
await core.bootstrap()

// Destroy core when done
await core.destroy()

Configuration

The core reads configurations from JSON files and supports environment-specific overrides. Example structure:

config.json:

{
  "bootstrap": { "myService": true },
  "locator": { "myService": "./path/to/myService.js" }
}

config-dev.json:

{
  "myService": { "debug": true }
}

Testing

Prerequisites

Ensure the required dependencies are installed:

npm install

Run Tests

npm test

Test Coverage

▶ @superhero/core
  ✔ Plain core bootstrap (2.792737ms)
  ✔ Bootstraps a service successfully (9.447829ms)
  ✔ Bootstraps a service with a branch variable (4.01927ms)
  ✔ Can cluster the core and bootstrap a service (479.701512ms)
✔ @superhero/core (511.980508ms)

tests 4
pass 4

---------------------------------------------------------------------------------------------------
file            | line % | branch % | funcs % | uncovered lines
---------------------------------------------------------------------------------------------------
index.js        |  74.21 |    67.03 |   74.51 | 19-24 97-100 121-123 131-136 139-141 185-190 201-2…
index.test.js   | 100.00 |   100.00 |  100.00 | 
worker.js       | 100.00 |   100.00 |  100.00 | 
---------------------------------------------------------------------------------------------------
all files       |  77.46 |    70.00 |   77.59 | 
---------------------------------------------------------------------------------------------------

API

Core

Constructor

new Core(branch: string = undefined)
  • branch: The configuration branch to load additional configurations (e.g., dev for config-dev.json).

Methods

  • add(configPaths: string | string[] | object): Promise<Core>
    Add configuration paths to the core.

  • bootstrap(freeze: boolean = true): Promise<Core>
    Initialize the core and its dependencies.

  • cluster(forks: number, branch?: number, version?: number): Promise<number>
    Start clustering with the specified number of workers.

  • destroy(): Promise<void>
    Gracefully shutdown the core, its workers, and services.

Properties

  • basePath: string
    The base path used to resolve file paths.

  • branch: string
    The branch used for environment-specific configurations.

  • workers: object
    Access to clustered workers.


License

This project is licensed under the MIT License.


Contributing

Feel free to submit issues or pull requests for improvements or additional features.

4.1.7

2 months ago

4.0.9

4 months ago

4.0.8

4 months ago

4.0.10

4 months ago

4.0.12

3 months ago

4.0.11

4 months ago

4.0.13

3 months ago

4.1.4

2 months ago

4.1.3

3 months ago

4.1.6

2 months ago

4.1.5

2 months ago

4.1.0

3 months ago

4.1.2

3 months ago

4.1.1

3 months ago

4.0.7

5 months ago

4.0.6

5 months ago

4.0.5

5 months ago

4.0.4

5 months ago

4.0.1

6 months ago

4.0.3

5 months ago

4.0.2

5 months ago

4.0.0

8 months ago

4.0.0-beta.8

7 months ago

4.0.0-beta.7

7 months ago

4.0.0-beta.6

8 months ago

4.0.0-beta.5

8 months ago

4.0.0-beta.4

8 months ago

4.0.0-beta.3

8 months ago

4.0.0-beta.2

8 months ago

4.0.0-beta.1

8 months ago

1.8.5

5 years ago

1.8.4

6 years ago

1.8.3

6 years ago

1.8.2

6 years ago

1.8.1

6 years ago

1.8.0

6 years ago

1.7.0

6 years ago

1.6.2

6 years ago

1.6.1

6 years ago

1.6.0

6 years ago

1.5.2

6 years ago

1.5.1

6 years ago

1.5.0

6 years ago

1.4.19

6 years ago

1.4.18

6 years ago

1.4.17

6 years ago

1.4.16

6 years ago

1.4.15

6 years ago

1.4.14

6 years ago

1.4.13

6 years ago

1.4.12

6 years ago

1.4.11

6 years ago

1.4.10

6 years ago

1.4.9

6 years ago

1.4.8

6 years ago

1.4.7

6 years ago

1.4.6

6 years ago

1.4.5

6 years ago

1.4.4

6 years ago

1.4.3

6 years ago

1.4.2

6 years ago

1.4.1

6 years ago

1.4.0

6 years ago

1.3.0

6 years ago

1.2.9

6 years ago

1.2.8

6 years ago

1.2.7

6 years ago

1.2.6

6 years ago

1.2.5

6 years ago

1.2.4

6 years ago

1.2.3

6 years ago

1.2.2

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.0

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.21.2

7 years ago

0.21.1

7 years ago

0.21.0

7 years ago

0.20.4

7 years ago

0.20.3

7 years ago

0.20.2

7 years ago

0.20.1

7 years ago

0.20.0

7 years ago

0.19.8

7 years ago

0.19.7

7 years ago

0.19.6

7 years ago

0.19.5

7 years ago

0.19.4

7 years ago

0.19.3

7 years ago

0.19.2

7 years ago

0.19.1

7 years ago

0.19.0

7 years ago

0.18.0

7 years ago

0.17.7

7 years ago

0.17.6

7 years ago

0.17.5

7 years ago

0.17.4

7 years ago

0.17.3

7 years ago

0.17.2

7 years ago

0.17.1

7 years ago

0.17.0

7 years ago

0.16.2

7 years ago

0.16.1

7 years ago

0.16.0

7 years ago

0.15.5

7 years ago

0.15.4

7 years ago

0.15.3

7 years ago

0.15.2

7 years ago

0.15.1

7 years ago

0.15.0

7 years ago

0.14.14

7 years ago

0.14.13

7 years ago

0.14.12

7 years ago

0.14.11

7 years ago

0.14.10

7 years ago

0.14.9

7 years ago

0.14.8

7 years ago

0.14.7

7 years ago

0.14.6

7 years ago

0.14.5

7 years ago

0.14.4

7 years ago

0.14.3

7 years ago

0.14.2

7 years ago

0.14.1

7 years ago

0.14.0

7 years ago

0.13.2

7 years ago

0.13.1

7 years ago

0.13.0

7 years ago

0.12.0

7 years ago

0.11.0

7 years ago

0.10.1

7 years ago

0.10.0

7 years ago

0.9.1

7 years ago

0.9.0

7 years ago

0.8.3

7 years ago

0.8.2

7 years ago

0.8.1

7 years ago

0.8.0

7 years ago

0.7.0

7 years ago

0.6.0

7 years ago

0.5.11

7 years ago

0.5.10

7 years ago

0.5.9

7 years ago

0.5.8

7 years ago

0.5.7

7 years ago

0.5.6

7 years ago

0.5.5

7 years ago

0.5.4

7 years ago

0.5.3

7 years ago

0.5.2

7 years ago

0.5.1

7 years ago

0.5.0

7 years ago

0.4.2

7 years ago

0.4.1

7 years ago

0.4.0

7 years ago

0.3.19

7 years ago

0.3.18

7 years ago

0.3.17

7 years ago

0.3.16

7 years ago

0.3.15

7 years ago

0.3.14

7 years ago

0.3.13

7 years ago

0.3.12

7 years ago

0.3.11

7 years ago

0.3.10

7 years ago

0.3.9

7 years ago

0.3.8

7 years ago

0.3.7

7 years ago

0.3.6

7 years ago

0.3.5

7 years ago

0.3.4

7 years ago

0.3.3

7 years ago

0.3.2

7 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.19

7 years ago

0.2.18

7 years ago

0.2.17

7 years ago

0.2.16

7 years ago

0.2.15

7 years ago

0.2.14

7 years ago

0.2.13

7 years ago

0.2.12

7 years ago

0.2.10

7 years ago

0.2.9

7 years ago

0.2.8

7 years ago

0.2.7

7 years ago

0.2.6

7 years ago

0.2.5

7 years ago

0.2.4

7 years ago

0.2.3

7 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.9

7 years ago

0.1.8

7 years ago

0.1.7

7 years ago

0.1.6

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago

0.0.9

7 years ago

0.0.8

7 years ago

0.0.7

7 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

8 years ago