
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
@getjoystick/joystick-js
Advanced tools
Streamline your app or game development process with Joystick's Javascript/Typescript JSON remote config platform. Easily manage and update configurations without codebase clutter or lengthy deployment processes. Our modern platform offers advanced workflow management, automated version control, and seamless integration with any Javascript or Typescript project. Plus, our native multi-environment support with permissions and review workflow ensures smooth operations your entire team will love.
Experience the benefits of simplified configuration management with Joystick. Try our @getjoystick/joystick-js library today to see how easy it is to my your app or game dynamic and fundamentally upgrade your team's workflow.
Requires NodeJS 16 and later. Install via npm:
npm install @getjoystick/joystick-js
Using Joystick to get remote configurations in your Javascript or Typescript project is a breeze.
// Import the package.
import { Joystick } from "@getjoystick/joystick-js";
// Initialize a client with a Joystick API Key
const joystickClient = new Joystick({
apiKey: process.env.JOYSTICK_API_KEY,
});
(async () => {
// Request a single configuration
const contentId1 = await joystickClient.getContent("content-id1");
// Request a single configuration (typescript)
const contentId1Typed = await joystickClient.getContent<TypeForContentId1>(
"content-id1"
);
// Request multiple configurations at the same time
const configurations = await joystickClient.getContents([
"content-id1",
"content-id2",
]);
console.log(configurations);
// {
// "content-id1": {...},
// "content-id2": {...}
// }
})();
When creating the Joystick
object, you can specify additional parameters which will be used by all API calls to the Joystick API. These additional parameters are used for AB Testing (userId
), segmentation (params
), and backward-compatible version delivery (semVer
).
For more details see API documentation.
// Initializing a client with options
const joystickClient = new Joystick({
apiKey: process.env.JOYSTICK_API_KEY,
semVer: "0.0.1",
userId: "user-id-1",
params: {
param1: "value1",
param2: "value2",
},
options: {
cacheExpirationSeconds: 600, // default 600 (10 mins)
serialized: false, // default false
},
});
fullResponse
In most, you will just want the contents of your configuration. In advanced use cases where you want to process the AB testing or segmentation information, you can specify the fullResponse
option to the client methods. The client will return you raw API response.
joystickClient
.getContent("content-id1", { fullResponse: true })
.then((getContentResponse) => console.log(getContentResponse));
// OR
joystickClient
.getContents(["content-id1", "content-id2"], { fullResponse: true })
.then((getContentsResponse) => console.log(getContentsResponse));
serialized
You can get the contents of your configuration serialized. When set as true
, we will pass query parameter responseType=serialized
to Joystick API.
joystickClient
.getContent("content-id1", { serialized: true })
.then((getContentResponse) => console.log(getContentResponse));
// OR
joystickClient
.getContents(["content-id1", "content-id2"], { serialized: true })
.then((getContentsResponse) => console.log(getContentsResponse));
This option for a serialized response can be set globally for every API call by setting setSerialized(true)
when initializing the client:
const joystickClient = new Joystick({
apiKey: process.env.JOYSTICK_API_KEY,
options: {
serialized: true,
},
});
// OR
joystickClient.setSerialized(true);
refresh
To ignore the existing cache when requesting a config – pass this option as true
.
joystickClient
.getContent("content-id1", { refresh: true })
.then((getContentResponse) => console.log(getContentResponse));
// OR
joystickClient
.getContents(["content-id1", "content-id2"], { refresh: true })
.then((getContentsResponse) => console.log(getContentsResponse));
The client can raise different types of exceptions with the base class of JoystickError
.
try {
await joystickClient.getContents(["content-id1", "content-id2"]);
} catch (e) {
if (e instanceof ApiHttpError) {
// Handle HTTP error (i.e. timeout, or invalid HTTP code)
} else if (e instanceof MultipleContentsApiException) {
// Handle API exception (i.e. content is not found, or some of the keys can't be retrieved)
}
}
By default, the client uses InMemoryCache, based on Map, which means the cache will be erased after application restart.
You can specify your own cache implementation by implementing the interface SdkCache.
See examples/typescript/node-cache
or examples/typescript/redis-cache
for more details.
If you want to clear the cache:
joystickClient.clearCache().then(() => console.log("Cache cleared!"));
You can provide a custom HTTP client, which may be useful for specifying a custom proxy or collecting detailed metrics about HTTP requests.
Change your HTTP client implementation by implementing the interface HttpClient.
See src/internals/client/axios-client
for more details.
To run unit tests, just run:
npm test
The MIT. Please see License File for more information.
FAQs
Javascript SDK for Joystick
The npm package @getjoystick/joystick-js receives a total of 56 weekly downloads. As such, @getjoystick/joystick-js popularity was classified as not popular.
We found that @getjoystick/joystick-js demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
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.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.