Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
ClientStorage
Advanced tools
Bulletproof persistent browser storage, works with disabled Cookies and/or localStorage
String
, Array
, Object
, and Boolean
support as values;localStorage
and cookies
.npm install --save ClientStorage
# Via Atmosphere
meteor add ostrio:cstorage
# Via NPM
meteor npm install --save ClientStorage
var ClientStorage = require('ClientStorage').ClientStorage;
import { ClientStorage } from 'meteor/ostrio:cstorage';
ClientStorage.get('key')
- Read a record. If the key doesn't exist a undefined value will be returned;
key
- {String} - Record's key;ClientStorage.set('key', value[, ttl])
- Create/overwrite a value in storage;
key
- {String} - Record's key;value
- {String|[mix]|Boolean|Object} - Record's value (content);ttl
- {Number} — [Optional] Record's TTL in seconds;ClientStorage.remove('key')
- Remove a record;
key
- {String} - Record's key;ClientStorage.has('key')
- Check whether a record exists, returns a boolean value;
key
- {String} - Record's key;ClientStorage.keys()
- Returns an array of all storage keys;ClientStorage.empty()
- Empty storage (remove all key/value pairs). Use with caution! (May remove cookies which weren't set by you).cookies
only:To use cookies
as a driver for ClientStorage
create new instance of clientStorage
(camel-case, first letter lower-case):
var clientStorage = require('ClientStorage').clientStorage;
var csCookies = new clientStorage('cookies');
csCookies.has('locale'); // false
csCookies.set('locale', 'en_US'); // true
or in ES6 (Meteor):
import { clientStorage } from 'meteor/ostrio:cstorage';
const csLocalStorage = new clientStorage('cookies');
csLocalStorage.has('locale'); // false
csLocalStorage.set('locale', 'en_US'); // true
localStorage
only:To use localStorage
as a driver for ClientStorage
create new instance of clientStorage
(camel-case, first letter lower-case):
var clientStorage = require('ClientStorage').clientStorage;
var csLocalStorage = new clientStorage('localStorage');
csLocalStorage.has('locale'); // false
csLocalStorage.set('locale', 'en_US'); // true
or in ES6 (Meteor):
import { clientStorage } from 'meteor/ostrio:cstorage';
const csLocalStorage = new clientStorage('localStorage');
csLocalStorage.has('locale'); // false
csLocalStorage.set('locale', 'en_US'); // true
Note: All instances are sharing same cookie and localStorage records!
import { ReactiveVar } from 'meteor/reactive-var';
import { ClientStorage } from 'meteor/ostrio:cstorage';
const persistentReactive = (name, initial = false) => {
let reactive;
if (ClientStorage.has(name)) {
reactive = new ReactiveVar(ClientStorage.get(name));
} else {
ClientStorage.set(name, initial);
reactive = new ReactiveVar(initial);
}
reactive.set = function (newValue) {
let oldValue = reactive.curValue;
if ((reactive.equalsFunc || ReactiveVar._isEqual)(oldValue, newValue)) {
return;
}
reactive.curValue = newValue;
ClientStorage.set(name, newValue);
reactive.dep.changed();
};
return reactive;
};
const UILayout = persistentReactive('UILayout', 'two-columns');
UILayout.get(); // two-columns
UILayout.set('single-column');
var ClientStorage = require('ClientStorage').ClientStorage;
ClientStorage.set('locale', 'en'); // true
ClientStorage.set('country', 'usa'); // true
ClientStorage.set('gender', 'male'); // true
ClientStorage.get('gender'); // male
ClientStorage.has('locale'); // true
ClientStorage.has('city'); // false
ClientStorage.keys(); // ['locale', 'country', 'gender']
ClientStorage.remove('locale'); // true
ClientStorage.get('locale'); // undefined
ClientStorage.keys(); // ['country', 'gender']
ClientStorage.empty(); // true
ClientStorage.keys(); // []
ClientStorage.empty(); // false
# Default
meteor test-packages ./
# With custom port
meteor test-packages ./ --port 8888
# With local MongoDB and custom port
MONGO_URL="mongodb://127.0.0.1:27017/client-storage-tests" meteor test-packages ./ --port 8888
FAQs
Bulletproof persistent browser storage, works with disabled Cookies and/or localStorage
The npm package ClientStorage receives a total of 127 weekly downloads. As such, ClientStorage popularity was classified as not popular.
We found that ClientStorage demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.