New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

island

Package Overview
Dependencies
Maintainers
3
Versions
333
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

island

A package suite for building microservice using TypeScript.

latest
npmnpm
Version
3.8.2
Version published
Weekly downloads
20
-62.96%
Maintainers
3
Weekly downloads
 
Created
Source

island.js

An opinionated, full-stacked Microservices framework for node, powered by TypeScript.

Build Status NPM version Dependency Status Coverage Status Test Coverage Code Climate Issue Count

import * as island from 'island';
import * as keeper from 'island-keeper';
import { EndpointController } from './controller/endpoint.controller';
import { EventController } from './controller/event.controller';

const serviceName = 'hawaii';

class HawaiiIslet extends island.Islet {
  main() {
    const islandKeeper = keeper.IslandKeeper.getInst();
    islandKeeper.init('consul', 'island');
    islandKeeper.setServiceName(serviceName);

    const amqpChannelPoolAdapter = new island.AmqpChannelPoolAdapter({url: 'amqp://rabbitmq:5672'});
    this.registerAdapter('amqpChannelPool', amqpChannelPoolAdapter);
    const rpcAdapter = new island.RPCAdapter({amqpChannelPoolAdapter, serviceName});
    rpcAdapter.registerController(EndpointController);
    this.registerAdapter('rpc', rpcAdapter);

    const eventAdapter = new island.EventAdapter({amqpChannelPoolAdapter, serviceName});
    eventAdapter.registerController(EventController);
    this.registerAdapter('event', eventAdapter);
  }
}

island.Islet.run(HawaiiIslet);

Installation

$ npm i island

Features

  • Free from service discovery
  • Support various types of communication
    • RPC(strong link between islands)
    • Event(weak link between islands)
    • Push messaging(to user) via socket.io
  • Ensure that each island gets proper parameters
  • Track communications per each request
  • Chain contexts with UUID per each request

Building

In order to build the island, ensure that you have Git and Node.js installed.

Clone a copy of the repo:

$ git clone https://github.com/spearhead-ea/island.git

Change to the island directory:

$ cd island

Install dependencies and dev dependencies:

$ npm i

Tests

To run the test suite, first install the dependencies, then run npm test:

$ npm i
$ RABBITMQ_HOST=localhost npm t

Environment Variables

NameTypeDefaultNotesLegacyKeys
ISLAND_SERVICE_NAMEString'no-service-name''SERVICE_NAME'
ISLAND_HOST_NAMEString'no-host-name'TraceLog uses this as a name of node'HOSTNAME'
ISLAND_USE_DEV_MODEBooleanfalseWhen true, allows APIs which has options.developmentOnly'USE_DEV_MODE'
ISLAND_SERIALIZE_FORMAT_PUSHString'msgpack'currently able Push format json and msgpack'SERIALIZE_FORMAT_PUSH'
ISLAND_EVENT_PREFETCHNumber100'EVENT_PREFETCH'
ISLAND_RPC_PREFETCHNumber100Count of RPC Prefetch'RPC_PREFETCH'
ISLAND_RPC_EXEC_TIMEOUTString'25s'Timeout during RPC execution
ISLAND_RPC_EXEC_TIMEOUT_MSNumber0deprecated
ISLAND_RPC_WAIT_TIMEOUTString'60s'Timeout during RPC call
ISLAND_RPC_WAIT_TIMEOUT_MSNumber0deprecated
ISLAND_SERVICE_LOAD_TIMEString'60s'Time to load service
ISLAND_SERVICE_LOAD_TIME_MSNumber0deprecated
ISLAND_LOGGER_LEVELString'info'Log level for logger
ISLAND_LOGGER_TYPEString'short'
ISLAND_RPC_RES_NOACKBooleanfalse
ISLAND_NO_REVIVERBooleanfalse'NO_REVIVER'
ISLAND_USE_REVIVERBooleanfalse'USE_REVIVER'
ISLAND_STATUS_EXPORTBooleanfalseIf it is true, use island-status-exporter'STATUS_EXPORT'
ISLAND_STATUS_EXPORT_TIMEString'10s'Time to save file for instance status
ISLAND_STATUS_EXPORT_TIME_MSNumber0deprecated'STATUS_EXPORT_TIME_MS'
ISLAND_STATUS_FILE_NAMEStringisland-status-exporter uses this as a name for file'STATUS_FILE_NAME'
ISLAND_STATUS_EXPORT_TYPEString'FILE'status-exporter uses this type for saving data'STATUS_EXPORT_TYPE'
ISLAND_TRACEMQ_HOSTStringMQ(formatted by amqp URI) for TraceLog. If omitted it doesn't log
ISLAND_TRACEMQ_QUEUEString'trace'A queue name to log TraceLog
ISLAND_TRACE_HEADER_LOGBooleanfalseWhen true, add trace log to msg.header
ISLAND_ENDPOINT_SESSION_GROUPString'ENDPOINT_SESSION_GROUP'
ISLAND_CONSUL_HOSTString'consul'The address of consul.'CONSUL_HOST'
ISLAND_CONSUL_PORTString'8500'consul port. work with CONSUL_HOST'CONSUL_PORT'
ISLAND_CONSUL_NAMESPACEString'CONSUL_NAMESPACE'
ISLAND_CONSUL_TOKENString'CONSUL_TOKEN'
ISLAND_RABBITMQ_HOSTString'amqp://rabbitmq:5672'The address of rabbitmq.'RABBITMQ_HOST'
ISLAND_RABBITMQ_PUSH_HOSTString'RABBITMQ_PUSH_HOST', 'ISLAND_RABBITMQ_HOST', 'RABBITMQ_HOST'
ISLAND_RABBITMQ_RPC_HOSTString'RABBITMQ_RPC_HOST', 'ISLAND_RABBITMQ_HOST', 'RABBITMQ_HOST'
ISLAND_RABBITMQ_EVENT_HOSTString'RABBITMQ_EVENT_HOST', 'ISLAND_RABBITMQ_HOST', 'RABBITMQ_HOST'
ISLAND_RABBITMQ_POOLSIZENumber100'RABBITMQ_POOLSIZE'
ISLAND_REDIS_AUTHString'REDIS_AUTH'
ISLAND_REDIS_HOSTString'redis'The address of redishost.'REDIS_HOST'
ISLAND_REDIS_PORTNumber6379'REDIS_PORT'
ISLAND_MONGO_HOSTString'mongodb://mongodb:27017''MONGO_HOST'
ISLAND_RPC_DISTRIB_SIZENumber16
ISLAND_USE_CIRCUIT_BREAKBooleanfalse
ISLAND_CIRCUIT_BREAK_TIMEString'1m'
ISLAND_CIRCUIT_BREAK_TIME_MSNumber0deprecated
ISLAND_CIRCUIT_BREAK_FAILRATE_THRESHOLDNumber0.2
ISLAND_CIRCUIT_BREAK_REQUEST_THRESHOLDNumber10
ISLAND_FLOWMODE_DELAY_TIMEString'10s'
ISLAND_FLOWMODE_DELAYNumber0deprecated

People

The original author of island is Wonshik Kim

The current lead maintainer is Kei Son

List of all contributors

License

MIT

Error Codes

ErrorLevel


  EXPECTED  = 1,
  LOGIC     = 2,
  FATAL     = 3,
  RESERVED4 = 4,
  RESERVED5 = 5,
  RESERVED6 = 6,
  RESERVED7 = 7,
  RESERVED8 = 8,
  ETC       = 9

IslandLevel


  ISLAND    = 0,
  ISLANDJS  = 1,
  UNKNOWN   = 2,
  RESERVED3 = 3,
  RESERVED4 = 4,
  RESERVED5 = 5,
  RESERVED6 = 6,
  RESERVED7 = 7,
  RESERVED8 = 8,
  RESERVED9 = 9

ERROR


    E0001_ISLET_ALREADY_HAS_BEEN_REGISTERED   = 1,
    E0002_DUPLICATED_ADAPTER                  = 2,
    E0003_MISSING_ADAPTER                     = 3,
    E0004_NOT_IMPLEMENTED_ERROR               = 4,
    E0008_AMQP_CHANNEL_POOL_REQUIRED          = 8,
    E0011_NOT_INITIALIZED_EXCEPTION           = 11,
    E0012_ROUND_ROBIN_EVENT_Q_IS_NOT_DEFINED  = 12,
    E0013_NOT_INITIALIZED                     = 13,
    E0015_TAG_IS_UNDEFINED                    = 15,
    E0021_NOT_IMPLEMENTED_ERROR               = 21,
    E0022_NOT_INITIALIZED_EXCEPTION           = 22,
    E0023_RPC_TIMEOUT                         = 23,
    E0024_ENDPOINT_METHOD_REDECLARED          = 24,
    E0025_MISSING_ADAPTER_OPTIONS             = 25,
    E0026_MISSING_REPLYTO_IN_RPC              = 26,
    E0027_CONSUMER_IS_CANCELED                = 27,
    E0028_CONSUL_ERROR                        = 28,
    E0031_WRONG_PARAMETER_SCHEMA              = 31,
    E0032_MSG_PACK_ERROR                      = 32,
    E0033_MSG_PACK_ENCODE_ERROR               = 33,
    E0034_HANDLE_MESSAGE_ERROR                = 34,
    E0035_PUSH_ENCODE_ERROR                   = 35

FAQs

Package last updated on 26 Aug 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts