• Stars
    star
    1,433
  • Rank 32,854 (Top 0.7 %)
  • Language
    JavaScript
  • Created almost 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐Ÿ“ฆ Easily write and read user settings in Electron apps

electron-json-storage

Easily write and read user settings in Electron apps

npm version dependencies Build Status Build status

Electron lacks an easy way to persist and read user settings for your application. electron-json-storage implements an API somewhat similar to localStorage to write and read JSON objects to/from the operating system application data directory, as defined by app.getPath('userData').

Related modules:

Installation

Install electron-json-storage by running:

$ npm install --save electron-json-storage

You can require this module from either the main or renderer process (with and without remote).

Running on Electron >10 renderer processes

When loaded in renderer processes, this module will try to make use of electron.remote in order to fetch the userData path.

Electron 10 now defaults enableRemoteModule to false, which means that electron-json-storage will be able to calculate a data path by default.

The solution is to manually call storage.setDataPath() before reading or writing any values or setting enableRemoteModule to true.

Documentation

storage.getDefaultDataPath() โ‡’ String | Null

This function will return null when running in the renderer process without support for the remote IPC mechanism. You have to explicitly set a data path using .setDataPath() in these cases.

Kind: static method of storage
Summary: Get the default data path
Returns: String | Null - default data path
Access: public
Example

const defaultDataPath = storage.getDefaultDataPath()

storage.setDataPath(directory)

The default value will be used if the directory is undefined.

Kind: static method of storage
Summary: Set current data path
Access: public

Param Type Description
directory String | Undefined directory

Example

const os = require('os');
const storage = require('electron-json-storage');

storage.setDataPath(os.tmpdir());

storage.getDataPath() โ‡’ String

Returns the current data path. It defaults to a directory called "storage" inside Electron's userData path.

Kind: static method of storage
Summary: Get current user data path
Returns: String - the user data path
Access: public
Example

const storage = require('electron-json-storage');

const dataPath = storage.getDataPath();
console.log(dataPath);

storage.get(key, [options], callback)

If the key doesn't exist in the user data, an empty object is returned. Also notice that the .json extension is added automatically, but it's ignored if you pass it yourself.

Passing an extension other than .json will result in a file created with both extensions. For example, the key foo.data will result in a file called foo.data.json.

Kind: static method of storage
Summary: Read user data
Access: public

Param Type Description
key String key
[options] Object options
[options.dataPath] String data path
callback function callback (error, data)

Example

const storage = require('electron-json-storage');

storage.get('foobar', function(error, data) {
  if (error) throw error;

  console.log(data);
});

storage.getSync(key, [options])

See .get().

Kind: static method of storage
Summary: Read user data (sync)
Access: public

Param Type Description
key String key
[options] Object options
[options.dataPath] String data path

Example

const storage = require('electron-json-storage');

var data = storage.getSync('foobar');
console.log(data);

storage.getMany(keys, [options], callback)

This function returns an object with the data of all the passed keys. If one of the keys doesn't exist, an empty object is returned for it.

Kind: static method of storage
Summary: Read many user data keys
Access: public

Param Type Description
keys Array.<String> keys
[options] Object options
[options.dataPath] String data path
callback function callback (error, data)

Example

const storage = require('electron-json-storage');

storage.getMany([ 'foobar', 'barbaz' ], function(error, data) {
  if (error) throw error;

  console.log(data.foobar);
  console.log(data.barbaz);
});

storage.getAll([options], callback)

This function returns an empty object if there is no data to be read.

Kind: static method of storage
Summary: Read all user data
Access: public

Param Type Description
[options] Object options
[options.dataPath] String data path
callback function callback (error, data)

Example

const storage = require('electron-json-storage');

storage.getAll(function(error, data) {
  if (error) throw error;

  console.log(data);
});

storage.set(key, json, [options], callback)

Kind: static method of storage
Summary: Write user data
Access: public

Param Type Description
key String key
json Object json object
[options] Object options
[options.dataPath] String data path
[options.validate] String validate writes by reading the data back
[options.prettyPrinting] boolean adds line breaks and spacing to the written data
callback function callback (error)

Example

const storage = require('electron-json-storage');

storage.set('foobar', { foo: 'bar' }, function(error) {
  if (error) throw error;
});

storage.has(key, [options], callback)

Kind: static method of storage
Summary: Check if a key exists
Access: public

Param Type Description
key String key
[options] Object options
[options.dataPath] String data path
callback function callback (error, hasKey)

Example

const storage = require('electron-json-storage');

storage.has('foobar', function(error, hasKey) {
  if (error) throw error;

  if (hasKey) {
    console.log('There is data stored as `foobar`');
  }
});

storage.keys([options], callback)

Kind: static method of storage
Summary: Get the list of saved keys
Access: public

Param Type Description
[options] Object options
[options.dataPath] String data path
callback function callback (error, keys)

Example

const storage = require('electron-json-storage');

storage.keys(function(error, keys) {
  if (error) throw error;

  for (var key of keys) {
    console.log('There is a key called: ' + key);
  }
});

storage.remove(key, [options], callback)

Notice this function does nothing, nor throws any error if the key doesn't exist.

Kind: static method of storage
Summary: Remove a key
Access: public

Param Type Description
key String key
[options] Object options
[options.dataPath] String data path
callback function callback (error)

Example

const storage = require('electron-json-storage');

storage.remove('foobar', function(error) {
  if (error) throw error;
});

storage.clear([options], callback)

Kind: static method of storage
Summary: Clear all stored data in the current user data path
Access: public

Param Type Description
[options] Object options
[options.dataPath] String data path
callback function callback (error)

Example

const storage = require('electron-json-storage');

storage.clear(function(error) {
  if (error) throw error;
});

Support

If you're having any problem, please raise an issue on GitHub and we'll be happy to help.

Tests

Run the test suite by doing:

$ npm test

Contribute

Before submitting a PR, please make sure that you include tests, and that jshint runs without any warning:

$ npm run-script lint

License

The project is licensed under the MIT license.

More Repositories

1

electron-builder

A complete solution to package and build a ready for distribution Electron app with โ€œauto updateโ€ support out of the box
TypeScript
13,564
star
2

devtron

[LOOKING FOR MAINTAINERS] An Electron DevTools Extension
JavaScript
1,728
star
3

spectron

DEPRECATED: ๐Ÿ”Ž Test Electron apps using ChromeDriver
JavaScript
1,677
star
4

electron-compile

DEPRECATED: Electron supporting package to compile JS and CSS in Electron applications
JavaScript
1,008
star
5

electron-webpack

Scripts and configurations to compile Electron applications using webpack
TypeScript
903
star
6

electron-prebuilt

๐ŸŽ‚ Retired project. See README
JavaScript
760
star
7

electron-webpack-quick-start

A bare minimum project structure to get started developing with electron-webpack.
JavaScript
729
star
8

electron-windows-store

๐Ÿ“ฆ Turn Electron Apps into Windows AppX Packages
JavaScript
678
star
9

electron-installer-windows

Create a Windows package for your Electron app.
JavaScript
470
star
10

electron-remote

DEPRECATED: Execute JavaScript in remote Electron processes, but more betterer
JavaScript
430
star
11

electron-installer-debian

Create a Debian package for your Electron app.
JavaScript
377
star
12

electron-wix-msi

๐Ÿ“€ Create traditional MSI installers for your Electron app
TypeScript
319
star
13

electron-installer-dmg

Create DMG installers for your electron apps using appdmg.
JavaScript
298
star
14

electron-spellchecker

Implement spellchecking, correctly
JavaScript
237
star
15

electron-builder-binaries

NSIS
172
star
16

electron-prebuilt-compile

electron-prebuilt with Babel and React built-in
JavaScript
169
star
17

electron-build-service

Package Electron applications in a distributable format on any platform for any platform
Go
138
star
18

electron-forge-templates

Templates bundled with Electron Forge <= 5 to create Electron apps using popular JavaScript frameworks
JavaScript
104
star
19

electron-installer-redhat

Create a Red Hat / RPM package for your Electron app.
JavaScript
81
star
20

electron-installer-snap

Build Snap packages for Electron applications
JavaScript
49
star
21

electrify

Step-by-step wizard to prepare Electron app for distribution, from packaging to auto-update.
TypeScript
48
star
22

electron-installer-zip

Create a ZIP file with support for symlinks required by Electron on macOS
JavaScript
46
star
23

welcome

Organization mission statement and contribution guidelines
45
star
24

electron-compilers

DEPRECATED: Compiler implementations for electron-compile
JavaScript
35
star
25

electron-installer-common

Common functionality for creating Node modules which create distributable Electron apps
JavaScript
9
star
26

electron-forge-container

Docker container for building Electron apps via Electron Forge
Dockerfile
7
star
27

create-electron-app

JavaScript
5
star
28

electron-forge-plugin-compile

Electron Compile plugin for Electron Forge
JavaScript
3
star
29

vue-cli-plugin-electron-forge

@vue/cli plugin to add Electron Forge
3
star