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

config-runtime

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

config-runtime

## Motivation

  • 0.1.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
4
increased by300%
Maintainers
1
Weekly downloads
 
Created
Source

config-runtime

Motivation

The handoff from the server to client of config values is not simple. Typings are hard, global variables are used and usually not cleaned up and there's no distinction of server and client only configs.

This library is heavily inspired from NextJS Runtime Config.

Usage

import { CreateRuntimeConfig, RuntimeConfig } from 'config-runtime'

interface ClientConfig {
  foo: string
}

interface ServerConfig {
  bar: number
}

const myConfig: RuntimeConfig<ClientConfig, ServerConfig> = {
  client: {
    foo: 'hello',
  },
  server: {
    bar: 5,
  },
}

const Config = new CreateRuntimeConfig<ClientConfig, ServerConfig>(
  // Useful for different kinds of config
  '__MY_CONFIG_NAME_TOTALLY_OPTIONAL__'
)

// Server entrypoint (only once)
Config.setConfig(
  myConfig
)

// Handoff between server and client (html payload)
`<script>${Config.serializedClientConfig}</script>`

// On the server
config.client // { foo: 'hello' }
config.server // { bar: 5 }

// On the client
config.client // { foo: 'hello' }
config.server // Error

Features

  1. Allows for server only config
  2. An app could have as many configs as it wants (They are cached by the configName parameter in new CreateRuntimeConfig(configName))
  3. Caching enabled (Saves to an in memory variable, never to the global scope, exception being on the payload sent from the server, which get's deleted on the first getCall made)

Flow

  1. Create a config with this module, with a unique key and export it
  2. Import that config in your server side entrypoint and call setConfig at the very top, just once
  3. In the server to client handoff payload send the serialized public runtime config serializedClientConfig, this allows it to be available in Config.client
  4. Call Config.client anywhere and call Config.server only on the server, doing something else will throw errors

Gotchas

It doesn't protect against possible runtime errors due to something relying on a server value in the client so be careful.

FAQs

Package last updated on 13 Jun 2021

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

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