https://github.com/intersective/settings-sdk
SDK for the preferences API
https://github.com/intersective/settings-sdk
Last synced: 5 months ago
JSON representation
SDK for the preferences API
- Host: GitHub
- URL: https://github.com/intersective/settings-sdk
- Owner: intersective
- Created: 2021-02-22T00:48:28.000Z (over 5 years ago)
- Default Branch: develop
- Last Pushed: 2023-01-07T05:36:53.000Z (over 3 years ago)
- Last Synced: 2025-07-07T01:51:52.141Z (11 months ago)
- Language: TypeScript
- Size: 281 KB
- Stars: 0
- Watchers: 5
- Forks: 0
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# @practera/settings-sdk
Facilitates the communication with the Practera preferences API.
## Health
[](https://sonarcloud.io/dashboard?id=intersective_settings-sdk)
[](https://sonarcloud.io/dashboard?id=intersective_settings-sdk)
[](https://sonarcloud.io/dashboard?id=intersective_settings-sdk)
[](https://sonarcloud.io/dashboard?id=intersective_settings-sdk)
[](https://sonarcloud.io/dashboard?id=intersective_settings-sdk)
[](https://sonarcloud.io/dashboard?id=intersective_settings-sdk)
## Install
```
$ npm install @practera/settings-sdk
```
## Usage
### setting up the client
JavaScript:
```js
const Settings = require("@practera/settings-sdk");
```
TypeScript:
```js
import { Settings } from "@practera/settings-sdk";
```
### Getting and setting settings
Given this response from the server
```js
categories: [
{
name: 'Sample Notifications',
order: 1,
settings: [
{
description: 'Sample notifications',
key: 'sample-key',
name: 'Notify me',
options: [
{
locked: false,
locked_name: '',
medium: 'email',
name: 'Email',
value: true
},
{
locked: false,
locked_name: '',
medium: 'sms',
name: 'SMS',
value: false
}
],
remarks: 'sample remarks'
}
]
}
]
```
You can query the result in multiple ways.
```js
const client = new Settings(
privateKey, // the private key used to sign the request
service, // this will identify what public key to use to validate the token, the variable called ${service}_JWT will be used. The variable should contain a key called public and the public key as the value.
url, // the URL of the settings API, leave empty for production
);
// to perform the api call for the data, note this does not return the data but a reference to self. This allows to chain requests if you want.
client.get('[uuid]');
// to get the actual data you can
client.get('[uuid]');
existingSettings = client.data; // the entire response from above
// or
existingSettings = client.get('[uuid]').data; // the entire response from above
// to search for a setting in our normal json response
client.get('[uuid]');
existingSettingEmail = client.findSetting('sample-key', 'email'); // true
existingSettingSMS = client.findSetting('sample-key', 'sms'); // false
// or
existingSettingEmail = client.get('[uuid]').findSetting('sample-key', 'email'); // true
existingSettingSMS = client.findSetting('sample-key', 'sms'); // false
// to search for a specific value in the array you can use a regular expression
client.get('[uuid]');
existingSettings = client.findValue(/^categories\.0\.settings\.0\.options\.1\.medium$/); // sms
// or
existingSettings = client.get('[uuid]').findValue(/^categories\.0\.settings\.0\.options\.1\.medium$/); // sms
// to search for a neighbor or a specific key, you can use. This basically searches all the mediums for the value email then returns the field next to it called 'value'
client.get('[uuid]');
existingSettings = client.findNeighbor(/^categories\.0\.settings\.0\.options\.[0-9]\.medium$/, "email", "value"); // true
// or
existingSettings = client.get('[uuid]').findValue(/^categories\.0\.settings\.0\.options\.[0-9]\.medium$/, "email", "value"); // false
// to save data base to the settings
client.save('[uuid]', settingsJson);
```