UNPKG

indexed-db-utilities

Version:

Helper methods and utilities for creating managing values dynamically for the browser's IndexDB API.

179 lines 10.2 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [0, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; //tslint:disable import { openIDBUtilities } from "../utilities/index-db.utility"; function demo() { return __awaiter(this, void 0, void 0, function () { var stores, addResponse, getResponse, putResponse, updateResponse, i, getAllResponse, removeResponse, i; return __generator(this, function (_a) { switch (_a.label) { case 0: /** * * Call openIDBUtilities(config) with config parameters to open an IndexedDB and return a promise that holds * an Object with helper methods, add(), put(), update(), get() and remove(). * if one doesn't exsist then it will be made. Note: Once ObjectStores are defined they * IDBs version number and to add more you must provide a new version number. * * The Config Object = { * version: Number * dbName: String * storeNames: String[] * keyPath?: String * } * **/ console.log('calling open'); return [4 /*yield*/, openIDBUtilities({ version: 3, dbName: 'DemoIDB-2', storeNames: ['demoStore0', 'demoStore1', "demoStore2"], keyPath: 'myKey' // keyPath is optional, if provided this will be how you get selective values from the stores and must be a property in your object value you wish to store. If omitted the stores will be indexed 0 to (n-1); })]; case 1: stores = _a.sent(); console.log('stores', stores); /** * add(storeName: string, value: any) => Promise<string | {}>; * Returns a string with the saved value's key or Request.Result Object. * Note: You cannot add new values to objects with keys that already exsist, use put() or update(). */ console.log('calling add'); return [4 /*yield*/, stores.add('demoStore0', { myKey: 'foo', value: [{ bat: 'squeak' }, { bear: 'grrr' }] }) .catch(function (err) { return console.log('Add Error: ', err); })]; case 2: addResponse = _a.sent(); console.log('add response', addResponse); // add response foo /** * get(storeName: string, key: string) => Promise<any>; * Returns the value stored that matches the value stored in [keyPath]: String * or throws an Request.Result Object */ console.log('calling get'); return [4 /*yield*/, stores.get('demoStore0', 'foo')]; case 3: getResponse = _a.sent(); console.log('get response', getResponse); // get response {myKey:'foo', value: [{ bat: 'squeak'}, {bear: 'grrr'}]} /** * put(storeName: string, value: any) => Promise<string | {}>; * Returns a string with the saved value's key or throws Request.Result Object. * Note: This will overwrite your value saved related your key. */ console.log('calling put'); return [4 /*yield*/, stores.put('demoStore0', { myKey: 'foo', value: [{ cat: 'meow' }] }) .catch(function (err) { return "Put Error: " + err; })]; case 4: putResponse = _a.sent(); console.log('put response', putResponse); // put response foo return [4 /*yield*/, stores.get('demoStore0', 'foo')]; case 5: getResponse = _a.sent(); console.log('get response', getResponse); // {myKey:'foo', value: [{cat: 'meow'}]} /** * update(storeName: string, key: string, value: any) => Promise<string | {}>; * Returns a string with the updated value's key or throws an Request.Result Object. * Note: This will merge with your stored value, if it is an array it will concatenate * the new values. */ console.log('calling update'); return [4 /*yield*/, stores.update('demoStore0', 'foo', { myKey: 'foo', value: [{ bat: 'squeak' }, { bear: 'grrr', dog: ['woof', 'bark'] }, { cat: 'purr' }, ['happy hacking!']] }) .catch(function (err) { return "Update Error: " + err; })]; case 6: updateResponse = _a.sent(); console.log('update response', updateResponse); // update response foo return [4 /*yield*/, stores.get('demoStore0', 'foo')]; case 7: getResponse = _a.sent(); console.log('get response', getResponse); // get response {myKey:'foo', value: [{cat: 'meow'}, { bat: 'squeak'}, {bear: 'grrr', dog: ['woof', 'bark']}, {cat: 'purr'}, ['happy hacking!']]} i = 0; _a.label = 8; case 8: if (!(i < 10)) return [3 /*break*/, 11]; return [4 /*yield*/, stores.put('demoStore0', { myKey: i.toString(), value: i })]; case 9: _a.sent(); _a.label = 10; case 10: i++; return [3 /*break*/, 8]; case 11: return [4 /*yield*/, stores.getAll('demoStore0')]; case 12: getAllResponse = _a.sent(); console.log('getAll Response', getAllResponse); /** * remove(storeName: string, key: string) => Promise<any>; * returns void or throws an Request.Result Object */ console.log('calling remove'); return [4 /*yield*/, stores.remove('demoStore0', 'foo') .catch(function (err) { return console.log('remove error', err); })]; case 13: removeResponse = _a.sent(); console.log('removeResponse', removeResponse); // removeResponse undefined i = 0; _a.label = 14; case 14: if (!(i < 10)) return [3 /*break*/, 17]; return [4 /*yield*/, stores.remove('demoStore0', i.toString()) .catch(function (err) { return console.log('Remove Error', err); })]; case 15: _a.sent(); _a.label = 16; case 16: i++; return [3 /*break*/, 14]; case 17: return [2 /*return*/]; } }); }); } console.log('calling demo'); demo() .then(function (res) { return console.log('response', res); }) .catch(function (err) { return console.log('Error: ', err); }); //# sourceMappingURL=demo.js.map