Join our webinar on Wednesday, June 26, at 1pm EDTHow Chia Mitigates Risk in the Crypto Industry.Register
Socket
Socket
Sign inDemoInstall

@n1md7/indexeddb-promise

Package Overview
Dependencies
8
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 7.0.4 to 7.0.5

examples/indexed-db.min.js

72

lib/Database.js

@@ -49,9 +49,2 @@ "use strict";

};
var __asyncValues = (this && this.__asyncValues) || function (o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -147,4 +140,4 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

request.onblocked = function () {
request.result.close();
console.error("[".concat(_this.databaseName, "]: ").concat(request.error || 'Database blocked'));
_this.__connection.close();
reject("[".concat(_this.databaseName, "]: Couldn't open database, database is blocked. Close all connections and try again."));
};

@@ -195,3 +188,3 @@ request.onupgradeneeded = function (event) {

request.onblocked = function () {
console.log("[".concat(name, "]: Couldn't delete database due to the operation being blocked"));
reject("[".concat(name, "]: Couldn't remove database, database is blocked. Close all connections and try again."));
};

@@ -205,47 +198,20 @@ request.onsuccess = function () { return resolve('Database has been removed'); };

Database.onUpgradeNeeded = function (db, database, oldVersion) {
var e_1, _a;
var _b, _c;
var _a, _b;
return __awaiter(this, void 0, void 0, function () {
var _d, _e, table, store, e_1_1;
return __generator(this, function (_f) {
switch (_f.label) {
case 0:
_f.trys.push([0, 5, 6, 11]);
_d = __asyncValues(database.tables);
_f.label = 1;
case 1: return [4 /*yield*/, _d.next()];
case 2:
if (!(_e = _f.sent(), !_e.done)) return [3 /*break*/, 4];
table = _e.value;
if ((oldVersion < database.version && oldVersion) || db.objectStoreNames.contains(table.name)) {
db.deleteObjectStore(table.name);
console.info("[".concat(database.name, "]: DB version changed, removing table: ").concat(table.name, " for the fresh start"));
}
store = db.createObjectStore(table.name, {
keyPath: ((_b = table.primaryKey) === null || _b === void 0 ? void 0 : _b.name) || 'id',
autoIncrement: ((_c = table.primaryKey) === null || _c === void 0 ? void 0 : _c.autoIncrement) || true,
});
Database.createIndexes(store, table.indexes);
Database.insertInitialValues(store, table);
_f.label = 3;
case 3: return [3 /*break*/, 1];
case 4: return [3 /*break*/, 11];
case 5:
e_1_1 = _f.sent();
e_1 = { error: e_1_1 };
return [3 /*break*/, 11];
case 6:
_f.trys.push([6, , 9, 10]);
if (!(_e && !_e.done && (_a = _d.return))) return [3 /*break*/, 8];
return [4 /*yield*/, _a.call(_d)];
case 7:
_f.sent();
_f.label = 8;
case 8: return [3 /*break*/, 10];
case 9:
if (e_1) throw e_1.error;
return [7 /*endfinally*/];
case 10: return [7 /*endfinally*/];
case 11: return [2 /*return*/];
var _i, _c, table, store;
return __generator(this, function (_d) {
for (_i = 0, _c = database.tables; _i < _c.length; _i++) {
table = _c[_i];
if ((oldVersion < database.version && oldVersion) || db.objectStoreNames.contains(table.name)) {
db.deleteObjectStore(table.name);
console.info("[".concat(database.name, "]: DB version changed, removing table: ").concat(table.name, " for the fresh start"));
}
store = db.createObjectStore(table.name, {
keyPath: ((_a = table.primaryKey) === null || _a === void 0 ? void 0 : _a.name) || 'id',
autoIncrement: ((_b = table.primaryKey) === null || _b === void 0 ? void 0 : _b.autoIncrement) || true,
});
Database.createIndexes(store, table.indexes);
Database.insertInitialValues(store, table);
}
return [2 /*return*/];
});

@@ -252,0 +218,0 @@ });

@@ -30,5 +30,5 @@ import 'reflect-metadata';

*
* Default {name}: class name.
* Default {timestamps}: false.
* Default {initialData}: empty.
* - Default value for {name}: class name.
* - Default value for {timestamps}: `false`.
* - Default value for {initialData}: `[]`.
*

@@ -52,4 +52,4 @@ */

*
* Default {autoIncrement}: true.
* Default {unique}: true.
* - Default value for {autoIncrement}: true.
* - Default value for {unique}: true.
*/

@@ -61,4 +61,4 @@ export declare const PrimaryKey: (options?: Omit<PrimaryKeyType, 'name'>) => (target: any, propertyName: PropertyType) => void;

*
* Default {unique}: false.
* Default {multiEntry}: true.
* - Default value for {unique}: false.
* - Default value for {multiEntry}: true.
*/

@@ -65,0 +65,0 @@ export declare const Indexed: (options?: IndexedPropertyType) => (target: any, propertyName: PropertyType) => void;

@@ -21,5 +21,5 @@ "use strict";

*
* Default {name}: class name.
* Default {timestamps}: false.
* Default {initialData}: empty.
* - Default value for {name}: class name.
* - Default value for {timestamps}: `false`.
* - Default value for {initialData}: `[]`.
*

@@ -77,4 +77,4 @@ */

*
* Default {autoIncrement}: true.
* Default {unique}: true.
* - Default value for {autoIncrement}: true.
* - Default value for {unique}: true.
*/

@@ -95,4 +95,4 @@ var PrimaryKey = function (options) {

*
* Default {unique}: false.
* Default {multiEntry}: true.
* - Default value for {unique}: false.
* - Default value for {multiEntry}: true.
*/

@@ -99,0 +99,0 @@ var Indexed = function (options) {

{
"name": "@n1md7/indexeddb-promise",
"version": "7.0.4",
"version": "7.0.5",
"description": "Indexed DB wrapper with promises",

@@ -9,3 +9,5 @@ "main": "./lib/index.js",

"minify": "npx browserify ./lib/index.js -o ./dist/indexed-db.min.js --standalone=IndexedDB -t [ babelify --presets [ @babel/preset-env ] ]",
"build": "npm run compile && npm run minify",
"copy:minified:to:examples": "cp -f ./dist/indexed-db.min.js ./examples/indexed-db.min.js",
"serve:examples": "npx http-server -o /examples .",
"build": "npm run compile && npm run minify && npm run copy:minified:to:examples",
"format": "npx prettier --write --ignore-unknown './(src|tests)/**/*.(j|t)s'",

@@ -12,0 +14,0 @@ "test": "npx jest --coverage --ci",

@@ -95,4 +95,6 @@ import { Optional } from 'utility-types';

request.onblocked = () => {
request.result.close();
console.error(`[${this.databaseName}]: ${request.error || 'Database blocked'}`);
this.__connection.close();
reject(
`[${this.databaseName}]: Couldn't open database, database is blocked. Close all connections and try again.`,
);
};

@@ -137,3 +139,3 @@

request.onblocked = () => {
console.log(`[${name}]: Couldn't delete database due to the operation being blocked`);
reject(`[${name}]: Couldn't remove database, database is blocked. Close all connections and try again.`);
};

@@ -146,3 +148,3 @@ request.onsuccess = () => resolve('Database has been removed');

private static async onUpgradeNeeded(db: IDBDatabase, database: ConfigType, oldVersion: number) {
for await (const table of database.tables) {
for (const table of database.tables) {
if ((oldVersion < database.version && oldVersion) || db.objectStoreNames.contains(table.name)) {

@@ -149,0 +151,0 @@ db.deleteObjectStore(table.name);

@@ -35,5 +35,5 @@ import 'reflect-metadata';

*
* Default {name}: class name.
* Default {timestamps}: false.
* Default {initialData}: empty.
* - Default value for {name}: class name.
* - Default value for {timestamps}: `false`.
* - Default value for {initialData}: `[]`.
*

@@ -99,4 +99,4 @@ */

*
* Default {autoIncrement}: true.
* Default {unique}: true.
* - Default value for {autoIncrement}: true.
* - Default value for {unique}: true.
*/

@@ -118,4 +118,4 @@ export const PrimaryKey = (options: Omit<PrimaryKeyType, 'name'> = {}) => {

*
* Default {unique}: false.
* Default {multiEntry}: true.
* - Default value for {unique}: false.
* - Default value for {multiEntry}: true.
*/

@@ -122,0 +122,0 @@ export const Indexed = (options: IndexedPropertyType = {}) => {

import { getClassMetadata, getPrimaryKey, getPropertyMetadata, Indexed, PrimaryKey, Table } from '../src';
import { describe, expect, test } from '@jest/globals';
test('[@Table] decorator metadata with defaults', () => {
function Test() {}
describe('Decorators', () => {
test('[@Table] decorator metadata with defaults', () => {
function Test() {}
Table()(Test);
// or it can be class but for property metadata it has to be an instance
// Table()(Test); Indexed()(new Test, 'prop-name');
expect(getClassMetadata(Test)).toEqual({
name: 'Test',
initialData: [],
timestamps: false,
Table()(Test);
// or it can be class but for property metadata it has to be an instance
// Table()(Test); Indexed()(new Test, 'prop-name');
expect(getClassMetadata(Test)).toEqual({
name: 'Test',
initialData: [],
timestamps: false,
});
});
});
test('[@Table] decorator metadata with partially default values', () => {
Table({ name: 'My-Name' })(Test);
test('[@Table] decorator metadata with partially default values', () => {
Table({ name: 'My-Name' })(Test);
function Test() {}
function Test() {}
expect(getClassMetadata(Test)).toEqual({
name: 'My-Name',
initialData: [],
timestamps: false,
expect(getClassMetadata(Test)).toEqual({
name: 'My-Name',
initialData: [],
timestamps: false,
});
});
});
test('[@Table] decorator metadata with custom values', () => {
Table({ name: 'My-Name', timestamps: true })(Test);
test('[@Table] decorator metadata with custom values', () => {
Table({ name: 'My-Name', timestamps: true })(Test);
function Test() {}
function Test() {}
expect(getClassMetadata(Test)).toEqual({
name: 'My-Name',
initialData: [],
timestamps: true,
expect(getClassMetadata(Test)).toEqual({
name: 'My-Name',
initialData: [],
timestamps: true,
});
});
});
test('[@Indexed] decorator metadata with defaults', () => {
class Test {}
test('[@Indexed] decorator metadata with defaults', () => {
class Test {}
const propertyName = 'propertyName';
Indexed()(new Test(), propertyName);
expect(getPropertyMetadata(Test)).toEqual({
[propertyName]: {
indexed: {
unique: false,
multiEntry: true,
const propertyName = 'propertyName';
Indexed()(new Test(), propertyName);
expect(getPropertyMetadata(Test)).toEqual({
[propertyName]: {
indexed: {
unique: false,
multiEntry: true,
},
},
},
});
});
});
test('[@Indexed] decorator metadata with partially default values', () => {
class Test {}
test('[@Indexed] decorator metadata with partially default values', () => {
class Test {}
const propertyName = 'propertyName';
Indexed({ unique: true })(new Test(), propertyName);
expect(getPropertyMetadata(Test)).toEqual({
[propertyName]: {
indexed: {
unique: true,
multiEntry: true,
const propertyName = 'propertyName';
Indexed({ unique: true })(new Test(), propertyName);
expect(getPropertyMetadata(Test)).toEqual({
[propertyName]: {
indexed: {
unique: true,
multiEntry: true,
},
},
},
});
});
});
test('[@Indexed] decorator metadata with custom values', () => {
class Test {}
test('[@Indexed] decorator metadata with custom values', () => {
class Test {}
const propertyName = 'propertyName';
Indexed({ unique: true, multiEntry: false })(new Test(), propertyName);
expect(getPropertyMetadata(Test)).toEqual({
[propertyName]: {
indexed: {
unique: true,
multiEntry: false,
const propertyName = 'propertyName';
Indexed({ unique: true, multiEntry: false })(new Test(), propertyName);
expect(getPropertyMetadata(Test)).toEqual({
[propertyName]: {
indexed: {
unique: true,
multiEntry: false,
},
},
},
});
});
});
test('[@getPrimaryKey] decorator', () => {
class Test {}
test('[@getPrimaryKey] decorator', () => {
class Test {}
const propertyName = 'myPrimaryKey';
PrimaryKey()(new Test(), propertyName);
const primaryKeyPropName = getPrimaryKey(Test);
expect(primaryKeyPropName).toBe(propertyName);
});
const propertyName = 'myPrimaryKey';
PrimaryKey()(new Test(), propertyName);
const primaryKeyPropName = getPrimaryKey(Test);
expect(primaryKeyPropName).toBe(propertyName);
});
test('[@PrimaryKey] decorator metadata with defaults', () => {
class Test {}
test('[@PrimaryKey] decorator metadata with defaults', () => {
class Test {}
const propertyName = 'propertyName';
PrimaryKey()(new Test(), propertyName);
expect(getPropertyMetadata(Test)).toEqual({
[propertyName]: {
primaryKey: {
unique: true,
autoIncrement: true,
const propertyName = 'propertyName';
PrimaryKey()(new Test(), propertyName);
expect(getPropertyMetadata(Test)).toEqual({
[propertyName]: {
primaryKey: {
unique: true,
autoIncrement: true,
},
},
},
});
});
});
test('[@PrimaryKey] decorator metadata with partially default values', () => {
class Test {}
test('[@PrimaryKey] decorator metadata with partially default values', () => {
class Test {}
const propertyName = 'propertyName';
PrimaryKey({ unique: false })(new Test(), propertyName);
expect(getPropertyMetadata(Test)).toEqual({
[propertyName]: {
primaryKey: {
unique: false,
autoIncrement: true,
const propertyName = 'propertyName';
PrimaryKey({ unique: false })(new Test(), propertyName);
expect(getPropertyMetadata(Test)).toEqual({
[propertyName]: {
primaryKey: {
unique: false,
autoIncrement: true,
},
},
},
});
});
});
test('[@PrimaryKey] decorator metadata with custom values', () => {
class Test {}
test('[@PrimaryKey] decorator metadata with custom values', () => {
class Test {}
const propertyName = 'propertyName';
PrimaryKey({ unique: false, autoIncrement: false })(new Test(), propertyName);
expect(getPropertyMetadata(Test)).toEqual({
[propertyName]: {
primaryKey: {
unique: false,
autoIncrement: false,
const propertyName = 'propertyName';
PrimaryKey({ unique: false, autoIncrement: false })(new Test(), propertyName);
expect(getPropertyMetadata(Test)).toEqual({
[propertyName]: {
primaryKey: {
unique: false,
autoIncrement: false,
},
},
},
});
});
});
test('Full example of all decorators with defaults', () => {
class Users {}
test('Full example of all decorators with defaults', () => {
class Users {}
Table()(Users);
PrimaryKey()(new Users(), 'id');
Indexed()(new Users(), 'name');
Indexed()(new Users(), 'email');
expect(getClassMetadata(Users)).toEqual({
name: 'Users',
timestamps: false,
initialData: [],
});
expect(getPropertyMetadata(Users)).toEqual({
id: {
primaryKey: {
unique: true,
autoIncrement: true,
Table()(Users);
PrimaryKey()(new Users(), 'id');
Indexed()(new Users(), 'name');
Indexed()(new Users(), 'email');
expect(getClassMetadata(Users)).toEqual({
name: 'Users',
timestamps: false,
initialData: [],
});
expect(getPropertyMetadata(Users)).toEqual({
id: {
primaryKey: {
unique: true,
autoIncrement: true,
},
},
},
name: {
indexed: {
unique: false,
multiEntry: true,
name: {
indexed: {
unique: false,
multiEntry: true,
},
},
},
email: {
indexed: {
unique: false,
multiEntry: true,
email: {
indexed: {
unique: false,
multiEntry: true,
},
},
},
});
});
});
test('Full example of all decorators with custom values', () => {
class Users {}
test('Full example of all decorators with custom values', () => {
class Users {}
Table({ name: '__Table__', timestamps: true })(Users);
PrimaryKey({ autoIncrement: false, unique: true })(new Users(), 'id');
Indexed({ unique: false, multiEntry: true })(new Users(), 'name');
Indexed({ unique: true, multiEntry: false })(new Users(), 'email');
expect(getClassMetadata(Users)).toEqual({
name: '__Table__',
timestamps: true,
initialData: [],
});
expect(getPropertyMetadata(Users)).toEqual({
id: {
primaryKey: {
unique: true,
autoIncrement: false,
Table({ name: '__Table__', timestamps: true })(Users);
PrimaryKey({ autoIncrement: false, unique: true })(new Users(), 'id');
Indexed({ unique: false, multiEntry: true })(new Users(), 'name');
Indexed({ unique: true, multiEntry: false })(new Users(), 'email');
expect(getClassMetadata(Users)).toEqual({
name: '__Table__',
timestamps: true,
initialData: [],
});
expect(getPropertyMetadata(Users)).toEqual({
id: {
primaryKey: {
unique: true,
autoIncrement: false,
},
},
},
name: {
indexed: {
unique: false,
multiEntry: true,
name: {
indexed: {
unique: false,
multiEntry: true,
},
},
},
email: {
indexed: {
unique: true,
multiEntry: false,
email: {
indexed: {
unique: true,
multiEntry: false,
},
},
},
});
});
});
test('Several decorators overriding each other. Gets the last value', () => {
class Users {}
test('Several decorators overriding each other. Gets the last value', () => {
class Users {}
Table({ name: '__Table__', timestamps: true })(Users);
Table({ name: 'Actual_Name', timestamps: false })(Users);
PrimaryKey({ autoIncrement: false, unique: true })(new Users(), 'id');
// Another line below gonna reset to defaults
PrimaryKey()(new Users(), 'id');
Indexed({ unique: false, multiEntry: true })(new Users(), 'name');
Indexed()(new Users(), 'name');
// The last one will be used as the value
Indexed({ unique: true, multiEntry: true })(new Users(), 'name');
// Will use defaults
Indexed()(new Users(), 'email');
expect(getClassMetadata(Users)).toEqual({
name: 'Actual_Name',
timestamps: false,
initialData: [],
});
expect(getPropertyMetadata(Users)).toEqual({
id: {
primaryKey: {
unique: true,
autoIncrement: true,
Table({ name: '__Table__', timestamps: true })(Users);
Table({ name: 'Actual_Name', timestamps: false })(Users);
PrimaryKey({ autoIncrement: false, unique: true })(new Users(), 'id');
// Another line below gonna reset to defaults
PrimaryKey()(new Users(), 'id');
Indexed({ unique: false, multiEntry: true })(new Users(), 'name');
Indexed()(new Users(), 'name');
// The last one will be used as the value
Indexed({ unique: true, multiEntry: true })(new Users(), 'name');
// Will use defaults
Indexed()(new Users(), 'email');
expect(getClassMetadata(Users)).toEqual({
name: 'Actual_Name',
timestamps: false,
initialData: [],
});
expect(getPropertyMetadata(Users)).toEqual({
id: {
primaryKey: {
unique: true,
autoIncrement: true,
},
},
},
name: {
indexed: {
unique: true,
multiEntry: true,
name: {
indexed: {
unique: true,
multiEntry: true,
},
},
},
email: {
indexed: {
unique: false,
multiEntry: true,
email: {
indexed: {
unique: false,
multiEntry: true,
},
},
},
});
});
});

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc