browser.storage
API to store, retrieve, and track changes to user data.
* Permissions: "storage"
*
* Comments found in source JSON schema files:
* Copyright 2014 The Chromium Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
import { Events } from "./events";
export namespace Storage {
interface StorageChange {
/**
* The old value of the item, if there was an old value.
* Optional.
*/
oldValue?: any;
/**
* The new value of the item, if there is a new value.
* Optional.
*/
newValue?: any;
}
interface StorageArea {
/**
* Gets one or more items from storage.
*
* @param keys Optional. A single key to get, list of keys to get, or a dictionary specifying default values (see
* description of the object). An empty list or object will return an empty result object. Pass in null
* to get the entire contents of storage.
* @returns Callback with storage items, or on failure (in which case $(ref:runtime.lastError) will be set).
*/
get(keys?: null | string | string[] | RecordAn object which gives each key/value pair to update storage with. Any other key/value pairs in storage * will not be affected.
Primitive values such as numbers will serialize as expected. Values with a
* typeof
"object"
and "function"
will typically serialize to {}
,
* with the exception of Array
(serializes as expected), Date
, and Regex
* (serialize using their String
representation).
null
* to get the entire contents of storage.
* @returns Callback with storage items, or on failure (in which case $(ref:runtime.lastError) will be set).
*/
get(keys?: null | string | string[] | Recordnull
to get the total usage of all of storage.
* @returns Callback with the amount of space being used by storage, or on failure (in which case $(ref:runtime.lastError)
* will be set).
*/
getBytesInUse(keys?: null | string | string[]): PromiseAn object which gives each key/value pair to update storage with. Any other key/value pairs in storage * will not be affected.
Primitive values such as numbers will serialize as expected. Values with a
* typeof
"object"
and "function"
will typically serialize to {}
,
* with the exception of Array
(serializes as expected), Date
, and Regex
* (serialize using their String
representation).
The maximum number of set
, remove
, or clear
* operations that can be performed each hour. This is 1 every 2 seconds, a lower ceiling than the short term higher
* writes-per-minute limit.
Updates that would cause this limit to be exceeded fail immediately and set $(ref:runtime. * lastError).
*/ MAX_WRITE_OPERATIONS_PER_HOUR: 1800; /** *The maximum number of set
, remove
, or clear
* operations that can be performed each minute. This is 2 per second, providing higher throughput than writes-per-hour
* over a shorter period of time.
Updates that would cause this limit to be exceeded fail immediately and set * $(ref:runtime.lastError).
*/ MAX_WRITE_OPERATIONS_PER_MINUTE: 120; } interface LocalStorageArea extends StorageArea { /** * The maximum amount (in bytes) of data that can be stored in local storage, as measured by the JSON stringification of * every value plus every key's length. This value will be ignored if the extension has theunlimitedStorage
* permission. Updates that would cause this limit to be exceeded fail immediately and set $(ref:runtime.lastError).
*/
QUOTA_BYTES: 5242880;
}
interface ManagedStorageArea extends StorageArea {
/**
* The maximum size (in bytes) of the managed storage JSON manifest file. Files larger than this limit will fail to load.
*/
QUOTA_BYTES: 5242880;
}
interface Static {
/**
* Fired when one or more items change.
*
* @param changes Object mapping each key that changed to its corresponding $(ref:storage.StorageChange) for that item.
* @param areaName The name of the storage area ("sync"
, "local"
or "managed"
)
* the changes are for.
*/
onChanged: Events.Event<(changes: Record